Delphi XE7如何根据单元格内容调整列宽并允许修改宽度?

How to adjust the column width to the content of a cell and allow to modify the width in Delphi XE7?

早上好,我正在尝试根据其内容调整网格列的宽度,但我还需要可以手动修改该宽度。网格是一个 TStringGrid,我使用的是 delphi XE7。 我正在尝试使用以下代码来做到这一点:

procedure gDetailDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  vWidth : Integer;
begin
  if (FormPosition.WMaximized = True) then
  begin
    vWidth := gDetail.Canvas.TextWidth(gDetail.Cells[ACol, ARow]);
    if vWidth > aColWidthExpanded[ACol] then
      aColWidthExpanded[ACol] := vWidth+20;
    gDetail.ColWidths[ACol] := aColWidthExpanded[ACol];
  end;
end;

网格正确加载并且列宽已根据内容正确调整,但我无法手动修改列宽。我做错了什么我不能修改列宽

您在 OnDrawCell 事件中修改了列宽。当您手动更改宽度时,您会触发 OnDrawCell 将宽度更改回内容。简而言之,你不能两者兼顾!