Hier mal ein komplettes Programm. Formular, Stringgrid, Button
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls,
Vcl.Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
State: TGridDrawState);
begin
if (ACol=4) and (ARow>0) then begin
with StringGrid1.Canvas do begin
Font.Color:=clred;
FillRect(Rect);
Textout(Rect.Left+2,Rect.Top+2, StringGrid1.Cells[ACol,ARow]);
end;
end;
end;
end.
(Options von TStringgrid zusätzlich zum Default: goEditing, goAlwaysShowEditor)
Nach meinem Verständnis sollte folgendes Bild nicht möglich sein einzugeben (Die 12345 müsste rot sein) Siehe Anhang:
Hierzu einfach Spalte 4 gefüllt, Spalte 5 gefüllt dann einen anderen Wert von Spalte 5 ausgewählt und TAB gedrückt.
Sie steht auch weiter links und höher, vermutlich funkt der InplaceEditor dazwischen, aber wie und wann schalte ich den ab,
damit der nicht nach mir nochmal drüber malt? In onExit hatte ich jetzt schon versuchsweise das goEditing und goAlwaysShowEditor
abgeschaltet, aber hübsch ist anders (Blauer Hintergrund bleibt, fette Schriftart und falsche Ausrichtung).
Oder sollte ich versuchen dort die Schriftart zu Ändern? Geht das überhaupt?