2015-12-17 1 views
1

AControl является TPanelКак реализовать - FMX TVirtualkeyboard внутри TPanel Delphi Сиэтла 10 на Windows 10 Desktop

procedure TDialogAccess.CheckVirtualKeyboard(const AControl: TFmxObject; Edit: TEdit); begin if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService) then begin if not assigned(ikeyboard) then ikeyboard := TPlatformServices.Current.GetPlatformService(IFMXVirtualKeyboardService) as IFMXVirtualKeyboardService; if assigned(ikeyboard) then begin if not (TVirtualKeyboardState.Visible in ikeyboard.VirtualKeyboardState) then begin ikeyboard.ShowVirtualKeyboard(AControl); Edit.SetFocus; end; end; end; end;

TVirtualkeyboard показан в отдельном окне, как получить его, как ребенок панельного? Вам нужно щелкнуть элемент управления Edit, что TVirtualkeyboard реализует цель для ввода, как это сделать программно?

ответ

2

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

procedure TForm1.Edit1Click(Sender: TObject); 
begin 
    keyboardPanel.Visible := True; 

    //.. Your codes here 

end; 

И ваша структура должна быть такой:

Form1 
Panel1 
    KeyboardPanel 
    KeyboardInputsButtons