Hallo,
mein Programm soll ein Memory Spiel sein. Dazu habe ich viele Images auf der Form. Bei einem Klick auf dieses Image soll eine Prozedur ausgeführt werden, die genau in das Image, von dem sie aufgerufen wurde, ein Bild lädt.
Vorher hatte ich das gelöst, in dem ich eine Funktion
Delphi-Quelltext
hatte. Diese wurde so aufgerufen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Image1Click; begin aufdecken(1) end;
procedure TForm1.Image2Click; begin aufdecken(2) end; |
usw. Jedes Image hatte also eine sehr ähnliche Prozedur. Dies wollte ich ein wenig eleganter machen, indem aufdecken() prüft, von welchem Image sie aufgerufen wurde.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| procedure TForm1.aufdecken(Sender: TObject); var i,nr:integer; mysender:string; begin
mysender:=string(sender); nr:=strtoint(mysender[length(mysender)]);
clickcounter:=clickcounter+1; label1.Caption:='Klicks: ' +inttostr(clickcounter); TImage(findcomponent('Image'+inttostr(nr))).Picture.LoadFromFile(karte[nr].pfad); TImage(findcomponent('Image'+inttostr(nr))).enabled:=false; if (clickcounter mod 2)=0 then begin if not(karte[nr].pfad=lastclicked.pfad) then begin delay(1500); karte[nr].bild.picture.loadfromfile(rueck); lastclicked.bild.picture.LoadFromFile(rueck); end; end else begin lastclicked:=karte[nr]; end; end; |
Ich wollte also mit Sender arbeiten. Ich brauche allerdings nur die Nummer des Senders, wenn also die Prozedur von Image6 aufgerufen wurd, soll einfach die Nummer 6 benutzt werden. Daher wandle ich den Sender in einen String um.
Das Problem: Die Übergabe des Komponentennamens als Sender funktioniert nicht. Wenn ich diesen Ausdruck überwache, wird für Sender nur "" angezeigt. Wenn ich daher auf ein Image klicke, bricht das Programm mit der Fehlermeldung
Zitat: |
"-" ist kein gültiger Integerwert. |
ab. Keine Ahnung, woher der Bindestrich kommt.
Ich bin davon ausgegangen, dass die Übergabe des Senders automatisch klappt, weil das in jeder von Delphi erstellen Prozedur wie Button1.Click (Sender: TObject) auch automatisch funktioniert.
Was mache ich falsch?