我需要将句子中的第一个字母大写,然后用户在编辑中键入字符串,就像我可以在 Eclipse 中那样:“android:inputType="textCapSentences"
我怎样才能在 XE5 中做到这一点?
或者可能是其他方式来改变 XE5 中虚拟键盘上的 Shift 状态?
我需要将句子中的第一个字母大写,然后用户在编辑中键入字符串,就像我可以在 Eclipse 中那样:“android:inputType="textCapSentences"
我怎样才能在 XE5 中做到这一点?
或者可能是其他方式来改变 XE5 中虚拟键盘上的 Shift 状态?
textCapSentences
对应于作为Android 类TYPE_TEXT_FLAG_CAP_SENTENCES
一部分的常量。TextView
此类由Androidapi.JNI.Widget.JTextView
接口包装,但 Firemonkey TEdit 控件不直接使用它,而是 Firemonkey 使用名为JFMXTextEditorProxy
. 所以理论上你必须访问链接到 EditControl 的代理类来TYPE_TEXT_FLAG_CAP_SENTENCES
使用该setEnterAction
方法设置值。不幸的是,该代理类的实例被封装在单元TTextServiceAndroid
的实现部分中定义的类中,因此无法访问。所以我想到的唯一选择是使用如下事件:FMX.Platform.Android
OnKeyDown
这将大写 EditText 的第一个字母和空格字符之后的任何字母。
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if (TEdit(Sender).Text.Length=0) or ((TEdit(Sender).Text.Length>0) and TEdit(Sender).Text.EndsWith(' ')) then
KeyChar:=UpCase(KeyChar);
end;