作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎我需要一个项目的帮助。
我有一个例程,该例程将运行时多个TabItem构造到firemonkey中的页面控件上,并且我想在该标签上有一个关闭按钮。
新选项卡上有一个复选框,用于从选项卡的样式器中加载关闭按钮。
该页面具有一个默认选项卡,并且在某些按钮内,我正在添加运行时新的选项卡项。
我设法将事件应用于关闭默认标签页,但是在运行时创建的标签页中不起作用。任何帮助,将不胜感激。
这是运行时选项卡的代码
procedure TForm1.Button1Click(Sender: TObject);
var
t : TTabItem;
o : TFmxObject;
i : Integer;
c : TControl;
begin
t := TTabItem.Create(pgeControl);
t.Parent := pgeControl;
o := FindBinding('imgCloseTabPage');
if o<>nil then
begin
for i := 0 to ComponentCount - 1 do
begin
if Components[i] is TCheckBox then
begin
TCheckBox(Components[i]).OnClick := CheckBox1Click;
end;
end;
end;
if pgeControl.TabCount - 1 <= nTab then
begin
nTab := nTab + 1;
t.Index := nTab
end
else
begin
t.Index := pgeControl.TabCount - 1;
nTab := pgeControl.TabCount - 1;
end;
t.Tag := nTab;
t.Text := 'Some text...' + ' ' + IntToStr(nTab);
t.Name := 'tabPatient' + IntToStr(nTab);
t.Height := 35;
t.Width := 250;
t.Margins.Top := 0;
t.Margins.Left := 0;
t.Margins.Bottom := 0;
t.Margins.Right := 0;
t.Padding.Top := -5;
t.Padding.Left := 0;
t.Padding.Bottom := 0;
t.Padding.Right := 0;
t.TextAlign := TTextAlign.taLeading;
t.Width := (Length(t.Text) * 6 ) + 60;
t.Font.Size := 15;
t.StyleLookup := 'tabMainStyle1';
l := TLayout.Create(t);
l.Parent := t;
l.Align := TAlignLayout.alClient;
l.Margins.Top := -5;
l.Margins.Left := 5;
l.Margins.Right := 5;
l.Margins.Bottom := 5;
l.Padding.Top := 0;
l.Padding.Left := 0;
l.Padding.Bottom := 0;
l.Padding.Right := 0;
pgeControl.ActiveTab := pgeControl.Tabs[pgeControl.TabCount - 1];
end;
最佳答案
应用自定义样式后,应调用FindBinding。当前,您之前曾调用过它,所以它找不到对象。另外,当您寻找对象时出现错误。
所以把这个
o := t.FindBinding('imgCloseTabPage');
if o<>nil then
begin
if o is TCheckBox then
TCheckBox(o).OnClick := CheckBox1Click;
end;
t.StyleLookup := 'tabMainStyle1';
关于delphi - 创建运行时TTabItem,firemonkey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134965/
我添加了一些TTabItem (s) 至 TTabControl在运行时。但我无法删除它们。 我用来创建项目的代码: tbi := TTabItem.Create(tbc); tbi.Parent :
我是一名优秀的程序员,十分优秀!