DbGrid informando quando em execução
Galera...
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
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
Curtidas 0
Respostas
Tremonti
30/10/2008
Alguém?
GOSTEI 0
Tremonti
30/10/2008
Alguem sabe galera?
GOSTEI 0
Tremonti
30/10/2008
Galera...
Alguem sabe?
Preciso marcar o Dbgrid de alguma forma mas nao sei como
Abraços
Alguem sabe?
Preciso marcar o Dbgrid de alguma forma mas nao sei como
Abraços
GOSTEI 0
Tremonti
30/10/2008
Galera...
Por favor...
Alguem?!
Por favor...
Alguem?!
GOSTEI 0
Tremonti
30/10/2008
vejo que tem muitas visualizações...
porem nenhuma resposta
ninguem pode me dar uma luz?
abraços
porem nenhuma resposta
ninguem pode me dar uma luz?
abraços
GOSTEI 0
Fcinto
30/10/2008
Ao invés de vc usar um campo calculado traz o campo na query
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.
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
Devmedia
30/10/2008
Amigo Tremonti!
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:
Para alterar a linha inteira:
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.
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
Devmedia
30/10/2008
Esqueci de mensionar, que se for um DBGrid voce pode utilizar este código:
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é.
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
Tremonti
30/10/2008
O problema é que não possuo um campo boolean na minha tabela..
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
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
Tremonti
30/10/2008
Alguem?
GOSTEI 0
Tonidavi2004
30/10/2008
Tremonti vc pode fazer assim:
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
Tremonti
30/10/2008
O problema eh que ele soh muda quando eu troco de registro
GOSTEI 0