Delphi 使用调整大小设置网格宽度-需要通知
我试图通过调整表单大小来按比例调整列宽(开始时为30、30、50、130、130、130),这是可行的,有点 问题1:我想去掉+50,但是每个像素都需要调整大小 问题2:如果我能得到一个宽度拖动已停止、鼠标已释放且窗体宽度稳定的通知,我将解决问题1 问题3:我需要帮助减少表格宽度。我的数学不好Delphi 使用调整大小设置网格宽度-需要通知,delphi,delphi-5,column-width,Delphi,Delphi 5,Column Width,我试图通过调整表单大小来按比例调整列宽(开始时为30、30、50、130、130、130),这是可行的,有点 问题1:我想去掉+50,但是每个像素都需要调整大小 问题2:如果我能得到一个宽度拖动已停止、鼠标已释放且窗体宽度稳定的通知,我将解决问题1 问题3:我需要帮助减少表格宽度。我的数学不好 procedure TfrmMain.FormResize(Sender: TObject); var i : Integer; aPcntR : Real; aPcntI : Integer
procedure TfrmMain.FormResize(Sender: TObject);
var
i : Integer;
aPcntR : Real;
aPcntI : Integer;
anInc : Integer;
begin
if aClientWidth < 1 then Exit;
if aClientWidth = ClientWidth then Exit;
if aClientWidth+50 > ClientWidth then Exit; // Only adjust after an increase of at least 50
aPcntR:=(((aClientWidth-ClientWidth) / ClientWidth)*100.0);
aPcntI:=Abs(Round(aPcntR));
for i:=0 to dbgridItems.Columns.Count-1 do
begin
anInc:=dbgridItems.Columns[i].Width*aPcntI div 100;
dbgridItems.Columns[i].Width:=dbgridItems.columns[i].Width+anInc;
end;
aClientWidth:=ClientWidth;
aClientHeight:=ClientHeight;
end;
过程TfrmMain.FormResize(发送方:TObject);
变量
i:整数;
aPcntR:真实;
aPcntI:整数;
anInc:整数;
开始
如果aClientWidth<1,则退出;
如果aClientWidth=ClientWidth,则退出;
如果aClientWidth+50>ClientWidth,则退出;//仅在至少增加50%后进行调整
aPcntR:=((aClientWidth ClientWidth)/ClientWidth)*100.0);
aPcntI:=Abs(圆形(aPcntR));
对于i:=0到dbgridItems.Columns.Count-1 do
开始
anInc:=dbgridItems.Columns[i]。宽度*aPcntI div 100;
dbgridItems.Columns[i]。宽度:=dbgridItems.Columns[i]。宽度+anInc;
结束;
aClientWidth:=客户端宽度;
aClientHeight:=ClientHeight;
结束;
为WM_EXITSIZEMOVE
消息添加一个处理程序,并在那里调整大小,而不是使用OnResize
:
interface
type
TfrmMain = class(TForm)
// Other declarations by IDE
private
procedure WMExitSizeMove(var Msg: TMsg); message WM_EXITSIZEMOVE;
// Other stuff
end;
在调整大小或移动完成且用户释放鼠标后发送一次。为
WM_EXITSIZEMOVE
消息添加一个处理程序,并在那里进行调整大小,而不是使用OnResize
:
interface
type
TfrmMain = class(TForm)
// Other declarations by IDE
private
procedure WMExitSizeMove(var Msg: TMsg); message WM_EXITSIZEMOVE;
// Other stuff
end;
在调整大小或移动完成且用户释放鼠标后发送一次。为
WM_EXITSIZEMOVE
消息添加一个处理程序,并在那里进行调整大小,而不是使用OnResize
:
interface
type
TfrmMain = class(TForm)
// Other declarations by IDE
private
procedure WMExitSizeMove(var Msg: TMsg); message WM_EXITSIZEMOVE;
// Other stuff
end;
在调整大小或移动完成且用户释放鼠标后发送一次。为
WM_EXITSIZEMOVE
消息添加一个处理程序,并在那里进行调整大小,而不是使用OnResize
:
interface
type
TfrmMain = class(TForm)
// Other declarations by IDE
private
procedure WMExitSizeMove(var Msg: TMsg); message WM_EXITSIZEMOVE;
// Other stuff
end;
在调整大小或移动完成且用户释放鼠标后发送一次