Ajudazinha com DBgrid...

14/05/2003

1

Boa tarde pessoal, estou com a seguinte dúvida: Estou fazendo uma procura de um cliente através de um ComboBox e, caso exista um cliente cadastrado, o resultado aparecerá num DBgrid. Depois, através de um clique no DBgrid, os dados deste cliente serão mostrados num outro Form. Até aqui, beleza, o programa está funcionando sem problemas. Estou usando isto para mostrar o resultado:

procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
combobox1.Text:=´´;
Form2.Close;
end;

A dúvida é a seguinte: [b:fe8b4a7e85][color=red:fe8b4a7e85]Como faço para bloquear o evento clique no DBgrid, caso a procura mostre um DBgrid vazio, ou seja nenhum nome encontrado?[/color:fe8b4a7e85][/b:fe8b4a7e85] Para quem ainda não entendeu, caso a pessoa dê um clique num DBgrid vazio o Form2 será fechado e o resultado será mostrado no Form1, só que todos os dados estarão em branco, o que é ruim, uma
vez que nesta situação, não será possível Cadastrar, Alterar, etc...
[color=blue:fe8b4a7e85]Então, repetindo a minha dúvida:[/color:fe8b4a7e85]
[b:fe8b4a7e85][color=red:fe8b4a7e85]Como faço para bloquear o evento clique no DBgrid, caso
a procura mostre um DBgrid vazio?[/color:fe8b4a7e85][/b:fe8b4a7e85]Pode ser alguma coisa tipo ShowMessage(´Este cliente não esta cadastrado´)
Bom, se alguém puder me ajudar agradeço! :(


Responder

Posts

14/05/2003

Dbezerra

ao abrir a query, ou sei lah o q, verifique se ela estah vazia, fazendo QUERY.ISEMPTY

isso retorna verdadeiro se a query estiver vazia...
se estiver vc simplesmente desabilita a dbgrid, fazendo DBGRID.ENABLED := False;
se retornar falso, naum esqueca de reabilitar a grid...

Valeu


Responder
Boa tarde pessoal, estou com a seguinte dúvida: Estou fazendo uma procura de um cliente através de um ComboBox e, caso exista um cliente cadastrado, o resultado aparecerá num DBgrid. Depois, através de um clique no DBgrid, os dados deste cliente serão mostrados num outro Form. Até aqui, beleza, o programa está funcionando sem problemas. Estou usando isto para mostrar o resultado: procedure TForm2.DBGrid1CellClick(Column: TColumn); begin combobox1.Text:=´´; Form2.Close; end; A dúvida é a seguinte: [b:347a75187e][color=red:347a75187e]Como faço para bloquear o evento clique no DBgrid, caso a procura mostre um DBgrid vazio, ou seja nenhum nome encontrado?[/color:347a75187e][/b:347a75187e] Para quem ainda não entendeu, caso a pessoa dê um clique num DBgrid vazio o Form2 será fechado e o resultado será mostrado no Form1, só que todos os dados estarão em branco, o que é ruim, uma vez que nesta situação, não será possível Cadastrar, Alterar, etc... [color=blue:347a75187e]Então, repetindo a minha dúvida:[/color:347a75187e] [b:347a75187e][color=red:347a75187e]Como faço para bloquear o evento clique no DBgrid, caso a procura mostre um DBgrid vazio?[/color:347a75187e][/b:347a75187e]Pode ser alguma coisa tipo ShowMessage(´Este cliente não esta cadastrado´) Bom, se alguém puder me ajudar agradeço! :(




tente so abrir o form se o dbgrid nao estiver vazio

assim
if dbgrid1 <> ´´ then begin
form.show
else
showmessage(nao foi possivel localiza);
end;


Responder

14/05/2003

Ginosam

Não deu certo Rogério! Aparece o seguinte:
[Error] Unit2.pas(40): Incompatible types: ´String´ and ´TDBGrid´


Responder
Voce pode verificar se há registro no dataset antes de mostrar o dbgrid
Exemplo:
dbgrid.enabled := tabela.recordcount>0;
ou
dbgrid.visible := tabela.recordcount>0;


Responder

14/05/2003

Ginosam

Bom pessoal consegui fazendo isto aqui, aparentemente está funcionando!

procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
if form1.Table1.RecordCount = 0 then
begin
ShowMessage(´Este cliente não existe´);
Edit1.Text:=´´;
edit1.SetFocus;
DBgrid1.Visible:=false;
end
else
begin
edit1.SetFocus;
close;
end;
end;

Repare que tornei o DBgrid visible no evento onChange do
Edit1. veja:

procedure TForm2.Edit1Change(Sender: TObject);
begin
form1.Table1.Refresh;
DBgrid1.Visible:=true;
end;
Por enquanto obrigado pessoal! Surgiu uma nova dúvida, acho que agora é a última... mas vou perguntar num outro bloco. Até +


Responder

15/05/2003

Dbezerra

meu caro colega...
eh tao simples, naum precisa complicar.

apos abrir o seu dataset(query, table...), faca o seguinte:
if table.empty then
begin
dbgrid.enabled := False;
showmessage(´Cliente não encontrado´);
end
else
dbgrid.enabled := True;

dessa forma, caso a table esteja vazia, a grid ficarah desabilitada e o usuario naum vai poder clicar e, consequentemente, naum vai criar o formulario, certo?!

valeu


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira