...die Farbe der fokussierten Zelle eines Grids ändern?
Autor: P. Below
{
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;
printed from
www.swissdelphicenter.ch
developers knowledge base