![]() |
Delphi-Version: 5
StringGrid Zelle einzeln mit If...then färben ?
Hi,
hab hier ne kleine sache bei der ich nicht weiterkomme. ICh hätte gern nach der If abfrage dass mir die entsprechende Zelle rot eingefärbt wird. mit dem ganzen StringGrid funktioniert das so schon. nur wie kann ich die einzelne Zelle ansprechen?
Delphi-Quellcode:
danke schonmal
if StrToFloat(v2[a]) <=07 then
StringGrid2.Cells[0,a] := v2[a] ; if StrToFloat(v2[a]) > 0.7 then StringGrid2.color := clRed; |
AW: StringGrid Zelle einzeln mit If...then färben ?
Dann musst du das Grid selber zeichen (OwnerDraw)
|
AW: StringGrid Zelle einzeln mit If...then färben ?
Gar nicht. Du müsstest dann
Delphi-Quellcode:
auf TRUE setzen und dann die Zellen alle selbst malen.
OwnerDraw
Bernhard |
AW: StringGrid Zelle einzeln mit If...then färben ?
Hallo,
hier wäre mal ein Beispiel, wie mann die selektierte Zeile einfärbt: (Quelle: Peter Below (TeamB))
Delphi-Quellcode:
Beste Grüße
// Coloring the active row of a stringgrid
type // required to access protected method InvalidateRow TGridCracker = Class( TStringgrid ); procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var Grid: TStringGrid; begin if gdFixed in State then Exit; Grid := Sender as TStringGrid; if Grid.Row = ARow then begin with Grid.Canvas.Brush do begin Color := $C0FFFF; Style := bsSolid; end; Grid.Canvas.FillRect(Rect); Grid.Canvas.Font.Color := clBlack; Grid.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Grid.Cells[ACol, ARow]); Grid.Canvas.Brush := Grid.Brush; end; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin with TGridCracker(Sender as TStringGrid) do begin InvalidateRow(Row); InvalidateRow(ARow); end; end; Thomas |
AW: StringGrid Zelle einzeln mit If...then färben ?
OK, vielen Dank für die schnellen Antworten.
@madtom: vielen Dank auch für die info ! alternativ wäre es evtl einfacher für mich wenn 0,7 überschritten wird den entsprechenden String v2[a] dann einzufärben? wie würde das dann ausehen bei mir? bzw wie kann ich einem String ne Farbe zuweisen? hier nochmal die code Passage wie ich es bis jetzt gemacht hab:
Delphi-Quellcode:
if StrToFloat(v2[a]) <=07 then
StringGrid2.Cells[0,a] := v2[a] + ' m/s ' ; StringGrid2.color := clWhite; if StrToFloat(v2[a]) > 0.7 then StringGrid2.color := clRed; |
AW: StringGrid Zelle einzeln mit If...then färben ?
Du kannst einem String keine Farbe zuweisen. Du kannst nur dem String eine Info mit auf den Weg geben (als zusätzliche Zeichen), dass eine bestimmte Farbe angewählt werden soll. Das musst du dann aber auch selbst machen (Andere Farbe -> selber Zeichnen).
Bernhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:26 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