![]() |
Arrayelement anklicken
Ich habe folgendes Problem!
Ich habe ein array of TImage und möchte, dass die einzelnen elemnte angeklickt werden können. Karte[1].OnClick funktioniert nicht
Delphi-Quellcode:
Ich habe die Bilder in die Form geladen um "picture.loadfromfile();" nicht zu benutzen, damit ich am Ende nur eine Exedatei habe.
var
Form1: TForm1; var karte : array [1..100] of TImage; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); var j,i,a,b :integer; begin a:=2; b:=2; for j:= 1 to 4 do begin for i:=1 to 5 do begin Karte[i]:=TImage.Create(Self); Karte[i].Parent:= Self; Karte[i].Left:=a; Karte[i].Top:= b; Karte[i].AutoSize:=True; Karte[i].Picture := Image1.picture; a:=a+100; end; a:= 2; b:= b+ 100; end; end; Ich möchte das Spiel Memory machen. Vielen Dank im Voraus! |
Re: Arrayelement anklicken
Du musst dem OnClieck-Event auch eine Prozedur zuweisen :wink:
Oder was genau funktioniert nicht ? Gruß |
Re: Arrayelement anklicken
Ja, aber ich kann ja mit einem Array keine OnClick procedur machen!
Ich möchte, dass wenn ich auf das element karte[1] klicke dann folgendes passiert karte[1].picture := Image2.picture; Aber das klappt nur, wenn sich dieses Element auch anklicken lässt, nur weiss ich nicht, wie ich es dazu bringen soll, anklickbar zu sein! |
Re: Arrayelement anklicken
Sotov,
Zitat:
Delphi-Quellcode:
TForm1 = class(TForm)
//... procedure Image1Click(Sender: TObject); //... procedure TForm1.Image1Click(Sender: TObject); begin //... end; //... Karte[i].OnClick := Image1Click; |
Re: Arrayelement anklicken
Deine OnClick Prozedur müsste dann ungefair so aussehen:
Delphi-Quellcode:
Gruß
procedure TForm1.OnMyClick(Sender: TObject);
begin (Sender as TImage).picture := Image2.picture; end; |
Re: Arrayelement anklicken
Hmm, so hatte ich es mir am Anfang auch gedacht, aber irgendwie klappt es nicht!
Delphi-Quellcode:
Es passiert absolut nichts, wenn ich das objekt karte[1] anklicke!
procedure TForm1.Image1Click(Sender: TObject);
begin Karte[1].OnClick := Image1Click; showmessage('hi'); end; Zitat:
|
Re: Arrayelement anklicken
Dieser Teil muss in deine Schleife, dass jedes Image, diese Prozedur zugewiesen bekommt.
Delphi-Quellcode:
[Add]
Karte[1].OnClick := Image1Click;
Zitat:
Delphi-Quellcode:
schreibst du in dein Image1Click.
(Sender as TImage).picture := Image2.picture;
Zur Erklärung: Durch Sender "weis" die Prozedur, welches TImage angeklickt wurde und in das läd er dann das Bild aus Picture2. Gruß |
Re: Arrayelement anklicken
Super! Klappt alles!
Vielen dank! |
Re: Arrayelement anklicken
bist du sicher, daß alles richtig funktioniert?
Delphi-Quellcode:
for j := 1 to 4 do begin
for i := 1 to 5 do begin Karte[i] so wäre es wohl etwas besser
Delphi-Quellcode:
oder 0-basierend
for j := 1 to 4 do begin
for i := 1 to 5 do begin Karte[(j - 1) * 5 + i]
Delphi-Quellcode:
var karte : array [0..99] of TImage;
for j := 0 to 3 do begin for i := 0 to 4 do begin Karte[j * 5 + i] |
Re: Arrayelement anklicken
Hmm, ich weiss nicht was es geändert haben soll, denn es hat sich absolut nichts verändert!
Aber trotzdem vielen dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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 by Thomas Breitkreuz