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...
Zorro - Mi 26.12.07 00:10
Titel: Re: Controlarray in Delphi??
Sapphire 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..10] Of 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
Sapphire 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
Sapphire 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!