Announcement

Collapse
No announcement yet.

DBGrid-Hintergrundfarbe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • DBGrid-Hintergrundfarbe

    Hallo,

    wenn ich in einem DBGrid eine ander Hintergrundfarbe einstelle, dann dann hat der Hintergrund in der Zelle, die gerade den Focus hat, trotzdem immer den ursprünglichen weissen Hintergrund, während die geänderte Textfarbe geändert bleibt. Man hat also z.B. weissen Text auf weissem Grund. Wer kann mir sagen, wie ich das verhindern kann. Version: Delphi 5 prof.

    Vielen Dank im voraus

    Klaus

  • #2
    Hallo,

    hinter dieser weissen Fläche verbirgt sich eine TEdit-Instanz, die immer dann exakt über die Zelle positioniert wird, wenn der Eintrag geändert werden soll.

    Angenommen, das TDBGrid verwendet <i>[dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgConfirmDelete, dgCancelOnExit]</i>. Dann könnte man folgendes machen:
    <pre>
    type
    THackDBGrid = class(TDBGrid)
    end;

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
    DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
    DBGrid1.Canvas.Brush.Color := $F0FFF0;
    DBGrid1.DefaultDrawColumnCell(Rect, Datacol, Column, State);
    end;

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
    if Assigned(THackDBGrid(DBGrid1).InplaceEditor) then
    THackDBGrid(DBGrid1).InplaceEditor.Brush.Color := $F0FFF0;
    end;
    </pre>
    Wird nun ein Eintrag in einer Zelle geändert, verwendet die TEdit-Instanz die gleiche Hintergrundfarbe. Allerdings demonstriert mein Beispiel nur das Prinzip - für die Praxistauglichkeit in allen Fällen reicht diese schnelle Lösung nicht aus

    Comment


    • #3
      Hallo Herr Kosch,

      vielen Dank, mit diesem kleinen Programm war das Haupt-Problem schon mal beseitigt. Die Lösung macht neugierig, sich mehr mit den Delphi-Internas zu beschäftigen

      Comment

      Working...
      X