Utilizando o Enter ao invés do TAB em projetos CLX

Essa dica é para quem tem projetos CLX para utilizar em Linux ou Windows.

1º - No evento OnShow do formulário principal coloque o seguinte código:

Application.OnEvent := ApplicationEvent;

Esse código deve ser o último, caso você já tenha outros código no mesmo evento (OnShow)

2º - Suba até a seção "private" da unit

3º - Abaixo da palavra "private" coloque a seguinte linha, que irá criar um procedimento:

procedure ApplicationEvent(Sender: QObjectH; Event: QEventH; var Handled: Boolean);

4º - Com o cursor do mouse posicionando na linha que você acabou de digitar, pressione

as teclas CTRL+SHIFT+C

Isso montará a estrutura do procedimento.

5º - Copie o código abaixo para o procedimento que você acabou de criar. Copie acima da linha Begin do procedimento pois o código abaixo cria uma variável.

Var

CurrForm:TForm;

begin

if (QEvent_type(Event) = QEventType_keyPress) and

(QKeyEvent_key(QkeyEventH(Event)) = KEY_RETURN) then

begin

if Screen.ActiveControl is TDBGrid then

begin

with TDBGrid(Screen.ActiveControl) do

begin

if SelectedIndex = Columns.Count-1 then

begin

SelectedIndex:=0;

DataSource.DataSet.Next;

end

else

SelectedIndex:=SelectedIndex+1;

end;

Handled:=True;

end

else

if not (Screen.ActiveControl is TBitBtn) then

if not (Screen.ActiveControl is TButton) then

begin

CurrForm:=Screen.ActiveForm;

if Assigned(CurrForm) then

THackForm(CurrForm).SelectNext(CurrForm.ActiveControl, True, True);

Handled:=True;

end

else

Handled:=False;

end;


6º Na Cláusula Uses adicione: Qt, QDBGrids, QButtons;

7º Suba até a seção "public".

8º Abaixo da seção public tem um end; Posicione o cursor nessa linha e declare o objeto abaixo:

THackForm = class(TForm);

Esse código cria uma variável também do tipo formulário.

Pronto agora é só compilar e ver todos os seus formulários com o Enter funcionando como Tab em projetos CLX.