Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Wait dialog oder sanduhr fuer Android/IOS (https://www.delphipraxis.net/188471-wait-dialog-oder-sanduhr-fuer-android-ios.html)

thomas1765 7. Mär 2016 15:10

Wait dialog oder sanduhr fuer Android/IOS
 
Hallo,

ich bin auf der Suche nach einer Sanduhr oder zumindest einen Wartedialog für
Android/IOS Apps.

Gibt es da irdend eine Library oder hat jemand einen Tipp für mich wie man das
schnell programmieren kann?

Gruß
Thomas

Darlo 7. Mär 2016 15:15

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Das Ding heißt TAniIndicator und den musst Du in einem eigenen Thread laufen lassen.

Thomas Horstmann 7. Mär 2016 15:30

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich öffnen eine neue Form, in der ein Sanduhr-Image liegt. Das hat auch den Vorteil, das die Tasten und Toolbars des darunter liegenden Fensters nicht aktiv sind.

Delphi-Quellcode:
...
gWait : TWaitForm ;
...

// *** Start BeginWait *********************************************************
// *****************************************************************************
procedure BeginWait ;
var
iAppService : IFMXApplicationService ;
begin
{ Fehler: Bereits vorhanden }
if gWait <> nil then Exit ;

{ Zur Sicherheit mit try }
  try
  { Anlegen }
  gWait := TWaitForm.Create(Application) ;
  { Anzeigen }
  gWait.Visible := True ;
  gWait.BringToFront ;
  { Meldungen verarbeiten !!! Sonst wird das Fenster nicht angezeigt !!! }
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationService,iAppService) then
    iAppService.HandleMessage ;
  except
  end ; // try
end ;
// *** Ende BeginWait **********************************************************
// *****************************************************************************


// *** Start EndWait ***********************************************************
// *****************************************************************************
procedure EndWait ;
begin
{ Fehler: Nicht göffnet }
if gWait = nil then Exit ;

{ Zur Sicherheit mit try }
  try
  { Löschen }
  gWait.DisposeOf ;
  except
  end ; // try

{ Zurücksetzen }
gWait := nil ;
end ;
// *** Ende EndWait ************************************************************
// *****************************************************************************

Sir Rufo 7. Mär 2016 15:50

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Zitat von Darlo (Beitrag 1332302)
Das Ding heißt TAniIndicator und den musst Du in einem eigenen Thread laufen lassen.

Doch wohl eher anders herum :stupid:

Den ausführenden Code packt man in einen eigenen Thread

Darlo 7. Mär 2016 16:17

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Zitat von Sir Rufo (Beitrag 1332306)
Zitat:

Zitat von Darlo (Beitrag 1332302)
Das Ding heißt TAniIndicator und den musst Du in einem eigenen Thread laufen lassen.

Doch wohl eher anders herum :stupid:

Den ausführenden Code packt man in einen eigenen Thread

Jo, so wird dann ein Schuh draus....

Delphi-Quellcode:
  AniIndicator1.Enabled := true;
  Application.ProcessMessages;

  TThread.CreateAnonymousThread(procedure ()
    begin
      try
        ergebnisse := frmWebservice.getPkx(id.ToInteger,geb,beginn,ablauf, port);

      finally
        TThread.Synchronize (TThread.CurrentThread,
          procedure ()
          begin
            createProduktuebersicht(ergebnisse);
            AniIndicator1.Enabled := false;
          end);
      end;
  end).Start;

Mavarik 7. Mär 2016 17:41

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Zitat von Darlo (Beitrag 1332318)
Delphi-Quellcode:
  AniIndicator1.Enabled := true;
  Application.ProcessMessages;

Delphi-Quellcode:
  Application.ProcessMessages;
Warum?

Darlo 7. Mär 2016 18:09

AW: Wait dialog oder sanduhr fuer Android/IOS
 
In dem Context von meinem Programm will ich sichergehen dass der GUI-Aufbau vorher aktualisiert wird bevor der Thread begonnen wird.

bra 8. Mär 2016 10:08

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Application.ProcessMessages kann unter Android/iOS tödlich sein. Nicht verwenden, wenn nicht absolut notwendig (wir haben das auch leider noch an einer Stelle drin, wo es nicht anders ging).

thomas1765 9. Mär 2016 10:52

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Danke für die Antworten.

Das mit TAniIndicator im Thread funktioniert prima unter Android, nur mit meinem IPhone nicht.

Gibt es beim Threading unter IOS was spezielles zu beachten?

Gruß
Thomas

Darlo 9. Mär 2016 12:36

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Bei mir läuft es unter ios. Ggf. ein Application.ProcessMessage rein :duck:

himitsu 9. Mär 2016 13:02

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Delphi-Quellcode:
Application.ProcessMessage

In den Thread?

neeeeee

Nja, aber wer weiß was der TE eigentlich macht und warum der Hauptthread ausgelastet zu sein scheint.

Darlo 9. Mär 2016 13:38

AW: Wait dialog oder sanduhr fuer Android/IOS
 
ne, nach dem enanled := true.

Sir Rufo 9. Mär 2016 22:15

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Zitat von thomas1765 (Beitrag 1332431)
Das mit TAniIndicator im Thread funktioniert prima

Wenn du es so hast wie du es schreibst, dann ist das grundlegend falsch

Und
Delphi-Quellcode:
Application.ProcessMessages
ist immer ein Hinweis auf ein generelles Design-Problem.

Darlo 10. Mär 2016 06:30

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Zitat:

Zitat von Sir Rufo (Beitrag 1332515)
Zitat:

Zitat von thomas1765 (Beitrag 1332431)
Das mit TAniIndicator im Thread funktioniert prima

Wenn du es so hast wie du es schreibst, dann ist das grundlegend falsch

Und
Delphi-Quellcode:
Application.ProcessMessages
ist immer ein Hinweis auf ein generelles Design-Problem.

Wobei meiner Meinung nach der Design-Fehler nicht immer beim "Delphi-User" liegt sondern manchmal Firemonkey nicht richtig zeichnet....

NickD 11. Mär 2016 21:20

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Hi
Ich hab das so gelöst, indem ich ein Transparentes Frame erzeuge.
Auf diesem Frame liegt dann ein Rectangle mit einem Label für die Beschreibung was aktuell geladen wird + einen AniIndicator.
Beim Erzeugen wird ein TTask gestartet in dem der Aniindicator läuft.
Funktioniert sehr gut.

Darlo 12. Mär 2016 08:11

AW: Wait dialog oder sanduhr fuer Android/IOS
 
Hi, habe mich mit dem TTask noch nicht wirklich beschäftigt, aber erzeugt der nicht einen Thread? Wenn ja dann läuft ja der AniIndicator außerhalb des Mainthreads... Darf/soll das so sein?


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