DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 2/7/2010 04:06:20 PM

Caros

Como posso alterar (destacar) a linha de um item excluído do DBGRiD?
MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 2/7/2010 06:04:36 PM


Citação:
Caros

Como posso alterar (destacar) a linha de um item excluído do DBGRiD?
..
Bem se esta excluido não deve aperecer no DbGrid .. Se não aparece no DbGrid não tem
como Destaca-lo . Porém o que vc pode fazer é um campo booleano que qnd se exlui
se alrera o Statu Deste Campo .. Ai sim Vc pode Destacar Todos os Items "Excluidos" da Tabela
( que no nosso caso são campos cujo Status fora Modificado )
 
Geralmente se usa esta técnica qnd se quer ter um Arquivo Morto ( Algo que não existe , mas
é passivel deLocalização . Por exemplo Clientes que estão Desativados (com certo Periodo que não
compra , ao inves de Exclui-los geralmente alteramos o Seu Status)
 
Não sei se entendi direito sua dúvida e se vc entendeu a idéia que tentei passar.
Caso te interresse o codigo sera feito no OnDrawDataCell e poderemos lhe passar
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 5/7/2010 08:25:50 AM

No meu caso não excluiu do DBGrid.
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.
MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 5/7/2010 10:48:11 AM


Citação:
No meu caso não excluiu do DBGrid.
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.
 
hummmmmmmmmmm...
  DMForm.cdsCota.Delete;
Não Exclui ni DbGrid ???
Afinal este DbGrid esta Ligado a qual DataSouce ????
 
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 5/7/2010 01:47:44 PM

Então...exlcuir, exlcui.
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!
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 5/7/2010 01:50:12 PM

Só para complementar.
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.
MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 5/7/2010 07:12:15 PM


Citação:
No meu caso não excluiu do DBGrid.
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.
Mas quem é sbMontaQuery.Click;  ???? Codigo ???
 
O Erro da no  sbMontaQuery.Click;  ???? ou no  PageControl1.ActivePage := tsGridCotacao; ????
 
So uma curiosidade ... Porque dois Begin (Begini begin) ???? para que isto ????
 
Coloque o Exit apos o  PageControl1.ActivePage := tsGridCotacao; >>> Dá Erro ???


 
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 08:19:10 AM

Ops...excluí o begin duplicado...era pra ver se pegava no tranco..rsrs

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!
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 08:21:06 AM

Ah...e o sbMontaQuery é um botão...
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.
Facc
 

 


País: Brasil
Estado: SP
Cidade: Cerquilho
Mensagens: 288
 Postado em: 6/7/2010 08:35:14 AM


Citação:
Só para complementar.
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.
Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 6/7/2010 08:57:14 AM

após o .Delete não seria necessário executar o .ApplyUpdates() ???
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 10:34:21 AM

Fiz assim no lance da Query.

  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.
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 10:37:09 AM

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

Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 10:38:30 AM

Desculpe...com o Exit não executa o sbMontaQuery mesmo...
MARCO ANTONIO SALLES
 
 

 


País: Brasil
Estado: MG
Cidade: Muriae
Mensagens: 1679
 Postado em: 6/7/2010 01:46:39 PM


Citação:
Ops...excluí o begin duplicado...era pra ver se pegava no tranco..rsrs

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!
..
 
Então seu Elton Ésqui ... Parece que o Problema esta em  PageControl1.ActivePage := tsGridCotacao;
 
Vc mesmo Disse
 
#Código
PageControl1.ActivePage := tsGridCotacao;
Exit; // Com o exit aqui acontece o mesmo se deixar depois de "LimparDados;" Exclui mas não atualiza.*
 
Da o Erro Do Indice e não Atualiza pq chama o Exit antes do sbMontaQuery.Click

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
 
Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 02:43:34 PM

PageControl é um TPageControl com duas TabSheets.
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;

...


Elton Ésqui
 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 141
 Postado em: 6/7/2010 03:15:45 PM

Valeu galera.
Consegui fazendo o seguinte:

procedure TFormPrincipal.SpeedDeleteClick(Sender : TObject);
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;
    with DMForm.QryCotaCons do
    begin
      Close;
      PageControl1.ActivePage := tsGridCotacao;
      sbMontaQuery.Click;
    end;
end;
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03