Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   CRDBGrid Zeile färben (https://www.delphipraxis.net/188461-crdbgrid-zeile-faerben.html)

strom 6. Mär 2016 11:37

Datenbank: mysql • Version: mariadb • Zugriff über: mydac

CRDBGrid Zeile färben
 
hallo,

was ist hier falsch? Es ändert sich nichts!

Delphi-Quellcode:
procedure TForm1.CRDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var Wert: string;
begin
  if (CRDBGrid1.DataSource.DataSet.RecordCount = 0) then
   begin
     Exit;
  Wert := EventQuery.FieldByName('STATUS').Value;
  if Wert = 'System' then begin
    CRDBGrid1.Canvas.Brush.Color := clblack;
    CRDBGrid1.Canvas.Font.Color := cllime;
  end else if Wert = 'Test' then begin
    CRDBGrid1.Canvas.Brush.Color := clFuchsia;
    CRDBGrid1.Canvas.Font.Color := clblack;
   end else if Wert = 'Button' then begin
    CRDBGrid1.Canvas.Brush.Color := cllime;
    CRDBGrid1.Canvas.Font.Color := clblack;
   end else if Wert = 'Termin' then begin
    CRDBGrid1.Canvas.Brush.Color := clAqua;
    CRDBGrid1.Canvas.Font.Color := clblack;
   end else if Wert = 'Unwetter' then begin
    CRDBGrid1.Canvas.Brush.Color := clWhite;
    CRDBGrid1.Canvas.Font.Color := clNavy;
   end else if Wert = 'Geschlossen' then begin
    CRDBGrid1.Canvas.Brush.Color := clgreen;
    CRDBGrid1.Canvas.Font.Color := clblack;
   end else if Wert = 'Alarmiert' then begin
    CRDBGrid1.Canvas.Brush.Color := clWhite;
    CRDBGrid1.Canvas.Font.Color := clred;
  end else begin
    CRDBGrid1.Canvas.Brush.Color := clblack;
    CRDBGrid1.Canvas.Font.Color := clwhite;
  end;
  CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
   end;
end;

frankyboy1974 6. Mär 2016 11:55

AW: CRDBGrid Zeile färben
 
hallo,

Das ist ja mal interessant
Delphi-Quellcode:
 
begin
if (CRDBGrid1.DataSource.DataSet.RecordCount = 0) then
   begin
     Exit;
...
  end;
end;
Wenn gleich Null dann tun nix, ansonsten tun auch nix


mfg

nahpets 6. Mär 2016 12:14

AW: CRDBGrid Zeile färben
 
Hinter'm
Delphi-Quellcode:
Exit;
fehlt ein
Delphi-Quellcode:
end;
, dafür ist das vorletzte
Delphi-Quellcode:
end;
zuviel.

frankyboy1974 6. Mär 2016 12:30

AW: CRDBGrid Zeile färben
 
hallo,

also mal Punkt 1 : Zuerst mal sollte man seinen Quellcode entsprechend einrücken, dann würden solche Fehler einen sofort ins Gesicht springen. Neuere Delphi-Varianten bieten mittlerweile eine automatische Codeformatierung, ich musste das früher alles noch per Fuss formatieren.

Punkt 2 : Ob ich ein Exit unbedingt in ein
Delphi-Quellcode:
begin
Delphi-Quellcode:
end;
klammern würde, kann ich nicht behaupten. Dann würde ich einfach nur das
Delphi-Quellcode:
exit;
nehmen.

Punkt 3 : Grundsätzlich würde ich immer versuchen so zu programmieren, dass ich auf ein
Delphi-Quellcode:
exit;
ganz verzichten kann. Ein
Delphi-Quellcode:
exit;
kommt einem
Delphi-Quellcode:
goto
zumindest schon sehr nahe. Ich würde also stattdessen die Logik umdrehen und dann lieber schreiben
Delphi-Quellcode:
if (CRDBGrid1.DataSource.DataSet.RecordCount > 0) then
begin
     //und hier eben kein exit
mfg

TRomano 6. Mär 2016 13:31

AW: CRDBGrid Zeile färben
 
Na ja, nicht nur ein "Exit" bedingt einen Jump ... wenn die erste Bedingung (..RecordCount = 0) erfüllt ist muss er nun mit oder ohne Exit bis hinter´s letzte end vor dem Prozedur-Aussprung jumpen. Ich finde das Exit insofern ganz gut, weil ich sprachlich genau anzeigt, was passieren soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:24 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