我正在为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;