Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Aus- und Einblenden von Komponenten unter Android (https://www.delphipraxis.net/211560-aus-und-einblenden-von-komponenten-unter-android.html)

amigage 4. Okt 2022 14:49

Aus- und Einblenden von Komponenten unter Android
 
Hallo,

kann mir jemand bitte erklären, warum nachfolgender FMX Code unter Windows funktioniert, unter Android aber das Aus- und Einblenden von Komponenten nicht umgesetzt wird? D.h. die Combobox wird nicht ausgeblendet und das Label wird nicht sichtbar...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Combobox1.Visible := false;
  Application.ProcessMessages;
  Sleep(1000);

  Label1.Visible := true;
  Application.ProcessMessages;
  Sleep(1000);

  Combobox1.Visible := true;
  Label1.Visible := false;
  Application.ProcessMessages;
  Showmessage('Ende');
end;

AuronTLG 4. Okt 2022 15:41

AW: Aus- und Einblenden von Komponenten unter Android
 
Auf Android und IOS kannst du nicht den Main-Thread blockieren, d.h. das Sleep wird gepflegt ignoriert.

Deswegen läuft dort auch generell alles asynchron ab. Auf Windows hält das Programm bei einer ShowMessage an, auf Android & IOS läuft es direkt weiter.

Um das von dir angegebene Verhalten zu implementieren, müsstest du daher entweder mit Timern, Threads und/oder Animationen arbeiten.

jaenicke 4. Okt 2022 15:46

AW: Aus- und Einblenden von Komponenten unter Android
 
Um es deutlich zu sagen:
Das ist unter den mobilen Plattformen nicht nur in Delphi so umgesetzt, sondern das (kurz gesagt) asynchrone Verhalten ist auch Voraussetzung für die Aufnahme einer App in die App-Stores.

amigage 4. Okt 2022 16:21

AW: Aus- und Einblenden von Komponenten unter Android
 
Danke, das habe ich mir schon fast gedacht.
Dann muss ich wohl mit Timern arbeiten.

himitsu 4. Okt 2022 17:18

AW: Aus- und Einblenden von Komponenten unter Android
 
In Delphi (Windows) ist alles Message-bassiert, mit einer Warteliste (MessageQueue) für die Messages,
wärend Android und iOS Event-basiert arbeiten.

Ja, man kann bedingt auch Messages im Android/iOS verwenden, weil Delphi sich dort quasi teilweise was Eingenes für gebaut hat.

TurboMagic 4. Okt 2022 18:58

AW: Aus- und Einblenden von Komponenten unter Android
 
Nur ist das Delphi eigene Messaging nicht synchron? Ich glaube mein QP Feature Request das auch asynchron umzusetzen ist noch nicht umgesetzt, ich denke er ist noch offen...

jaenicke 5. Okt 2022 06:38

AW: Aus- und Einblenden von Komponenten unter Android
 
Zitat:

Zitat von amigage (Beitrag 1512830)
Danke, das habe ich mir schon fast gedacht.
Dann muss ich wohl mit Timern arbeiten.

Noch besser wäre, wenn du es mit Events umsetzen könntest. Das lässt sich aber ohne Details nicht sagen.

Wenn du z.B. eine Verbindung herstellst, kannst du statt in einem Timer zu prüfen, ob die Verbindung hergestellt ist, auf das Ereignis OnConnect reagieren. Dann sparst du das Polling und die Reaktion ist direkter.


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