AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Feststellen ob Komponente zur Laufzeit erstellt wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Feststellen ob Komponente zur Laufzeit erstellt wurde

Ein Thema von APP · begonnen am 5. Mär 2003 · letzter Beitrag vom 6. Mär 2003
Antwort Antwort
Seite 2 von 2     12   
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#11
  Alt 5. Mär 2003, 20:20
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.
Die Wichtigkeit eines Postings im Forum ist reziprok zur Anzahl der enthaltenenen, kumulierten Ausrufungszeichen!!!
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#12
  Alt 5. Mär 2003, 20:20
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!
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#13
  Alt 5. Mär 2003, 21:45
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:
APPKompo := TAPPKompo.Create(Self);
APPKompo.InitRunTimeSettings;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#14
  Alt 5. Mär 2003, 23:27
@Sakura
Du wirst lachen, das habe ich bis jetzt so gemacht, allerdings dachte ich, das diese Lösung nicht sehr elegant ist.

@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:
   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;
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?!).
FError := TFlappError.Create(Application); 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.


Was meint Ihr zu meiner Lösung?

Armin
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15
  Alt 6. Mär 2003, 06:10
Zitat:
IF (Self.GetOwner.ClassName = 'TApplication') THEN // Komponente ist zur Runtime erstellt worden
Und was ist, wenn ich folgendes mache:
MyComp := TMyComp.Create(Form1);
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#16
  Alt 6. Mär 2003, 10:43
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 Komponente vor der Erzeugung der 1. Form aktivieren? zeigte), aber mir scheint es im Projektquelltext sinvoller zu sein.
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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