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
将宽度更改回内容。简而言之,你不能两者兼顾!
早上好,我正在尝试根据其内容调整网格列的宽度,但我还需要可以手动修改该宽度。网格是一个 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
将宽度更改回内容。简而言之,你不能两者兼顾!