Newsgroup: it.comp.lang.delphi
Titolo: Come gestire il this

Non so bene la sintassi in object pascal di quel comando che corrisponde 
al this in altri linguaggi!
Non potreste dirmi la sintassi! Perchè penso che la semantica sia la 
stessa! ho mi sbaglio?
Ciao Stica

)

 metodo, l'istanza della classe allora si tratta di Sender.
L'istanza della classe all'interno di un metodo è rappresentata da
Self. Sender è usato per conoscere l'oggetto che ha scatenato un
determinato evento dato che Delphi per sua natura sfrutta molto il
concetto della delegazione.
Antonio

 concetto della delegazione.
Sorry, ho pensato correttamente ma ho scritto il nome sbagliato. :-)
Spero di non aver arrecato danni o confusione all'Original Poster. :-D


> Sorry, ho pensato correttamente ma ho scritto il nome sbagliato. :-)
Lo avevo immaginato. La precisazione era nei riguardi dell'Original
Poster, difatti. ;-)
Antonio

 Poster, difatti. ;-)
Nota anche l'orario in cui è stata data la risposta... ;-)
Chiudo l'OT qui...ciao!


 al this in altri linguaggi!
Self
Non è un comando, ma l'autoriferimento di un oggetto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
Grazie Ragazzi (guastatore e Antonio)! allora se ho capito giusto 
utilizzo il self. Il sender non centra nulla!
Ciao Stica

 
Si, praticamente quando clicco su un pannello voglio che questo cambi di 
colore! quindi faccio:
  Self.color:=red;
Giusto?
Ciao Stica

Ciao Stica
	Ciao
	MassimoB
 

 Il sender non centra nulla!
Ahem...esattamente. :-)


 Giusto?
Se stai scrivendo codice all'interno di un metodo della classe che
rappresenta il pannello, allora puoi usare l'identificatore Self
(stavolta ho scritto bene :-) ) per riferirti all'istanza della classe;
puoi anche omettere Self in questo caso scrivendo semplicemente qualcosa
del tipo
===
procedure TMyPanel.Click;
begin
  Color := clRed;
end;
===
Facendo riferimento alla proprietà Color, è implicito che ci si
riferisca all'istanza della classe rappresentata da Self.
Di solito, Self ritorna utile quando si vuole passare l'istanza stessa
come parametro ad una procedura, una funzione o un altro metodo.
Se stai scrivendo il codice che hai riportato per gestire l'evento
OnClick di un pannello posizionato su una form, allora devi agire
diversamente poichè il metodo che viene richiamato per gestire l'evento
appartiene alla classe che definisce la form stessa, quindi Self
rappresenta l'istanza della form:
===
procedure TMyForm.MyPanelClick(Sender: TObject);
begin
  MyPanel.Color := clRed;
end;
===
Anche in questo caso, "MyPanel" equivale a "Self.MyPanel".
Direi che ne abbiamo parlato a sufficienza. :-)



Ho fatto delle prove!
Il Sender non viene compilato!
Come mi avevate detto il Self fa cambiare il colore alla Form!
il mio codice è:
procedure TForm1.PanelClick(Sender: TObject);
begin
Sender.Color:=clred; //non viene compilato!
end;
io vorrei, dato che ho più di un pannello, che qualsiasi sia il pannello 
cliccato questo cambi di colore
il Self non centra niente!
quello che vorrei fare è l'equivalente di panel1.Color:=clred;

end;
Il sender per essere il più generico possibile, in
quanto viene usato nella stragrande maggioranza degli
eventi (se non in tutti) dei componenti nativi, è di
tipo TObject, non a caso il genitore di tutte le
classi.
Detto questo è nesessario fare un casting del sender
TPanel(Sender).Color := Red;
	Ciao
	MassimoB
 

MassimoB wrote:

Grazie! Mi hai illuminato! Mi è venuto in mente che lo avevo gia 
utilizzato in passato! Ma sai con il passaggio ad altri linguaggi di 
programmazione molto spesso ci si dimentica le sintassi dei linguaggi 
meno usati!