Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponente zur Laufzeit erzeugen - Funktion zuweisen? (https://www.delphipraxis.net/72518-komponente-zur-laufzeit-erzeugen-funktion-zuweisen.html)

Master_RC 2. Jul 2006 08:31


Komponente zur Laufzeit erzeugen - Funktion zuweisen?
 
hi leutz!

Ich versuche das Kartenspiel "Pazaak" von Star Wars nachzubauen. (falls es jemand kennt)

Jetzt erzeuge ich X TImage für die Hand des Spielers. Klappt alles wunderbar, allerdingsmöchte ich gerne, dass beim onClick eines Images eine Prozedur/Funktion durchgeführt werden soll.
Geht ja gut, alerdings sollte dabei ein Parameter benutzt werden.

Zuerst:
So erstelle ich die TImages:
Delphi-Quellcode:
procedure KartenLegen;
var i: Integer; Bild: TImage; BildText: String;
begin
  // Spielerhand legen
  for i := 0 to 5 do begin
    if SpielerHand[i].wert < 0 then begin
      BildText := 'minus' + inttostr(SpielerHand[i].wert) + '.bmp';
    end else begin
      BildText := 'plus' + inttostr(SpielerHand[i].wert) + '.bmp';
    end;
    if SpielerHand[i].unbenutzt = false then begin
      BildText := 'Leer.bmp';
    end;
    Bild:=TImage.Create(Form1);
      with Bild do begin
        Parent:=Form1.Groupbox3;
        Left:=8 + i*49;
        Top:=16;
        Transparent := true;
        Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'\data\skin\'+skin+'\'+BildText);
//        OnClick:=KarteBenutzen(i);
      end;

  end;

end;
Das kommentierte onClick-Ereignis ist mein Problem. Ich hätte gerne dass eben die Prozedur "KarteBenutzen" durchgeführt wird, allerdings mit dem Parameter, welcher den Kartenwert darstellt.

Also bei einer Karte mit dem Wert 4 sollte KarteBenutzen(4); ausgeführt werden.
Klappt aber nicht :/

dataspider 2. Jul 2006 08:53

Re: Komponente zur Laufzeit erzeugen - Funktion zuweisen?
 
Hi,

wie wäre es mit:

Delphi-Quellcode:
with Bild do begin
  Parent:=Form1.Groupbox3;
  Left:=8 + i*49;
  Top:=16;
  Transparent := true;
  Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'\data\skin\'+skin+'\'+BildText);
  OnClick:=KarteBenutzen;
  Tag := i;
end;
Dann kannst du im Event über das Tag des Senders den Wert bestimmen.

Cu, Frank

Master_RC 2. Jul 2006 09:03

Re: Komponente zur Laufzeit erzeugen - Funktion zuweisen?
 
Verdammt, warum müssen die blödsten Probleme immer die einfachsten Lösungen haben?

Ich kanns zwar grade nicht ausprobieren, aber ich bin mir ziemlich sicher, dass es so hinhaut ;)

Vielen Dank!

Ich beuge mich jetzt meiner Dummheit und renn mal kurz gegen die Wand ^^

Nochmals vielen Dank, jetz kann ich endlich weitermachen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz