![]() |
Dann kannst du mit ComponentState nicht viel anfangen, da dir das nur den aktuellen Zustand anzeigt. Wenn da ein csDesigning drin ist, dann heißt das, das grade in diesem Moment die Komponente im Designmodus läuft. Während der normalen LaufZeit wird es nie ein csDesign geben.
|
Es überhaupt keinen Sinn wissen zu wollen ob ein Objekt während der Laufzeit erzeugt wurde oder nicht!
Ich würde mal nach anderen Lösungsmöglichkeiten suchen! |
Jetzt ist klar was Du willst. Die Antwort ist: geht nicht :( Füge einfach ein Prozedur ein, welche Du im Code aufrufst, wenn Du die Komponente zur Laufzeit aufrufst, z.B.
Delphi-Quellcode:
...:cat:...
APPKompo := TAPPKompo.Create(Self);
APPKompo.InitRunTimeSettings; |
@Sakura
Du wirst lachen, das habe ich bis jetzt so gemacht, allerdings dachte ich, das diese Lösung nicht sehr elegant ist. :mrgreen: @Touchdown Nun ja, ich denke aus der Sicht eines Komponenten-Users ist es schon sinnvoll zu wissen "ob ein Objekt während der Laufzeit erzeugt wurde oder nicht", da ich versuchen möchte, es dem User so einfach wie möglich zu machen, dadurch kann er auch nichts vergessen. Einen "zarten" Versuch möchte ich noch machen, bitte schaut Euch das mal an:
Delphi-Quellcode:
Ich dachte mir, wenn die Kompo während der Laufzeit erstellt wurde ist der Klassenname "TApplication" und dieser kann wohl nicht verändert werden (oder?!).
IF (Self.GetOwner.ClassName = 'TApplication') THEN // Komponente ist zur Runtime erstellt worden
BEGIN Application.OnException := onFlappException; IF FIniFileName = '' THEN FIniFileName := ChangeFileExt(Application.ExeName, '.INI'); SetFlappErrorProp(Self); // Ini Lesen END ELSE // Komponente ist zur Designtime erstellt worden BEGIN IF FIniFileName <> '' THEN SetFlappErrorProp(Self); // Wenn Inidatei vorhanden ist, dann lesen ... END;
Delphi-Quellcode:
Wenn ich umgekehrt frage, ob der Klassenname eine Form ist (=Erstellung schon zur DesignTime) scheint mir das zu unsicher, da der User/Programmierer den Namen der Form ändern darf.
FError := TFlappError.Create(Application);
Was meint Ihr zu meiner Lösung? :cat: Armin |
Zitat:
Delphi-Quellcode:
MyComp := TMyComp.Create(Form1);
|
Tja, grundsätzlich hast Du recht, aber meine Kompo soll ein globaler Exception Handler werden. In diesem Fall gibt es (für mich) nur einen Grund, die Komponente dynamisch zu erzeugen, nämlich wenn man auch Ereignisse vor FormMain.Create erfassen möchte, daher ist der Aufruf im Projektquelltext sinvoll.
Man könnte natürlich die Kompo trotzdem im Hauptformular erzeugen, anstatt im Projektquelltext (wie mir Christian unter ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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 by Thomas Breitkreuz