Announcement

Collapse
No announcement yet.

Loaded funktioniert nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Loaded funktioniert nicht

    Loaded funktioniert nicht. Was mache ich hier falsch?

    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Classes,
    Graphics, Controls, Forms, StdCtrls;
    type
    TMyEdit = class(TEdit)
    private
    protected
    procedure Loaded; override;
    end;

    TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    MyEdit : TMyEdit;
    end;

    var
    Form1: TForm1;

    implementation
    {$R *.DFM}

    procedure TMyEdit.Loaded;
    begin
    inherited Loaded;
    Top := 100; // Hier ist das Problem.
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    MyEdit := TMyEdit.Create(Self);
    MyEdit.Parent := Form1;
    end;

    end.

  • #2
    Hi

    .Loaded, wie der Name schon sagt "geladen", wird nur aufgerufen nachdem ein Object z.b. ein TForm aus einer DFM geladen wurde.

    Du erstellst aber ein TMyEdit dynamisch in FormCreate, es wird also garnicht geladen -> dem zufolge KEIN .Loaded

    Du solltest TMyEdit in eine separate Unit auslagern. Dort eine procedure Register anlegen:

    <pre>

    unit MyEdit;

    interface

    type
    TmyEdit ......

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('test', [TmyEdit]);
    end;

    ...

    end.

    </pre>

    Diese Unit dann installieren, auf Page "test" gehen und Deine registrierte TMyEdit-Komponente aufs Form packen. FormCreate() kannste dann sparen, und TMyEdit.loaded wird auch aufgerufen

    Gruß Hage

    Comment

    Working...
    X