já estou algum tempo para resolver este probleminha...
eu uso o DBLookupComboBox para pegar dados de uma tabela e gravar em outra...até aqui beleza...
quando o foco entra no DBLookupComboBox e ai aparece a seleção dos dados eu tenho opção para digitador no proprio DBLookupComboBox e dar enter(funciona beleza) e também tenho a opção de abrir com o mouse e selecionar pelas setas no teclado.....aqui é que ta o problema...quando eu uso o mouse funciona perfeito, mas quando uso as setas e dou enter ele não seleciona o registro alias não seleciona nada...
Uma vez o Jonas me passou esta dica:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, DBCtrls, Grids, DBGrids, RxLookup;
type
TForm1 = class(TForm)
DBLookupComboBox1: TDBLookupComboBox;
Edit1: TEdit;
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormActivate(Sender: TObject);
//
procedure MudarComEnter(var Msg: TMsg; var Handled: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.MudarComEnter(var Msg: TMsg; var Handled: Boolean);
begin
If not ((Screen.ActiveControl is TCustomMemo) or // se não for um memo
(Screen.ActiveControl is TDBLookupComboBox) or // se não for um DbLookup
(Screen.ActiveControl is TCustomGrid) or // se não for uma grid o controle mudara com enter
(Screen.ActiveForm.ClassName = 'TMessageForm')) then
begin
If Msg.message = WM_KEYDOWN then
begin
Case Msg.wParam of
VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0,0); //,VK_TAB
VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0);
end;
end;
end;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 then
Begin
Key := #0;
Perform(WM_NextDlgCtl, 0, 0);
End;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Application.OnMessage := MudarComEnter;
end;
end.
Form1.KeyPreview=true;
Ela só funciona..se eu tirar o codigo do enter no OnKeyPress do Form1, neste caso eu teria usar o Tab no lugar no enter, porem não é bem aceito pelos usuarios...
Teria como fazer funcionar com a seleção feita pelas setas e em seguida com o enter??
Pergunta
Eder
Ola..
já estou algum tempo para resolver este probleminha...
eu uso o DBLookupComboBox para pegar dados de uma tabela e gravar em outra...até aqui beleza...
quando o foco entra no DBLookupComboBox e ai aparece a seleção dos dados eu tenho opção para digitador no proprio DBLookupComboBox e dar enter(funciona beleza) e também tenho a opção de abrir com o mouse e selecionar pelas setas no teclado.....aqui é que ta o problema...quando eu uso o mouse funciona perfeito, mas quando uso as setas e dou enter ele não seleciona o registro alias não seleciona nada...
Uma vez o Jonas me passou esta dica:
Ela só funciona..se eu tirar o codigo do enter no OnKeyPress do Form1, neste caso eu teria usar o Tab no lugar no enter, porem não é bem aceito pelos usuarios...
Teria como fazer funcionar com a seleção feita pelas setas e em seguida com o enter??
Grato
Editado por EderLink para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.