AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS ScrollableFormDemo in funktionierend?
Thema durchsuchen
Ansicht
Themen-Optionen

ScrollableFormDemo in funktionierend?

Ein Thema von Mavarik · begonnen am 7. Aug 2013 · letzter Beitrag vom 25. Feb 2014
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#1

ScrollableFormDemo in funktionierend?

  Alt 7. Aug 2013, 23:58
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
  Mit Zitat antworten Zitat
eddie11

Registriert seit: 8. Nov 2005
Ort: Zossen bei Berlin
236 Beiträge
 
Delphi XE8 Professional
 
#2

AW: ScrollableFormDemo in funktionierend?

  Alt 9. Aug 2013, 10:08
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:
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;
Das funzt bei mir in allen Ausrichtungen.
Edgar Leifeld
Liebe Grüße aus Zossen bei Berlin

Die Kontramedüse ist verdrupelt!!!
  Mit Zitat antworten Zitat
Grüner

Registriert seit: 13. Mär 2008
3 Beiträge
 
Delphi XE5 Professional
 
#3

AW: ScrollableFormDemo in funktionierend?

  Alt 25. Feb 2014, 23:31
Die von eddie1 gezeigte Lösung funktioniert recht gut. Aber was macht man, wenn man keine Textbox sondern eine Combobox verschieben muß?

Geändert von Grüner (25. Feb 2014 um 23:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz