代码之家  ›  专栏  ›  技术社区  ›  M Schenkel

调整按钮的大小,使它们的宽度相同

  •  1
  • M Schenkel  · 技术社区  · 15 年前

    我有一个“宽”t面板,上面有几个按钮(基本上是一个工具栏)。所有按钮都对齐=左。我已经创建了一个函数,它将按钮的大小调整到相同的大小,并计算按钮的宽度,以便它们填充整个Tpanel。我在Tpanel的onResize事件处理程序中调用这个函数。

    procedure ScaleButtonsOnPanel;
    var i: Integer;
    begin
      for i:=0 to mPanel.ControlCount-1 do begin
          mPanel.Controls[i].Width := round(mPanel.width/mPanel.ControlCount-1)
      end;
    end;
    

    问题是,如果我最小化然后恢复窗体,按钮的布局将从设计布局更改。

    任何人都能提供一个解决方案,在一个面板上有按钮,可以调整大小,但保持设计时间顺序(从左到右的位置)?

    2 回复  |  直到 10 年前
        1
  •  4
  •   Andreas Rejbrand    15 年前

    procedure TForm1.Panel1Resize(Sender: TObject);
    var
      i: Integer;
      btnWidth: integer;
    begin
      btnWidth := Panel1.Width div Panel1.ControlCount;
      for i := 0 to Panel1.ControlCount - 1 do
      begin
        Panel1.Controls[i].Left := i * btnWidth;
        Panel1.Controls[i].Width := btnWidth;
      end;
    end;
    

    http://privat.rejbrand.se/panelresize.wmv

    alLeft Panel1.Controls Tag

    procedure TForm1.Panel1Resize(Sender: TObject);
    var
      i: Integer;
      btnWidth: integer;
    begin
      btnWidth := Panel1.Width div Panel1.ControlCount;
      for i := 0 to Panel1.ControlCount - 1 do
      begin
        Panel1.Controls[i].Left := Panel1.Controls[i].Tag * btnWidth;
        Panel1.Controls[i].Width := btnWidth;
      end;
    end;
    
        2
  •  2
  •   Francesca    15 年前