Hi.
Genau. Ereignisse (OnClick) sind nicht gespeicherte Aufrufe von Prozeduren und Funktionen "für später", sondern
Zeiger auf Methoden. Deshalb funktioniert der Code so, wie du ihn eingegeben hast nicht.
So sollte es funktionieren:
Delphi-Quellcode:
procedure TMainFrm.BilderErstellen;
begin
while zaehlen <= 24 do
begin
Bild[zaehlen] := TImage.Create(Memoryfeld);
Bild[zaehlen].Parent := Memoryfeld;
Bild[zaehlen].Picture.loadfromfile('back.jpg');
Bild[zaehlen].Top := top;
Bild[zaehlen].left := left;
Bild[zaehlen].Visible := true;
Bild[zaehlen].Cursor := crHandPoint;
Bild[zaehlen].OnClick := aufdeckenOnClick; // <-- ZEIGER auf die Prozedur
Bild[zaehlen].Tag := zaehlen; // <-- Bildnummer speichern
left := left + 120;
if anzahl = 6 then
begin
top := top + 100;
left := 50;
anzahl := 0;
end;
anzahl := anzahl + 1;
zaehlen := zaehlen + 1;
end;
end;
Und so kommst du später noch an die Nummer des Bilds:
Delphi-Quellcode:
procedure TMainFrm.aufdeckenOnClick(Sender: TObject);
var
BildNummer : integer;
begin
BildNummer := (Sender as TImage).Tag;
{ und so weiter... }
end;
ACHTUNG: Prozeduren und Funktionen, die auf Events (OnClick, OnMouseOver, usw...) reagieren, müssen Methoden von Klassen sein!