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 Panel im Panel suchen (https://www.delphipraxis.net/67879-panel-im-panel-suchen.html)

fboesel 21. Apr 2006 11:30


Panel im Panel suchen
 
Hallo,

ich habe ein Formular mit verschiedenen Panels.
soweit so gut.

Ich kann das Formular nach allen Panels durchsuchen. Das funktioniert auch einwandfrei.

Damit finde ich das gewünschte Panel:
panel := Findcomponent ('PANEL1') as tpanel;

So, nun zu meinen Problem:

In gewissen Panels sind weitere Panels enthalten. Diese kann ich nicht finden.

Wahrscheinlich ist es ganz einfach ... nur ich weis es leider nicht...

schön, wenn mir wer helfen könnte

gruss
fboesel :angel:

dfried 21. Apr 2006 11:34

Re: Panel im Panel suchen
 
Kuck mal hier, das müsste auch für dich passen (mit kleinen Anpassungen). Du musst allerdings statt "ComponentCount" "ControlCount" verwenden (ist in dem Beispiel noch verkehrt, aber lässt sich nicht mehr ändern...)

Hawkeye219 21. Apr 2006 11:55

Re: Panel im Panel suchen
 
Hallo,

das Stichwort lautet "rekursive Suche". Hier ist eine "Quick&Dirty"-Lösung:

Delphi-Quellcode:
function Suche (aParent: TWinControl; const aName: string): TControl;
  var ii : Integer;
begin
  // alle Controls von aParent prüfen
  for ii := 0 TO aParent.ControlCount - 1 do
  begin
    // Zeiger auf ein Control holen
    Result := aParent.Controls[ii];
    // Ist das Control ein TPanel?
    if (Result is TPanel) then
    begin
      // Falls der Name stimmt, sind wir fertig
      if SameText(Result.Name, aName) then
        Exit;
      // Rekursive Suche in diesem Control, bei Erfolg exit
      Result := Suche(TPanel(Result), aName);
      if Assigned(Result) then
        Exit;
    end;
  end;
  // Suche erfolglos beendet
  Result := Nil;
end;
Der Aufruf sieht dann beispielsweise so aus:

Delphi-Quellcode:
Panel := Suche(Form1, 'Panel1') as TPanel;
Gruß Hawkeye

fboesel 21. Apr 2006 14:49

Re: Panel im Panel suchen
 
Danke,

mein Code - dank Eurer Hilfe - rockt.
Wochen-Ende gerettet

gruss
fboesel :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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