![]() |
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; ... |
Re: Object als Variable
Suche einmal nach
![]() |
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. |
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; ... |
Re: Object als Variable
Erstmal danke an alle, aber irgendwie komme ich mit FindComponent nicht zurecht.
Mein Code
Delphi-Quellcode:
In der letzten Zeile kommt es zu einer Zugriffsverletzung, und ich hab keine Ahnung, was ich da falsch gemacht haben könnte.
...
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'); ... |
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 ...) |
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