设置网格宽度与调整大小-通知需要



我试着按比例调整列宽(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;

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

相关内容

  • 没有找到相关文章

最新更新