Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Nicola - Ottobre 08, 2018, 06:39:17 pm

Titolo: TEdit e Input Box (risolto)
Inserito da: Nicola - Ottobre 08, 2018, 06:39:17 pm
Ogni tanto mi faccio vivo con domande banali.
Perchè nel TEdit non esco dalla casella con il tasto <Return>> ma solo con il Tab, mentre da Input
Box riesco ad uscire dal controllo premendo appunto <Return>?.
Ho provato ad "intercettare" cosi' ma nessun risultato:
Codice: [Seleziona]
procedure TForm1.ECasella1Change(Sender: TObject);
var Parola:string;

 begin
   if ECasella1.Text<>''
   then begin
        Parola:=ECasella1.Text;
        if Parola[length(Parola)]=char(13) then showmessage('hi');
        end;

 end;
Titolo: Re:TEdit e Input Box
Inserito da: bonmario - Ottobre 09, 2018, 08:10:38 am
Ciao,
l'unica cosa che mi viene in mente, è quella di sfruttare l'evento "KeyUp" con qualcosa di simile:
Codice: [Seleziona]
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_RETURN) then begin
    Edit2.SetFocus;
  end;
end;

P.S. Tra le uses, devi aggiungere "LCLType".

Ciao, Mario
Titolo: Re:TEdit e Input Box
Inserito da: nomorelogic - Ottobre 09, 2018, 08:35:54 am
le form hanno l'evento KeyPreview che fanno in modo che quando si preme un tasto dentro ad un controllo qualsiasi, vengono prima mandati in esecuzione gli eventi della form che li contiene

da li dovrebbe essere facile spostare il focus
Titolo: Re:TEdit e Input Box
Inserito da: Nicola - Ottobre 09, 2018, 08:43:11 am
Con l'aggiunta di bonmario funziona come desideravo, grazie.
Titolo: Re:TEdit e Input Box (risolto)
Inserito da: schumi - Ottobre 09, 2018, 09:26:46 pm
solitamente metto un codice simile nel formkeypress

   if ActiveControl is TEdit then
    begin
        key:=#0;
        SelectNext(ActiveControl,true, true);
    end;