gpt4 book ai didi

delphi - 为什么 Firemonkey 组合中缺少 & 符号?

转载 作者:行者123 更新时间:2023-12-03 15:34:51 25 4
gpt4 key购买 nike

当您创建 Delphi 项目并添加组合框并设置 ComboBox1.Items.Add('Zebra & Zulu') 时,当您下拉列表时,它会显示“Zebra & Zulu”。完美。

当您创建 Firemonkey 项目并添加组合框或组合编辑器并设置 ComboBox1.Items.Add('Zebra & Zulu')ComboEdit1.Items.Add('Zebra & Zulu' ') 当您下拉列表时,它会显示“Zebra Zulu”(不显示与号)。但是,当您使用组合编辑选择它时,文本字段部分显示“Zebra & Zulu”。只是很奇怪。

现在有一个解决办法(某种程度上),但对我来说这是有问题的。添加第二个 & 符号,下拉列表将显示该 & 符号。但是,添加第二个 & 符号会显示在组合编辑文本字段部分。不好。

我的问题是你能强制这些组合控件下拉列表显示&符号吗?为什么首先缺少 & 符号?

最佳答案

这似乎是 VCL 加速键处理遗留下来的内置行为。似乎没有办法通过样式或选项来修改此行为:

procedure TTextControl.DoChanged;
var
TextStr: string;
begin
if Assigned(FITextSettings) then
FITextSettings.TextSettings.BeginUpdate;
try
if Assigned(FITextSettings) then
FITextSettings.TextSettings.Assign(ResultingTextSettings);
TextStr := DelAmp(Text); // **! Here deleting ampersands unconditionally

if Assigned(FTextObject) then
begin
UpdateTextObject(FTextObject, TextStr);

// ... etc - method continues

一种解决方法是使用 unicode 全角 & 符号:

 ComboBox1.Items.Add('Zebra & Zulu');

由于多种原因,显然没有吸引力。

从上面的代码来看,这自然会影响所有 FMX TTextControls - 例如,即使是TLabel,在分配时也不会显示&符号:

 Label1.Text := 'Zebra & Zulu';

即使在 VCL 应用程序中,出于兴趣,这样:

  Label1.Caption := 'Zebra & Zulu';

将呈现为

Zebra _Zulu

虽然 VCL TComboBox 使用单个 & 符号正确渲染项目...

<小时/>

这是一个开放的质量控制,尽管看起来并不急于解决:

http://qc.embarcadero.com/wc/qcmain.aspx?d=122564

关于delphi - 为什么 Firemonkey 组合中缺少 & 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30240017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com