Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Herausfinden ob Komponente vorhanden (https://www.delphipraxis.net/67277-herausfinden-ob-komponente-vorhanden.html)

Jerry 12. Apr 2006 10:16


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:
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;
Danke!

jim_raynor 12. Apr 2006 10:24

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.

Jerry 12. Apr 2006 10:29

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!

jim_raynor 12. Apr 2006 10:33

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.

himitsu 12. Apr 2006 10:38

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');

Jerry 12. Apr 2006 10:43

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?

dfried 12. Apr 2006 10:46

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)

Hawkeye219 12. Apr 2006 12:18

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

Jerry 12. Apr 2006 12:29

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 07:52 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