Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi verschiedene Komponenten einer Form ansprechen klappt nicht (https://www.delphipraxis.net/62814-verschiedene-komponenten-einer-form-ansprechen-klappt-nicht.html)

fabiO 9. Feb 2006 20:45


verschiedene Komponenten einer Form ansprechen klappt nicht
 
Hallo,

Bei meinem Programm gibts ein Problem mit der FindComponent Funktion.
Ich habe eine MainForm ( Form1 ) in welche ich mit { $INCLUDE AndereDatei.inc } ausgelagerten Code einfüge.

So nun habe ich eine Datei, in welcher in einige Komponenten, um genau zu sein 7 TImages, ansprechen will. Dies hab ich mit einer for-schleife und einem variablen String gemacht, wobei ich eine Variable xComponent ( : TComponent ) benutze, um nen EAccessVio. abzufangen...

Delphi-Quellcode:
    for i := 1 to 7 do
    begin
      name1 := ('Image'+IntToStr(i));
      xComponent := Application.FindComponent(name1);

      if not Assigned(xComponent) then Exit;
      if ((xComponent as TImage).Hint = 'Nix') then
      begin
        (xComponent as TImage).Picture.LoadFromFile('Bild.bmp');
        (xComponent as TImage).Hint := 'Voll';
      end;
   end;
So das Problem ist nun, dass ich ja, wenn ich in dieser ausgelagerten Datei auf Komponenten des MainForms zugreifen will, immer zuerst z.B. Form1.Label1 verwenden muss.
Und hier liegt mein Problem. Ich hab schonmal probiert, TForm1.Classname vor die FindComponent Funktion zu setzen, sprich ...

Delphi-Quellcode:
xComponent := Application.FindComponent(TForm1.ClassName + '.' + name1)
... aber das hat auch nich geklappt, genauso wenig wie 'with Form1 do' davor zu setzen :(
kann mir da ma jemand helfen... dankeschön :)

Gruß fabiO

SirThornberry 9. Feb 2006 20:52

Re: verschiedene Komponenten einer Form ansprechen klappt ni
 
TForm1.ClassName geht logicher Weise nicht da TForm1 eine Klasse ist, und eine Klasse hat logicher weise auch keine childinstanzen, es kann nur eine instanz childinstanzen haben. Denn die Klasse representiert nur eine Struktur aber nicht den angeforderten Speicher.

Funktioniert eigentlich Application.FindComponent? Ich hätte getippt das es fehl schlägt weil du vermutlich bei keinem Create einer Komponente die ApplicationInstanz als Owner übergibst.

Wenn du per Designer dinge auf ein Form gepackt hast kannst du innerhalb der Klasse mit
"[Self].FindComponent" auf diese drauf gepackten Komponenten zugreifen, und außerhalb der Klasse mit "FormInstanz.FindComponent" auf die drauf gepackten Komponenten zugreifen.

fabiO 9. Feb 2006 20:56

Re: verschiedene Komponenten einer Form ansprechen klappt ni
 
hast recht, wenn ich nochma drüber nachdenk...
bin grade zufällig auch auf ne andere möglichkeit gestoßen...

Delphi-Quellcode:
(xComponent := (Form1.FindComponent(name1));
Naja danke dafür, hat sich ja schnell erledigt :)


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