Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Designtime: Info über entfernte Komponente (https://www.delphipraxis.net/29273-designtime-info-ueber-entfernte-komponente.html)

peteress 6. Sep 2004 22:06


Designtime: Info über entfernte Komponente
 
Hallo,

ich entwickle an einem Komponentensatz, das funktioniert soweit auch. An einer Stelle komme ich aber nicht weiter: Meiner Komponente können andere Komponenten zugewiesen werden. Das können auf der Form plazierte TEdits, TLabels, TMemo und andere sein. Mann denke z.B. an ein TDatasource dem ein TDataset zugewiesen wird. Entfernt jetzt der Dentwickler eine dieser Komponenten von der Form, muss meine Komponente darüber informiert werden, damit ich den Zeiger auf nil setzen kann, sonst greift der Zeiger ja ins Leere, und da hilft dann nur ein Neustart der IDE. Hier ist auch der Unterschied zwischen dem obigen Beispiel und meinem Fall: TDataset führt meines Wissens eine Liste der TDatasources und informiert diese über ein eventuelles Ableben, TEdit oder TLabel können das aber nicht tun, denn die wissen über meine Komponente nichts, und ich will Anwender meines Komponentensatzes nicht dazu zwingen, von mir erweiterte TEdits .... zu verwenden.
Langer Rede kurzer Sinn:

Gibt es einen Ereignismechanismus in der Delphi-IDE, in den sich meine Komponente zur Designzeit einklinken kann, und der über das Löschen von Komponenten informiert. Toll wäre natürlich auch Beispielcode dazu, aber auch jeder fundierte Hinweis, der mir hilft, die gesuchten Informationen zu finden, wäre hochwillkommen.

Vielen Dank
Peter

Jelly 7. Sep 2004 08:35

Re: Designtime: Info über entfernte Komponente
 
Hallo,

klar geht das, und zwar über die Notification Methode, die du im protected Bereich deklarierst... Etwa so:
Delphi-Quellcode:
interface

type
  TMeins = class (TComponent)
  private
    FEdit : TEdit ;
  protected
    procedure Notification (AComponent : TComponent; Operation : TOperation) ; override ;
  public
  published
    property Edit : TEdit read FEdit write FEdit ;
  end ; { end of TDBRTFReport }

implementation

{ TMeins }

procedure TMeins.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification (AComponent,operation) ;
     if (Operation = opRemove) then begin
        if (FEdit <> nil) and (AComponent = FEdit) then FEdit := nil ;
        { Die anderen Elemente auch hier auflisten }
     end ;
end;

end.
Gruß,

peteress 7. Sep 2004 09:31

Re: Designtime: Info über entfernte Komponente
 
Hi Jelly,

Treffer versenkt
:-D :-D

schätze ich mal.

Vielen Dank
Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz