15

FillRectTStringGridDelphi XE2 ではセル全体を描画しません。BiDiModeデフォルトの色( に設定)では、左側に 3 ピクセルのギャップがありますbdLeftToRight。この問題は、私が以前使っていた Delphi 6 には存在しません。

procedure TShapeline.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  Stringgrid1.Canvas.Brush.Color:=$00FF80FF;
  StringGrid1.Canvas.FillRect(Rect);
end;

すべてのプロパティ ( を含むDrawingStyle) とさまざまなブラシ スタイルを変更しようとしましたが、塗りつぶされた四角形がセル全体を埋めません。

4

4 に答える 4

18

DefaultDrawing = trueこれは、テーマが有効になっているXE2 で予期される動作です (ここでは、良いか悪いかについて議論するつもりはありません。お気づきかもしれませんが、RigthToLeft モードでは動作が異なります... )。

回避策は、この状態をチェックし、 をRect.Left呼び出す前に 4 ピクセルずつ減らすことFillRectです。

于 2012-01-10T16:45:25.840 に答える
4

StringGrid1.CellRect(ACol, ARow)パラメータ を使用する代わりに、セルの実際の TRect を返す を使用できますRect

于 2012-01-11T13:21:48.720 に答える
0

自分でグリッド セルを描画しているので、グリッド プロパティ DefaultDrawing をオフにして、false に設定します。

于 2015-05-15T20:28:46.277 に答える
0

の最初の 4 つのオプションをオフにしますTStringGrid

  • goFixedVertLine
  • goFixedHorizLine
  • goVertLine
  • goHorizLine

その後、グリッド線は描画されず、グリッド セルは端まで描画されます。XEで試してみました。

于 2012-01-10T16:42:45.763 に答える