![]() |
Herausfinden ob Komponente vorhanden
Hallo zusammen
Ich habe folgede Aufgabe zu lösen: Auf einem Panel hat es jeweils eine GroupBox von 6 möglichen GroupBoxen. Wie finde ich in einer Schleife heraus welche GroupBox momentan auf dem Panel ist? Mit FindComponent komme ich irgendwie nicht weiter... Hat jemand einen Tipp? Habe das mit diesem Code versucht, das klappt aber nicht:
Delphi-Quellcode:
Danke!
begin
// prüfen ob bereits GroupBox auf Panel ist if PanelEx1.FindComponent(TGroupBox) then // das hier gibt logischerweise den Fehler Inkomtatible Typen.... showmessage('Eine GroupBox gefunden'); end; |
Re: Herausfinden ob Komponente vorhanden
Die Frage ist, wie du die GroupBoxen auf das panel plazierst und wieder runternimmst? Vielleicht mit Visible. Dann kannst du mit PanelEx1.Components alle GroupBoxen durchgehen und schauen, bei welcher Visible=true ist.
Vielleicht ist es auch einfacher dir irgendwo eine Variable zu setzen, in der erkennbar ist, welche GroupBox aktiv ist. |
Re: Herausfinden ob Komponente vorhanden
Hallo Platziert werdendie GroupBoxen mit Drag und Drop. Ich muss also feststellen können welche GroupBox von welchem Panel kommt, damit ich die GroupBoxen "tauschen" kann.
Deine Input wäre ne Möglichkeit, gibt es aber noch andere Ansätze? danke für weitere Inputs! |
Re: Herausfinden ob Komponente vorhanden
Achso. Drag'n'Drop ... Mmh. Hast du mal geschaut ob in TGroupBox.Parent das richtige Panel drin ist. Da a (davon gehe ich mal aus) bei dem Drag'n'Drop Event die Groupbox bekannt ist, dürfetest du über das Parent rausbekommen, auf welchen Panel das liegt. Nach dem Drag'n'Drop muss ja das Parent angepasst werden, da sonst die GroupBox nicht im neuen Panel liegen würde.
|
Re: Herausfinden ob Komponente vorhanden
Und wie wäre es, wenn du den Namen verwendest?
Delphi-Quellcode:
For i := 1 to 6 do
If PanelEx1.FindComponent('GroupBox' + IntToStr(i)) <> nil Then MessageBox('GroupBox' + IntToStr(i) + ' ist auf Panel1'); |
Re: Herausfinden ob Komponente vorhanden
Danke für Deine Antwort.
Leider heissen die GroupBoxen nicht gb_1 / gb_2 usw. Die haben andere Namen, wie z.B: gb_Bewilligung / oder gb_Fahrzeuge / gb_Vermerke usw. Gibt es da noch andere Möglichkeiten? |
Re: Herausfinden ob Komponente vorhanden
wieso läufst du nicht einfach über alle Komponenten die auf dem Panel sind:
Delphi-Quellcode:
for i := 0 to Panel.ComponentCount - 1 do begin
if Panel.ControlCount[i] is TGroupbox then with TGroupbox(Panel.Controls[i]) do DoSomething; end; //EDIT: ComponentCount/Components auf ControlCount/Controls geändert (Danke @Hawkeye219) |
Re: Herausfinden ob Komponente vorhanden
Hallo,
die Verwendung von Panel.ComponentCount und Panel.Components[] dürfte hier nicht zum Ziel führen, da bei allen Controls normalerweise das Formular als Besitzer eingetragen ist und nicht ein spezielles Control auf dem Formular. So wie ich das verstanden habe, ist Jerry an der z-Reihenfolge interessiert, die über TPanel.ControlCount und Panel.Controls[] erfragt werden kann. Aus Sicht einer GroupBox kanne man über GroupBox.Parent das übergeordnete Panel erfragen, so wie es jim_raynor auch schon beschrieben hat. Gruß Hawkeye |
Re: Herausfinden ob Komponente vorhanden
Vielen Danke für Eure Inputs!
Mit diesen Lösungsvorschlägen, kann ich mir das nötige zusammenbauen! Danke an alle! Grüsse vom Bodensee, Jerry |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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