AGB  ·  Datenschutz  ·  Impressum  







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

FMX & Application Events?

Ein Thema von Mavarik · begonnen am 27. Mär 2015 · letzter Beitrag vom 25. Aug 2025
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

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

FMX & Application Events?

  Alt 27. Mär 2015, 09:55
Hallo Zusammen!

Ich habe bisher die Application Events sagen wir mal Ignoriert.

Aber es gibt ja die möglich auf Background usw. zu reagieren.
Genauso den Status der App zu speichern, damit der User wieder an der gleichen stelle ist, wenn er sie wieder startet...

Welche "Dinge" macht Ihr in diesen Events?

Mavarik
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FMX & Application Events?

  Alt 27. Mär 2015, 10:01
Genauso den Status der App zu speichern, damit der User wieder an der gleichen stelle ist, wenn er sie wieder startet.
Dafür würde ich mittlerweile Form.SaveState nutzen. Beim Schliessen des Formulars wird das Event "OnSaveState" ausgelöst. Die benötigten Objekte (ins. SaveState.Stream) stellt das Form selbst zu Verfügung. Anbei ein Trivial-Beispiel, im Ernstfall würde man vermutlich JSON schreiben.

Delphi-Quellcode:
procedure Tfrm_Main.FormSaveState(Sender: TObject);
var
  W: TBinaryWriter;
begin
  SaveState.Stream.Clear;

  W := TBinaryWriter.Create(SaveState.Stream);
  try
    W.Write(Edit1.Text);
    W.Write(Edit2.Text);
  finally
    W.Free;
  end;
end;
und etwa im OnCreate oder dgl. kann man das Zeugs wieder lesen:

Delphi-Quellcode:
procedure Tfrm_Main.FormCreate(Sender: TObject);
var
  R: TBinaryReader;
begin
  SaveState.StoragePath := 'C:\Temp\'; //optional!

  if SaveState.Stream.Size > 0 then
  begin
    R := TBinaryReader.Create(SaveState.Stream);
    try
      Edit1.Text := R.ReadString;
      Edit2.Text := R.ReadString;
    finally
      R.Free;
    end;
  end;
end;
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: FMX & Application Events?

  Alt 27. Mär 2015, 10:10
Dafür würde ich mittlerweile Form.SaveState nutzen. Beim Schliessen des Formulars wird das Event "OnSaveState" ausgelöst. Die benötigten Objekte (ins. SaveState.Stream) stellt das Form selbst zu Verfügung. Anbei ein Trivial-Beispiel, im Ernstfall würde man vermutlich JSON schreiben.
Plus einen Status ob das Form normal beendet wurde?
Oder wird der SaveState nur aufgerufen wenn die App das beendet...

Was ist mit den Background Geschichten?

Hast Du Dir da eine System.Message geschrieben wo alle relevanten "jungs" drauf hören?
- Thread beenden Timer stoppen usw.?
- Und wenn wie wieder an der richtige Stelle starten?

Kommt natürlich alles auf die App an...

Mavarik
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: FMX & Application Events?

  Alt 27. Mär 2015, 10:23
ich meine bei den emba blog mal was genau zu diesen Thema gelesen zu haben, auch der code , suche einfach mal dort zu diesem Ereignis, das Daniel hier geschrieben hat....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.618 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX & Application Events?

  Alt Gestern, 08:09
Oder wird der SaveState nur aufgerufen wenn die App das beendet...
Auch wenn die App in den Hintergrund geht (Home- oder Apps-Button im Android)

Gefühlt geht es bei mir fast immer, auch wenn nicht immer,
vor allem nicht, wenn die App abstürzt oder "hart" abgeschossen wird .... aber für Letzteres muß man ja erst raus (wenn Terminate innerhalb des Android, nicht via Debugger), womit dort bereits gespeichert werden sollte.

Jedenfalls kann man scheinbar OnSaveState auch nutzen, um woanders zu speichern, anstatt im SaveState.
(Achtung, wenn in Cloud und das zu lange dauert, dann kann die "Hintergrund"-App bereits pausiert/beendet sein, bevor es fertig wird)

Was zum Testen: https://www.delphipraxis.net/181299-...ml#post1551141
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 08:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.313 Beiträge
 
Delphi 12 Athens
 
#6

AW: FMX & Application Events?

  Alt Gestern, 12:49
Der Thread ist 10 Jahre alt.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: FMX & Application Events?

  Alt Gestern, 12:54
Und leider immernoch aktuell.

Wollte nur mal schnell, so RAD-mäßig, eine kleine App basteln,
aber durfte mich das ganze Wochenende dann auch mit diesem Scheiß rumärgern (und zwei anderen zugehörigen Dingen).
Wo es hier auch nur etwa 3-4 Threads gibt, welche das Thema betreffen und die alle nicht abschließend geklärt waren/sind.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (Gestern um 13:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: FMX & Application Events?

  Alt Gestern, 15:31
Der Thread ist 10 Jahre alt.
LOL... Jau!


Und leider immernoch aktuell.

Und ich benutze die Funktion bis heute nicht.

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.618 Beiträge
 
Delphi 12 Athens
 
#9

AW: FMX & Application Events?

  Alt Gestern, 16:43
Bin grade bissl am Probieren, was wo am besten/einfachsten gespeichert werden kann.

Per se ist diese Funktion nicht schlimm,
aber den Binärstream finde ich schon bissl ungünstig.

Felder/Variablen hinzufügen/ändern/löschen und schon knallt es.
Da müsste man dann wieder anfangen wie beim DFM-Reader, also auch noch den Namen und Typ mit abspeichern.
Oder immer nur hinzufügen und nie löschen (also auch immer Dummy-Felder für Altes/Geändertes/Gelöschtes weiterhin speichern/lesen)

Und auf Windows/OSX/Linux (nicht Android/iOS) muß man auch aufpassen keine FormNamen doppelt zu haben. (bei eigenen und Fremd-DelphiApps)

Ob man da jetzt auch z.B. einfach einen JSON-Stream nehmen könnte, oder ob es unbedingt dieses binäre sein muß .... hmmmmmmmmmmmm?
Ein Therapeut entspricht 1024 Gigapeut.
  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 11:11 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