为什么 Firemonkey 组合中缺少符号?
Why is the ampersand missing in Firemonkey combo?
当您创建一个 Delphi 项目并添加一个组合框并设置 ComboBox1.Items.Add('Zebra & Zulu') 它显示 "Zebra & Zulu"当您下拉列表时。完美。
当您创建一个 Firemonkey 项目并添加一个组合框或组合编辑器并设置 ComboBox1.Items.Add('Zebra & Zulu') 或 ComboEdit1.Items.Add('Zebra & Zulu') 当您下拉列表时,它显示 "Zebra Zulu"(没有符号显示)。但是,当您 select 它使用组合编辑时,文本字段部分显示 "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');
显然由于多种原因不吸引人。
从上面的代码来看,这自然会影响 all FMX TTextControls
- 例如,即使是 TLabel
,在分配时也不会显示符号:
Label1.Text := 'Zebra & Zulu';
即使在 VCL 应用程序中,出于兴趣,这个:
Label1.Caption := 'Zebra & Zulu';
将呈现为
Zebra _Zulu
尽管 VCL TComboBox
将 正确地呈现带有单个 & 符号的项目...
这是一个开放的 QC,尽管它并不急于被解决:
当您创建一个 Delphi 项目并添加一个组合框并设置 ComboBox1.Items.Add('Zebra & Zulu') 它显示 "Zebra & Zulu"当您下拉列表时。完美。
当您创建一个 Firemonkey 项目并添加一个组合框或组合编辑器并设置 ComboBox1.Items.Add('Zebra & Zulu') 或 ComboEdit1.Items.Add('Zebra & Zulu') 当您下拉列表时,它显示 "Zebra Zulu"(没有符号显示)。但是,当您 select 它使用组合编辑时,文本字段部分显示 "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');
显然由于多种原因不吸引人。
从上面的代码来看,这自然会影响 all FMX TTextControls
- 例如,即使是 TLabel
,在分配时也不会显示符号:
Label1.Text := 'Zebra & Zulu';
即使在 VCL 应用程序中,出于兴趣,这个:
Label1.Caption := 'Zebra & Zulu';
将呈现为
Zebra _Zulu
尽管 VCL TComboBox
将 正确地呈现带有单个 & 符号的项目...
这是一个开放的 QC,尽管它并不急于被解决: