AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ereignisse in FMX bereitstellen

Ein Thema von Frühlingsrolle · begonnen am 24. Nov 2019 · letzter Beitrag vom 25. Nov 2019
Antwort Antwort
Frühlingsrolle

Registriert seit: 31. Aug 2019
106 Beiträge
 
#1

Ereignisse in FMX bereitstellen

  Alt 24. Nov 2019, 14:32
Hallo Forum

Problemstellung:
Wie werden in FMX-Komponenten Ereignisse, wie z.B. OnPaint, bereitgestellt, sodass sie über Windows hinaus auch auf anderen Plattformen / OS funktionieren?
Verständnishalber leite ich eine Klasse von TControl ab, welches kein OnPaint-Ereignis kennt, und gehe in einem VCL-Projekt wie folgt vor:
Delphi-Quellcode:
type
  TDummy = class(TControl)
  private
    FOnPaint: TNotifyEvent;
  protected
    procedure DoPaint; virtual;
    procedure WndProc(var Message: TMessage); override;
    property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
  end;

implementation

procedure TDummy.DoPaint;
begin
  if Assigned(FOnPaint) then
    FOnPaint(self);
end;

procedure TDummy.WndProc(var Message: TMessage);
begin
  inherited;
  if Message.Msg = WM_PAINT then
    DoPaint;
end;
Hier wird mit einer Windows-Nachricht gearbeitet, die auf anderen Systemen nicht gegeben ist, daher wird dies in FMX (auf anderen Systemen) zu Problemen führen - vermute ich.
Wie geht man das nun in FMX an?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
510 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Ereignisse in FMX bereitstellen

  Alt 24. Nov 2019, 16:15
In FMX gibt es einen plattformübergreifenden Nachrichtenmechanismus.
Soweit ich weiß arbeitet der aber synchron.
Ein Feature request für asynchrone Umsetzung hab‘ ich schon lange laufen.
Ich weiß aber gerade auch nicht, wie der Mechanismus heißt.
  Mit Zitat antworten Zitat
Frühlingsrolle

Registriert seit: 31. Aug 2019
106 Beiträge
 
#3

AW: Ereignisse in FMX bereitstellen

  Alt 25. Nov 2019, 00:20
Es wäre auch interessant zu wissen, wo die jeweiligen "Do"-Methoden in den FMX-Units aufgerufen werden, denn WndProc() o.ä. habe ich beim Durchforsten der "gängigen" Klassen nicht vorgefunden.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Ereignisse in FMX bereitstellen

  Alt 25. Nov 2019, 02:29
In FMX gibt es einen plattformübergreifenden Nachrichtenmechanismus.
Soweit ich weiß arbeitet der aber synchron.
Ein Feature request für asynchrone Umsetzung hab‘ ich schon lange laufen.
Ich weiß aber gerade auch nicht, wie der Mechanismus heißt.
Wenn Du Nachrichten asynchrone abschicken willst, warum machst du es nicht einfach mit einem
TThread.ForceQueue(NIL,Messagesender)
Mavarik
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf