在运行时将组件添加到Firemonkey自定义样式

时间:2014-07-15 11:56:37

标签: delphi firemonkey custom-component delphi-xe6

我正在为firemonkey制作一个自定义列表框。我已经定制了一个TSeachBox。在我的自定义样式中有一个TRectangle,我需要在运行时添加TLabel。

我可以在设计时添加Lables。但我看不到在这个TRectangle中在设计时添加的所有标签。我已经正确设置了所有标签的父母和所有者。

有什么想法吗?

下面是代码:

procedure TCustomListBox.ColumnsChanged(Sender: TObject);
var  
  lPanel : TPanel;
  lLabel: TLabel;  
  iCount : Integer;
begin
  if Assigned(FSearchBox) then
  Begin     
    if FSearchBox.FindStyleResource('headerstyle') <> nil then
      lPanel := FSearchBox.FindStyleResource('headerstyle') as TPanel;

    if Assigned(lPanel) and (lPanel is TPanel) then
    begin
      //Clear all the columns except whose Tag = 1
      for iCount := lPanel.ChildrenCount - 1 downto 0 do
      begin
        if Assigned(lPanel.Children[iCount]) then
        begin
          if (lPanel.Children[iCount]).Tag = 0 then
            lPanel.Children[iCount].Free;
        end;
      end;
      iXPosition := 45;
      //FColumns1 is columns which needs to be added.
      for iCount := 0 to FColumns1.Count - 1 do
      begin
        FLabel := TLabel.Create(lPanel);
        FLabel.Parent:= lPanel;               
        FLabel.Name  := 'Col' + IntToStr(iCount);
        FLabel.Visible := True;
        FLabel.Position.X := iXPosition;
        FLabel.Align := TAlignLayout.alLeft;
        FLabel.Text  :=  FColumns1[iCount].ColumnHeaderText;
        FLabel.Width :=  FColumns1[iCount].ColumnWidth;
        iXPosition := iXPosition + FColumns1[iCount].ColumnWidth;       
      end;      
    end;
  End;
end;

0 个答案:

没有答案