我需要将第一个字母大写在句子中然后用户在编辑中输入字符串,就像我可以在Eclipse中一样:“android:inputType =”textCapSentences“
我怎样才能在XE5中做到这一点?
或者可能是在XE5中更改虚拟键盘上的Shift状态的其他方法吗?
答案 0 :(得分:2)
textCapSentences
对应TYPE_TEXT_FLAG_CAP_SENTENCES
常量,它是TextView
Android类的一部分。此类由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;