Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   aktuellen Focus eines TEdit verlieren (Android / iOS) (https://www.delphipraxis.net/215410-aktuellen-focus-eines-tedit-verlieren-android-ios.html)

Stewag 3. Jul 2024 14:57

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
... hiermit hat es dann endlich geklappt: https://stackoverflow.com/questions/...cursor-appears
Code:
begin
    TThread.CreateAnonymousThread(
      procedure
      begin
        TThread.Synchronize( nil,
          procedure
          begin
            Edit1.SetFocus;
          end
        );
      end
    ).Start;
  end;
:-D

himitsu 3. Jul 2024 15:35

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
:?:
Code:
begin
    TThread.ForceQueue(nil,
      procedure
      begin
        Edit1.SetFocus;
      end);
  end;

Stewag 4. Jul 2024 09:14

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
Code:
begin
    TThread.ForceQueue(nil,
      procedure
      begin
        Edit1.SetFocus;
      end);
  end;
worin liegt der Vorteil?

himitsu 4. Jul 2024 09:49

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
* es ist kürzer
* es ist übersichtlicher
* es geht direkt "verzögert" ins Synchronize, ohne erst einen Thread zu erstellen
* ...

ForceQueue ist der Bugfix für Queue, was aber im Hauptthread aufgerufen nicht in die Queue schiebt, sondern direkt ausführt, auch wenn es (nicht) so heißt.

Stewag 4. Jul 2024 19:46

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
Code:
begin
    TThread.ForceQueue(nil,
      procedure
      begin
        Edit1.SetFocus;
      end);
  end;
... geht!

Danke Himitsu! :-D

Es geht sogar ResetFocus:
Code:
begin
    TThread.ForceQueue(nil,
      procedure
      begin
         ActiveControl.ResetFocus;
      end);
  end;

Redeemer 5. Jul 2024 09:15

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
Zitat:

Zitat von himitsu (Beitrag 1538589)
ForceQueue ist der Bugfix für Queue, was aber im Hauptthread aufgerufen nicht in die Queue schiebt, sondern direkt ausführt, auch wenn es (nicht) so heißt.

ForceQueue queuet also nur manchmal. Ergibt Sinn.

himitsu 5. Jul 2024 09:31

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
Ja Neee, nicht ganz.
Das ist IMHO ein "Bug" beim Delphi-Referenz durchsuchenTThread.Queue.

Da steht im Code sowas wie
Delphi-Quellcode:
IF istMainThread THEN machJetzt else machSpäter;
,
aber anstatt diesen Schwachsinn zu entfernen und den Fehler ordentlich zu beheben, wurde eine neue Funktion Delphi-Referenz durchsuchenTThread.ForceQueue dafür erfunden.

Also prinzipiell genauso ein Scheißdreck, wie das .DisposeOf, als Bugfix, weil .Free in den mobilen Platformen "garnichts" macht.

Redeemer 5. Jul 2024 10:10

AW: aktuellen Focus eines TEdit verlieren (Android / iOS)
 
Ach dann hab ich dich missverstanden. Dann ergibt der Name ja doch Sinn.

Du bezogst dich mit "ForceQueue ist der Bugfix für Queue, was aber im Hauptthread aufgerufen nicht in die Queue schiebt, sondern direkt ausführt, auch wenn es (nicht) so heißt."
auf Queue und nicht auf ForceQueue.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Seite 2 von 2     12   

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