• 0
rareMax

Изменить тип клавиатуры

Вопросы

Как можно изменить тип клавиатуры(нужно сделать по умолчанию только числа) для контрола, у которых нет свойства KeyboardType? Сейчас работаю в TGrid, и вот нужно сделать для колонки ввод чисел.

Вроде просмотрел темы - не увидел аналогичной

Изменено пользователем Сысоев Максим

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 ответа на этот вопрос

  • 1

как вариант, можно редактирование сделать через свой диалог (InputBox) с нужными настройками ввода

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Создавайте свой редактор в OnCreateCustomEditor и выставляйте ему нужный тип клавиатуры.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

То есть, как я понимаю, нельзя просто показать клавиатуру и задать ей нужный тип?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

что значит "просто показать клавиатуру"? Грид сам по себе не работает с клавиатурой, его дело - просто нарисовать содержимое. Чтобы ячейку можно было изменить, гридом каждый раз создается редактор, умеющий принимать фокус ввода, события от клавиатуры и т.п. Если его не создаете вы - его создаст сам грид, на основе своих предпочтений.

Допустим, что возможно показанной клавиатуре изменить тип программно. Но не думаю, что клавиатура нужна вам только в гриде. Получается - задача разрастается:

1. отловить поднятие клавиатуры

2. определить, что элемент, "поднявший" ее - находится в нужном гриде, в нужной колонке (а как? Лень смотреть код грида, но это будет нужно лезть через Parent-ы, определять принадлежность редактора к гриду, определять к какой колонке относится редактор)

3. Если все условия выполнены - менять тип клавиатуры.

И весь этот код не будет относиться к самому модулю с гридом напрямую. Плохо. Некрасиво.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От SIARHEI RAHOUSKI
      Здравствуйте, у меня возник вопрос Как базу данных подключить к TGrid? Я использую Delphi XE3 и База данных Accsess: ADOConnection + ADOQuery + DataSource. И вот как отобразить в TGrid Таблицу бд ?
    • От Niddarun
      На форме стоит tgrid при прокрутке есть заддержка. не большая но все равно не приянто. программа под windows. И еще при прокрутке идет нагрузка на процессор. 
    • От GoldenEalge
      Всем привет, подскажите как организовать MultiSelect в grid
      Нашел статью ,но как понимаю она уже не очень актуальна
      Поиск по форуму тоже не дал результатов
    • От TTTimon
      Знаю, что в примерах от студии есть ответ на мой вопрос, но проблема в том, что на Delphi 10 Seattle этот пример (Samples\Object Pascal\Multi-Device Samples\User Interface\ScrollableForm) работал полностью исправно. Чего не скажешь про Delphi 10.2 Tokyo, где Edit1 (самый нижний) лишь немного приподнимается и прячется за клавиатуру, а Edit2 и Edit3 вообще не изменяют положения.
      Запускал родные примеры на одном и том же устройстве Android, прошу о помощи!
    • От Freezer_86
      Пишу кроссплатформенное приложение. Результат поиска отображается в TGrid. Стал вопрос отображения картинки в одной из колонок.
      На Windows все ок, но на планшете происходят просто чудеса: при первом отображение все корректно, но если простоколить вверх-вниз как картинки одни перетираются другими, часть вообще отображается вверх ногами.
      Код для сохранение картинки(jpg) в базу:
      if Assigned(sm) then begin sm.Position := 0; //TBlobField(dmData.cdsPlayerData.FieldByName('Photo')).LoadFromStream(sm); vImage := TImage.Create(nil); try sm.Position := 0; vImage.Bitmap.LoadFromStream(sm); vKoef := vImage.Bitmap.Height / 64; vImage.Bitmap.Resize(Trunc(vImage.Bitmap.Width / vKoef), Trunc(vImage.Bitmap.Height / vKoef)); sm.Free; sm := TMemoryStream.Create(); try vImage.Bitmap.SaveToStream(sm); TBlobField(dmData.cdsPlayerData.FieldByName('SmallPhoto')).LoadFromStream(sm); finally sm.Free; end; finally vImage.Free; end; end{if}; До скрола:

      После скрола:

      Пробовал и LiveBinding, и ручную прорисовку - результат один и тот же. Есть идеи что не так?
      P.S. Знаю что нужно делать через TListView, но заказчик хочет «сеточку как в старой программе», так как на android будет работать только на планшетах – я согласился.
       
    • От Clio
      Добрый день !
      В приложении я использую базу SQLite (полt, содержащие дату и время тип REAL) . В TFDQuery я описал это поле - тип Float и через LiveBindings подключил к TGrid (Date Column). 
      Но в гриде отображается только год, а не полное время. 
      Подскажите, пожалуйста, как необходимо настроить поле в Query и TGrid, чтобы дата и время отображалась правильно.
    • От ENERGY
      Нужно сделать компонент TGrid. Стандартный Grid не подходит, потому что нужно чтобы строки (raws) были разной высоты, а также чтобы была возможность соединять (сливать) ячейки.
      Я решил сделать его на основе TListView и его DynamicAppearance. Использовать кастомные объекты, отнаследованные от TListItemObject + возможность рисовать на Canvas каждого ListItem, например прямоугольники.
      Т.к. колонки он не поддерживает, есть идея использовать THeader и подстраивать их под размер своих колонок. Также важно быстродействие компонента.
      Как вы думаете есть ли в этом смысл?
      Возможно кто-то уже занимался подобным, и может что-нибудь посоветовать.
      Спасибо.
       
    • От ENERGY
      1. Можно ли установить разную высоту у ячеек (точнее raws)?
      2. Можно ли объединять ячейки?
      3. Если писать свой компонент, и отнаследоваться от ScrollBox - то при отрисовке всех ячеек, будут ли отрисовываться невидимые ячейки или TscrollBox игнорирует и не отрисовывает невидимую часть?  Или лучше стоит отнаследоваться от TScrollContent и высчитывать самостоятельно? Компонент не будет связан со стилями. Как будет быстрее в плане производительности компонента?
      4. Что лучше для этого случая TScrollContent или TScrollBox?
      4. Если 1 и 2 - нет, то придется писать свой компонент - возможно у вас будут какие то рекомендации на этот счет.
      Спасибо. Очень жду ваш ответ.
      @RoschinSpb
    • От Mazzay
      Есть хоть какая-нибудь возможность зафиксировать первый столбец, чтобы он не прокручивался?
      То есть нужен аналог свойства FixedCols из VCL,
    • От x0k
      Delphi 10.1 Berlin
      Как передать список в value?
      Value:=TValue.From<TStringList>(StringList); - не работает.
      Можно ли из TValue получить индекс выбранного элемента?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу