Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Farbe von RowSelect ändern (https://www.delphipraxis.net/125729-farbe-von-rowselect-aendern.html)

Andidreas 10. Dez 2008 16:04


Farbe von RowSelect ändern
 
aloha zusammen,

im OnDrawColumnCell kann ich mit folgendem quellcode die farbe des rowselect's änderen:

Delphi-Quellcode:
If State = [gdSelected] Then
Begin
  dbgrid_pgi.Canvas.Font.Color := clGray;
  dbgrid_pgi.Canvas.Brush.Color := $00FDC699;
  dbgrid_pgi.DefaultDrawColumnCell(Rect, DataCol, Column, State);
End;
es werden alles spalten des dbgrids geändert, nur nicht die erste... weiß jemand warum?

mkinzler 10. Dez 2008 16:06

Re: Farbe von RowSelect ändern
 
Du solltest im else auf die Standardfarbe zurücksetzen

Andidreas 10. Dez 2008 16:47

Re: Farbe von RowSelect ändern
 
ich habe mich glaub etwas falsch ausgedruckt...

wenn ich über die unten geposteten source die aktuell markiert zeile in eine andere farbe ändere, werden alle spalten, von der markierten zeile, geändert bis auf die 1. spalte diese hat weiterhin die standardfarbe, und diese soll aber auch noch die vorgegeben farbe erhalten...

mkinzler 10. Dez 2008 16:57

Re: Farbe von RowSelect ändern
 
Welchen Wert hat .DefaultDrawing?

roga 10. Dez 2008 17:02

Re: Farbe von RowSelect ändern
 
Befindet sich das erste Feld evt. im Editiermodus? Dann muss bei Bedarf der integrierte Editor direkt angesprochen werden.

roga

Andidreas 10. Dez 2008 17:16

Re: Farbe von RowSelect ändern
 
nein, die edit funktion für das dbgrid bzw. deren feler habe ich auf false gesetzt!

_frank_ 10. Dez 2008 18:21

Re: Farbe von RowSelect ändern
 
Zitat:

Zitat von Andidreas
Delphi-Quellcode:
dbgrid_pgi.DefaultDrawColumnCell(Rect, DataCol, Column, State);
es werden alles spalten des dbgrids geändert, nur nicht die erste... weiß jemand warum?

also die letzte Zeile sieht für mich bisschen komisch aus, ist das eine Funktion von dir?

ansonsten wurde bereits genannt, dass du in einem else-Zweig die default-Farbe setzen solltest.

so in etwa sollte das imho aussehen
Delphi-Quellcode:
if (gdSelected in State) then
begin
  dbgrid_pgi.Canvas.Font.Color := clGray;
  dbgrid_pgi.Canvas.Brush.Color := $00FDC699;
end else
begin
  dbgrid_pgi.Canvas.Font.Color := dbgrid_pgi.Font.Color;
  dbgrid_pgi.Canvas.Brush.Color := dbgrid_pgi.Color;
end;
dbgrid_pgi.Canvas.FillRect(rect);
dbgrid_pgi.Canvas.TextOut(rect.left+2,rect.top+2,dbgrid_pgi.Cells[Col,Row]);
HTH Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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