![]() |
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 |
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:
Gruß,
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. |
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 17:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz