Me deparei com uma situação até logica ao testar o programa, precisava que o Enter fosse de campo em campo dentro do formulario e como cosneguir isso..
Colocar no evento do formulario on key press
If Key = #13 Then
Begin
If HiWord(GetKeyState(VK_SHIFT)) <> 0 then
perform(WM_NEXTDLGCTL, 1, 0)
else
perform(WM_NEXTDLGCTL, 0, 0);
Key := #0
end;
porem mesmo colocando este detalhe nao consegui que a Tecla Enter fosse de campo em campo..
Faltava alguma coisa .....
No objecto Inspector do formulario faltava colocar True no KeyPreview, apos isso funcionou perfeitamente ...
porem outro detalhe ...........ao pressionar Enter nao seguia uma sequencia correta conforme eu queria que fosse pulava de campo em campo mas sem uma sequencia correta..
Isto se resolveu ao ser configurado no objeto inspector
TabOrder = sequencia que seguira de campo em campo ao ser presssionado o Enter e no
TabStop = true se ker ou nao que o enter va ate o campo seguinte conforme a numeração do Tab Order
Bom eh isso no proximo sera algo semelhante mas em um formulario onde preciso usar o enter , mas nao posso usar esse codigo..
Bom conforme prometido aqui vai outra maneira da tecla ENTER ir de campo em campo apos vc marcar o TAB Order, mas essa dica veio de um professor que me ensinou .. grande amigo ..
no evento on show do formulario coloque .........
procedure Tcad_processo_obs1.FormShow(Sender: TObject);
begin
Application.OnMessage := ProcessaMsg;
end;
cole este codigo mais abaixo .............
procedure Tcad_processo_obs1.ProcessaMsg(var Msg: TMsg; var Handled: Boolean);
beg
inif (Msg.message = WM_KEYDOWN) then
if not (Screen.ActiveControl is TCustomMemo) and not (Screen.ActiveControl is TButtonControl) then
begin
if not (Screen.ActiveControl is TCustomControl) then
begin
if Msg.wParam = VK_DOWN then
Msg.wParam := VK_TAB;
if Msg.wParam = VK_UP then
begin
Msg.wParam := VK_CLEAR;
Screen.ActiveForm.Perform(WM_NEXTDLGCTL,1,0);
end;
end;
if Msg.wParam = VK_RETURN then
Msg.wParam := VK_TAB;
end;
end;
coloque junto das procedures esta linha
procedure ProcessaMsg(var Msg: TMsg; var Handled: Boolean);
antes do ..........
private { Private declarations }
public { Public declarations }
end;
Assinar:
Postar comentários (Atom)

Nenhum comentário:
Postar um comentário