Einzelnen Beitrag anzeigen

waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Größten Wert einerDBGrid Zeile farblich hinterlegen

  Alt 30. Okt 2015, 18:04
Hallo,
ich habe ein Verständnisproblem mit meiner farblichen Gestaltung.
Ich möchte den größten Wert in einer DBGrid Zeile farblich markieren.
Die Zellen werden auch farblich hinterlegt, aber dummerweise immer eine Zeile tiefer als die eigentliche Zeile. Und außerdem flackernmdie Zellen im Grid.


Code:
procedure TNachbestellung.jvdbgrd_GridDrawColumnCell(
  Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  I, maxfeld, maxwert: Integer;
  str_feld : string ;
begin

    IF (Column.Field.FieldName = 'VK_1_MENGE') or
     (Column.Field.FieldName = 'VK_2_MENGE') or
     (Column.Field.FieldName = 'VK_3_MENGE') or
     (Column.Field.FieldName = 'VK_4_MENGE') or
     (Column.Field.FieldName = 'VK_5_MENGE') or
     (Column.Field.FieldName = 'VK_6_MENGE') then
  begin
    maxfeld := 0;
    maxwert := 0;
    // ermitteln des größten Wertes und festhalten in welchem Datenfeld
    for I := 1 to 6 do
    begin
     str_feld := 'VK_'+IntToStr(i)+'_MENGE';
     if zqry_Best.fieldbyname(str_feld).asinteger > maxwert then
     begin
       maxwert := zqry_Best.fieldbyname(str_feld).asinteger;
       maxfeld := I;
     end;
    end;
    str_feld := 'VK_'+IntToStr(maxfeld)+'_MENGE' ;

    // wenn größtes ermitteltes Datenfeld = dem aktuellen Gridfeld, dann farbig hinterlegen.
    if (Column.Field.FieldName = str_feld) then
      Column.Color := clred
    else
      Column.Color := clWindow;

       jvdbgrd_Grid.Canvas.fillRect( rect );
       jvdbgrd_Grid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
  end;
was mach ich falsch ?
Miniaturansicht angehängter Grafiken
dbgridfarbe.jpg  
mfg wf

Geändert von waldforest (30. Okt 2015 um 18:24 Uhr)
  Mit Zitat antworten Zitat