AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Android FormResize Laufzeitfehler

Ein Thema von sko1 · begonnen am 21. Feb 2018 · letzter Beitrag vom 21. Feb 2018
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Android FormResize Laufzeitfehler

  Alt 21. Feb 2018, 16:13
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
  Mit Zitat antworten Zitat
Rollo62
Online

Registriert seit: 15. Mär 2007
4.095 Beiträge
 
Delphi 12 Athens
 
#2

AW: Android FormResize Laufzeitfehler

  Alt 21. Feb 2018, 16:27
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
  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 08:23 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