标签: firemonkey-style

将TBitmapLinks与FireMonkey样式设计器一起使用

我一直在设计FireMonkey控件,但有一个问题我遇到了一些实际问题,那就是如何使用FireMonkey样式设计器(特别是Bitmap样式设计器)将位图合并到FireMonkey样式中.某些样式对象(例如,TButtonStyleObject)具有BitmapLink属性,但我无法看到它们如何在为FireMonkey控件生成的新自定义样式中工作.

让我试着让问题尽可能透明.我添加了一个样书并将其资源设置为Delphi样式目录中的MetropolisUIGreen.Style(在XE7中,它位于C:\ Users\Public\Documents\Embarcadero\Studio\16.0\Styles中).然后我打开FireMonkey样式设计器并找到按钮式样式,它由TButtonStyleObject和TButtonStyleTextObject组成,两者都是TLayout的父级.TButtonStyleObject的SourceLookup属性值为MetroGreenstyle.png,它是一个StyleName,与加载了MetropolisUIGreen.png图像的TImage相关联.

选择TButtonStyleObject(其StyleName为背景),我检查NormalLink属性,它是TBitmapLinks的集合.据我所知,我在NormalLink中定义的BitmapLink包含有关应该用于按钮的位图的信息,包括与MetroGreenstyle.png文件的矩形区域对应的坐标(SourceRect).

我的假设似乎是错误的,因为当我使用图形程序检查MetroGreenstyle.png时,这些坐标没有什么有趣的.我已经研究过的许多其他风格的BitmapLinks,有太多我发现,与sourceRect坐标似乎并不实际定义stylelookup png文件的有意义的区域.

我显然有这个错误.BitmapLink的SourceRect坐标如何定义FireMonkey在渲染控件时应使用的位图.

- 编辑我实际问了四个问题.我已将此问题更新为仅包含一个问题.我将在其他帖子中包含其他问题. -

delphi firemonkey firemonkey-style

9
推荐指数
1
解决办法
1613
查看次数

使用TScaledLayout和自定义样式绘制问题

我在组合TScaledLayout和从fmx中的位图样式设计器创建的自定义样式时遇到绘画问题.

为了演示,我加载了通过在位图样式设计器中选择"VCL/FMX的新样式" - >"另存为.style"创建的默认自定义样式.我在一些彩色矩形上放了几个标准控件:TScaledLayout上的红色和绿色,蓝色直接放在表单上.当我拉伸表格时,ScaledLayout上的控件上会出现彩色线条; 背景部分可见:

绘制拉伸控件的问题

如果我将表单的大小设置为与设计时尺寸完全匹配,则线条会消失.这似乎是一个非常重要的问题,我当然不能像这样一起使用这两个.有没有人对可能的修复或解决方法有所了解?

delphi firemonkey firemonkey-style delphi-xe7

7
推荐指数
1
解决办法
421
查看次数

如何访问嵌套样式控件

我有自定义样式的 FireMonkey 控件。其样式包含多层嵌套控件。

我需要访问这些控件并在运行时更改一些样式属性。为此,我正在使用FindStyleResource<T>方法。

我在检索样式内的第一级控件时没有问题。FindStyleResource但是,如果控件父级是 的后代,则访问第二级控件将失败TStyledControl

问题是如何访问这些嵌套样式控件,无论其父类型如何?

风格:

object TStyleContainer
  object TLayout
    StyleName = 'MyHeader'
    Align = Center
    Size.Width = 100.000000000000000000
    Size.Height = 50.000000000000000000
    Size.PlatformDefault = False
    Visible = False
    TabOrder = 0
    object TLabel
      StyleName = 'title'
      Align = Client
      StyledSettings = [Style]
      Size.Width = 36.000000000000000000
      Size.Height = 50.000000000000000000
      Size.PlatformDefault = False
      TextSettings.HorzAlign = Center
      Text = 'Title'
    end
    object TLayout
      StyleName = 'green'
      Align = MostLeft
      Size.Width = 32.000000000000000000
      Size.Height = 50.000000000000000000 …
Run Code Online (Sandbox Code Playgroud)

delphi firemonkey firemonkey-style delphi-10.2-tokyo

5
推荐指数
1
解决办法
958
查看次数

Firemonkey TButton风格有两种不同的文本

我正在尝试创建一个虚拟键盘,每个按钮都有一个数字和几个字母.例如,数量2也将有文字ABC旁边,用较小的字体大小和数量3都会有DEF它旁边.

我可以逐个成功编辑这些按钮的自定义样式.一个按钮,我可以删除一个TText样式元素,更改每个的对齐和文本设置,它工作正常...

设计按钮样式

但是,我必须逐个完成,自定义每个按钮的样式.如果我尝试重复使用此样式,则ABC所有键上的额外字母将相同.但我需要他们各自不同.

键盘在运行时的示例

如何制作一个可重复使用的样式,这也可以让我在每个按钮中使用不同的子文本?或者我是否必须为每个按钮创建一个独特的风格?

delphi button firemonkey firemonkey-style

3
推荐指数
1
解决办法
268
查看次数

firemonkey 中的透明表单和样式书

我有一个应用程序,其中包含多个样式手册,其中包含来自 delphistyles.com 的样式。我想添加一个轨迹栏,以允许用户在运行时更改表单的透明度,就像在 VCL 中使用 alphablend 所做的那样。

这篇文章:FireMonkey 中的 AlphaBlend说道:

要使表单背景半透明,您应该将表单透明度属性设置为 true 并使用带有 alpha 值的 Fill.Color,如 $AAFFFFFF(with Fill.Kind = bkSolid)。在这种情况下,窗体边框变得不可见(至少在 Delphi XE2 中)

但是,当我的表单有样式手册时,我该如何实现这一目标呢?

delphi alpha-transparency firemonkey firemonkey-style

1
推荐指数
1
解决办法
2120
查看次数