Einzelnen Beitrag anzeigen

Waldteufel
(Gast)

n/a Beiträge
 
#3

Re: Eigene Funktion über ereigniss aufrufen

  Alt 14. Nov 2005, 09:27
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!
  Mit Zitat antworten Zitat