Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Componenten in Forms und Frames finden (https://www.delphipraxis.net/191077-componenten-forms-und-frames-finden.html)

Ykcim 6. Dez 2016 12:39

Componenten in Forms und Frames finden
 
Hallo Zusammen,

ich schreibe gerade an einer Klasse, mit der ich die Forms und die Frames, die auf den Forms teilweise positioniert sind, finden kann.

Ich nutze dazu

Delphi-Quellcode:
for I := 0 to Form.ComponentCount -5  do begin
if Form.Controls[I] is TDBAdvEdit then
//Tu etwas;
end;
,

weil ich den Namen der Komponente erst einmal nicht kenne.

Wenn ich das ganze in einem Form ausführe, klappt das prima. Mein Problem besteht aber darin, dass ich in Forms und in Frames nach Componenten suchen muss. Kann mir jemand einen Tipp geben, wie ich das am besten anstelle?

Vielen Dank
Patrick

himitsu 6. Dez 2016 12:45

AW: Componenten in Forms und Frames finden
 
Zitat:

Zitat von Ykcim (Beitrag 1355472)
if Form.Controls[I] is TDBAdvEdit then
Wenn ich das ganze in einem Form ausführe, klappt das prima.

Kann mir jemand einen Tipp geben,

Tipp: Siehe Farben.

Zitat:

for I := 0 to Form.ComponentCount -5 do begin
if Form.Controls[I] is TDBAdvEdit then
Siehe ebenfalls Farben und ich würde das nicht "prima" funktionierend nennen ... eher potentiell gefährlich.


TComponent(xxx).Components findet alles, wo diese Komponente der Owner ist (das, was man beim Create angab, bzw. was man im FormDesigner auf die Form pappt, da ist immer die Form der Owner)

Und TWinControl(xxx).Controls oder . WinControls ist alles, wo diese Komponente der Parent ist.

PS: Delphi-Referenz durchsuchenFindComponent

Der schöne Günther 6. Dez 2016 13:04

AW: Componenten in Forms und Frames finden
 
for I := 0 to Form.ComponentCount - 5

Hast du dich vertippt oder bist du mit dem "-5" ganz, ganz sicher?

himitsu 6. Dez 2016 13:05

AW: Componenten in Forms und Frames finden
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1355475)
Hast du dich vertippt oder bist du mit dem "-5" ganz, ganz sicher?

Oder "klappt das prima" hatte mit -1 nicht so prima geklappt. :angle2:

Der schöne Günther 6. Dez 2016 13:06

AW: Componenten in Forms und Frames finden
 
Aah, jetzt sehe ich das auch (.Components[] vs. .Controls[]) :-D

Ykcim 6. Dez 2016 14:23

AW: Componenten in Forms und Frames finden
 
Hallo Zusammen,

vielen Dank für die Hinweise - ja, -1 hatte nicht so prima geklappt :oops: und da das erst einmal ein TestProjekt war, hatte ich das so gelöst.

Wenn ich das richtig verstehe, veranstalte ich ein Durcheinander mit Componenten und Controls :?. Da ich mit dem Unterschied nicht vertraut bin, werdet ihr recht haben und ich muss mich damit beschäftigen :!:.

Mein Ziel ist es, alle verwendeten Elemente (ich benutze jetzt mal bewusst weder das Wort Componente noch Controls) zu finden und ggf. Eigenschaften wie Captions etc zu verändern :?:.

Vielen Dank
Patrick

Ykcim 6. Dez 2016 15:35

AW: Componenten in Forms und Frames finden
 
Ok, ich habe hier noch eine gute Erklärung gefunden und werde das Ganze mal so testen:

Delphi-Quellcode:
for I := 0 to Form.ComponentCount -1 do begin
if Form.Components[I] is TDBAdvEdit then
//Tu etwas;
end;
Im TestProjekt hat das geklappt, ob das auch mit einer gekapselten Klasse und einem Projekt mit Forms und Frames funktioniert muss ich noch testen.

Vielen Dank
Patrick

Ykcim 6. Dez 2016 17:40

AW: Componenten in Forms und Frames finden
 
Ich muss jetzt doch noch einmal nachfragen:

Gibt es eine Möglichkeit, wie ich einer Procedure entweder ein TForm oder ein TFrame übergeben?

So nach dem Motto:
Delphi-Quellcode:
if form.components[I] is TButtom then
   ProcedureXY(Form)
else if form.components[I] is TFrame then
   ProcedureXY(Frame)
Ich kann natürlich zwei Mal die gleiche Procedure definieren mit dem Unterschied, dass die eine ein TForm und die andere ein TFrame bekommt, aber wer will das schon...
Am liebsten hätte ich etwas universelles, was ein TForm oder TFrame sein kann. Gibt es da eine Möglichkeit?

Vielen Dank
Patrick

Der schöne Günther 6. Dez 2016 17:55

AW: Componenten in Forms und Frames finden
 
Ja. Eine Form leitet sich von TWinControl ab. Ein Frame ebenfalls. Und ein Panel auch, und eine GroupBox auch, und ...

Entweder baust du dir eine Prozedur in welches du ein TWinControl reinstecken kannst (also deine Form, deinen Frame, ...).

Oder, wenn man es richtig cool haben möchte, machst du einen Klassenhelfer draus.

Und wenn du es so machen willst dass dir die Frauen gleich um den Hals fallen kommen noch Generics rein wie ein wie es z.B. dieser Poser hier macht:
http://www.delphipraxis.net/175655-g...ml#post1220959

Ykcim 6. Dez 2016 18:07

AW: Componenten in Forms und Frames finden
 
Das ist klasse! Ich denke, damit komme ich weiter.
Auf die Frauen am Hals muss ich verzichten, denn Generics übersteigen meine Kenntnisse...

Vielen Dank
Patrick


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.
Seite 1 von 2  1 2      

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