Italian community of Lazarus and Free Pascal

Programmazione => LCL => Topic aperto da: lucarep8 - Marzo 11, 2020, 10:31:42 pm

Titolo: modifica stato RadioGroup da codice
Inserito da: lucarep8 - Marzo 11, 2020, 10:31:42 pm
Ciao,
è possibile modificare lo stato  di un RadioGroup da codice senza che si attivi l'evento OnClick?
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: nomorelogic - Marzo 11, 2020, 10:39:42 pm
si, devi impostare la proprietà ItemIndex
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: lucarep8 - Marzo 12, 2020, 09:23:51 pm
Ciao, è quello che faccio, ma si attiva comunque l'evento onClick
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: Stilgar - Marzo 13, 2020, 12:53:31 am
Ciao.Non è che per caso hai associato l'handler "OnClick" su "OnChange"?
Sono eventi di tipo TNotifyEvent entrambi gli eventi se ricordo bene.
Stilgar
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: nomorelogic - Marzo 13, 2020, 01:03:16 am
ho dato un'occhiata nei sorgenti, è proprio un comportamento normale

potresti provare con qualcosa del genere
Codice: [Seleziona]
procedure TForm1.ImpostaItemIndex(const AValue: integer);
begin
  RadioGroup1.OnClick:=nil;
  RadioGroup1.ItemIndex:=AValue;
  RadioGroup1.OnClick:=@RadioGroup1Click;
end;


in alternativa puoi dichiarare una proprietà boolean tipo "SaltaOnClick" e, all'interno dell'OnClick, puoi condizionare il codice con quella proprietà
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: lucarep8 - Marzo 13, 2020, 01:59:28 pm
Ciao,
infatti avevo risolto con una variabile booleana, ma volevo evitarla se possibile. Purtroppo mi confermi che non c'è modo di distinguere la modifica da codice dall'input dell'utente, il che secondo me è assurdo...
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: lucarep8 - Marzo 13, 2020, 03:11:14 pm
ciao,
l'istruzione
 RadioGroup1.OnClick:=@RadioGroup1Click;
serve a riattivare il comportamento normale?
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: nomorelogic - Marzo 13, 2020, 03:18:06 pm
impostando OnClick a nil di fatto si elimina il gestore dell'evento (e quindi non accade nulla)
con l'assegnazione che hai evidenziato, si ripristina il comportamento standard
Titolo: Re:modifica stato RadioGroup da codice
Inserito da: lucarep8 - Marzo 13, 2020, 03:46:31 pm
l'ho provato e funziona, la @ serve altrimenti da' errore

grazie mille!