Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: francesco - Ottobre 30, 2023, 08:25:24 pm

Titolo: comprendere da dove si e' scatenato un evento LAZARUS 1.8.2
Inserito da: francesco - Ottobre 30, 2023, 08:25:24 pm
io mi ritrovo il seguente codice che viene triggerato da piu' parti del software :

Codice: [Seleziona]

procedure TForm1.MenuItem42Click(Sender: TObject);
begin
  //informazioni
showmessage('ok2');

end;                 


devo estrarlo da Sender o senno metto una variabile pubblica dove oni volta cambio il valore dal punto di chiamata del evento;
Titolo: Re:comprendere da dove si e' scatenato un evento LAZARUS 1.8.2
Inserito da: DragoRosso - Ottobre 30, 2023, 10:07:57 pm
Se la procedura è chiamata da un evento abbinato allora Sender rappresenta correttamente chi l'ha chiamato, se invece viene usato manualmente (è una procedura e può essere chiamato a codice) allora Sender può rappresentare qualunque cosa.

Per capire cosa rappresenta Sender puoi verificarlo con la proprietà dello stesso:

Codice: [Seleziona]
if Sender <> nil then
   ShowMessage(Sender.ClassName); //Visualizza il nome della classe rappresentata da Sender

Se vuoi invece rappresentarlo (ma ovviamente lo devi sapere a priori) allora puoi usare "as" e "is":

Codice: [Seleziona]
if Sender is TButton then
   (Sender as TButton).Enabled := false;  //Rappresenta Sender come un TButton e setta a false la proprietà Enabled

if Sender is TEdit then
   (Sender as TEdit).Text := '';  //Rappresenta Sender come una TEdit e cancella il testo.

Titolo: Re:comprendere da dove si e' scatenato un evento LAZARUS 1.8.2
Inserito da: tito_livio - Ottobre 31, 2023, 11:32:48 pm
Forse hai fatto copia e incolla di un componente più volte. In questo modo tutti i componenti "incollati" hanno lo stesso evento associato al click.
Devi andare negli eventi degli oggetti "incollati" e cancellare il nome della procedura associata, in questo caso, ad OnClick.
Poi cliccando sul bottone ... verrà creata una nuova procedura vuota relativa all'oggetto.
Spero di essere stato chiaro e di aiuto,
ciao e buon lavoro.
Titolo: Re:comprendere da dove si e' scatenato un evento LAZARUS 1.8.2
Inserito da: francesco - Novembre 01, 2023, 06:56:40 pm
razie a tutti e 2 ho capito.....(era l'ora)
 :D :D :D :D :D