![]() |
Delphi-Version: 7
Mehrere Images --> Imagex ???
Hey Community,
ich bin gerade dabei etwas zu programmieren, für das ich mehrere Images benutze. Mit meinen bisherigen Kenntnissen würde ich die entsprechenden Zeilen jetzt X mal kopieren und jeweils die Nummer des Images ändern. Nur muss das doch einfacher gehen. Klar kann ich nicht ImageX schreiben, weil woher will das Programm wissen das X eine Variable ist. Gibt es eine Möglichkeit die Nummer eines Images irgendwie durch eine Art Variable zu ersetzen, damit man die ganze Prozedur nicht X mal kopieren muss? Ich hoffe es ist ansatzweise klar was mein Problem ist. Hier ein weiterer Erklärungsversuch: Ich hätte gern sowas wie:
Code:
statt so:
begin
for i := 1 to 5 do begin Imagei.visible := true; end; end;
Code:
in meinem Fall benutze ich sogar weitaus mehr als 5 Images :D
begin
Image1.visible := true; Image2.visible := true; Image3.visible := true; Image4.visible := true; Image5.visible := true; end; Ich hoffe mein Problem ist zu genügend erläutert. Vielen Dank schonmal jetzt Mit freundlichen Grüßen Maurooon |
AW: Mehrere Images --> Imagex ???
Zitat:
Aber später kannst du dann genau das sagen was du gerne hättest. nur dass statt "Imagei.visible := true;" dann dort halt "meinImageArray[i].visible := true;" steht. (Kenne mich mit FreePascal nicht aus, hoffe das ist dort genauso) |
AW: Mehrere Images --> Imagex ???
Such mal hier im Forum nach
![]() |
AW: Mehrere Images --> Imagex ???
Zitat:
LG |
AW: Mehrere Images --> Imagex ???
mhmm.... hab das Array nach googlen wie folgt definiert:
Code:
und auch jeweils
imagearray: array[1..20] of Timage;
Code:
usw...
imagearray[1] := Image1;
imagearray[2] := Image2; imagearray[3] := Image3; imagearray[4] := Image4; imagearray[5] := Image5; nur kriege ich wenn ich z.B. imageaaray[x].left := imagearray[x].left + 1; mache für x := 1 oder so, den error: Identifier idents no member "imagearray" Jemand eine Lösung? Oder habe ich das Array falsch initialisiert? |
AW: Mehrere Images --> Imagex ???
Vergiss das Array.
=>
Delphi-Quellcode:
Ich würde das Ganze aber eher über eine TObjectList<TImage> machen.
for i := 1 to 5 do // begin in der nächsten Zeile. Das hier ist schließlich DELPHI ;)
begin if Assigned((FindComponent('Image' + SysUtils.IntToStr(i)) as TImage)) (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage).Visible := True; end; |
AW: Mehrere Images --> Imagex ???
Zitat:
|
AW: Mehrere Images --> Imagex ???
Dann nehmen Sie am besten meinen Vorschlag wie oben. Da kann eigentlich nichts schiefgehen und allemal besser als ein Array ist es auch.
Delphi-Quellcode:
Rand-Info: die Zählung eines Arrays beginnt bei 0. Ein Array ist also 0-basiert. Das erste Element in einem Array steuert man mit [0] an, nicht [1].
for i := 1 to 5 do
begin if Assigned((FindComponent('Image' + SysUtils.IntToStr(i)) as TImage)) // "SysUtils." kann auch weggelassen werden (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage).Visible := True; end; |
AW: Mehrere Images --> Imagex ???
Zitat:
|
AW: Mehrere Images --> Imagex ???
Blöd ausgedrückt prüft Assigned ob das Objekt, das man prüft, zugewiesen (also nicht nil) wurde oder nicht.
FindComponent sucht ein Objekt mit dem Namen den man als String übergeben hat. Hier werden also "Image1" bis "Image5" übergeben. "as TImage" behandelt das gefundene Objekt dann wie ein TImage soweit ich weiß aber das geht sicher noch viel schöner und vorallem besser. Man könnte das Ergebnis auch in eine Variable zwischenspeichern dann wird es schöner:
Delphi-Quellcode:
Aber ich betone: ich bin kein Profi und hier schlummern bestimmt Exceptions :P
var
aImg: TImage; begin // ... for i := 1 to 5 do begin aImg := (FindComponent('Image' + SysUtils.IntToStr(i)) as TImage); if Assigned(aImg) then aImg.Visible := True; end; Wenn man aber seine Image1...5 alle korrekt als TImage hat sollte es keine Fehler geben. Wenn ich natürlich einen TButton habe der Image1 heißt wäre das doof. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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