Fórum DbGrid informando quando em execução #365664
30/10/2008
0
Minha questão é a seguinte... vamos ver se vocês entendem...
Eu tenho uma aplicação que rola música...
As músicas ficam em um grid... o grid mostra somente o nome da música... Como se fosse a lista de execução do MediaPlayer.
O que eu gostaria de fazer é o seguinte...
Marcar a linha de azul, ou vermelho, tanto faz da música que esta sendo executada.
Eu criei um campo calculado do tipo bolean e atribui true quando inicio a musica e quando termina a execucao ele localiza a musica de coloca False.
O problema é que ao trocar de registro o evento on calcfield é executado e limpa a minha propriedade True.
Aí o campo nao fica mais do jeito que coloquei no Grid.
Alguem tem idéia de como posso fazer?
Grande Abraço
Tremonti
Curtir tópico
+ 0Posts
31/10/2008
Tremonti
Gostei + 0
31/10/2008
Tremonti
Gostei + 0
03/11/2008
Tremonti
Alguem sabe?
Preciso marcar o Dbgrid de alguma forma mas nao sei como
Abraços
Gostei + 0
04/11/2008
Tremonti
Por favor...
Alguem?!
Gostei + 0
04/11/2008
Tremonti
porem nenhuma resposta
ninguem pode me dar uma luz?
abraços
Gostei + 0
07/11/2008
Fcinto
por exemplo
SELECT NOME_MUSICA, AUTOR, ´N´ EXECUCAO FROM MUSICA
ai vc pode alterar este campo execucao a qqer momento e o calcfields não vai limpa-lo.
Gostei + 0
07/11/2008
Devmedia
Voce já tentou usar o evento OnDrawColumnCell ???
Já que voce tem a variável booleana que avisa qual esta ativa, voce só vai ter que procurar ela no GRID e logo depois utiliza este código no evento que falei logo acima:
Para alterar somente a fonte:
DBGrid.Canvas.Font.Style := DBGrid.Canvas.Font.Style + [fsBold]; DBGridControleDeClientesVisualizarHistorico.Canvas.Font.Color := clRed; //COR DEFINIDA DBGrid.DefaultDrawDataCell(Rect,Column.Field,State);
Para alterar a linha inteira:
DBGrid.Canvas.Brush.Color := StringToColor(´$00FFEFDF´); // Aqui se define a cor que ira variar de linha por linha DBGridCanvas.FillRect(Rect); DBGrid.DefaultDrawDataCell(rect,Column.Field,State);
Uma observação:
Se voce tiver mais que uma coluna neste grid, vá em Properties -> Options -> dgRowSelect -> Marque True. Acredito em um visual mais interessante pro seu grid.
Um abraço.
Gostei + 0
07/11/2008
Devmedia
DBGrid.SetFocus; DBGrid.DataSource.DataSet.Locate(´CODIGO_ID´, CrnLabeledEditCodigo.Text, []);
Para localizar o que deseja dentro do DBGrid, sem precisar classificar.
Este código vai vamos dizer assim ´varrer´ seu DBGrid e mudar a linha de seleção para especificada no código. Nescessariamente voce não precisa utilizar o meu CODIGO_ID como ordem de consulta! Pode ser qualquer coisa. Mas somente segue a lógica do código, ok?
Inté.
Gostei + 0
10/11/2008
Tremonti
E estou utilizando ADO para fazer a conexão com a base.
E ele não deixa eu criar um campo virtual desta maneira...
Precisa ser Calculado...
E no campo calculado, cada vez que mudo de registro no dbgrid, ele faz novamente a execucao do metodo OnCalcField, zerando o meu campo preenchido.
Fui claro? =/ ... Se não posso explicar com mais detalhes
Alguem possui uma saida pra mim?
Abraços a todos e obrigado
Gostei + 0
13/11/2008
Tremonti
Gostei + 0
14/11/2008
Tonidavi2004
procedure TForm1.FormCreate(Sender: TObject); begin EmExecucao := False; end; procedure TForm1.MediaPlayer1PostClick(Sender: TObject; Button: TMPBtnType); begin if (Button = btPlay) then begin EmExecucao := True; DBGrid1.Repaint; end else begin EmExecucao := False; DBGrid1.Repaint; end; end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if ((DBGrid1.Seu_Campo_Caminho_Nome_Arquivo = MediaPlayer1.FileName) and (EmExecucao)) then DBGrid1.Canvas.Brush.Color := clRed; DBGrid1.DefaultDrawDataCell(Rect, DBGrid1.Columns[DataCol].Field, State); end;
Gostei + 0
20/11/2008
Tremonti
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)