Buscar

Enter no rxdblookupcombo

Código

// USEI ESTE PROCEDIMENTO EM DELPHI 5 E FUNCIONOU PERFEITAMENTE.
// Para alterar o Tab por Enter, inclusive reativar depois o Enter dentro de RxDBLookUpCombo.
 

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

      Application.OnMessage := ProcessaMsg;

//2º - Suba até a seção "Type" da unit // aqui eu alterei da seção "private", onde o FABRÍCIO DESBESEL
                                     // http://www.fabricio.pro.br/default.asp?ACT=5&content=41&id=1&mnu=1
                                     // originalmente havia postado para a seção "Type" para que possa ser
                                     // acessada mais tarde de outros "forms".
//3º - Abaixo da palavra "Type" após os outros Procedimentos, digite este procedimento:

      procedure ProcessaMsg(var Msg: TMsg; 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 (entre Begin e End;).
  if 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;

// 6º Na Cláusula "Uses" adicione StdCtrls ( caso não exista ).
   
// Feito isso seu sistema já trabalha com o ENTER no lugar do TAB e também com as Setas do Teclado.

// Esse procedimento, no entanto, desabilita o ENTER dentro de um RxDBLookUpCombo.

// Mas queimando muitos neurônios, e depois de não achar uma dica na rede acabei criando essa solução.
// ( LEMBRANDO QUE ESTOU USANDO O DELPHI 5 )

// Dentro do Form onde está usando o "RxDBLookUpCombo" crie outro procedimento semelhante ao citado acima.

// No evento "OnShow" crie o seguinte código :

   Application.OnMessage := MudaTeclaMsg;

// Na seção "Type" crie esse procedimento :

    procedure MudaTeclaMsg(var Msg: TMsg; var Handled: Boolean);

// Com o cursor do mouse posicionado na linha que você acabou de digitar, pressione
// as teclas CTRL+SHIFT+C
// Copie o código abaixo para o procedimento que você acabou de criar
// (entre Begin e End;).

    if 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 // Observe que ao Teclar Enter numa
         Keybd_event(VK_TAB,0,0,0);  // linha do RxDBLookUpCombo, ela será
                                     // interpretada como a Tecla TAB e automaticamente
                                     // carregará o conteúdo da Tabela em foco.
    end; // Aqui , não sei como, o "Enter" é Desativado, mas para reativar
         // coloque o seguinte procedimento no "OnClose" do "Form" onde está o
         // RxDBLookUpCombo"

    Application.OnMessage := (Nome_do_Form_Principal).ProcessaMsg;

    // Esta linha se refere ao seu Form Principal e o "Enter" será novamente reativado.
         
    // gavel@ig.com.br ( comecei a desafiar o Delphi a apenas 35 Dias ) :-)    

 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Componentes
Adicionada dia: 26/11/06
Por: Gilberto Avelino
Visualizada: 3867 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009