AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid -> Selektierte Zeile Fett

Ein Thema von HolgerCW · begonnen am 24. Feb 2017 · letzter Beitrag vom 24. Feb 2017
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 11:04
Hallo zusammen,

wenn ich in dem Ereignis DrawColumnCell folgendes einbaue:

Delphi-Quellcode:
 
 if (gdSelected in State) then
 begin

  DBGrid.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style + [fsBold];
  DBGrid.Canvas.Font.Color := clBlack;
  DBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end
 else
 begin

  DBGrid.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style - [fsBold];
  DBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end;
dann macht er zwar die selektierte Zeile FETT, aber man sieht dahinter auch noch den Text in NICHT FETT.

Was muss ich tuen ?

Gruss

Holger
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 11:11
Dein Rect enthält noch "alten" Inhalt, mach erst mal sauber. Z.B: DBGrid.Canvas.FillRect(Rect).
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

AW: DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 11:50
Hallo,

habe es erweitert:

Delphi-Quellcode:
if (gdSelected in State) then
 begin

  DBG_WorkFlow_GruppenBau.Canvas.FillRect(Rect);
  DBG_WorkFlow_GruppenBau.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style + [fsBold];
  DBG_WorkFlow_GruppenBau.Canvas.Font.Color := clBlack;
  DBG_WorkFlow_GruppenBau.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end
 else
 begin

  DBG_WorkFlow_GruppenBau.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style - [fsBold];
  DBG_WorkFlow_GruppenBau.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end;
.. aber es ändert sich nichts ...

Der DrawingStyle des DBGrids ist auch gdsGradient. Liegt es eventuell daran ?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 12:23
Hier mal ein Auszug aus meinem Fundus, der wie gewünscht funktioniert:
Delphi-Quellcode:
procedure TForm1.dbgDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  // Zeile mit dem aktiven Datensatz.
  if (fdID.AsInteger = dbg.Tag) then begin
    dbg.Canvas.Font.Style := [fsBold];
    dbg.Canvas.Brush.Color := clLime;
    dbg.Canvas.Font.Color := clBlack;
    if Copy(fdIP.AsString,1,3) = 'DNSthen begin
      if (State = [gdSelected])
      or (State = [gdSelected..gdFocused]) then begin
        dbg.Canvas.Brush.Color := clNavy;
        dbg.Canvas.Font.Color := clRed;
      end else begin
        dbg.Canvas.Brush.Color := clWhite;
        dbg.Canvas.Font.Color := clNavy;
      end;
    end;
  end else begin
    dbg.Canvas.Font.Style := [];
  end;
  // Sonderbehandlung für den Sendernamen
  if Column.FieldName = 'Sendernamethen begin
    if Column.Field.Text = csSenderOhneName then begin
      if (State=[gdSelected])
      or (State=[gdSelected..gdFocused]) then begin
        dbg.Canvas.Brush.Color := clRed;
        dbg.Canvas.Font.Color := clWhite;
      end else begin
        dbg.Canvas.Font.Color := clRed;
      end;
    end else
    if fdSenderName.AsString <> fdSenderTitel.AsString then begin
      if (State=[gdSelected])
      or (State=[gdSelected..gdFocused]) then begin
        dbg.Canvas.Brush.Color := clPurple;
        dbg.Canvas.Font.Color := clWhite;
      end else begin
        dbg.Canvas.Brush.Color := clPurple;
        dbg.Canvas.Font.Color := clYellow;
      end;
    end;
  end else
  // und noch weitere IF-Elsen
  if ...

  end;
  dbg.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
(Die fd....As... sind persitente Datenbankfelder.)
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
532 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 13:00
DefaultDrawing steht vermutlich noch auch true.

Hallo,

habe es erweitert:

Delphi-Quellcode:
if (gdSelected in State) then
 begin

  DBG_WorkFlow_GruppenBau.Canvas.FillRect(Rect);
  DBG_WorkFlow_GruppenBau.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style + [fsBold];
  DBG_WorkFlow_GruppenBau.Canvas.Font.Color := clBlack;
  DBG_WorkFlow_GruppenBau.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end
 else
 begin

  DBG_WorkFlow_GruppenBau.Canvas.Font.Style := DBG_WorkFlow_GruppenBau.Canvas.Font.Style - [fsBold];
  DBG_WorkFlow_GruppenBau.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end;
.. aber es ändert sich nichts ...

Der DrawingStyle des DBGrids ist auch gdsGradient. Liegt es eventuell daran ?
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

AW: DBGrid -> Selektierte Zeile Fett

  Alt 24. Feb 2017, 15:22
Hallo zusammen,

das war es DefaultDrawing muss auf FALSE

Danke

Gruss

Holger
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 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