2013-10-15 4 views
0

Мне нужно капитализировать первую букву В предложениях, то пользователь набрав строки в Edit, как я могу это сделать в Eclipse: «андроид: inputType =» textCapSentences»Могу ли я установить InputType в «textCapSentences» Delphi xe5

Как я могу сделать это в xe5?

Или может быть какой-то другой способ изменить статус Shift, на виртуальной клавиатуре в xe5?

ответ

2

The textCapSentences соответствует постоянной TYPE_TEXT_FLAG_CAP_SENTENCES , которая является частью TextView Android класса. Этот класс обернута по Androidapi.JNI.Widget.JTextView int но это не используется непосредственно элементами управления 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; 
+0

Да. Я пробовал, но это не вариант для меня. Мне нужен пользователь, чтобы увидеть заглавную первую букву, когда он вводит слова, а не когда hi-типы «». Может быть, это какой-то способ «нажать» сдвиг в Virtual Keybord? Я думаю, что это должно быть. – user2880885

Смежные вопросы