simular evento OnChange num ImputBox...
alguem sabe se teria como simular o evento OnChange para o edit de um InputBox ou inputQuery ???
exemplo:
o cara vai digitando no inputbox, e por traz o DBGrid vai trazendo os dados Like :pesquisa
CDS_pesquisa.CommandText := ´SELECT * FROM TABELA WHERE CAMPO LIKE :pesquisa´;
CDS_pesquisa.Parambyname(´pesquisa´) := pesquisa
alguem sabe se dá de fazer?
Caso nao de, alguem saberia como acessar o Evento OnChange de um TEdit de um Tform, estando em outro TForm?
Abraços!
exemplo:
o cara vai digitando no inputbox, e por traz o DBGrid vai trazendo os dados Like :pesquisa
CDS_pesquisa.CommandText := ´SELECT * FROM TABELA WHERE CAMPO LIKE :pesquisa´;
CDS_pesquisa.Parambyname(´pesquisa´) := pesquisa
alguem sabe se dá de fazer?
Caso nao de, alguem saberia como acessar o Evento OnChange de um TEdit de um Tform, estando em outro TForm?
Abraços!
Mahdak
Curtidas 0
Respostas
Mahdak
15/09/2006
CDS_pesquisa.CommandText := ´SELECT * FROM TABELA WHERE CAMPO LIKE :pesquisa´;
CDS_pesquisa.Parambyname(´pesquisa´) := pesquisa
pesquisa := inputbox....
GOSTEI 0
Rodc
15/09/2006
Você teria de fazer o seu próprio InputBox para acessar o evento. Os componentes (incluindo o form) do InputBox do Delphi são criados dinamicamente pela função, ou seja, não tem como você acessá-los.
GOSTEI 0
Mahdak
15/09/2006
bom ja que nao tem como fazer isso, sera que teria como acessar o Evento OnChange de um TEdit de um Tform (no caso o inputbox que eu vou criar em tempo de projeto) , estando em outro TForm?
um exemplo....
será que rola algo assim, pra eu nao precisar ter que fazer um form de consulta para cada formulario relacionado a uma tabela do meu sistema....
um exemplo....
// procedure para consulta sql procedure TFormClientes.consulta(pesquisa:string); begin CDS.close; CDS.commandtext ´select * from tabela where campo LIKE :pesquisa´ CDS.parambyname(´pesquisa´).asstring := pesquisa; CDS.open; end; procedure TFormClientes.Btn_PesquisarClick(Sender: TObject); begin FormInputbox.Edit_pesquisa.OnChange(consulta(Edit_pesquisa.text);) end
será que rola algo assim, pra eu nao precisar ter que fazer um form de consulta para cada formulario relacionado a uma tabela do meu sistema....
GOSTEI 0
Mahdak
15/09/2006
[quote=´mahdak´]
um exemplo....
opssss
um exemplo....
procedure TFormClientes.Btn_PesquisarClick(Sender: TObject); begin FormInputbox.Edit_pesquisa.OnChange(consulta(Edit_pesquisa.text);) end
opssss
procedure TFormClientes.Btn_PesquisarClick(Sender: TObject); begin FormInputbox.Edit_pesquisa.OnChange(FormClientes.consulta(Edit_pesquisa.text);) end
GOSTEI 0
Rodc
15/09/2006
Você teria que ter uma função de evento para atribuí-la ao OnChange do Edit. E não esqueça de remover o evento do OnChange antes de fechar o Form.
//procedure para consulta sql procedure TFormClientes.consulta(pesquisa:string); begin CDS.close; CDS.commandtext ´select * from tabela where campo LIKE :pesquisa´ CDS.parambyname(´pesquisa´).asstring := pesquisa; CDS.open; end; procedure TFormClientes.Btn_PesquisarClick(Sender: TObject); begin FormInputbox.Edit_pesquisa.OnChange := MeuOnChange; FormInputbox.Edit_pesquisa.ShowModal; FormInputbox.Edit_pesquisa.OnChange := nil; end; procedure TFormClientes.MeuOnChange(Sender: TObject); begin consulta(FormInputbox.Edit_pesquisa.Text); end;
GOSTEI 0
Mahdak
15/09/2006
beleza brow, vou testar aqui... abraçao!
GOSTEI 0
Rodc
15/09/2006
Oppps também.... corríge a função abaixo:
procedure TFormClientes.Btn_PesquisarClick(Sender: TObject); begin FormInputbox.Edit_pesquisa.OnChange := MeuOnChange; FormInputbox.ShowModal; FormInputbox.Edit_pesquisa.OnChange := nil; end;
GOSTEI 0
Mahdak
15/09/2006
testei, e deu certo!!!, só tem uma questão que ficou pendente... como a minha pesquisa é do tipo, o usuário vai digitando e o DBGrid vai mostrando os registros aproximados ao que está sendo digitado, ou seja, ´LIKE´, eu fiz o que tá no codigo abaixo, mas me pareceu que o ClientDataSet nao aceita LIKE...., ele só me retorna os termos exatos da pesquisa, ou seja, ´quando for igual a´... Como proceder nessa situaçao para dbExpress?
OBS: tentei tambem com o SQLDataSet, e tambem nao deu....
abraços
Procedure TCadLogin.Consultar(pesquisa:string); begin DM.CDS_Usu.Close; DM.CDS_Usu.CommandText := ´SELECT * FROM USUARIOS WHERE LOGIN LIKE ´ + Quotedstr(pesquisa); DM.CDS_Usu.open; end;
OBS: tentei tambem com o SQLDataSet, e tambem nao deu....
abraços
GOSTEI 0
Djjunior
15/09/2006
vc precisa colocar os ¬ pra funcionar
Procedure TCadLogin.Consultar(pesquisa:string);
begin
DM.CDS_Usu.Close;
DM.CDS_Usu.CommandText := ´SELECT * FROM USUARIOS WHERE LOGIN LIKE ´ + Quotedstr(´¬´+pesquisa+´¬´);
DM.CDS_Usu.open;
end;
espero ter ajudado.
Procedure TCadLogin.Consultar(pesquisa:string);
begin
DM.CDS_Usu.Close;
DM.CDS_Usu.CommandText := ´SELECT * FROM USUARIOS WHERE LOGIN LIKE ´ + Quotedstr(´¬´+pesquisa+´¬´);
DM.CDS_Usu.open;
end;
espero ter ajudado.
GOSTEI 0