Перейти к содержанию
Fire Monkey от А до Я

abwabw

Пользователи
  • Постов

    4
  • Зарегистрирован

  • Посещение

Весь контент abwabw

  1. DelphiXE5 Update2 и DelphiXE6 оба с MobileAddOn фсё лицензионное. Ситуация: создаю FireMonkey Mobile App. На форме размещаю компонент NumberBox (надо вводить цену), присваиваю свойства: Value=0 Text=0 Min=0 Max=100000 HorzIncrement=0 VertIncrement=0 ValueType=Float DecimalDigits=2 Проблема: Запускаю на гаджете приложение, получаю при запуске пустое поле NumberBox -а (хотя должен стоять 0), ставлю курсор в поле NumberBox, и дальше реакция раздваивается в зависимости от модели гаджета на Google Nexus 5 при вводе цифр - ввод начинается, а на Sony Xperia Z, Samsung GalaxyS4, Samsung Note 3 и других при нажатии на клавиши виртуальной клавиатуры цифры не вводяться. Ситуацию можно исправить только "танцем с бубном", если после запуска приложения поставить курсор в поле NumberBox , потом выйти из него куда-нибудь, а потом опять поставить курсор в поле NumberBox, появиться предустановленный 0 и ввод цифр начнётся на любом гаджете. Проблема2: если всё-таки ввести цифры в поле, а потом стереть их BackSpace-ом и перейти в другое поле приложения, то стёртое число опять появится в поле. Вопрос: Как заставить NumberBox сразу и предсказуемо работать на любом гаджете? Ситуация2: Решил заменить кривоработающий TNumberBox на TEdit с ограничением ввода символов, через отлов переменной var KeyChar: Char события OnKeyDown . Разместил TEdit, в событии OnKeyDown пишу: case keyChar of '0'..'9': ; '.' : //точка if (length((Sender as TEdit).Text)=0) //первой точку не ставить or (ansiPOS('.',(Sender as TEdit).Text)<>0) //ещё одну точку не ставить then keyChar:=#0; else keyChar:=#0; end; Проблема: Но оказалось, что OnKeyDown не срабатывает на точку, запятую, знак минус и пробел (которые есть на вируальной клавиатуре "NumberPad") , т.е. эти символы вводятся в поле TEdit, а OnKeyDown не реагирует на них. Проверил так, в событии OnKeyDown написал: procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin ShowMessage('KeyChar='+KeyChar+' Key='+IntToStr(Key)) end; Получаю сообщение только при нажатии на кнопки с цифрами, при нажатии на любые не буквенные/цифровые кнопки OnKeyDown не срабатывает. Пробовал использовать переменную var Key: Word;события OnKeyDown так при любых нажатиях клавиш выдаётся, что Key=0. Может я чего-то не догоняю??? Вопрос: как заставить нормально срабатывать событие OnKeyDown у TEdit на любое нажатие кнопок и получать нормальное значение в переменную Key:Word? З.Ы. Под Windows(x32) OnKeyDown реагирует на все кнопки, но переменная Key всё равно =0; (см.рис.).
  2. Отвечаю сам себе. Реализовать на XE5 FM mobile (и по моему и на XE6) распознавание голоса пока невозможно в связи с тем, что ембаркодеровцы в delphi не реализовали дроидовской модуль API: android.speech. Хотя странно это, этот модуль в дроиде существует с 8 левела, а щаз актуальый уже 19-ый.
  3. Хочу попробовать прикрутить к проекту для дроида googl-овское распознавание голоса. Нашёл пример реализации этой функции вот тут или тут. Помогите перевести на XE5 FM, вот этот кусок: package com.genisoft.inforino; import java.util.List; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.speech.RecognizerIntent; public class SpeechRecognitionHelper { public static void run(Activity ownerActivity) { startRecognitionActivity(ownerActivity); } } private static void startRecognitionActivity(Activity ownerActivity) { Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Голосовой поиск Inforino"); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH); intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ru-RU"); ownerActivity.startActivityForResult(intent, SystemData.VOICE_RECOGNITION_REQUEST_CODE); }
×
×
  • Создать...