![]() |
Komponente existiert?
Hallo,
ich habe versucht über FindComponent zu gucken, ob eine spezielle Komponente existiert. Und wenn sie nicht existiert, soll eine neue Komponente erstellt werden (funktioniert). Aber da liegt der Haken. Wenn FindComponent fehl schlägt kommt eine Zugriffsverletzung, wobei auch kein try/except hilft (in und außerhalb der IDE). Gibts eine gute Alternative? |
Re: Komponente existiert?
Du könntest doch mittels Assigned(Komponente) prüfen, ob sie erzeugt wurde. Und FindComponent sollte nil zurückgeben, wenn die Komponente nicht gefunden wird, anstatt Fehler zu verursachen. Aber ohne Code kann man da nichts Genaueres zu sagen.
|
Re: Komponente existiert?
Okay, habe über die Methode .Name gesucht :wall: aber klar = nil funktioniert.
Was ist besser bzw. der Unterschied (bin noch lernfähig ^^). Assigned(Component) oder if FindComponent('Component) = nil |
Re: Komponente existiert?
Wenn Du weißt, wie die Komponente heißt, ist Assigned() vorzuziehen. FindComponent() arbeitet intern mit einer Schleife, das verwendet man z.B., wenn man über alle Edits iterieren möchte.
|
Re: Komponente existiert?
Okay, ist vollstreck :)
Delphi-Quellcode:
Kann man eig. solche Prozeduren auch zusammenfassen und irgendwie die Zahl 4 mit einer anderen Ersetzen, obwohl es sich um Komponenten handelt?
procedure TFormMain.TBXItem34Click(Sender: TObject); // Andere Apps
begin if TBXItem34.Checked then begin TBXDockablePanel4.hide; TBXItem34.Checked := false; end else begin if Assigned(TBXDockablePanel4) = false then // if FindComponent('TBXDockablePanel4') = nil then begin createDockablePanel(4); TBXItem34.Checked := true; end else begin TBXDockablePanel4.Show; TBXItem34.Checked := true; end; end; end; Will jetzt mein neues Projekt vernünftig angehen und gerne neues lernen. |
Re: Komponente existiert?
Welche 4 meinst Du jetzt?
|
Re: Komponente existiert?
Alle, habe
TBXDockablePanel4 TBXItem34.Checked |
Re: Komponente existiert?
Zitat:
![]() Edit: Ich hatte "FineComponent" geschrieben. *g* |
Re: Komponente existiert?
klappt alles. closed
|
Re: Komponente existiert?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Habe mehrere TBXMultiDocks mit AlignmentPanel und Komponenten drauf. Wenn ich ein MultiDock schließe (OnClose) und dann während der Laufzeit neu erstelle, wird es in die gleiche Zeile eingefügt. Wie kann man das einstellen, dass jedes TBXMultiDock nur 1 Zeile benutzen und sich immer oben an dockt? Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 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