tstylebook样式列表中的 "默认 "平台标记的目的是什么?

问题描述 投票:1回答:1

更新:我从头开始做了一个新的测试项目,这个项目在windows和android的主界面上确实应用了默认平台标记的样式,所以下面看到的行为可能与我项目的其他部分有关......我将做更多的测试......(我有一个样式'backgroundstyle',矩形笔刷填充颜色设置为红色)

更新2:当我为android平台添加了一个特定的样式后,所有的 "默认 "平台样式都不再被考虑。Mainform突然不红了。

为了给我的多平台概念验证程序做一个好的样式设计,我在仔细研究样式手册。总的来说,将样式设计与应用逻辑分离当然是非常受欢迎的。虽然我更不确定这个原则的fmx实现是否是最佳的(我正在寻找我需要改变哪个stylleresource的哪个属性才能得到我想要的东西,而不是简单的文本或矩形......但这可能取决于我。 ). 我也明白,每个目标平台都有自己的习惯,坚持这些习惯是一种很好的做法(至少,如果你想成为hurd的一部分:-)。但我想说的是,例如,我的主要应用程序的颜色是我自己决定的,并且应该在各个平台上保持一致。似乎为了实现这个目标,我需要改变,可能是在所有的多个单独的风格--资源--(在列表中的190个风格中的每个地方都可能指定一个填充颜色,也可能在位图地图中的所有位图中指定一个填充颜色,这对于每个比例和每个sourcelinkname......),并且,同样,这对于每个目标平台都是如此......结果通常是我坚持使用 "高级 "的开箱即用的风格 :-) 我曾希望 "默认 "平台标记能拯救我,让这个平台拥有所有的样式,并例外地只重复和改变一些特定平台的样式,如果该平台真的需要的话。文档中说,.NET是一个很好的平台。

注意:还有 "Default "平台标记。FireMonkey应用程序在找不到与当前平台相匹配的样式时,会加载>默认样式。

但似乎并不是这样工作的。例如在android上,这些默认样式(在运行时)总是被忽略,并恢复到嵌入式平台的特定样式,但在windows中,这些样式确实被使用了......(在设计时的IDE中,同样的默认样式被显示出来,因为我希望我选择的每一个平台都是如此--)。在我的例子中,我只是简单地使用mainform背景颜色(= backgroundstyle笔刷填充颜色)作为一个简单的测试设置:改变默认平台的'backgroundstyle'上的笔刷填充颜色,并在windows android上运行它)。

那么在样式书中默认平台的目的是什么?有什么我不明白的地方吗?或者是一个bug?有没有办法通过样式手册在不同的平台上使用同一套样式?如果没有,你是否可以创建和部署一个单一的样式文件,并在运行时加载,然后在所有平台上使用?(这个样式文件中是否应该有一个平台标记?如果不是正确的目标平台,这些样式会不会被忽略......) 结果,我发现自己在代码中做了很多运行时的样式,因为我真的确信它将是平台一致的,但我想这并不是真正的目的......。

delphi styles firemonkey rio
1个回答
0
投票

似乎当你把stylebook属性'UseStyleManager'设置为true时,那么(第一个)样式确实是...被使用了:-)。无论平台如何。这也意味着,当你的样式容器不包含正确的样式资源时,你的组件可能是不可见的!但当它们可用时,它们在所有平台上都是一致的。 这可能是个人喜好,只有一个单一的风格(定义),并在需要的时候,做出例外。但以我的经验来看,查看和处理样式资源列表是很耗时的,所以我需要验证的 "集 "越少越好。 如果我仍然需要为一个特定的平台使用不同的样式,我需要在运行时为那个特定平台上的组件覆盖样式查找名,当然也要将那个特定的样式查找名添加到我的默认样式容器中(简单地添加一个新的平台到你的样式书中并使用相同的查找名是行不通的,因为在这个设置中它被忽略了)。

© www.soinside.com 2019 - 2024. All rights reserved.