AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken
Thema durchsuchen
Ansicht
Themen-Optionen

FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

Ein Thema von QuickAndDirty · begonnen am 14. Nov 2018 · letzter Beitrag vom 15. Nov 2018
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#1

FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

  Alt 14. Nov 2018, 10:24
Hallo
gibt es in FMX eine Möglichkeit ein Neumalen der Komponenten auszulösen, ohne Application.ProcessMessages aufzurufen?
Es geht mir um ein inline im Hauptthread ausgeführte Darstellungsaktualisierung. z.B. eines Fortschrittbalkens oder Label.text mit "Vorgang gestartet/beendet" Meldung.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

  Alt 14. Nov 2018, 10:32
Also du führst im UI Thread eine langwierige Bearbeitung aus (blockierst also diesen Thread) und möchtest da einen Fortschrittsbalken haben.

Richtig?

Dann machst du das falsch.

Führe die Bearbeitung innerhalb eines Threads/Tasks aus und gibt den Fortschritt synchronisiert an den UI Thread.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#3

AW: FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

  Alt 15. Nov 2018, 10:47
Führe die Bearbeitung innerhalb eines Threads/Tasks aus und gibt den Fortschritt synchronisiert an den UI Thread.
Dessen bin ich mir bewusst.
Es ist ein fertiges großes Crossplattform Projekt.
Ich möchte Processmessages gerade deswegen ausbauen, weil es die Thread synchronisation durcheinander bringt!
Ich möchte selbst bestimmen können das ein Control jetzt gemalt werden soll.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

  Alt 15. Nov 2018, 12:04
Wann ein Control neu gemalt wird kannst du nicht wirklich beeinflussen. Du kannst den Inhalt ändern, was dann das Control veranlasst, beim der nächsten Aktualisierungsrunde dabei zu sein.

Diese Aktualisierungsrunde erfolgt immer kurz bevor die Anwendung in den Idle-Zustand kommt (die Anwendung hat nichts zu tun). Diesen Idle-Zustand provozierst du mit Application.ProcessMessages.

Wie du siehst, du kannst nur indirekt auf das Neuzeichnen der Controls einwirken.

Also, was möchtest du jetzt?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.882 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX: Ohne Application.ProcessMessages Neu Malen inline bewirken

  Alt 15. Nov 2018, 13:48
In Windows kann ich mit
PeekMessage(msg, 0, 0, 0, PM_REMOVE) die Messages die das Control malen filtern (vermutlich WM_PAINT)...und nur die.
Und dann mit
Delphi-Quellcode:
TranslateMessage(msg);
DispatchMessage(msg);
Das malen inline ausführen lassen.

Funktioniert nur in Windows... aber das wäre schonmal ein Anfang.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (15. Nov 2018 um 13:54 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:19 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