Oppure

Loading
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:20
a_butta
Eh? O.O
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 :_doubt:
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