t j*_*t j 5 delphi combobox firemonkey
当您创建 Delphi 项目并添加组合框并设置ComboBox1.Items.Add('Zebra & Zulu')时,当您下拉列表时,它会显示“Zebra & Zulu”。完美的。
当您创建 Firemonkey 项目并添加组合框或组合编辑并设置ComboBox1.Items.Add('Zebra & Zulu')或ComboEdit1.Items.Add('Zebra & Zulu') 时,它显示“Zebra Zulu”(不显示&符号)当您下拉列表时。但是,当您使用组合编辑选择它时,文本字段部分显示“Zebra & Zulu”。只是很奇怪。
现在有一个解决办法(某种程度上),但对我来说这是值得怀疑的。添加第二个 & 符号,下拉列表将显示该 & 符号。但是,添加第二个 & 符号会显示在组合编辑文本字段部分。坏的。
我的问题是你能强制这些组合控件下拉列表显示&符号吗?为什么首先缺少 & 符号?
这似乎是 VCL 加速键处理遗留下来的内置行为。似乎没有办法用样式或选项修改此行为:
\n\nprocedure TTextControl.DoChanged;\nvar\n TextStr: string;\nbegin\n if Assigned(FITextSettings) then\n FITextSettings.TextSettings.BeginUpdate;\n try\n if Assigned(FITextSettings) then\n FITextSettings.TextSettings.Assign(ResultingTextSettings);\n TextStr := DelAmp(Text); // **! Here deleting ampersands unconditionally\n\n if Assigned(FTextObject) then\n begin\n UpdateTextObject(FTextObject, TextStr);\n\n // ... etc - method continues\nRun Code Online (Sandbox Code Playgroud)\n\n一种解决方法是使用 unicode 全角 & 符号:
\n\n ComboBox1.Items.Add(\'Zebra \xef\xbc\x86 Zulu\');\nRun Code Online (Sandbox Code Playgroud)\n\n出于多种原因,显然不具有吸引力。
\n\n从上面的代码来看,这自然会影响所有FMX TTextControls- 例如,即使是 a TLabel,在分配时也不会显示&符号:
Label1.Text := \'Zebra & Zulu\';\nRun Code Online (Sandbox Code Playgroud)\n\n即使在 VCL 应用程序中,出于兴趣,这样:
\n\n Label1.Caption := \'Zebra & Zulu\';\nRun Code Online (Sandbox Code Playgroud)\n\n将呈现为
\n\n\n\n\n斑马_祖鲁语
\n
尽管 VCLTComboBox 将正确地使用单个 & 符号呈现项目...
这是一个开放的质量控制,尽管看起来并不急于解决:
\n\nhttp://qc.embarcadero.com/wc/qcmain.aspx?d=122564
\n