Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frage zu onklick prozeduren (https://www.delphipraxis.net/135522-frage-zu-onklick-prozeduren.html)

Fastdeath 12. Jun 2009 12:49


Frage zu onklick prozeduren
 
Hallo erstmal,

also ich programmiere ein Dame-Spiele mit Delphi in ramen enes Projektes. Die Spielfelder sind Labels wo wenn man drauf clickt der Zug ausgeführt werden soll.
Nun bin ich auf folgendes Problem gestoßen: mein erster klick auf ein label setzt den sender der onclick prozedure auf das angeklickte label , nun soll ein zweiter klick den sender verändern!
Wie setze ich den sender in einer prozedure wieder auf '0'? Geht das überhaupt?


danke

mfg Fastdeath

mkinzler 12. Jun 2009 12:51

Re: Frage zu onklick prozeduren
 
Der Sender ist das angeklickte Label

Fastdeath 12. Jun 2009 13:01

Re: Frage zu onklick prozeduren
 
Zitat:

mein erster klick auf ein label setzt den sender der onclick prozedure auf das angeklickte label
soweit war ich auch :roll: jetzt will ich aber mit einen 2. Klick den sender verändern. Wie geht das? <---- darauf antworten

Sharky 12. Jun 2009 13:04

Re: Frage zu onklick prozeduren
 
Zitat:

Zitat von Fastdeath
soweit war ich auch :roll: jetzt will ich aber mit einen 2. Klick den sender verändern. Wie geht das? <---- darauf antworten

Den Sender kannst DU nicht verändern. Beschreibe doch mal genau was passieren soll, dann kann man sicher eine Lösung finden.

DP-Maintenance 12. Jun 2009 13:05

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Multimedia" nach "VCL / WinForms / Controls" verschoben.
Passt hier besser rein.

oki 12. Jun 2009 13:05

Re: Frage zu onklick prozeduren
 
Der Sender enthält immer die Instanz des Objektes das das Ereignis auslöst. Rufst du die Ereignisprocedure per Quellcode auf, so kannst du einen eigenen Sender übergeben.

Gruß oki

[Edit]Ach ja, und herzlich willkommen in der DP :dp: [/Edit]

Fastdeath 12. Jun 2009 13:17

Re: Frage zu onklick prozeduren
 
Also eine onclick Prozedure die mit einen 2. Klick arbeitet geht nicht ???? :wall:

So nun ein wenig genauer: der erste klick erfasst das label mit den spielstein den man bewegen will (es geht um Dame)
Delphi-Quellcode:
Spiellabel:=TLabel(Sender);...
der zweite Klick soll das label sein wo sich der spiel stein hin bewegen soll
Delphi-Quellcode:
if (setzlabel1=TLabel(Sender)) and ...
das 2. Tlabel(sender) soll ein ander klick sein als der erste Tlabel(sender) wie geht das????

Fastdeath 12. Jun 2009 13:20

Re: Frage zu onklick prozeduren
 
Liste der Anhänge anzeigen (Anzahl: 1)
und hier noch eine alte version meinen halbfertigen Dame-Spieles wo 2 Klicks in einer prozedure gut funktionieren
aber in meiner neuen umstrukturierten gehts nicht -.-

fui-tak 12. Jun 2009 14:01

Re: Frage zu onklick prozeduren
 
Wie wär's wenn du den Aktuellen Schritt einfach in einer Variablen speicherst
Delphi-Quellcode:
var schritt: integer;
...
//erster Klick:
schritt := 1;

//zweiter Klick:
schritt := 2;
Als nächstes:

Um herauszufinden welches Label angeklickt wurde, würde ich in die Eigenschaft Tag die Nummer des Labels speichern. Also Label1.Tag := 1;

dann geht's so weiter:
Delphi-Quellcode:
procedure TForm.labelGeklickt(Sender: TObject);
begin
  if TLabel(Sender) is TLabel then
  begin

    if schritt = 1 then
      case TLabel(Sender).Tag of
        1:Label1.caption := ''; //Damestein entfernen
        2:Label2.caption := '';
         ...
      end;

    if schritt = 2 then
      case TLabel(Sender).Tag of
        1:Label1.caption := 'X'; //Damestein setzen
        2:Label2.caption := 'X';
         ...
      end;
   
   if schritt = 1 then
      schritt := 2
   else schritt := 1;

 end;
end;

Fastdeath 12. Jun 2009 14:48

Re: Frage zu onklick prozeduren
 
Liste der Anhänge anzeigen (Anzahl: 1)
:-D So problem gelöst

ich hatte ein logischen fehler drin . Ich musste einfach meine laufvariabel j (j gibt die phase des zuges an) nach hinten verschieben ans ende der prozedure. fui-talk hat mich drauf gebracht (irgentwie ist es mir in den kopf geschpßen beim lesen seinen beitrags)

danke für alle bemühungen

ich hänge mal für interresiete das halb fertige programm an


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr.
Seite 1 von 2  1 2      

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