Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

DBGrid sor szinezése 2016 márc. 02 12:20 #1882

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Igazából egy másik kérdésemet is megválaszolom. :)
Az egész sort lehet szinezni a Dataset mezőértékeinek összehasonlításával is:
  if ( SQLQuery.FieldByName('limit').AsFloat < SQLQuery.FieldByName('qty').AsFloat ) then begin
    with (Sender As TDBGrid) do
    begin
      //Custom drawing
      Canvas.Brush.Color:=clRed;
      Canvas.Font.Color:=clBlack;
      Canvas.Font.Style:=[fsBold];
    end;
  end;

DBGrid sor szinezése 2016 márc. 02 12:20 #1881

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
Az OnPrepareCanvas eseménykezelőben az adatforrás/adatkészlet aktuális sorát kell vizsgálnod, valahogy így:
procedure TForm1.DBGrid1PrepareCanvas(sender: TObject; DataCol: Integer; Column: TColumn; AState: TGridDrawState);
begin
	if (TDBGrid(Sender).DataSource.DataSet.FieldByName('mező_neve').AsString = 'érték') then begin
		TDBGrid(Sender).Canvas.Brush.Color:=clRed;
		TDBGrid(Sender).Canvas.Font.Color:=clBlack;
		TDBGrid(Sender).Canvas.Font.Style:=[fsBold];
	end;
end;
(Természeteses a with is használható.)
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

DBGrid sor szinezése 2016 márc. 02 10:26 #1880

  • makgab
  • makgab profilkép Témaindító
  • Törzsgárda tag
  • Törzsgárda tag
  • Hozzászólások: 280
  • Köszönetek: 1
Üdv!

Egy DBGrid-ben adott feltételnek megfelelő sorokat szeretném színezni, működik is:
procedure TForm1.DBGrid1PrepareCanvas(sender: TObject;
  DataCol: Integer; Column: TColumn; AState: TGridDrawState);
begin
  if ( Column.FieldName='name' ) and (  Column.Field.AsString='akarmi' ) then begin
    with (Sender As TDBGrid) do
    begin
      //Custom drawing
      Canvas.Brush.Color:=clRed;
      Canvas.Font.Color:=clBlack;
      Canvas.Font.Style:=[fsBold];
    end;
  end;
end;

Ez csak az adott cellát színezi át. De az egész sort szeretném színezni. Mi kellene ehhez?

  • Oldal:
  • 1