当您创建Delphi项目并添加组合框并设置 ComboBox1.Items.Add(' Zebra& Zulu')时,它会显示" Zebra&祖鲁"当你下拉列表。完美。
创建Firemonkey项目并添加comboxbox或comboedit并设置 ComboBox1.Items.Add(' Zebra& Zulu')或 ComboEdit1.Items时。添加(' Zebra& Zulu')它显示" Zebra Zulu"下拉列表时(没有&符号显示)。但是,当您使用comboedit选择它时,文本字段部分显示" Zebra&祖鲁&#34 ;.太奇怪了。
现在有一种解决方法(但有点),但对我来说这是值得怀疑的。添加第二个&符号,下拉列表显示&符号。但是,添加第二个&符号会显示在comboedit文本字段部分上。坏。
我的问题是,您是否可以强制使用这些组合控件下拉列表来显示&符号?为什么首先缺少&符号?
答案 0 :(得分:1)
这似乎是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
将正确呈现带有单个&符号的项目...
这是一个开放的质量控制,虽然不会出现任何急于解决的问题: