Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Object als Variable (https://www.delphipraxis.net/34080-object-als-variable.html)

leviathan666 17. Nov 2004 08:26


Object als Variable
 
Hallo,

gibt es irgendeine Möglichkeit, eine Object-Variable so "zusammenzubasteln", dass über diese auf eine bestehende Komponente zugegriffen werden kann? Oder einen anderen Weg?

Ich weiß, untenstehendes Beispiel ist grundverkehrt; dient nur zur Verdeutlichung meines Problems.

Also: angenommen es existieren zwei Image-Komponenten mit den Namen Image1 und Image2
Delphi-Quellcode:
...
var
  hObject : TObject;
  x      : String;
begin
  x := '2';
  hObject := 'Image' + x;
 
  hObject.Picture.Bitmap.LoadFromFile('Bild.bmp');
end;
...

choose 17. Nov 2004 08:34

Re: Object als Variable
 
Suche einmal nach Hier im Forum suchenFindComponent.

jim_raynor 17. Nov 2004 08:34

Re: Object als Variable
 
1. Du kannst die Variable auch vom Typ TImage machen.
2. Wenn du das nicht willst schau dir mal is und as in der Online Hilfe an, oder generell Typkonvertierung
3. Um eine Komponente mit einem Bestimmten Namen zu finden benutze FindComponent.

IngoD7 17. Nov 2004 08:41

Re: Object als Variable
 
Ungeprüft und auf die Schnelle ...

Siehe TForm.FindComponent und ggf. Stichwort "Typumwandlung" in der Delphi-Hilfe

Delphi-Quellcode:
...
var
  hObject : TImage;  
  x      : String;
begin
  x := '2';
  hObject := TImage(Form1.FindComponent('Image' + x));
 
  hObject.Picture.Bitmap.LoadFromFile('Bild.bmp');
end;
...

leviathan666 17. Nov 2004 09:19

Re: Object als Variable
 
Erstmal danke an alle, aber irgendwie komme ich mit FindComponent nicht zurecht.

Mein Code
Delphi-Quellcode:
...
  hString := Trim(hQuery.FieldByName('Zeile').AsString) + Trim(hQuery.FieldByName('Spalte').AsString);

  hObject := TImage(FormMain.FindComponent('Image' + hString));
  hObject.Picture.Bitmap.LoadFromFile('d:\stuff\#fg\pics\field1.bmp');
...
In der letzten Zeile kommt es zu einer Zugriffsverletzung, und ich hab keine Ahnung, was ich da falsch gemacht haben könnte.

jim_raynor 17. Nov 2004 09:24

Re: Object als Variable
 
Ich vermute mal, dass er nicht die richtige Komponente findet und hObject nil ist. Prüfe also, ob auch der richtige Komponenten-Name aufgebaut wird.

Du solltest also noch ein if Abfrage nach dem FindComponent einbauen (if hObject<>nil ...)

leviathan666 17. Nov 2004 09:28

Re: Object als Variable
 
Jep, genau das war's. Danke, danke, danke! :dancer:


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