Fórum Grid Piscante ????? #151251

02/04/2003

0

Caros colegas, estou com um problema que não consigo resolver.
Gostaria que alguns itens do meu grid ficasse fiscante quando eu fizesse uma pesquisa. Por exemplo: Tenho uma tabela com 100 produtos alguns deles com estoque negativo, gostaria que esses produtos com estoque negativo ficasse piscante no meu grid, como alerta para o usuario.


Grato pela atenção.


fr.rodrigo@bol.com.br


Fernando

Fernando

Responder

Posts

02/04/2003

Anonymous

Caros colegas, estou com um problema que não consigo resolver. Gostaria que alguns itens do meu grid ficasse fiscante quando eu fizesse uma pesquisa. Por exemplo: Tenho uma tabela com 100 produtos alguns deles com estoque negativo, gostaria que esses produtos com estoque negativo ficasse piscante no meu grid, como alerta para o usuario. Grato pela atenção. fr.rodrigo@bol.com.br


Bom, nunca vi grid piscar.. se pisca deve ter algum componente para isso, mas enfim.. existe o QuantumGrid da www.devexpress.com que vc pode colocar imagens para mostrar q esta negativo o produto, seria a forma mais facil, creio

[]´s


Responder

Gostei + 0

02/04/2003

Michael

Amigo Fernando,
sou programador Delphi, assim como você, e sempre que precisei exibir dados em uma grade, eu usei um StringGrid ao invés de um DBGrid. Decidi isso porque eu consigo ter um controle muito maior sobre o primeiro componente do que o segundo. Em mais de 5 anos de programação, eu consegui implementar umas funções ao StringGrid, como formataçao HTML, busca, ordenação, que eu (eu disse eu) particulamente nunca vi em um DBGrid. Mas chega de blá-blá-blá e vamos ao seu problema.

Eu vejo uma solução se vc usar o StringGrid. Eis a idéia:

O componente TStringGrid tem um evento, OnDrawCell, que é chamado sempre que o conteúdo de cada célula é alterado. Nesse evento vc pode definir cor, fonte, enfim, tudo o que o objeto Canvas permitir. Para efeitos de teste, siga esse exemplo: Coloque um TStringGrid no form, um TTimer e um botão (TButton). No evento OnClick do botão, digite:

Timer1.Enabled := true


No evento OnTimer, digite:
with StringGrid1 do
  if Cells[0,1] = ´S´ then Cells[0,1] := ´N´
else Cells[0,1] := ´S´;


E por fim, no evento OnDrawCell do StringGrid:
with Sender as TStringGrid do
begin
if Cells[0, 1] = ´S´ then
  Canvas.Brush.Color := clRed
else
  Canvas.Brush.Color := clWhite;

Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left, Rect.Top, Cells[ACol, ARow]);

end;


Execute o programa e veja se deu certo. Eu não testei o código acima, criei-o aqui diretamente. Qualquer erro me avise.

Use a criatividade agora e sucesso no seu projeto! Qualquer dúvida sobre TStringGrid, mande um email para mim.

Espero ter ajudado!

Michael :D


Responder

Gostei + 0

02/04/2003

Michael

Amigo Fernando, há um pequeno erro no código que passei a vc. Eis a correção:

No evento OnDrawCell, troque a linha

if Cells[0, 1] then


por

if Cells[0, ARow] then
.

Antes toda a grade iria mudar de cor. Agora, só a linha onde o texto ´S´ estiver.

Abraços.

Michael :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar