Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variable mit Variable (https://www.delphipraxis.net/180976-variable-mit-variable.html)

hesch21 4. Jul 2014 15:13

Variable mit Variable
 
ich komme mir im Moment selten blöd vor weil ich das auch schon gemacht habe, aber nicht mehr dahinter komme, wie.
Ich habe etwa 12 Image-Komponenten auf einer Form, schön mit Image1 bis Image12 benannt. Nun soll eine for x:= 1 to 12 - Schlaufe die Pictures dieser Images abfüllen.
Wie um Himmels Willen spreche ich in der Schlaufe die Images an? Irgendwie mit Image + IntToStr(X) aber wie gesagt, ich steh auf dem Schlauch.

Neutral General 4. Jul 2014 15:17

AW: Variable mit Variable
 
Hallo,

Du musst "FindComponent" benutzen. Alternativ kannst du auch ein Array of TImage machen und diese da rein schreiben und dann über den Array-Index darauf zugreifen.

DeddyH 4. Jul 2014 15:18

AW: Variable mit Variable
 
Quick and Dirty:
Delphi-Quellcode:
var
  i: integer;
  img: TImage;
begin
  for i := 1 to 12 do
    begin
      img := FindComponent('Image' + IntToStr(i));
      if Assigned(img) then
        //mach was mit dem Image
    end;
end;
Sauberer wäre es aber IMO, ein eigenes Array oder eine Liste zu deklarieren und einmalig mit den Images zu befüllen. Dann kannst Du die Images auch umbenennen.

[edit] *Pfh*, wozu tipp ich eigentlich? [/edit]

himitsu 4. Jul 2014 15:30

AW: Variable mit Variable
 
Zitat:

Zitat von DeddyH (Beitrag 1264467)
Dann kannst Du die Images auch umbenennen.

[edit] *Pfh*, wozu tipp ich eigentlich? [/edit]

Langeweile?

Aber umbenennen könnte man die "schön" benannten Image* bestimmt dennoch. :stupid:

Aphton 5. Jul 2014 03:21

AW: Variable mit Variable
 
Mit etwas Glück sollte das hier auch möglich sein

Delphi-Quellcode:
function getNextImage(): TImage;
begin
  Result := TImage(Random($FFFFFFFF));
end;

hesch21 10. Jul 2014 11:38

AW: Variable mit Variable
 
Danke für Eure Antworten, aber leider funktioniert alles nicht.
Die 'Glücksvariante' von Aphton gibt eine Excpetion.
Und die Quick und Dirty-Lösung von DeddyH geht schon beim Compilieren mit XE2 in die Hose. Ich habe die Image wie empfohlen umgetauft. Die heissen nun 'Bild1' bis 'Bild12'.
Code:
procedure TFPDFHandler.Button1Click(Sender: TObject);
var x        : integer;
var img      : TImage;
begin
 for x := 1 to BMPFiles.Count do
     begin
     BMP := TBitmap.Create;
     BMPFiles.ItemIndex := X -1;
     BMP.LoadFromFile(BMPFiles.FileName);
     BMP.PixelFormat := pf8bit;
     img := FindComponent('Bild' + IntToStr(x));
     if assigned(img) then
        img.picture.Bitmap := BMP;
     BMP.Free;
     end;
end;
Das liefert einen Compiler-Fehler auf der Zeile img := FindComponent('Bild' + IntToStr(x)); E2010 Inkompatible Typen: 'TImage' und 'TComponent'

Die Lösung:

TImage(FindComponent('Bild' + IntToStr(x))).Picture.Bitmap := BMP;

vagtler 10. Jul 2014 11:42

AW: Variable mit Variable
 
Zitat:

Zitat von hesch21 (Beitrag 1265048)
[...] Ich habe die Image wie empfohlen umgetauft. Die heissen nun 'Bild1' bis 'Bild12'. [...]

:cheer: ROTFL - YMMD! :cheer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 Uhr.

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