![]() |
ScrollableFormDemo in funktionierend?
Hallo Zusammen!
Hat jemand schon das "ScrollableFrom"-Demo aus /Samples/FiremonkeyMobile so korrigiert, dass es auch funktioniert? Ich meine auch in Querformat Links/Rechts und umgedreht? Mavarik |
AW: ScrollableFormDemo in funktionierend?
Das Beispiel ist relativ kompliziert umgesetzt und funktionert ja nur hochkant.
Ich habe das für meine Bedürfnisse angepasst. Ich bin dabei davon ausgegangen, dass das Keyboard immer von unten eingeblendet wird. Hier mein Quellcode:
Code:
Das funzt bei mir in allen Ausrichtungen.
constructor TEForm.Create(AOwner: TComponent);
begin OnVirtualKeyboardShown := FormVirtualKeyboardShown; OnVirtualKeyboardHidden := FormVirtualKeyboardHidden; OnFocusChanged := FormFocusChanged; MainVertScrollBox.OnCalcContentBounds := CalcContentBoundsProc; end; procedure TEForm.CalcContentBoundsProc(Sender: TObject; var ContentBounds: TRectF); begin if KeyBoardVerdecktFeld and (KeyBoardPositionY > 0) then ContentBounds.Bottom := Max(ContentBounds.Bottom, 2 * ClientHeight - KeyBoardPositionY); end; procedure TEForm.FormVirtualKeyboardHidden(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin KeyBoardPositionY:=0; KeyBoardVerdecktFeld := False; KeyBoardRestorePosition; end; procedure TEForm.FormVirtualKeyboardShown(Sender: TObject; KeyboardVisible: Boolean; const Bounds: TRect); begin KeyBoardPositionY := Self.ClientHeight - Bounds.Height; KeyBoardErmittlePosition; end; procedure TEForm.KeyBoardRestorePosition(); begin MainVertScrollBox.ViewportPosition := PointF(MainVertScrollBox.ViewportPosition.X, 0); MainLayout.Align := TAlignLayout.alClient; MainVertScrollBox.RealignContent; KeyBoardPositionY := 0; end; procedure TEForm.KeyBoardErmittlePosition; var LFocused : TControl; LFocusRect: TRectF; begin KeyBoardVerdecktFeld := False; if Assigned(Focused) then begin LFocused := TControl(Focused.GetObject); LFocusRect := LFocused.AbsoluteRect; LFocusRect.Offset(MainVertScrollBox.ViewportPosition); if (KeyBoardPositionY<>0) and (LFocusRect.Bottom>KeyBoardPositionY) then begin; KeyBoardVerdecktFeld := True; MainLayout.Align := TAlignLayout.alHorizontal; MainVertScrollBox.RealignContent; Application.ProcessMessages; MainVertScrollBox.ViewportPosition := PointF(MainVertScrollBox.ViewportPosition.X, LFocusRect.Bottom - KeyBoardPositionY); end; end; if not KeyBoardVerdecktFeld then KeyBoardRestorePosition; end; |
AW: ScrollableFormDemo in funktionierend?
Die von eddie1 gezeigte Lösung funktioniert recht gut. Aber was macht man, wenn man keine Textbox sondern eine Combobox verschieben muß?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz