GARANTIR DESCONTO

Fórum Cores no Grid #343357

18/07/2007

0

Tenho uma duvida com relacao ao DBGrid ?

O grid tem uma cor ´AZUL´ que identifica qual linha esta selecionada, alem dessa cor o texto fica ´BRANCO´.

Qual seria essa cor ´AZUL´ ? Nao consigo chegar nesse tom de cor.
Qual propriedade faz com que o texto fica ´BRANCO´ ?

Preciso disso porque quando a propriedade ROWSELECT esta False, eu gostaria de deixar toda a linha da mesma cor, para fazer isso altero a propriedade ActiveRowColor.

Muito Obrigado


Felipeiw

Felipeiw

Responder

Posts

19/07/2007

Jáder Medeiros

Sua pontuação está meio confusa para determinar qual exatamente é sua dúvida, mas coloque este código no evento OnDrawColumnCell que acho que resolve seu problema:
   if DBGrid1.DataSource.DataSet.State in [dsEdit, dsInsert, dsBrowse] then //Cor da linha selecionada
      if Rect.Top = TStringGrid(DBGrid1).CellRect(0,TStringGrid(DBGrid1).Row).Top then begin
         DBGrid1.Canvas.FillRect(Rect);
         DBGrid1.Canvas.Brush.Color := TColor($F0CAA6);
         DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State)
      end;
   if gdSelected in State then begin //Cor da célula selecionada
      DBGrid1.Canvas.Brush.Color := TColor($808000);
      DBGrid1.Canvas.FillRect(Rect);
      DBGrid1.DefaultDrawDataCell(Rect,Column.Field,State)
   end



Responder

Gostei + 0

23/07/2007

Objetivacreator

Caro amigo

Para saber a cor que você quer chegar é simples se vc tiver a cor desejada sendo mostrada na tela.

Existem diversos aplicativos gratuítos que capturam a cor selecionada, é como um pincel que você leva até a cor desejada e ele dá a cor em hexa, juto o que o delphi precisa.

com a ajuda do amigo que disponibilizou o código, fica mais fácil ainda

Espero ter ajudado.

Valnei.


Responder

Gostei + 0

23/07/2007

Jáder Medeiros

É só copiar o código abaixo em uma nova Unit:
unit Unit1;

interface

uses
  Forms, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure OnTimer(Sender: TObject);
  end;

var
  Form1: TForm1;
  Timer: TTimer;

implementation

uses
   Graphics, Windows, Controls, SysUtils;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Timer := TTimer.Create(Self);
   Timer.Interval := 20;
   Timer.OnTimer := OnTimer;
   Timer.Enabled := True;
end;

procedure TForm1.OnTimer(Sender: TObject);
var
Tela: TCanvas;
Cor: TColor;
begin
Tela := TCanvas.Create;
try
Tela.Handle := GetWindowDC(GetDesktopWindow);
Cor := ColorToRGB(GetPixel(Tela.Handle,Mouse.CursorPos.X,Mouse.CursorPos.Y));
Caption := Format(´TColor: ¬s Red: ¬d Green: ¬d Blue: ¬d´,[ColorToString(Cor),GetRValue(Cor),GetGValue(Cor),GetBValue(Cor)])
finally
Tela.Free
end
end;

end.



Responder

Gostei + 0

24/07/2007

Virus69

Eu uso dessa forma

procedure TFrmCheques.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
If dm.IBChequesDTBAIXA.text <> ´´ then // coloque aqui sua condição
begin
DBGrid1.Canvas.Brush.Color:= $00E1FFE1;
DBGrid1.Canvas.Font.Color:= clWindowText;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end
else
begin
DBGrid1.Canvas.Brush.Color:= $00AAAAFF;
DBGrid1.Canvas.Font.Color:= clWindowText;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
end;


Responder

Gostei + 0

24/07/2007

Jáder Medeiros

Virus69, o FelipeIW quer colorir a linha da célula selecionada de uma cor diferente, ou seja, o critério da cor não é o valor de algum campo no banco e sim a linha que está selecionada.

Seu exemplo não colore a linha selecionada. Colore as linhas baseadas em um critério específico de valores dos campos.


Responder

Gostei + 0

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

Aceitar