AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Verständnisfrage zu Update,Invalidate,Repaint
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnisfrage zu Update,Invalidate,Repaint

Offene Frage von "p80286"
Ein Thema von p80286 · begonnen am 30. Apr 2010 · letzter Beitrag vom 3. Mai 2010
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Verständnisfrage zu Update,Invalidate,Repaint

  Alt 30. Apr 2010, 11:09
Hallo Zusammen,

wie aus der Überschrift hervorgeht, komme ich mit den drei Methoden und ihrem Einsatz nicht ganz klar (die OH ist widersprüchlich)

Update soll ein Neuzeichnen der Form veranlassen. Das funktioniert aber wohl nur innerhalb des Programmablaufes, wenn man Application.Processmessages nutzt.

Repaint soll Invalidate und anschließend Update aufrufen um sofortiges Neuzeichnen des ganzen Forms zu veranlassen.

Invalidate veranlaßt ein Update "bei Gelegenheit".

Wenn man auf einem Form nur z.B. die Namen der gerade verarbeiteten Datei ausgeben will, und möglichst wenig CPU-Zeit verbraten will, wie macht man's am geschicktesten?

(die Processmessages-Brechstange möchte ich mal aussen vorlassen wg. ungewolltem Multitasking)
(Ja, die Beschränkung auf Label ist mir bekannt)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Alaitoc

Registriert seit: 24. Okt 2008
263 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verständnisfrage zu Update,Invalidate,Repaint

  Alt 30. Apr 2010, 11:44
Also kann ja sein das ich jetzt falsch liege...

Jedoch veranlassen zwar Repaint, Invalidate und Update das Neuzeichnen bzw. teils teils, jedoch
sagen sie nicht, dass die aktuellen Ereignisse verarbeitet werden sollen wie Application.ProcessMessages.

Also zwar kannst du ihm sagen das er etwas neuzeichnen soll, da er aber beschäftigt ist, macht er es
erst nach dem Beenden des Vorgangs.

Bei nem Vorgang wo mehrere Dateien verarbeitet werden, kannst du z.b. sagen das er immer ein Event
auslöst wenn es zugewiesen wurde indem irgendetwas geschieht (z.B. Ausgabe der aktuell Datei die verarbeitet wird).

Delphi-Quellcode:
  if Assigned( OnBenachrichtigungsevent ) then
  begin
    OnBenachrichtigungsevent;
  end;
  // Verarbeitungsprozedur
  .
  .
  .
Hoffe ich liege soweit richtig ^^

MfG Alaitoc

Edit ist mein Freund...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Verständnisfrage zu Update,Invalidate,Repaint

  Alt 3. Mai 2010, 12:45
Zitat von Alaitoc:

Also zwar kannst du ihm sagen das er etwas neuzeichnen soll, da er aber beschäftigt ist, macht er es
erst nach dem Beenden des Vorgangs.
Und genau hier liegt mein Problem. Ich habe den Verdacht, daß das Repaint eine Kombination aus Invalidate/Update und Application.Processmessages ist, da ich meine beobachtet zu haben, daß ein Repaint sofort ausgefühert wird, was aber eigentlich nicht der Beschreibung in der OH entspricht.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Verständnisfrage zu Update,Invalidate,Repaint

  Alt 3. Mai 2010, 12:53
Zitat von p80286:
Ich habe den Verdacht, daß das Repaint eine Kombination aus Invalidate/Update und Application.Processmessages ist, da ich meine beobachtet zu haben, daß ein Repaint sofort ausgefühert wird,
Delphi-Quellcode:
procedure TWinControl.Repaint;
begin
  Invalidate;
  Update;
end;
"Invalidate/Update" stimmt also schonmal
und Update ruft quasi die Methoden für's Neuzeichnen direkt auf, weßhalb daher natürlich die Änderungen auch sofort sichtbar sind.


[add]
The MSDN-Library durchsuchenInvalidateRect function adds a rectangle to the specified window's update region. The update region represents the portion of the window's client area that must be redrawn.

The MSDN-Library durchsuchenUpdateWindow function updates the client area of the specified window by sending a WM_PAINT message to the window if the window's update region is not empty. The function sends a WM_PAINT message directly to the window procedure of the specified window, bypassing the application queue. If the update region is empty, no message is sent.
$2B or not $2B
  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 12:54 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