Autor Beitrag
wschrabi
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 13.07.11 21:11 
Hi,
also alles was ich gefunden habe bzgl meiner Frage ist immer das Einfärben einer ganzen Zeile in einem DBGrid. Ich möchte aber nur eine Zelle rot färben, wenn der darin enthaltene INtegerwert negativ ist. Dass das mit OnDrawColumnCell als Event geht, weiss ich bereits. DOch wie geht es weiter? Kann mir da jemand ein einfache Bsp posten? DANKE
haentschman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 285
Erhaltene Danke: 33


DX10 Berlin Professional
BeitragVerfasst: Mi 13.07.11 21:20 
... nur weil heute Freitag ist :lol:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
Zahl: Integer;
.
.
.
if Column.Fieldname = 'DeinFeldname' then //alternativ über den Index der Spalte
begin
  if Zahl < 0 then
  begin
    DBGrid.Canvas.brush.color:=clRed;
    DBGrid.Canvas.font.color:=clRed;
    DBGrid.DefaultDrawColumnCell(rect, 1, column,state);
  end
  else
  begin
    DBGrid.Canvas.brush.color:=clWhite;
    DBGrid.Canvas.font.color:=clWhite;
    DBGrid.defaultdrawcolumnCell(rect, 1, column,state);
  end;
end;


PS: Mal sehen ob du den kleinen eingebauten Fehler (ist eigentlich keiner wenn man es so will) selbst korrigieren kannst.
:zwinker:
wschrabi Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mi 13.07.11 21:47 
Danke DIr, danke deiner hilfe hab ichs jetzt hinbekommen
Ja den bug hab ich. 1) DBGrid1 und 2) Font and brush color die selbe, da sieht man nix.

Super danke dir
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 14.07.11 08:00 
Vielleicht solltest du noch jeweils den Status gdSelected (in Abhängigkeit, ob das Grid den Focus hat), bzw. dgAlwaysShowSelection prüfen und die Farben dann invertierten.
Das kann dann etwa so aussehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
            if FGrid.Focused then
            begin
              if gdSelected in state then
              begin
                FGrid.Canvas.Font.Color := Element.Farbe;
              end
              else
              begin
                FGrid.Canvas.Brush.Color := Element.Farbe;
              end;
            end
            else
            begin
              if dgAlwaysShowSelection in FGrid.Options then
              begin
                if gdSelected in state then
                begin
                  FGrid.Canvas.Font.Color := Element.Farbe;
                end
                else
                begin
                  FGrid.Canvas.Brush.Color := Element.Farbe;
                end;
              end
              else
              begin
                FGrid.Canvas.Brush.Color := Element.Farbe;
              end;
            end;

Ist ein Code-Fragment aus einer meiner eigenen Komponenten, aber da die Bezeichnungen sprechend sind, wird das wohl kein Porblem sein.