如何动态添加按钮到TCategoryPanelGroup?

时间:2009-08-27 12:53:35

标签: delphi user-interface delphi-2009 components

是否有人使用Delphi 2009的TCategoryPanelGroup组件,特别是在类别面板中动态添加按钮?

我无法让它正常工作。按钮未出现或对齐已拧紧。我想做的基本概要:

procedure AddButton (const Caption, Group : String);
const 
  ButtonSize = 55;
  Border = 10;
var
  CategoryPanel : TCategoryPanel;
  Button : TButton;       
begin
  CategoryPanel := FindCategoryPanel (CategoryPanelGroup, Group);
  CategoryPanel.Height := CategoryPanel.Height + ButtonSize + Border;
  Button := TButton.Create (CategoryPanel);
  Button.Parent := CategoryPanel;
  Button.Width := ButtonSize;
  Button.Height := ButtonSize;
  Button.Left := 27;
  Button.Top := CategoryPanel.ClientHeight - Border - ButtonSize;
end;

任何提示?

2 个答案:

答案 0 :(得分:0)

究竟是什么问题?按钮显示在所需的位置。

你确定你想要没有文字的方形按钮吗?

使用:

Button.Left := 0;
Button.Width := CategoryPanel.ClientWidth - 2;

使它们成为面板的精确宽度减去像素的偏移量。

使用:

Button.Width:= CategoryPanel.ClientWidth;   Button.Left:= -1;

创建最大宽度。它有一个像素偏移。

[[我使用2010年公平]]。

答案 1 :(得分:0)

问题是我指定顶部坐标的方式。

我将其改为

ButtonCount := CategoryPanel.ComponentCount - 2;
Button.Top := Border + ButtonCount * (ButtonSize + Border);
CategoryPanel.ClientHeight := Border + (ButtonCount+1) * (ButtonSize + Border);

它有效。

不知道究竟是什么原因引起了这个问题。