Thema: Delphi Arrayelement anklicken

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

Re: Arrayelement anklicken

  Alt 21. Jan 2007, 16:14
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;
$2B or not $2B
  Mit Zitat antworten Zitat