Originariamente inviato da 123delphi321
per dare il focus utilizzo la proprieta setfocus, in questo caso non so come fare per sapere l'oggetto a cui applicare tale proprietà
Dovresti memorizzare il riferimento al controllo che ha il focus nel momento esatto in cui lo perde.
Supponi di aver aggiunto alla sezione private del tuo form un campo FPreviousControl di tipo TWinControl che contiene il riferimento all'ultimo controllo avente il focus.
Se sul form hai diverse caselle di testo TEdit, per ciascuna casella definisci lo stesso metodo di gestione dell'evento OnExit in modo simile al seguente:
codice:
procedure TMyForm.edAllExit(Sender: TObject);
begin
FPreviousControl := TWinControl(Sender);
end;
L'evento può essere adoperato anche da controlli differenti da caselle di testo.
Quando la casella perde il focus e genera l'evento opportuno, il suo riferimento viene memorizzato nella variabile descritta precedentemente.
Supponi che avvenga la pressione del pulsante, è facile riportare il focus al controllo precedente scrivendo un metodo di gestione dell'evento OnClick simile a questo:
codice:
procedure TMyForm.GoButtonClick(Sender: TObject);
begin
if FPreviousControl <> nil then
FPreviousControl.SetFocus;
end;
Ciao!