simular evento OnChange num ImputBox...

Delphi

15/09/2006

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!


Mahdak

Mahdak

Curtidas 0

Respostas

Mahdak

Mahdak

15/09/2006

CDS_pesquisa.CommandText := ´SELECT * FROM TABELA WHERE CAMPO LIKE :pesquisa´; CDS_pesquisa.Parambyname(´pesquisa´) := pesquisa


pesquisa := inputbox....


GOSTEI 0
Rodc

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

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....

// 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

Mahdak

15/09/2006

[quote=´mahdak´]
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

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

Mahdak

15/09/2006

beleza brow, vou testar aqui... abraçao!


GOSTEI 0
Rodc

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

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?

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

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.


GOSTEI 0
POSTAR