entweder du gehst das Array durch und vergleichst
Delphi-Quellcode:
for j := 1 to 4 do
for i := 1 to 5 do
if Sender = Karte[(j - 1) * 5 + i] Then ..
// oder
for i := 1 to 20 do
if Sender = Karte[i] Then ..
oder du speicherst den Index im Bild:
Code:
for j := 1 to 4 do
for i := 1 to 5 do begin
Karte[(j - 1) * 5 + i]:=TImage.Create(Self);
Karte[(j - 1) * 5 + i].Parent := Self;
Karte[(j - 1) * 5 + i].Left := a;
Karte[(j - 1) * 5 + i].Top := b;
Karte[(j - 1) * 5 + i].AutoSize := True;
[color=#ff0000][b] Karte[(j - 1) * 5 + i].Tag := (j - 1) * 5 + i; [/b][/color]
Karte[(j - 1) * 5 + i].Picture := Image1.picture;
Karte[(j - 1) * 5 + i].OnClick := Image1Click;
end;
Abrufen dann z.B. so
Delphi-Quellcode:
Index := Sender.Tag;
//oder
Index := TImage(Sender).Tag;
//oder
Index := (Sender as TImage).Tag;
PS: mal ein bissl Code ... wenn du Lust hat, dann schau ihn dir mal an ... is so'n kleiner Vorschlag, wie man es auch machen könnte
Delphi-Quellcode:
var karte : array [0..19] of TImage;
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
for i := 0 to 19 do begin
Karte[i] := TImage.Create(Self);
Karte[i].Parent := Self;
Karte[i].Left := (i mod 5) * 100 + 2;
Karte[i].Top := (i div 5) * 100 + 2;
Karte[i].AutoSize := True;
Karte[i].Tag := i;
Karte[i].Picture := Image1.picture;
Karte[i].OnClick := Image1Click;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
for i := 0 to 19 do
Karte[i].free;
end;
procedure TForm1.Image1Click(Sender: TObject);
begin
Karte[TImage(Sender).Tag] // diese Karte wurde angeklickt
end;