Delphi 使用调整大小设置网格宽度-需要通知

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

我试图通过调整表单大小来按比例调整列宽(开始时为30、30、50、130、130、130),这是可行的,有点

问题1:我想去掉+50,但是每个像素都需要调整大小

问题2:如果我能得到一个宽度拖动已停止、鼠标已释放且窗体宽度稳定的通知,我将解决问题1

问题3:我需要帮助减少表格宽度。我的数学不好

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;
在调整大小或移动完成且用户释放鼠标后发送一次