![]() |
Re: Feld in Stringgrid färben
Vielleicht kannst Du dir diese Funktion zu Nutze machen:
Delphi-Quellcode:
Grüße
Returns the screen coordinates of a cell in the grid.
function CellRect(ACol, ARow: Longint): TRect; Klaus |
Re: Feld in Stringgrid färben
Das sollte doch bereits in Rect stehen, oder?
[edit] Ich habe Folgendes gerade mal unter D5 ausprobiert:
Delphi-Quellcode:
[/edit]
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; |
Re: Feld in Stringgrid färben
Geht das immer noch nicht ? Das hier (steht im OnDrawCell) zeichnet alle Zellen in denen 1 steht weiß auf dunkelblau :
Delphi-Quellcode:
Und das geht definitiv. Die Bedingung "= 1" lässt sich ja wohl leicht anpassen. 8)
if ACol = 1 then begin
if IntoStr (Cells [ACol,ARow] = 1 then begin canvas.Font.Size:= 8; canvas.Font.Color:= clwhite; canvas.brush.Color := clNavy; canvas.TextOut(rect.Left,rect.bottom-canvas.Textheight('X')-1, Cells [ACol,ARow]); end; end |
Re: Feld in Stringgrid färben
Wenn Du aus Inttostr Strtoint machst, könnte das funktionieren :zwinker: . Außerdem hast Du uns ein with verschwiegen, so macht der Code keinen Sinn.
|
Re: Feld in Stringgrid färben
Das soll ein Denkanstoß für SEIN Programm sein. In meinem geht die OnDrawCell-Prozedur über 2 DIN A 4 Seiten. Soll ich die etwa posten ? :shock: Wenn er die durch Abkürzen verursachten Schreibfehlerchen nicht bemerkt/versteht, dann macht das ganze Thema keinen Sinn ! Dann soll er besser die Finger davon lassen. 8)
|
Re: Feld in Stringgrid färben
Dann hättest du auch nicht noch eine Lösung Posten müssen.
@5etH: wir könnten dies hier abkürzen, wenn du versuchen würdest die geposteten Lösungen zu verstehen und ggf. die Hilfe zu konsultieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz