0

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

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

或者可能是其他方式来改变 XE5 中虚拟键盘上的 Shift 状态?

4

1 回答 1

2

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.AndroidOnKeyDown

这将大写 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; 
于 2013-10-15T16:10:25.990 回答