Autor Beitrag
xNighthawkx
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 09.02.10 16:48 
Hallo ich habe das Problem, das ich beim Zeichnen der Zellen in der Tabelle die aktuelle Zelle die in Bearbeitung ist farbig markiert wird.
ausblenden volle Höhe 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:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  test1: Real;
  RowNo: Integer;
  farbe : integer;
begin
  with (Sender as TDBGrid) do
  begin
    showmessage(inttostr(Clientdataset1.Fields[Column.Field.Index].Tag));                 //<- an dieser Stelle komme ich nich an die Zelle
    if (gdSelected in State) then
    begin
      // Farbe für die Zelle mit dem Focus
      // color of the focused row
      Canvas.Brush.Color := clblue;
      Canvas.Font.Color := clwhite;
    end
    else
    begin
      // Zeile erfahren
      // get the actual row number
      rowno := Clientdataset1.RecNo;
      // gerade und ungerade Zeilen ermitteln
      // odd or even ?
      test1 := (RowNo / 2) - trunc(RowNo / 2);
      // Zeile gerade...
      // If it's an even one...
      if test1 = 0 then
      begin
        farbe := clWhite
      end
      // ...Zeile ungerade
      // ...else it's an odd one
      else
      begin
        farbe := clltgray;
      end;
      Canvas.Brush.Color := farbe;
      // Font-Farbe immer schwarz
      // font color always black
      Canvas.Font.Color := clBlack;
    end;
    Canvas.FillRect(Rect);
    // Denn Text in der Zelle ausgeben
    // manualy output the text
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);
  end
end;


Hoffe es kann mir einer helfen, denn ich weiß wirklich nciht weiter. Hab die Stelle im Code auch markiert.
War nur ein Versuch um mir erstmal den Index der Zelle auszugeben aber klappte nicht.

Mfg
Torsten Richter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 22.02.10 15:44 
Hallo xNighthawkx,

hab mal folgenden Code bei mir rauskopiert :
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:
procedure TForm2.DBGridKontoDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with (Sender as TDBGrid) do
  begin
    if (gdSelected in State) then
    begin
      Canvas.Font.Style := Canvas.Font.Style + [fsBold];
      Canvas.Brush.Color := clBlue; 
      Canvas.Font.Color := clWhite;
    end
    else
    begin
      Canvas.Font.Style := Canvas.Font.Style - [fsBold];
      if DataSource.DataSet.RecNo mod 2 = 0 then
      begin
        Canvas.Brush.Color := clWhite
      end
      else
      begin
        Canvas.Brush.Color := clHellBlau; // RGB(235,240,254); 
      end;
      Canvas.Font.Color := clBlack;
    end;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);
  end;
end;

unschön ist, dass du nicht übergebene Eigenschaften ansprichst (Clientdataset1)
die zwingen dich jedesmal, den Code anzupassen, falls du mehrere DBGrids benutzt
also nicht rowno := Clientdataset1.RecNo sondern
rowno :=(Sender as TDBGrid).DataSource.DataSet.RecNo

hth
Torsten

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
xNighthawkx Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 25.02.10 15:00 
super ;)


Danke für deine Hilfe :)