![]() |
Stringgrid Zelle färben beim Editieren
Hallo Community, ich habe folgendes Problem. Ich möchte , das sich in einem Stringgrid die Farbe der Zelle ändert , sobald man eine Eingabe gemacht hat, die den Kriterien nicht entspricht. Hab mir alles schon durchgelesen was ich bei der Suche finden konnte , hab es mit Drawcell usw versucht , jedoch habe ich nur 2 extreme bei all meinen Versuchen die Codes einzubauen. Entweder färbt sich alles rot , oder garnichts. Das ganze sieht so aus:
Delphi-Quellcode:
Diese Version funktioniert jetzt garnichtmehr , ihr sollt sie mir auch nicht komplett verbessern , ich wäre nur froh , wenn mir einer sagen kann wo der grundsätzliche Fehler in dem ganzen ist.
with (Sender as TStringGrid) do
begin if (ACol <=0 and ACol >=4) then for j:=1 to 5 do begin for i:=1 to Notentabelle.RowCount do Notentabelle.Cells[j,i]:='0'; end; for j:=1 to 5 do begin for i:=1 to Notentabelle.RowCount do begin if (StrToInt(Notentabelle.Cells[j,i]) >= 0) and (StrToInt(Notentabelle.Cells[j,i]) <= 4) then Canvas.Brush.Color:=clred else if ((StrToInt(Notentabelle.Cells[j,i]) > 0)) or (StrToInt(Notentabelle.Cells[j,i]) < 15) then begin ShowMessage('Unzulässige Note'); Notentabelle.Cells[j,i]:='0'; end; end; end; Und bitte verweist mich nicht auf die Suche , ich hab mir echt jeden Artikel zu dem Thema durchgelesen , es nützt nichts :( vielen dank für konstruktive Vorschläge im Vorraus. |
Re: Stringgrid Zelle färben beim Editieren
Hallo,
die Formatierung, oh Gott ;) ich mache immer
Delphi-Quellcode:
aber nun ja
if XXX then
begin if YYY then begin end; end else begin end;
Delphi-Quellcode:
das kann nicht passen, >=0 UND <=4
if (StrToInt(Notentabelle.Cells[j,i]) >= 0) and
(StrToInt(Notentabelle.Cells[j,i]) <= 4) das geht so nicht, du meinst wohl ODER ? (or) Heiko |
Re: Stringgrid Zelle färben beim Editieren
:wiejetzt: 2 ist z.B. größer oder gleich 0 und kleiner oder gleich 4, was soll daran nicht stimmen?
|
Re: Stringgrid Zelle färben beim Editieren
OK,
war ein langer Tag ;) Heiko |
Re: Stringgrid Zelle färben beim Editieren
2 kann auch kleiner 4 sein und gleichzeitig größer 25 sein
Warum nicht ? ? ? :tongue: |
Re: Stringgrid Zelle färben beim Editieren
Hallo,
mal ein kleines Bsp.
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm1 = class(TForm) Grid: TStringGrid; procedure FormCreate(Sender: TObject); procedure GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var iCol : Integer; iRow : Integer; begin for iCol:= 0 to Grid.ColCount-1 do begin for iRow:= 0 to Grid.RowCount-1 do begin Grid.Cells[iCol,iRow]:= IntToStr(iCol); end; end; end; procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if Grid.Cells[ACol,ARow]='0' then begin Grid.Canvas.Brush.Color:= clRed; Grid.Canvas.FillRect(Rect); end else begin Grid.Canvas.Brush.Color:= clBlue; Grid.Canvas.FillRect(Rect); end; Inc(Rect.Left,2); DrawText(Grid.Canvas.Handle, PChar(Grid.Cells[ACol,ARow]), Length(Grid.Cells[ACol,ARow]), Rect, DT_END_ELLIPSIS or DT_NOPREFIX); end; Heiko |
Re: Stringgrid Zelle färben beim Editieren
Danke Leute , hat sich erledigt , Kollege von mir hat ne Konfortabele Version daraus gemacht , vielen dank , habt mir sehr geholfen!
Kann geschlossen werden mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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