como abrir a lista do DBLookpBox pressionando ENTER

Delphi

27/02/2004

:shock:


Farjola

Farjola

Curtidas 0

Respostas

Marco Salles

Marco Salles

27/02/2004

Tente Usar o Evento OnKeyDown

procedure TFormVenda.DBLookupComboBox1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
if Key=Vk_Return Then
  Key:=Vk_Down;
end;



GOSTEI 0
Farjola

Farjola

27/02/2004

:roll: Coloque os comandos que vc sugeriu e não funcionou
tentei colocar o seguinte também:

procedure TForm1.DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if DBLookupComboBox1.KeyValue <> #13 then
DBLookupComboBox1.DropDown;
end;

Só que ele abre e fecha muito rapido, e abre também com a seta para baixo.


GOSTEI 0
Marco Salles

Marco Salles

27/02/2004

farjola, Inicie Declarando as Seguintes Variáveis Imediatamente Apos a Secção implementation Da Sua Unit

Var
ParaTras:Boolean=False;
Conteudo:String;
Inicio:String;
Fim:Inicio:


Defina Logo Apos a Secção {$R *.DFM} A Seguninte Funçao
Function VerificarIndiceAtualDoDbLook:Boolean;
begin
if Conteudo=Fim Then
  Result:=True;
If Conteudo=Inicio Then
  Result:=False;
end;


Para a Etapa Segunte , NECESSITAMOS DE UMA DEFINIÇÃO:No Meu Código, A Tabela2, é a Tabela Cujo Os Item Irão Aparecer No DBLookupComboBox1....Esta Parte é Importante Que Voce Entenda, Por Que Ela é Principal...

No Evento OnShow Do Seu Formulário
procedure TForm1.FormShow(Sender: TObject);
begin
Table1.Open; //Se Ainda Não Estiver Aberta
Table2.Open; ////Se Ainda Não Estiver Aberta
Table2.Last;
Fim:=Table2NomeCampoDaTabela2; Que Voce Quer Que Apareça No 
"DbLookComboBox"
Table2.First;
Inicio:=Table2NomeCampoDatabela2; //Que Voce Quer Que Apareça No 
"DbLookComboBox"
Codigo:=DBLookupComboBox1.Text;
ParaTras:=VerificarIndiceAtualDoDbLook;
end;


Para Finalisar Devemos Manipular Dois Outros Evento:
procedure TForm1.DBLookupComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=Vk_Return
  if Not ParaTras Then
    Key:=Vk_Down
  else
    Key:=Vk_Up;
end;

procedure TForm1.DBLookupComboBox1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
Codigo:=DBLookupComboBox1.Text;
ParaTras:=VerificarIndiceAtualDoDbLook;
end;


Testei Este Código Exaustivamente...Funcionou Desta Forma:Quando o
DBLookupComboBox1 Estiver Selecionado Ao Aplicarmos Um <Enter>
Os Items Do DBLookupComboBox1 São Passados Em Ordem Crescente Ou Decrescente...
O Fato De Não Conhecer Um Método Que Me Retorne o Inicio Ou Fim Dos Items Do DBLookupComboBox1 Dificulta a Implementação...Então Tive Que Faze Esta Etapa Na Marra...Espero Que, Se Alguem Conhecer Este
Método , Que Nos Esclareça...


GOSTEI 0
POSTAR