1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android虚拟按键 判断 如何检测虚拟键盘事件中的Android用Delphi

android虚拟按键 判断 如何检测虚拟键盘事件中的Android用Delphi

时间:2024-06-09 21:29:07

相关推荐

android虚拟按键 判断 如何检测虚拟键盘事件中的Android用Delphi

我不得不用键盘在tmemo同样的问题,尝试这两个函数和事件OnVirtualKeyboardShown和OnVirtualKeyboardHidden

public

{ Public declarations }

FSavedY: Single;

FocusControl: TControl;

ParentedControl: TFMXObject;

function FocusedControl: TControl;

function GetFocusedControlOffset(KeyboardRect: TRect): Single;

...

function TfrmFeedBackMobile.FocusedControl: TControl;

begin

Result := nil;

if Assigned(Focused) and (Focused.GetObject is TControl) then

Result := TControl(Focused.GetObject);

end;

function TfrmFeedBackMobile.GetFocusedControlOffset(KeyboardRect: TRect): Single;

var

Control: TControl;

ControlPos: TPointF;

KeyboardTop: Single;

begin

Result := 0;

KeyboardTop := Height - (KeyboardRect.Bottom - KeyboardRect.Top) - 66;

// At least, should be. 66 is the height of the keyboard "done" bar

Control := FocusedControl;

if Assigned(Control) then

begin

ControlPos := Control.LocalToAbsolute(PointF(0, 0));

Result := KeyboardTop - ControlPos.Y + Control.Height + 2;

if Result >= 0 then

Result := 0;

end;

end;

procedure TfrmFeedbackMobile.FormVirtualKeyboardHidden(Sender: TObject;

KeyboardVisible: Boolean; const Bounds: TRect);

begin

FocusControl.Parent:= ParentedControl;

FocusControl.AnimateFloat('Position.Y', FSavedY, 0.1);

FocusControl.Align := TAlignLayout.alClient;

FocusControl:= nil;

end;

procedure TfrmFeedbackMobile.FormVirtualKeyboardShown(Sender: TObject;

KeyboardVisible: Boolean; const Bounds: TRect);

begin

FocusControl:= FocusedControl;

if not (FocusControl is TMemo) then Exit;

FocusControl.Align := TAlignLayout.alNone;

FSavedY := FocusControl.Position.Y;

FocusControl.Position.Y:= 0;

FocusControl.AnimateFloat('Position.Y',

FSavedY + GetFocusedControlOffset(Bounds), 0.1);

ParentedControl:= FocusControl.Parent;

FocusControl.Parent:= frmFeedbackMobile;

FocusControl.BringToFront;

end;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。