<BLOCKQUOTE id=quote><!--<font size= face="" id=quote>-->quote:<hr height=1 noshade id=quote>
Ciao a tutti,
per comiciare tks solo xk stai leggendo il mio prob.
Il mio Dubbio con la D maiuscola è:
è possibile assegnare una procedura ad un evento di un oggetto creato dal codice??
mi speiego meglio:
type
TVettoreTShape = array[1..10,1..5] of TShape;
var
VetShape : TVettoreTShape;
procedure TForm1.CreateForm(sender :Tobject);
var i,j:integer;
begin
for i := 1 to 10 do
for j := 1 to 5 do begin
VetShape[i,j] := TShape.Create(Self);
With VetShape[i,j] do Begin
parent := self;
name:= 'shape'+inttostr(i)+'_'+inttostr(j);
end;
end;
end;
capito cosa intendo??? devo applicare a quegli shape generati dal codice un evento onMouseDown in modo che quando li clicco facciano qualcosa... ma non so come fare... tky
// uhm...?! xD
<hr height=1 noshade id=quote></BLOCKQUOTE id=quote><!--</font id=quote><font face="" size= id=quote>-->
Per prima cosa hai definito una matrice e non un vettore. Se intendi utilizzare un vettore di oggetti ti conviene farlo con l'oggetto contenitore TList. Guardatelo sull'help; è un oggetto lista non tipizzato che può contenere oggetti.
Passiamo alla risposta.
Seguendo il tuo esempio:
// nella form mi dichiaro una procedura custom
...
//qualsiasi evento vuoi ricreare devi farlo dello stesso
//tipo e con gli stessi parametri
procedure MyOnClick(Sender: TObject);
//questo esempio lo faccio con un vettore
//per la matrice è la stessa cosa
procedure TForm1.CreateForm(sender :Tobject);
var
i:integer;
S: TShape; //oggetto generico per facilitare le assegnazioni
begin
for i := 1 to 10 do
VetShape[i] := TShape.Create(Self);
//assegnazione oggetto
S:= VetShape[i];
//evita di utilizzare with
//potresti incappare in assegnazioni non volute ad altri oggetti
S.Parent:= Self;
S.Name:= 'shape'+inttostr(i);
//la proprità tag non è mai utilizzata
//di solito la utilizzo per segnarmi l'indice
S.Tag:= i;
S.OnClick:= MyOnClick;
end;
end;
//procedure custom del click
procedure TForm1.MyOnClick(Sender: TObject);
var
i: Integer;
S: TShape;
begin
//TShape(Sender) server a fare il cast dell'oggetto passato
S:= TShape(Sender);
//ora i contiene l'indice all'interno del vettore
i:= S.Tag;
//esempio di modifica del colore
S.Brush.Colo:= clRed;
end;
Spero di esserti stato utile.
Per altre delucidazioni non esitare a contattarmi.
Ciao
Programmatore Delphi di livello avanzato sempre pronto a collaborazioni soprattutto se remunerative.
DITTA: Fenix di Pierini Lorenzo
Em@il:
Tel: 3497703360
MSN: ricercate