Mega Code Archive

 
Categories / Delphi / Graphic
 

Change the font color of the focussed cell in a Grid

Title: change the font color of the focussed cell in a Grid? { Question: How do I change the cell font color in a TDBgrid I only want to change the individual cell that is clicked on! (while in the edit mode) Answer: Since it is the InplaceEditor control that is displayed when the cell is in edit mode you have to change this controls Color. Getting at it is a bit ugly since the InplaceEditor property of TCustomGrid (which TDBGrid inherits) is protected and the Color property of TCustomMaskedit (from which TInplaceEditor inherits) is also protected. The following works for a TStrinGrid. I used the grids OnGetEditMask event here to have a place where the inplace editor is guaranteed to exist. For a TDBGrid you could probably use OnColEnter. Frage: Wie ndere ich die Farbe der aktuellen Zelle eines Stringgrids oder TDBGrids ? Antwort: Der InplaceEditor wird angezeit, wenn eine Zelle im Editiermodus ist. Es muss also dessen Farbe ge ndert werden. Dies kann ber eine "Cracker"-Klasse erreicht werden. } type TForm1 = class(TForm) {...} procedure StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer; var Value: string); procedure DBGrid1ColEnter(Sender: TObject); end; {...} uses Mask; type TGridCracker = class(TCustomGrid); TEditorCracker = class(TCustomMaskEdit); procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer; var Value: String); var editor: TEditorCracker; begin editor := TEditorCracker(TGridCracker(Sender).InplaceEditor); if Assigned(editor) then editor.Color := clYellow; end; procedure TForm1.DBGrid1ColEnter(Sender: TObject); var editor: TEditorCracker; begin editor := TGridCracker(TGridCracker(Sender).InplaceEditor); if Assigned(editor) then editor.Color := clGreen; end;