Hier mal ein Ansatz, um die Spalte ganz rechts als Fixed zu setzen.
(Gibt noch ein Fehler beim Zeichnen wenn eine Zelle der zweitletzten Spalte selektiert wird und dann
eine andere Zelle selektiert wird.)
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
TempRect: TRect;
begin
with Sender as TStringGrid do
begin
if ACol = Pred(ColCount) then
begin
TempRect := Rect;
Canvas.Brush.Color := FixedColor;
Canvas.FillRect(TempRect);
DrawEdge(Canvas.Handle, TempRect, BDR_RAISEDINNER, BF_RECT);
Canvas.Brush.Color := clBlack;
with TempRect do
begin
Bottom := Bottom + 1;
Top := Top - 1;
Left := Left - 1;
Canvas.FrameRect(TempRect);
end;
end;
end;
end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
CanSelect := ACol <> Pred((Sender as TStringGrid).ColCount);
end;