Fórum Ajuda... Limpar DbGrid... Qual o método? #230210
05/05/2004
0
vejam se podem me ajudar....
No meu sistema tenho uma procedure que limpa todos os componentes do form, edit´s, combos, etc....
Estou precisando implantar nesta procedure a limpeza do dbgrid, mas não sei qual o método para isso. Vejam, o codigo para limpeza dos edit´s etc....
procedure LimpaCampos(FormAtual: TForm);
var
i : integer;
Begin
For i := 0 to FormAtual.ComponentCount - 1 do
begin
{ Edit }
if (FormAtual.Components[i] is TEdit) then
begin
with (FormAtual.Components[i] as TEdit) do
begin
Text := ´´;
end;
end;
{ ComboBox }
if (FormAtual.Components[i] is TComboBox) then
begin
with (FormAtual.Components[i] as TComboBox) do
begin
ItemIndex := -1;
end;
end;
End;
Agora preciso implantar a rotina de limpeza do Dbgrid, então deveria ficar mais ou menos assim:
{ Dbgrid´s}
if (FormAtual.Components[i] is TDbGrid) then
begin
with (FormAtual.Components[i] as TDbGrid) do
Begin
Clear; //Aqui éstá o problema.. Este metodo não existe!!!
End;
end;
O problema é que o método clear não existe. Me falaram para fechar e abrir o dataset do grid, mas fica inviável, pois posso ter mais de um grid num cadastro e para saber qual o dataset que referenciaria o grid que está sendo limpo no momento, ficaria complicado.
O que preciso mesmo é achar o metodo de limpeza do grid.
Agora vejam uma outra lógica utilizada para limpar stringGrid´s que tem uma lógica interessante...
{ Limpando uma linha de cada vez: }
procedure TForm1.Button2Click(Sender: TObject);
var
I: integer;
begin
with StringGrid1 do
for I := 0 to RowCount -1 do
Rows[I].Clear;
end;
Acontece que não sei as propriedades do dbgrid que devo colocar no lugar de RowCount e Rows, não sei qual seria a propriedade indicada no caso do Dbgrid..
Amigos se puderem me ajudar... Ficarei muito grato.
Um grande abraço a todos...
Pablo - Marília/SP
Pablo_lima
Curtir tópico
+ 0Post mais votado
22/03/2016
With ClientDataSet1 do begin Open; EmptyDataSet; Close; Open; end;
Natanael Ferreira
Gostei + 1
Mais Posts
05/05/2004
Paulo_amorim
Que eu saiba não tem uma propriedade Rows no DBGrid.
O que vc pode fazer é adotar o que te falaram, ou seja, fechar o DataSet
para isso, faça
if (FormAtual.Components[i] is TDbGrid) then begin with (FormAtual.Components[i] as TDbGrid) do begin DataSource.DataSet.Close; end; end;
Isso vai fechar e consequentemente limpar a grade
Até+
Gostei + 0
05/05/2004
Lucas Silva
Por exemplo, vamos supor que a query1 esta associada ao DBGRid..
query1.Close;
isso já limpa o DBGrid.
Gostei + 0
22/03/2016
Anderson Possamai
Quando eu salvo... dou um open no CDS... mas dai volta tudo no grid...
Tem como literalmente apagar os registros, ja que estes foram salvos no xml? Nao apenas fechar o dataset para sumir os registros, quero limpar o que esta em memoria ou sei la aonde...
Gostei + 0
22/03/2016
Anderson Possamai
procedure TFormXml.btnNovoClick(Sender: TObject);
begin
With ClientDataSetPrincipal do
begin
Open;
EmptyDataSet;
Close;
end;
DBGridPrincipal.Enabled := True;
ClientDataSetPrincipal.Open;
end;
Gostei + 0
23/03/2016
Marco Antônio
Quando se fala de DBGrid e StringGrid é de fato de se observar que apesar da aparência, o conceito da utilização de cada um é totalmente diferente.
O StringGrid é um componente visual onde todo o conteúdo nele mostrado é passado e controlado em tempo de execução.
O DBGrid nada mais é do que um componente pertencente a família de um DBWare. Com isso ele nada mais é do que uma janela que TEM VINCULO direto a algo( ClientDataSet, Query, Table ). Sendo assim Pablo não vejo a possibilidade de se limpar esse componente sem tirar o vinculo. Isto esta implicito. É como se você não quisesse que a sua TV não mostrasse os Programas de uma determinada emissora. Ora, para isso basta desligar a TV e pronto.
DBGrid é para mostrar o resultado aquilo que esta na ORIGEM.
O que as vezes pode ser feito, é executar um SQL passando um parametro que você sabe que não vai retornar nada. E com isso o DataSet estará vazio e consequentemente o DBGrid tb.
EX: tenho uma tabela de empresas que onde sei que os códigos delas são acima de 0. Com isso inicio minha query selecionando as empresas cujo código seja '-1'.
SELECT * FROM empresas WHERE codEmpresa = -1.
Tô na dúvida se estou ajudando.
Mas qualquer coisa vamo se falando por aqui. Abc.
Gostei + 0
25/10/2018
Dagner
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)