【问题标题】:Is there any way to add a hint or tooltip with FireMonkey?有什么方法可以使用 FireMonkey 添加提示或工具提示?
【发布时间】:2014-03-14 23:27:39
【问题描述】:

我一直在寻找它,但找不到任何东西。有什么方法可以使用 FireMonkey 添加提示或工具提示?是否有任何可用的组件可以实现这一点?

理想情况下,我正在寻找这样的东西(标注类型工具提示):

致暂停此问题的版主:我正在寻找有关如何实现此目的的源代码行,而不是购买/使用的软件。目前(AFAIK)没有支持这样做的源代码组件,因此不存在“意见反馈或垃圾邮件”的风险。

【问题讨论】:

  • 德语链接delphipraxis.net/…
  • 接近投票者的问题:这是softwarerecs.stackexchange.com 的合适问题吗?
  • 您还阅读了其余部分吗? “相反,请描述该问题以及迄今为止为解决该问题所做的工作。” - 此问题目前 SO 上的题外话,应重新措辞、关闭或移动到另一个 stackexchange 站点
  • 我很想为此添加一个答案,但它被搁置了。答案的基本要点是您将添加一个TCalloutPanel 并将其作为TEdit 的父级。然后,将其对齐到alRight,将宽度设置为150,并将margin-right设置为-150(或将其设置为与宽度相同的负值)。然后将CalloutOffset 设置为1,将CalloutPosition 设置为cpLeft。鲁弗爵士的回答当然是一条更好的路线,但在 FMX 中总是有其他方法可以做这类事情。
  • @TLama:我首先询问是否有任何方法可以添加工具提示,但您可能错过了这个问题。关于我的问题:“是否有可用的组件”,如果您使用 Delphi,您就会知道这个问题包括标准组件。一切都是 Delphi 中的一个组件(按钮,编辑),所以我的问题没有明确要求第 3 方组件。正如 Scoot Pritchard 指出的那样,TCalloutPanel 可能正是我所需要的。而 TCalloutPanel 是一个标准组件。干杯。

标签: delphi user-interface tooltip firemonkey


【解决方案1】:

这就是我最终的做法:为 Button 创建一个提示,如下所示:

在表单中添加一个按钮。然后添加一个 TPopup。在其中放置一个 CalloutPanel,并可选择将对齐设置为 AlClient。在 CalloutPanel 上放置一个 TLabel 并写下您的提示文本。

你的结构应该是这样的:

然后转到 TPopup 并将 PlacementTarget 设置为 Button1(您的按钮)。接下来,转到 Placement 并选择 BottomCenter:

接下来为按钮上的 MouseEnter 和 MouseLeave 事件添加一个处理程序:

procedure TForm1.Button1MouseEnter(Sender: TObject);
begin
Popup1.IsOpen := True;
end;

procedure TForm1.Button1MouseLeave(Sender: TObject);
begin
Popup1.IsOpen := False;
end;

应该可以的。

【讨论】:

    【解决方案2】:

    您可以使用 FloatAnimation 和 Opacity 属性进行提示。

    在表单中添加一个按钮。然后在里面添加 CalloutPanel(或任何形状)。 接下来在 CalloutPanel 上放置一个 TLabel 以编写提示文本。我在创建表单时将 CalloutPanel.Visible 属性设置为 False。然后将 TFloatAnimation 附加到 CalloutPanel.Opacity 属性。

    Next set some TFloatAnimation properties:

    Because of Duration Hint 出现流畅。

    然后创建按钮事件 OnMouseEnter 和 OnMouseLeave 。

    procedure TForm1.Button1MouseEnter(Sender: TObject);
    begin
       CalloutPanel1.Visible := true;
    end;
    
    procedure TForm1.Button1MouseLeave(Sender: TObject);
    begin
       CalloutPanel1.Visible := false;
    end;
    

    That's it

    【讨论】:

      【解决方案3】:

      我是 Delphi 和 FireMonkey 的新手。我还想要工具提示。这就是我的发现:FireMonkey 没有提供工具提示,这是故意的,而且是有充分理由的。

      我认为 FireMonkey 的重要理念是开发一个且只有一个程序。然后,甚至无需更改一行代码,您就可以编译一个在 Windows 上运行的版本,在 Android 上运行另一个版本,在 Mac OS 上运行另一个版本,等等。因此,即使一行代码也无需更改,您就有了一个用于运行的版本桌面版和智能手机版本,使用相同的用户界面以完全相同的方式工作。

      因此,FireMonkey 仅支持智能手机和台式机通用的功能。在智能手机上,没有悬停鼠标、手指或其他任何东西。因此,Firemonkey 不支持在桌面上悬停。因为没有悬停,所以不能有工具提示(Delphi 命名法中的“提示”)。

      因此,您必须做出决定:您是否想要一款在 Windows 和智能手机上运行完全相同、无需更改代码且无需单独代码的应用?或者你想要所有的桌面功能?如果您想要所有桌面功能,包括工具提示(提示)和所有其他功能,那么您应该使用 Embarcadero 的 VCL(可视化组件库)。使用 VCL 将允许您通过设置文本框、按钮和所有其他控件的“提示”属性来获取工具提示(提示),而无需编写代码。

      但是,如果您想要在智能手机上运行的应用程序,则必须使用 FireMonkey。 VCL 不适用。

      正如我所提到的,我还是 Delphi 的新手。所以,当然,我很感激更正 来自经验丰富的 Delphi 开发人员。

      【讨论】:

        猜你喜欢
        • 2011-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-30
        • 1970-01-01
        相关资源
        最近更新 更多