Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid Zelle färben beim Editieren (https://www.delphipraxis.net/122307-stringgrid-zelle-faerben-beim-editieren.html)

Bengalo 13. Okt 2008 16:29


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:
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;
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.
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.

hoika 13. Okt 2008 16:39

Re: Stringgrid Zelle färben beim Editieren
 
Hallo,

die Formatierung, oh Gott ;)

ich mache immer

Delphi-Quellcode:
if XXX then
begin
  if YYY then
  begin
  end;
end
else
begin
end;
aber nun ja

Delphi-Quellcode:
if (StrToInt(Notentabelle.Cells[j,i]) >= 0) and
   (StrToInt(Notentabelle.Cells[j,i]) <= 4)
das kann nicht passen, >=0 UND <=4
das geht so nicht, du meinst wohl ODER ? (or)


Heiko

DeddyH 13. Okt 2008 16:57

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?

hoika 13. Okt 2008 17:06

Re: Stringgrid Zelle färben beim Editieren
 
OK,

war ein langer Tag ;)


Heiko

Thomas F 13. Okt 2008 18:49

Re: Stringgrid Zelle färben beim Editieren
 
2 kann auch kleiner 4 sein und gleichzeitig größer 25 sein

Warum nicht ? ? ? :tongue:

hoika 13. Okt 2008 18:59

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

Bengalo 17. Okt 2008 20:06

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 18:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz