Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - Dama
Forum - Delphi - Dama

Avatar
rikitheking (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/07/2011

Segnala al moderatore
Postato alle 15:59
Mercoledì, 20/07/2011
Salve sto realizzando in delphi la dama. Ho quindi un array dentro le quali ci sono tutte le caratteristiche delle mie pedine che sono un TShape. Il problema è che se quando creo staticamente posso fare diverse cose a differenza dell'azione, non so dinamicamente come assegnarli una certa cosa. Per farla breve ho bisogno che all'azione onMouseDown venga richiamata una procedura. Grazie

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 17:20
Mercoledì, 20/07/2011
Eh? O.O

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 17:31
Mercoledì, 20/07/2011
a domanda rispondo
Codice sorgente - presumibilmente Delphi

  1. procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  2.   Shift: TShiftState; X, Y: Integer);
  3. begin
  4.   mia_procedura;
  5. end;


ma non credo sia questa la risposta giusta... dunque ..:-?:-?:-?
Di cosa hai bisogno, metti un po' di codice di esempio, oppure cerca di spiegarti un po' meglio ... non ho capito niente :_doubt:
G.


Ibis redibis non morieris in bello
PM Quote
Avatar
rikitheking (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/07/2011

Segnala al moderatore
Postato alle 14:55
Giovedì, 21/07/2011
  begin
   Pedine[r,c]:= true;   //creazione pedine
   PedDis[r,c]:=Tshape.Create(Self);
   PedDis[r,c].Parent:=self;
   PedDis[r,c].Width:=20;
   PedDis[r,c].Height:=PedDis[r,c].Width;
   PedDis[r,c].Top:=50+scacchiera[r,c].Height*r;
   PedDis[r,c].Left:=100+c*Scacchiera[r,c].Width+100;
   PedDis[r,c].Shape:=stEllipse;
   PedDis[r,c].Brush.Color:=clRed;
  end;

PedDis è un array di Tshape. All'interno di esso sono presenti le coordinate delle varie pedine, mentre Pedine è un array di buleani che mi dicono se su quel quadratino è presente una pedina.
Il mio problema è che quando clicco su una pedina devo riuscire a chiamare una procedure. come faccio?

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 16:45
Giovedì, 21/07/2011
Testo quotato

Postato originariamente da rikitheking:

   begin
   Pedine[r,c]:= true;   //creazione pedine
   PedDis[r,c]:=Tshape.Create(Self);
   PedDis[r,c].Parent:=self;
   PedDis[r,c].Width:=20;
   PedDis[r,c].Height:=PedDis[r,c].Width;
   PedDis[r,c].Top:=50+scacchiera[r,c].Height*r;
   PedDis[r,c].Left:=100+c*Scacchiera[r,c].Width+100;
   PedDis[r,c].Shape:=stEllipse;
   PedDis[r,c].Brush.Color:=clRed;
  end;

PedDis è un array di Tshape. All'interno di esso sono presenti le coordinate delle varie pedine, mentre Pedine è un array di buleani che mi dicono se su quel quadratino è presente una pedina.
Il mio problema è che quando clicco su una pedina devo riuscire a chiamare una procedure. come faccio?



devi assegnare all'evento mousedown del tshape una procedura (metodo):

PedDis[r,c].OnMouseDown := GestioneMouseDown;

la procedura la dichiari nella sezione private della classe form dove disegni come
procedure GestioneMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);

e la implementi (ctrl+Shift+C)

procedure TForm1.GestioneMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
begin
// qui chiami la tua procedura o ci lavori dentro
  Mia_procedura(Sender);  // in questo modo passi l'oggetto cliccato
end;


Spero di aver azzeccato il problema :)
G.


Ibis redibis non morieris in bello
PM Quote
Avatar
rikitheking (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/07/2011

Segnala al moderatore
Postato alle 15:15
Martedì, 26/07/2011
Ci hai azzeccato. Grazie!!

PM Quote
Avatar
rikitheking (Normal User)
Newbie


Messaggi: 8
Iscritto: 11/07/2011

Segnala al moderatore
Postato alle 15:38
Martedì, 26/07/2011
una cosa però. La x che passo nella on mouse down, se io faccio PedDis[x,y]{che sono quelle della on mouse down}.Visible:=true; Quelle x,y cosa mi rappresentano?

PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 19:20
Martedì, 26/07/2011
le 2 variabili x,y impostate dal metodo OnMouseDown rappresentano la posizione del mouse dentro l'oggetto clikkato ...
Che italiano del cavolo ... però mi sembra chiaro :)
G.


Ibis redibis non morieris in bello
PM Quote