20/07/11 13:59
rikitheking
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
aaa
20/07/11 15:31
Goblin
a domanda rispondo
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
mia_procedura;
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
G.
Ibis redibis non morieris in bello
21/07/11 12:55
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?
aaa
21/07/11 14:45
Goblin
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
26/07/11 13:15
rikitheking
Ci hai azzeccato. Grazie!!
aaa
26/07/11 13:38
rikitheking
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?
aaa
26/07/11 17:20
Goblin
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