Einzelnen Beitrag anzeigen

fl63

Registriert seit: 30. Mär 2008
124 Beiträge
 
#1

nochmals StringGridDrawcell

  Alt 26. Aug 2009, 13:36
Hallo DPler,

ich möchte eine Spalte eines Stringgrids, in Abhängigkeit des Inhaltes färben(rot,grün).

Mein Quelltext läßt sich auch fehlerfrei kompilieren, nur seh ich keinen Erfolg.

Das Stringgrid welches ich verwende ist Jedi Stringgrid. Die DrawCell Methode habe ich aus diesem Forum. Anbei mein Text.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
//Lade Datei
JvSG1.LoadFromCSV('messwert.txt',#9);
//Färbe Spalte 2
Rechnen(Sender);
//Spring zur letzten Zeile
//JvSG1.Row := JvSG1.RowCount-1;

end;

Procedure TForm1.Rechnen(Sender: TObject);
var i:Integer;
   k,l:extended;

begin
  For i := 2 to JvSG1.RowCount-1 do
    k := StrToFloat(JvSG1.Cells[2,i]); l := StrToFloat(JvSG1.Cells[2,i-1]);
    If k > l then
    begin
    JvSG1.Canvas.Brush.Color := clred;
    DrawCell(Sender,2,i,Rect(0,0,0,0),[gdselected]) ;
    end;
end;

procedure TForm1.DrawCell(Sender: TObject; Col, Row: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  (sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).color;
  (sender as TStringgrid).canvas.Font.color:=clWindowText;
  if (col<(sender as TStringgrid).fixedCols) or (row<(sender as TStringgrid).fixedRows) then
    (sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).FixedColor //farbe der Header
  else if gdSelected in state then
  begin
    (sender as TStringgrid).canvas.Brush.color:=clHighlight; //farbe von markierung
    (sender as TStringgrid).canvas.Font.color:=clWindow;
  end else if integer(JVSG1.objects[col,row])=2 then
    (sender as TStringgrid).canvas.Brush.color:=clgreen;
  (sender as TStringgrid).canvas.FillRect(rect);
  (sender as TStringgrid).canvas.TextOut(rect.left+2,rect.top+2,(sender as TStringgrid).Cells[col,row]);
end;
Ich hoffe auf Hilfe.
  Mit Zitat antworten Zitat