我可以将InputType设置为“textCapSentences”Delphi XE5

时间:2013-10-15 02:00:38

标签: android delphi android-softkeyboard delphi-xe5

我需要将第一个字母大写在句子中然后用户在编辑中输入字符串,就像我可以在Eclipse中一样:“android:inputType =”textCapSentences“

我怎样才能在XE5中做到这一点?

或者可能是在XE5中更改虚拟键盘上的Shift状态的其他方法吗?

1 个答案:

答案 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;