Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Android FormResize Laufzeitfehler (https://www.delphipraxis.net/195359-android-formresize-laufzeitfehler.html)

sko1 21. Feb 2018 15:13

Android FormResize Laufzeitfehler
 
Hallo,

in einer App reagiere ich auf das FormResize um Elemente umzupositionieren oder wegzublenden wenn der Anwender z.B. das Handy dreht und Hoch- zu Querformat wird.

Jetzt ist mir beim Debuggen aufgefallen, dass dieser Event 'zig Mal gefeuert wird, zum Teil schon wo das Formular noch Nil ist!
Das knallt natürlich und ich habe das entsprechend abgefangen.

Nun tritt neuerdings auf Samsung Galaxy Tab A Tablets (Android 7) ein neuer Laufzeitfehler auf, wenn im Resize versucht wird, ein Panel in der Größe zu ändern:
sinngemäß:
Delphi-Quellcode:
   
Panel.Height := VertScrollBox.Height + Label.Position.Y;
Panel, VertScrollBox und Label sind alle <> Nil und trotzdem kommt "Zugriffsfehler auf Adresse 00000000"!

Jetzt könnte man das in einen try-except-Block packen und da danach noch 'zig Aufrufe von Resize folgen passt das irgendwann, aber ich suche die eigentliche Ursache um sie abzustellen, hat jemand Tips?

Ciao
Stefan

Rollo62 21. Feb 2018 15:27

AW: Android FormResize Laufzeitfehler
 
Ich nutze statt Resize nur die OrientationChange Events bzw. PlatformService für das Feststellen welche Richtung gerade anliegt.

Delphi-Quellcode:
FOrientationChangedId := TMessageManager.DefaultManager.SubscribeToMessage(
           TOrientationChangedMessage,
           procedure (const Sender: TObject; const M: TMessage)
           begin
               EvOnOrientationChanged( Sender, M);
           end
         );

    ....


    if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService,
                                                         AScreenService) then
    begin

      Result := AScreenService.GetScreenOrientation;

      AScreenService := nil;
    end
Rollo


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 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