【问题标题】:Looking for a 3rd party tabcontrol in Delphi FireMonkey在 Delphi FireMonkey 中寻找第 3 方选项卡控件
【发布时间】:2013-02-20 15:14:31
【问题描述】:

我正在寻找 Raize 组件的选项卡控件的替代方法。

我希望能够在每个页面的顶部添加关闭按钮,并且我想使用倾斜的选项卡和选项卡上的颜色。哦,我正在使用 FireMonkey 2。

//我知道raize不支持firmonkey。

【问题讨论】:

  • 您的问题是“是否有任何带有关闭按钮的第 3 方 TabControls?”还是“如何向标准 TabControl 添加关闭按钮?”。它与 Raize 组件有什么关系? AFAIK Raize 甚至没有 FMX 支持?
  • 你检查过这个问题吗? stackoverflow.com/questions/11134965/…
  • 我已经查看了这两个问题,但它们与我想要的 firemonkey 的第 3 方控制无关。
  • 您应该编辑您的问题以澄清它。准确地写出你的问题是什么,不要一次要求多件事。

标签: delphi tabcontrol firemonkey


【解决方案1】:

Firemonkey 在Common Controls 页面中有自己的TTabControl(默认情况下)。您可以使用TStylebook 设置它的样式。例如,我很有信心可以在标签本身上添加一个关闭按钮。

毕竟,FMX 是一个基于矢量的框架,因此所有视觉元素都必须存在于样式中。为此,您可能希望将样式加载到 TStylebook 中,因为我无法找到将默认样式加载到其中的方法。向下导航到tabitemstyle,然后您就可以从那里调整它的视觉外观。只需根据需要添加关闭按钮(对齐、布局等)。

回到您的应用程序代码中,您将寻求使用FindStyleResource 例程来设置代码(XE2 使用FindBinding,因此您需要设置BindingName 属性)。我将假设您的关闭按钮称为“关闭按钮”(不带引号);

var
  MyTab : TTabItem;
begin
  MyTab := ((TabItem1 as TTabItem).FindStyleResource('CloseButton') as TButton).OnClick := TabClose;
end;

您希望在最初创建选项卡时添加该代码,或者如果在设计时创建所有选项卡,您需要在 FormCreate 中运行它。您基本上是在告诉它,当单击 CloseButton 时,您想要调用通知事件/过程TabClose。此过程与单击按钮相同。

您甚至可以将选项卡的StyleName 属性更改为CloseButton+Index_of_tab。

现在,至于关闭选项卡本身的代码,类似这个未经测试的示例可能会起作用,尽管您需要对其进行迭代。

procedure TForm1.TabClose(Sender: TObject);
var
  _mytab : Integer;
  _activetab : Integer;
begin
  _activetab := ((Sender as TTabItem).Parent as TTabControl).ActiveTab.Index;
  _mytab := ((Sender as TTabItem).Parent as TTabControl).ActiveTab.Index;
  ((Sender as TTabItem).Parent as TTabControl).Tabs[_MyTab].Free;
  ((Sender as TTabItem).Parent as TTabControl).TabIndex := _activetab;
end;

现在,这是聪明的部分,并利用了框架的设计。当您单击另一个元素内的样式元素时,默认情况下,它将选择父元素。在此示例中,它将选择包含用户单击的关闭按钮的选项卡。然后,它将关闭该选项卡(从技术上讲,它会释放它,我在开发中没有过多处理选项卡,因此您需要研究“关闭”它们的正确方法)。

这有一个问题;如果您希望切换回之前活动的选项卡,您可能希望找到一种更好的方法来检测之前的活动选项卡。现在,它只会打开您刚刚关闭的选项卡之后的选项卡(由于选项卡计数现在减少 1,因此活动选项卡索引选择下一个物理选项卡)。您可能可以通过将_activetab 代码拆分到别处来做到这一点。


我用自己的一些程序做过类似的事情,这就是我通常创建“混合”组件的方式。您实质上是在利用框架的模块化设计,使其做您想做的事情,而无需依赖第三方组件。

【讨论】:

  • 好吧,我告诉你这是怎么回事。我有点忙。
【解决方案2】:

由于 FMX 是一个非常年轻的框架,因此支持它的第三方组件供应商还不是很多。

我还没有看到任何用于 FMX 的第 3 方 TabControl 组件,快速的 Google 搜索表明没有。所以你可能不走运。

【讨论】:

  • 您可能是对的,当您快速迁移到新平台时会发生这种情况。
【解决方案3】:

我知道这是一个旧查询,但如果有人仍在寻找带有关闭按钮和倾斜标签边的标签,请查看 TMSSoftware 的 TTMSFMXTabSet。我在当前的开发项目中使用它,它工作正常。

【讨论】:

    猜你喜欢
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多