Delphi-PRAXiS
Seite 19 von 20   « Erste     9171819 20      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   FireMonkey Sammelthread (https://www.delphipraxis.net/162660-firemonkey-sammelthread.html)

stahli 13. Jul 2013 14:00

AW: FireMonkey Sammelthread
 
Genau genommen fällt mir letztlich nur ein Grund für den aktuellen TAniIndicator ein:

Damit David I. in den früheren Werbevideos stolz eine Animationskomponente präsentieren kann, so dass die potentiellen Käufer natürlich unterstellen, dass man damit irgendwelche Aktivitäten der eigenen Anwendung darstellen kann.

Ich glaube inzwischen nichts mehr, was Emba präsentiert.
So verarscht habe ich mich noch von keiner anderen Firma gefühlt.

Union 13. Jul 2013 14:30

AW: FireMonkey Sammelthread
 
Naja, jetzt gibt es ja die Umfrage. Die kannst Du ja entsprechend ausfüllen.

Thom 13. Jul 2013 14:32

AW: FireMonkey Sammelthread
 
Seid mal nicht ganz so streng. :wink:

Auch in der VCL funktioniert die grafische Ausgabe nicht, solange die Nachrichtenverarbeitung blockiert wird. Hier hilft ja bekanntlich der Aufruf von
Delphi-Quellcode:
Application.ProcessMessages
, was auch unter FireMonkey möglich ist. Dann werden auch alle Animationen abgearbeitet und Veränderungen des Formulars sichtbar gemacht.

Wer aus irgendwelchen Gründen
Delphi-Quellcode:
Application.ProcessMessages
nicht verwenden möchte (zum Beispiel, damit der Anwender nicht inzwischen wild auf dem Formular herumklicken kann) könnte auch folgenden Classhelper verwenden, der nur die Animationen weiterlaufen läßt und veränderte Elemente aktualisiert:
Delphi-Quellcode:
type
  TCustomFormHelper = class helper for TCustomForm
    procedure Repaint;
  end;

procedure TCustomFormHelper.Repaint;
var
  N: Integer;
  UpdateRect: TRectF;
  Child: TFmxObject;
begin
  if Assigned(FMX.Types.AniThread) and Assigned(FMX.Types.AniThread.OnTimer)
    then FMX.Types.AniThread.OnTimer(nil);
  if ChildrenCount>0 then
  begin
    UpdateRect:=TRectF.Empty;
    for N:=0 to ChildrenCount-1 do
    begin
      Child:=Children[N];
      if (Child is TControl) and not TControl(Child).UpdateRect.IsEmpty then
      begin
        if UpdateRect.IsEmpty
          then UpdateRect:=TControl(Child).UpdateRect
          else UpdateRect.Union(TControl(Child).UpdateRect);
      end;
    end;
    if not UpdateRect.IsEmpty
      then PaintRects([UpdateRect]);
  end;
end
Verwendet werden könnte er wie in meinem ersten Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Time: Cardinal;
begin
  AniIndicator1.Visible:=true;
  AniIndicator1.Enabled:=true;
  try
    Time:=TThread.GetTickCount;
    while TThread.GetTickCount-Time<=5000 do
    begin
      Sleep(50);
      Label1.Text:=FloatToStr(TThread.GetTickCount-Time);
      Repaint;
      //Application.ProcessMessages;
    end;
  finally
    AniIndicator1.Visible:=false;
    AniIndicator1.Enabled:=false;
  end;
end;
P.S.:
TProgressBar funktioniert damit übrigens auch ohne Probleme! :-D

fgsoftware 13. Jul 2013 14:45

AW: FireMonkey Sammelthread
 
Zitat:

Zitat von cookie22 (Beitrag 1221625)
Zitat:

Zitat von greenmile (Beitrag 1221459)
...Ich denke, mit XE5 (oder halt Android) aktiviere ich es wieder, aber bis dahin kann und will ich mich leider nicht mehr damit rumschlagen...

Wenn mit XE5 dann Android kommen sollte, musst du aber noch mindestens bis XE8 warten um es produktiv nutzen zu können. :P



Mit XE 5 kommt hoffentlich erst einmal eine vernünftige Unterstützung für Firemonkey für Win/OS/iOS.

Und ich hoffe bei Emba mahlt schon mal jemand die neuen Styles für iOS 7.

Wenn dass dann alles vernünftig läuft, können dann von mir aus noch andere Plattformen zukommen.

Ich glaube aber, am Ende wird wohl nichts Halbes und nichts Ganzes dabei herauskommen.

Aber es wird wahrscheinlich so sein, dass Emba im nächsten Jahr stolz die Unterstützung für Android und Windows 8 präsentiert.

Am Ende wir man dann mit Firemonkey auf so ziemlich allen Plattformen eine Fish Fact-Demo zum laufen kriegen, und der Rest ist für die Hühner.

Thom 13. Jul 2013 18:26

AW: FireMonkey Sammelthread
 
Ich habe gerade beim Lesen der (XE3-)FireMonkey-Quelltexte einen neuen Geniestreich der Entwickler entdeckt:
Delphi-Quellcode:
unit FMX.Platform.Win;

function WndProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
[...]
begin
[...]
        WM_LBUTTONUP:
          begin
            [...]
              GetCursorPos(P);
              ScreenToClient(Wnd, P);
              LForm.MouseUp(TMouseButton.mbLeft, KeysToShiftState(wParam), P.X, P.Y);
            end;
          end;
[...]
end;
Da ist doch tatsächlich jemand auf die Idee gekommen, die Koordinaten aller (!!!) Mausereignisse per
Delphi-Quellcode:
GetCursorPos()
zur ermitteln, statt aus lParam auszulesen. Im Klartext bedeutet das, daß nicht die tatsächlichen Koordinaten - zum Beispiel bei einem Klick - geliefert werden, sondern die, die bei der Auswertung der Nachricht aktuell sind. Das hat zur Folge, daß bei schnellen Bewegungen oder Verzögerungen auf Grund eines stark beanspruchten Hauptthreads reale und per Ereignishandler gelieferte Werte meilenweit auseinanderliegen können.
Genial! :thumb:

Union 14. Jul 2013 11:14

AW: FireMonkey Sammelthread
 
Diese Genialität steckt auch noch in XE4. Viel besser jedoch sind die dort enthaltenen TODOs sowie auskommentierten Korrekturversuche.
Zitat:

Hey, hört mal auf zu programmieren, das Marketing hat RTM definiert!

sh17 14. Jul 2013 11:29

AW: FireMonkey Sammelthread
 
Wie, das Zitat steht auf deutsch im Quelltext? Ist ja "toll".

mkinzler 15. Jul 2013 08:24

AW: FireMonkey Sammelthread
 
Zitat:

Und ich hoffe bei Emba mahlt schon mal jemand die neuen Styles für iOS 7.
Stylesmehl als Goodie :stupid:

stahli 15. Jul 2013 13:47

AW: FireMonkey Sammelthread
 
Zitat:

Zitat von Union (Beitrag 1221629)
Naja, jetzt gibt es ja die Umfrage. Die kannst Du ja entsprechend ausfüllen.

Wo findet man die?

mkinzler 15. Jul 2013 14:11

AW: FireMonkey Sammelthread
 
http://www.delphipraxis.net/175723-t...ey-2013-a.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.
Seite 19 von 20   « Erste     9171819 20      

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