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.