Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
Delphi 12 Athens
|
Re: Feld in Stringgrid färben
15. Apr 2008, 14:23
Das sollte doch bereits in Rect stehen, oder?
[edit] Ich habe Folgendes gerade mal unter D5 ausprobiert:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i,j: integer;
begin
Randomize;
for i := StringGrid1.FixedRows to Pred(StringGrid1.RowCount) do
for j := StringGrid1.FixedCols to Pred(StringGrid1.ColCount) do
StringGrid1.Cells[i,j] := IntToStr(Random(150) + 101);
end;
//Für Delphi 5 selbst implementiert
function TryStrToInt(const s: string; out i: integer): Boolean;
begin
Result := true;
try
i := StrToInt(s);
except
Result := false;
i := 0;
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var wert: integer;
begin
//fixe Spalten/Zeilen ausgenommen
if ((ACol) >= (Sender as TStringGrid).FixedCols) and
((ARow) >= (Sender as TStringGrid).FixedRows) then
begin
//je nach Wert Hintergrundfarbe setzen
if TryStrToInt((Sender as TStringGrid).Cells[ACol,ARow],wert) and
(StrToInt((Sender as TStringGrid).Cells[ACol,ARow]) > 200) then
(Sender as TStringGrid).Canvas.Brush.Color := clRed
else
(Sender as TStringGrid).Canvas.Brush.Color := clWhite;
//Zelle füllen
(Sender as TStringGrid).Canvas.FillRect(Rect);
//Text mittig ausgeben
DrawText((Sender as TStringGrid).Canvas.Handle,
PChar((Sender as TStringGrid).Cells[ACol,ARow]),
Length((Sender as TStringGrid).Cells[ACol,ARow]),
Rect,
DT_CENTER or DT_VCENTER or DT_SINGLELINE);
end;
end;
[/edit]
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|
|
Zitat
|