Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 在RAD Studio IDE中显式保留或保存默认值_Delphi_Firemonkey - Fatal编程技术网

Delphi 在RAD Studio IDE中显式保留或保存默认值

Delphi 在RAD Studio IDE中显式保留或保存默认值,delphi,firemonkey,Delphi,Firemonkey,我按照以下示例在Android应用程序中加载自定义字体Segoe UI: 我的问题是IDE RAD Studio 10.1 Berlin没有将默认值保存到表单文件中的FMX文件。在设计时,默认字体似乎已经是Segoe UI,因此IDE在对象检查器中仅显示默认字体,因此不会将该值存储到FMX表单文件中。但是,Android中的默认字体是Roboto,而不是Segoe UI,并且应用程序确实在运行时使用Roboto作为默认字体 因此,对象检查器中的默认值不会为不同的目标平台保留。这太烦人了 这是ID

我按照以下示例在Android应用程序中加载自定义字体Segoe UI:

我的问题是IDE RAD Studio 10.1 Berlin没有将默认值保存到表单文件中的FMX文件。在设计时,默认字体似乎已经是Segoe UI,因此IDE在对象检查器中仅显示默认字体,因此不会将该值存储到FMX表单文件中。但是,Android中的默认字体是Roboto,而不是Segoe UI,并且应用程序确实在运行时使用Roboto作为默认字体

因此,对象检查器中的默认值不会为不同的目标平台保留。这太烦人了

这是IDE中的逻辑错误吗?如何禁用此IDE功能,或在设计时显式设置一个值,该值在Windows下的IDE中意外也是设计时的默认值,并在本例中为目标平台Android保留该值

我尝试进入FMX表单文件的文本模式并手动设置值,但当切换回设计模式时,IDE会将对象检查器中的值再次更改为默认值,当再次返回文本模式时,该行已被删除。我想/需要在设计时设置它,而不是在运行时,但我做不到


我还需要其他属性的默认值,不仅仅是字体。

这是设计的。属性的默认值不会保存在DFM/FMX文件中,除非该属性通过自身上的nodefault或stored=true指令显式请求它。如果不要求保存默认值,将导致DFM/FMX资源膨胀

除非派生新组件以重写其属性声明,否则无法重写此行为

在设计时,不能基于每个平台指定不同的默认值。只有一个属性,它只有一个默认值。如果在运行时需要不同的平台值,则必须:

创建单独的每个平台视图,并在每个视图中指定不同的特性值

在运行时在代码中设置属性值,例如在窗体的OnCreate事件中


解决问题的第三种方法可能是使用样式为组件定义默认字体。这样,字体不是由DFM定义的,而是由样式本身定义的

当然,如果您在开始使用样式之前没有使用过样式,可能会有点困难。但一旦掌握了窍门,您就会看到样式可以提供的巨大优势,尤其是在具有大量表单的项目中,因为您只需要更改样式,并且更改会影响使用该特定样式的每个组件


说到样式,你确定你没有使用它们吗?样式可能会覆盖你的字体设置,这可能会解释为什么其他人的建议不起作用?

因此,再次为我澄清一下:这确实意味着在Android设计时无法在Android上设置字体Segoe UI?然后是RAD Studio的设计显然是坏了。不需要保存默认值,是的。但是IDE可以向对象检查器添加一个选项,将值重置回默认值。这是一种适当的行为。现在,IDE禁止这样做,这不符合RAD的概念。设计时编辑器是主要功能之一。我无法导出数百个组件。1:没有解决问题,因为它是IDE设计的。默认值的行为相同。2:不适用于链接教程,除非你能告诉我如何在运行时加载字体。@StanE:如果你认为RAD Studio的设计有问题,告诉Embarcadero。在这里抱怨是不合适的,也不会改变任何事情。因为你不同意这个设计并不意味着雷米的答案是错误的。他已经回答了你的问题;你是否喜欢答案中的事实无关紧要。@KenWhite我是在询问并寻求解决方案,而不是抱怨。我不认为它坏了——它坏了。我也对雷米的答案投了赞成票,所以我不明白你为什么暗示我认为他的答案是错误的。我在哪里写的?如果这就是为什么你们在这里用-2否决了我的问题,那么你们显然不明白投票系统在stackoverflow上是如何工作的。对内容进行投票,不是因为你喜欢或不喜欢它。孩子们。。。再一次:我的问题有两张反对票。有人能解释一下我最初的问题到底出了什么问题吗?@StanE:在你看来,这是错误的。这并不意味着它坏了。我不知道你的问题为什么被否决了。我回应了你对RAD Studio设计的抱怨。再说一次,在这里抱怨是没有意义的;StackOverflow用户无法更改IDE的设计。投诉或表达您对产品功能或设计的想法的合适场所是EMBT论坛。我不希望这样,我只是把它当作一个定制的论坛
nt,就像我在第二句话中写的。如果你告诉我如何在运行时用FMX加载Android的自定义字体,我会非常高兴的。我发现在设计时这样做很有用的原因是,在为我的设备编译之前,我可以立即查看和测试它。是的,我在询问有关在对象检查器中设置属性的问题。其中之一是字体系列。我知道如何在Android和FMX上使用自定义字体,我将字体族属性显式设置为Segoe UI。但当我这样做时,IDE会丢弃我的值,而将其设置为默认值,它只是删除我的显式设置。但是Android的标准字体是Roboto,所以多亏了这个愚蠢的IDE,我无法在Android设计时设置字体Segoe UI。似乎我只能在运行时设置它——我不知道如何在运行时使用上面链接的教程设置它。我想你真的不明白我在写什么。我没有使用VLC或Windows。我说得很清楚。如果您不知道我正在描述的IDE的行为,请再次阅读并复制我所写的内容。如果有人对我的问题投了反对票,请写一条评论,让我知道我做错了什么,以及我可以如何改进,因为我希望并将改进。否则,请不要投反对票,尤其是如果你因为不喜欢我的问题而投反对票的话。我尽量说得具体些。如果有人需要我提供更多信息,请询问。