Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid DrawColumnCell (https://www.delphipraxis.net/131006-dbgrid-drawcolumncell.html)

StoRmtec 17. Mär 2009 13:18

Datenbank: MySQL • Zugriff über: Zeos

DBGrid DrawColumnCell
 
Hallo
Habe ein Probelm und zwar hole ich mir Daten in die DBGrid und da möchte ich gerne immer wenn ein - dafür steht sollte die farbe rot werden sonst grün

Delphi-Quellcode:
procedure Tfrm_depot.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  holdColor: TColor;
 begin
 holdColor := DBGrid1.Canvas.Brush.Color;
  if Column.FieldName = 'gewinn' then
    if (Column.Field.text = '--') then
    begin
      DBGrid3.Canvas.Font.Color := clred;
      DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid3.Canvas.Brush.Color := holdColor;
    end;
   if (Column.Field.text = '') then
    begin
      DBGrid3.Canvas.Font.Color := clgreen;
      DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid3.Canvas.Brush.Color := holdColor;
    end;
end;
bringe es aber nicht hin wenn ich den Betrag richtig hineinschreibe geht es.

Danke

StoRmtec

mkinzler 17. Mär 2009 13:27

Re: DBGrid DrawColumnCell
 
Welchen Typ hat das Feld??

StoRmtec 17. Mär 2009 13:32

Re: DBGrid DrawColumnCell
 
Ist ein normales Feld von einer DBGrid. Hinterlegt ist in der Datenbank VARCHAR

mkinzler 17. Mär 2009 13:59

Re: DBGrid DrawColumnCell
 
Warum VarChar? Und Warum per Text?

StoRmtec 17. Mär 2009 14:16

Re: DBGrid DrawColumnCell
 
mmh keine ahnung habe die datenbank vorgegeben bekommen
kann man da nichts machen dann?

joachimd 17. Mär 2009 14:28

Re: DBGrid DrawColumnCell
 
steht denn das richtige drin? Eventuell hängen dahinter noch Leerzeichen o.ä., das heißt, Du solltest mit Copy(...) vergleichen.

DeddyH 17. Mär 2009 14:47

Re: DBGrid DrawColumnCell
 
Da scheinen auch begin und end zu fehlen. Klappt es evtl. so (aus dem Kopf getippt):
Delphi-Quellcode:
procedure Tfrm_depot.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var
  holdColor: TColor;
begin
  holdColor := DBGrid1.Canvas.Brush.Color;
  if Column.FieldName = 'gewinn' then
  begin
    if (trim(Column.Field.AsString) = '--') then
    begin
      DBGrid3.Canvas.Font.Color := clred;
      DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid3.Canvas.Brush.Color := holdColor;
    end
    else if (trim(Column.Field.AsString) = '') then
    begin
      DBGrid3.Canvas.Font.Color := clgreen;
      DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);
      DBGrid3.Canvas.Brush.Color := holdColor;
    end;
  end;
end;
:?:

StoRmtec 17. Mär 2009 15:04

Re: DBGrid DrawColumnCell
 
Hallo Habe es versucht wenn ich statt den -- ZB -3,18 angebe dann macht
er mir den eintrag rot. Aber sonst wenn nur das - steht dann nicht

danke

StoRmtec 18. Mär 2009 08:26

Re: DBGrid DrawColumnCell
 
Hat noch wer eine Idee für mein Problem.

Danke

joachimd 18. Mär 2009 10:02

Re: DBGrid DrawColumnCell
 
Zitat:

Zitat von StoRmtec
Hat noch wer eine Idee für mein Problem.

nimm den Debugger, setzte einen Haltepunkt und schaue, was wirklich in den Feldern drin steht.

StoRmtec 18. Mär 2009 10:33

Re: DBGrid DrawColumnCell
 
wie kann ich den ddas genau machen wenn ich einen halte Punkt setze dann sehe ich
trotzdem nicht.
Kann mir vl wer weiterhelfen.

LG
StoRmtec

DeddyH 18. Mär 2009 11:05

Re: DBGrid DrawColumnCell
 
Du könntest die entsprechenden Daten ja auch in eine Stringliste schreiben und diese dann abspeichern. So kannst Du Dir die Daten in aller Ruhe anschauen.

Kirchi 18. Mär 2009 11:58

Re: DBGrid DrawColumnCell
 
So sollte es gehen:

Delphi-Quellcode:
procedure Tfrm_depot.DBGrid3DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  DBGrid3.Canvas.Font.Color := clblack;
  if Column.FieldName = 'gewinn' then
  begin
    if (trim(Column.Field.AsString) = '--') then
    begin
      DBGrid3.Canvas.Font.Color := clred;
    end
    else if (trim(Column.Field.AsString) = '') then
    begin
      DBGrid3.Canvas.Font.Color := clgreen;
    end;
  end;
  DBGrid3.DefaultDrawColumnCell(Rect, DataCol, Column, State);

end;

Blup 18. Mär 2009 12:06

Re: DBGrid DrawColumnCell
 
Getestet wird ob in der Zelle nur diese Zeichenfolge '--' eventuell mit führenden oder folgenden Leerzeichen steht.
Wenn in der Zelle '-3,18', '--xx--' oder nur '-' steht, ist diese Bedingung nicht erfüllt.

Der Test auf einen negativen Betrag könnte so aussehen:
if Pos('-', Trim(Column.Field.AsString)) = 1 then

DeddyH 18. Mär 2009 12:11

Re: DBGrid DrawColumnCell
 
Es geht eben nichts über eine exakte Problembeschreibung.

StoRmtec 18. Mär 2009 14:52

Re: DBGrid DrawColumnCell
 
Danke Leute es hat funktioniert.

LG StoRmtec


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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 by Thomas Breitkreuz