Fórum Mudar cor da linha DBGRID #380541
02/07/2010
0
Como posso alterar (destacar) a linha de um item excluído do DBGRiD?
Elton ésqui
Curtir tópico
+ 0Posts
02/07/2010
Marco Salles
Como posso alterar (destacar) a linha de um item excluído do DBGRiD?
Gostei + 0
05/07/2010
Elton ésqui
Acontece o seguinte:
Após excluir o dbgrid não atualiza. Se eu clicar no próximo item e voltar ao grid dos itens excluídos aí sim o que foi excluído não aparece mais.
Já tentei dbgrid.refresh, repaint...mas nada resolveu.
Segue um trecho do código.
begin
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
Exit;
end;
PageControl1.ActivePage := tsGridCotacao;
sbMontaQuery.Click;
end;
Obs.: Esse Exit; eu coloquei porque estava gerando um erro (list index is out of bounds). Após colocar o exit o erro não ocorre, mas o item fica lá e só some se eu fizer como citei acima. A propósito, são dois grids. o de cima é o qual avanço e volto pra atualizar o grid de baixo.
Gostei + 0
05/07/2010
Marco Salles
Acontece o seguinte:
Após excluir o dbgrid não atualiza. Se eu clicar no próximo item e voltar ao grid dos itens excluídos aí sim o que foi excluído não aparece mais.
Já tentei dbgrid.refresh, repaint...mas nada resolveu.
Segue um trecho do código.
begin
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
Exit;
end;
PageControl1.ActivePage := tsGridCotacao;
sbMontaQuery.Click;
end;
Obs.: Esse Exit; eu coloquei porque estava gerando um erro (list index is out of bounds). Após colocar o exit o erro não ocorre, mas o item fica lá e só some se eu fizer como citei acima. A propósito, são dois grids. o de cima é o qual avanço e volto pra atualizar o grid de baixo.
Não Exclui ni DbGrid ??? Afinal este DbGrid esta Ligado a qual DataSouce ????
Gostei + 0
05/07/2010
Elton ésqui
Acontece que sem o Exit no código ele exclui e atualiza o grid removendo o item excluído, porém gera o erro que mencionei.
Já com o Exit no código, exclui sem gerar o erro, porém não atualiza o grid removendo o item. Por outro lado, se eu fechar e abrir o programa ou simplesmente navegar nos itens do grid pai, aí exibe o grid filho sem o item removido.
Obrigado!
Gostei + 0
05/07/2010
Elton ésqui
Eu queria mudar a cor só para o usuário perceber que excluiu o item, mas depois que ele acessar o item não deve mesmo estar lá.
Se tiver como solução atualizar o grid nem precisa mudar a cor... o lance da cor seria uma paliativa, já q não atualizou o grid.
Gostei + 0
05/07/2010
Marco Salles
Acontece o seguinte:
Após excluir o dbgrid não atualiza. Se eu clicar no próximo item e voltar ao grid dos itens excluídos aí sim o que foi excluído não aparece mais.
Já tentei dbgrid.refresh, repaint...mas nada resolveu.
Segue um trecho do código.
begin
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
Exit;
end;
PageControl1.ActivePage := tsGridCotacao;
sbMontaQuery.Click;
end;
Obs.: Esse Exit; eu coloquei porque estava gerando um erro (list index is out of bounds). Após colocar o exit o erro não ocorre, mas o item fica lá e só some se eu fizer como citei acima. A propósito, são dois grids. o de cima é o qual avanço e volto pra atualizar o grid de baixo.
Gostei + 0
06/07/2010
Elton ésqui
begin
{ Excluir }
if DMform.cdsItem.FieldByName('FLAG_BAIXA').value = '1' then
begin
if Application.Messagebox('Este produto já foi pedido, deseja continuar a exclusão?',
'Informação', MB_ICONINFORMATION + MB_YESNO) = IDno then
Exit;
end;
if Application.MessageBox('Deseja excluir a cotação?',
'Confirmação', MB_ICONQUESTION + MB_YESNO) = IDYES then
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
end;
PageControl1.ActivePage := tsGridCotacao;
Exit; // Com o exit aqui acontece o mesmo se deixar depois de "LimparDados;" Exclui mas não atualiza.*
sbMontaQuery.Click;
end;
* Detalhe: O item excluído não some da lista, mas o botão de excluir fica desabilitado!
Gostei + 0
06/07/2010
Elton ésqui
Acho qu eo erro ta aqui...Eu deve estar fazendo errado esse sbMOtaQuery.Click.
Minha intenção aqui é após o procedimento executar o botão que atualiza o grid...mas não rolou...acho que falta um Sender...já vi algo assim.
Vamos ver no que da.
Gostei + 0
06/07/2010
Fábio Cruz
Eu queria mudar a cor só para o usuário perceber que excluiu o item, mas depois que ele acessar o item não deve mesmo estar lá.
Se tiver como solução atualizar o grid nem precisa mudar a cor... o lance da cor seria uma paliativa, já q não atualizou o grid.
Desculpa a intromissão (ou intromição) tentou dar um close / open na sua query? nem sempre o refresh funciona.
Gostei + 0
06/07/2010
Emerson Nascimento
Gostei + 0
06/07/2010
Elton ésqui
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
DMForm.QryCota.Close;
end;
DMForm.QryCota.Open;
PageControl1.ActivePage := tsGridCotacao;
sbMontaQuery.Click;
Sobre o Apply...parece que não chama no Delete.
Gostei + 0
06/07/2010
Elton ésqui
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
end;
PageControl1.ActivePage := tsGridCotacao;
sbMontaQuery.Click;
Seguinte:
O código do jeito que está acima funciona, mas gera o erro ...list index...
Com o exit abaixo de LimparDados não gera o erro, porém não faz sentido, pois eu parei o código ness exit, logo ele não vai executar o sbMontaQuery, mas acho que executa sim, pq depois do erro atualiza o grid. tô confuso...
Acho que deve ter algo relacionado com reindexação...tipo, tinham 5 items na tabela, excluiu 1, ficaram 4...mas gera erro ...list index... pq deve estar lendo 5 items ainda até que seja atualizado.
Gostei + 0
06/07/2010
Elton ésqui
Gostei + 0
06/07/2010
Marco Salles
begin
{ Excluir }
if DMform.cdsItem.FieldByName('FLAG_BAIXA').value = '1' then
begin
if Application.Messagebox('Este produto já foi pedido, deseja continuar a exclusão?',
'Informação', MB_ICONINFORMATION + MB_YESNO) = IDno then
Exit;
end;
if Application.MessageBox('Deseja excluir a cotação?',
'Confirmação', MB_ICONQUESTION + MB_YESNO) = IDYES then
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
end;
PageControl1.ActivePage := tsGridCotacao;
Exit; // Com o exit aqui acontece o mesmo se deixar depois de "LimparDados;" Exclui mas não atualiza.*
sbMontaQuery.Click;
end;
* Detalhe: O item excluído não some da lista, mas o botão de excluir fica desabilitado!
PageControl1.ActivePage := tsGridCotacao; Exit; // Com o exit aqui acontece o mesmo se deixar depois de "LimparDados;" Exclui mas não atualiza.*
Agora vamos atacar o problema ... Quem é PageControl1.ActivePage := tsGridCotacao; ?????? se tsGridCotacao tiver um Valor Inexistente ( Por exemplo -5) Não estara na Lista dos PageControl1.ActivePage Então provavelmente Vc Esta passando um Valor errado para PageControl1.ActivePage
Gostei + 0
06/07/2010
Elton ésqui
Nesse caso o programa está passando para o PageControl que deve ser aberto tsGridCotacao, onde nele há um DBGrid.
Desculpe, eu me confundi, mas o erro ocorre quando não coloco o Exit.
Seja ele antes ou depois de:
...
LimparDados;
end;
PageControl1.ActivePage := tsGridCotacao;
...
Acho que o caminho é por aqui:
begin
DMForm.cdsCota.Delete;
DBNav1.Enabled := True;
DBNav2.Enabled := True;
Inclusao := False;
GrupoCotacao.Enabled := Inclusao;
LimparDados;
end;
PageControl1.ActivePage := tsGridCotacao;
xyz
sbMontaQuery.Click;
end;
xyz =
DMForm.QryCota.Close;
DMForm.QryCota.Open;
ou
DMForm.QryCota.Refresh;
...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)