Announcement

Collapse
No announcement yet.

Zugriff auf Eigenschaften anderer Komponenten

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

  • Zugriff auf Eigenschaften anderer Komponenten

    Ich möchte in meiner Komponente (von TTimer abgeleitet) auch auf Eigenschaften anderer Komponenten (TForm) zugreifen. Ist das möglich? und wenn wie?

    mfg Karlsey

  • #2
    Hallo Karlsey,<br>na klar ist das Möglich. Füge einfach eine entspechende Property zu Deiner Komponente.<br>Beispiel. In einer von TTimer abgeleiteten Komponente möchten wir auf eine TListbox zugreifen.<br>
    <pre><font size="1" face="Verdana">unit MyTimer;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    ExtCtrls;

    type
    TMyTimer = class(TTimer)
    private
    { Private-Deklarationen }
    FListbox: TListbox;
    procedure SetListbox(const Value: TListbox);
    protected
    { Protected-Deklarationen }
    procedure Notification(AComponent : TComponent; Operation : TOperation); override;
    public
    { Public-Deklarationen }
    published
    { Published-Deklarationen }
    property Listbox : TListbox read FListbox write SetListbox;
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('MyComps', [TMyTimer]);
    end;

    { TMyTimer }

    procedure TMyTimer.Notification(AComponent: TComponent;
    Operation: TOperation);
    begin
    inherited Notification(AComponent, Operation);
    if (Operation = opRemove) and (FListbox<>Nil) and (AComponent = ListBox) then
    ListBox := nil;
    end;

    procedure TMyTimer.SetListbox(const Value: TListbox);
    begin
    FListbox := Value;
    end;

    end.</font>
    </pre>
    <br>Dadurch, das Listbox im published Abschnitt steht, kannst Du die Listbox über den Objektinspektor zuweisen. Deshalb mußt Du die procedure Notification überschreiben. Über diese Procedure wird TMyTimer, innerhalb der IDE informiert, ob die zugewiesene Listbox gelöscht wurde. Wenn Du das nicht machst, erhälst Du richtig miese Fehlermeldungen. Wenn Du Objekte unterhalb von TComponent verwenden möchtest, gehst Du im Prinzip genauso vor. Nur das Du dann die properties im public Abschnitt deklarierst und die Zuweisung zur Laufzeit erfolgt. Für diese Objekte brauchst Du nicht die Notification Procedure.<br>:-) Jens Schuman

    Comment

    Working...
    X