Entwickler-Ecke

Sonstiges (Delphi) - Controlarray in Delphi??


Sapphire - Di 25.12.07 19:30
Titel: Controlarray in Delphi??
Hy Leute,

ich habe folgendes Problem:

Ich habe eine Reihe TImages (insgesammt 35). Wenn ich auf eines klicke soll sich das Bild verändern. Soweit kein Problem. Jetzt soll das aber mit jedem Bild geschehen auf das ich klicke.
Gibt es da eine Möglichkeit, damit ich mir die ganze Schreibarbeit spare??

Bei Visual Basic gäbe es ja die Controlarrays, die sind mir bei Delphi aber noch nicht begegnet...

MFG + Frohe Weihnachten. Sapphire

PS: Hier nocheinmal der Code von einem Image:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.image1Click(Sender: TObject);
begin
  if activeplace <> 1 then begin
    activeplace := 1;
    image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\bilder\bauplatzact.bmp');
  end
  else begin
    activeplace := 0;
    image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\bilder\bauplatz.bmp');
  end;
end;


Christian S. - Di 25.12.07 19:36

Hallo und :welcome:!

Zuerst einmal: Ändere doch bitte den Titel Deines Threads, sodass er etwas über den tatsächlichen Inhalt aussagt. Dein Titel passt wahrscheinlich auf die meisten Threads hier ;-)

Zu Deiner Frage: Du kannst den Sender-Parameter auswerten:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.image1Click(Sender: TObject);
var
  theImage : TImage;
begin
  theImage := TImage(Sender);
  if activeplace <> 1 then begin
    activeplace := 1;
    theImage.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\bilder\bauplatzact.bmp');
  end
  else begin
    activeplace := 0;
    theImage.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + '\bilder\bauplatz.bmp');
  end;
end;


Ich nehme an, dass auch activeplace für jedes Image gespeichert werden muss? Dann kannst Du das in der Tag-Eigenschaft jedes Image tun.

Grüße
Christian


Sapphire - Di 25.12.07 19:40

erstmal Danke

aber auch das muss ich doch in die clickprozedur von jedem image schreiben...


Christian S. - Di 25.12.07 19:41

Ach so, stimmt. Dann guck mal hier: http://www.delphi-library.de/topic_Komponenten+dynamisch+im+Array+verwalten_43052.html


Zorro - Mi 26.12.07 00:10
Titel: Re: Controlarray in Delphi??
user profile iconSapphire hat folgendes geschrieben:

Bei Visual Basic gäbe es ja die Controlarrays, die sind mir bei Delphi aber noch nicht begegnet...


Automatisch (wie in VB) gibts das nicht, aber du kannst die selbstverständlich nachbilden:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Var arrImg: Array[1..10Of TImage;

procedure TForm1.Create(Sender: TOBject);
begin
  arrImg[1] := Image1;
  arrImg[2] := Image2;
  arrImg[3] := Image3;
  ...
  arrImg[10] := Image10;
end;

procedure TForm1.Button1Click(Sender:TObject);
var z:Integer;
begin
  for z := 1 To 10 Do arrImg[z].Left := 100;
end;


Greetz
Zorro


Sapphire - Fr 28.12.07 02:30

so weit war ich schon

mein problem liegt darin, das ich nicht auf buttons, sondern auf die images klicke...


alzaimar - Fr 28.12.07 11:03

user profile iconSapphire hat folgendes geschrieben:
mein problem liegt darin, das ich nicht auf buttons, sondern auf die images klicke...

Buttons? Ich les' immer Buttons? Da sind doch Images im Beispielcode...


ub60 - Fr 28.12.07 12:48

user profile iconSapphire hat folgendes geschrieben:
aber auch das muss ich doch in die clickprozedur von jedem image schreiben...

Alle Images markieren, dann die OnClick-Prozedur des 1. Images im Objektinspektor anklicken (die den Sender auswertet), fertig. Damit haben alle Images die gleiche OnClick-Prozedur.

ub60


Sapphire - Mo 31.12.07 15:21

da hätte ich aber immernoch ein problem mit...

schreibt mir bitte mal einen Beispielcode

ich habe 35 images, die das bild wechseln, wenn man auf eines klickt (nur dieses wechselt das bild), klickt man nochmal, dann kommt das alte bild wieder

das soll auf allen images liegen