Проблема автоматического отображения сенсорной клавиатуры в WinForms и Delphi приложениях
При запуске приложений WinForms или Delphi на устройствах с Windows 10 в режиме планшета, сенсорная клавиатура не отображается автоматически при фокусировке на элементе ввода. Это должно происходить автоматически без дополнительного кода или настроек.
Контекст:
Разработчики столкнулись с проблемой, что сенсорная клавиатура не активируется автоматически при фокусировке на элементах ввода (например, TextBox в WinForms или TEdit в Delphi). Примеры из контекста показывают, что в старых приложениях и для некоторых типов элементов управления (например, ComboBox или RichTextBox) сенсорная клавиатура отображается корректно.
Решение проблемы:
Использование RichTextBox вместо TextBox: RichTextBox поддерживает сенсорную клавиатуру и автоматически отображает её при получении фокуса. Это решение может быть простым и эффективным способом решения проблемы, особенно если не требуются специфические функции TextBox.
Применение UI автоматизации: Можно использовать реализацию UI автоматизации из UIAutomationClient.dll. Для этого необходимо вызвать метод AutomationElement.FromHandle, который инициирует внутренние процессы, приводящие к отображению сенсорной клавиатуры. Однако стоит отметить, что этот метод загружает множество дополнительных сборок, что может иметь нежелательные последствия.
Явное применение интерфейсов UI автоматизации: Можно реализовать интерфейсы ITextProvider и IValueProvider для элементов управления и связать их с обработкой сообщения WM_GETOBJECT. Это более сложный подход, требующий глубоких знаний в области UI автоматизации.
Пример кода на Object Pascal (Delphi):
uses
System.SysUtils,
System.Variants,
Vcl.Forms,
Vcl.Controls,
System.Classes,
Winapi.Windows,
System.Windows.Forms;
var
AE: TAutomationElement;
begin
AE := TAutomationElement.Create1(TAutomationElement.FromHandle(Handle));
// Здесь могут быть дополнительные действия с элементом автоматизации
end;
Заключение:
Разработчикам следует учитывать, что сенсорная клавиатура может отображаться по-разному в зависимости от типа элемента управления и его свойств. В некоторых случаях, простой заменой элемента управления или использованием альтернативных подходов к UI автоматизации можно решить проблему.
Проблема заключается в отсутствии автоматического отображения сенсорной клавиатуры на устройствах с Windows 10 в режиме планшета при фокусировке на элементах ввода в приложениях WinForms и Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS