名前 題名 ▼ 福士さん > ▼ 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の対象外になる、ということのようです。 > なんでこんな風になっているのかはよくわかりません。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link