▼ Mr.XRAYさん
> やってみました.
> Delphi のバージョンが上がると,マージン(?)が大きくなるのかな ?
> 測ってみたら,Delphi XE7 の場合は 4 px でした.
ソースコードを確認してみましたが、XEまでは
| procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
| AState: TGridDrawState);
| begin
| if DefaultDrawing then
| Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
| inherited DrawCell(ACol, ARow, ARect, AState);
| end;
となっていて、一方XE2以降は
| procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
| AState: TGridDrawState);
| const
| CCellNormal: array[TGridDrawingStyle] of TThemedGrid =
| (tgClassicCellNormal, tgCellNormal, tgGradientCellNormal);
| ...(略)
| var
| LText: string;
| LDetails: TThemedElementDetails;
| begin
| if DefaultDrawing then
| begin
| if StyleServices.Enabled then
| begin
| ARect.Left := ARect.Left + 4;
|
| if (gdFixed in AState) then
| ...(略)
| LText := Cells[ACol, ARow];
| Canvas.TextRect(ARect, ARect.Left+2,
| ARect.Top+((ARect.Height - Canvas.TextHeight(LText)) div 2), LText)
| end
| else
| Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
| end;
| inherited DrawCell(ACol, ARow, ARect, AState);
| end;
となっています。つまりXE2以降でDefaultDrawing=Trueかつ*スタイル(テーマ)有効*だと
左4pixelがDrawCell=OnDrawCellの対象外になる、ということのようです。
なんでこんな風になっているのかはよくわかりません。
|