Fórum Ja li sobre pesquisa e dbgrid mas não encontro o tópico #240638
30/06/2004
0
Um outro problema que enfrento é o seguinte, inclui uma rotina no menu principal para tratamento da tecla enter em toda aplicação, só que quero num cadastro de bairros, por exemplo, assim que o usuário digitar no campo código e pressionar enter, quero consultar se o bairro já existe, só que com essa rotina, não tenho controle sobre o enter nos forms, pois ele já passa para o outro componente.
Obrigado pela atenção
Mario
Aldus
Curtir tópico
+ 0Posts
01/07/2004
Aldus
Gostei + 0
01/07/2004
Paulo_amorim
Não precisa de um edit, mas sim uma variável String (global, claro)
Você pode fazer um Locate na Query para procurar o que o usuário digitou (coloque no OnClick), assim a cada letra ele deverá filtrar mais.
Como vc fez esse tratamento?
Espero que ajude
Até+
Gostei + 0
01/07/2004
Aldus
SAO PAULP (Até aqui vou alimentando minha variável)
variavel := Variavel + LetraDigitada
E quando pressionar BACKSPACE ?
Segue abaixo o código que utilizo no form principal:
***********************
procedure TfPrincipal.ProcessaMsg(var Msg: TMsg; var Handler: Boolean);
begin
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) and
not(Screen.ActiveControl is TListBox) and
not(Screen.ActiveControl is TComboBox) then
Msg.wParam:= VK_Tab;
if (Msg.wParam = VK_UP) and
not(Screen.ActiveControl is TListBox) and
not(Screen.ActiveControl is TComboBox) then begin
Msg.wParam:= VK_CLEAR;
Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0);
end;
if (Msg.wParam = VK_Escape) and
not (Screen.ActiveForm is TfPrincipal) then
Screen.ActiveForm.Close;
end;
if (Msg.wParam = VK_Return) then
Msg.wParam:= VK_Tab;
end;
end;
procedure TfPrincipal.FormCreate(Sender: TObject);
begin
Application.OnMessage := ProcessaMsg;
end;
***********************
Obrigado pela atenção
Gostei + 0
01/07/2004
Rômulo Barros
procedure Localizar(parClientDataSet: TClientDataSet; parCampo, parValor: String); begin If(Trim(parValor) = ´´)Then Exit; parClientDataSet.Locate(parCampo,parValor,[loCaseInsensitive,loPartialKey]); end;
Agora, basta chamar o método:
Localizar(ClientDatasetUsuarios,´CodigoUser´,edit1.Text);
:P :P
Gostei + 0
01/07/2004
Aldus
******************
DM.SQLDataSet_Bairros.Close ;
DM.SQLDataSet_Bairros.CommandText := ´SELECT * FROM bairros WHERE nombai LIKE :NomeBairro ORDER BY nombai´;
DM.SQLDataSet_Bairros.ParamByName(´NomeBairro´).AsString := CampoProcura.Text+´¬´ ;
DM.SQLDataSet_Bairros.ExecSQL;
******************
Gostei + 0
01/07/2004
Paulo_amorim
Declarando uma variavel Pesq: String
No OnClick tente
if Key in [0..9,a..z,A..Z] then Pesq := Pesq + Key; //E então vc realiza seu locate... if Key in [VK_DEL, VK_BACKSPACE] then Pesq := ´´; //No caso eu tolimpando, vc faz o que quiser...
Espero que ajude
Até+
Gostei + 0
01/07/2004
Aldus
**********
if Key in [0..9,a..z,A..Z] then
**********
Mario
Gostei + 0
01/07/2004
Aldus
Gostei + 0
01/07/2004
Sandra
aldus,
Somente uma correção, da maneira como eu havia respondido em um outro [url=http://delphiforum.icft.com.br/forum/viewtopic.php?t=47350&highlight=]tópico[/url], faça a alteração da última linha para:
DM.SQLDataSet_Bairros.ExecSQL;
Lembre-se:
- utilize o Open nos casos de consulta (Select);
- o ExecSQL você utiliza quando for Insert, Delete ou Update.
Tentou no onEnter do DBGrid?
Teste e verifique se funciona.
Gostei + 0
02/07/2004
Aldus
Mario
aldusinfo@terra.com.br
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)