Delphi-PRAXiS

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/)
-   -   Delphi Refresh unterbinden (Begin/EndUpdate) (https://www.delphipraxis.net/33943-refresh-unterbinden-begin-endupdate.html)

skyware 15. Nov 2004 11:58


Refresh unterbinden (Begin/EndUpdate)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

folgendes Problem: wie im angehängten Projekt ersichtlich möcht ich einen
sogenannten Inspektor basteln.
Das Problem ist nun beim Aufbau des Inspektors flackert das ganze Fenster.
Ist es irgendwie möglich das Neuzeichnen eines Panels zu unterbinden?
Habs bereits mit "LockWindowUpdate" versucht, nur ist dann der Aufbau des
Fensters ziemlich langsam. :(

Kennst sich da jemand aus? :idea:

Gruss,
Markus

shmia 15. Nov 2004 12:19

Re: Refresh unterbinden (Begin/EndUpdate)
 
Die API Funktion LockWindowUpdate ist eine Fehlkonstruktion, da man nur ein Window sperren kann.
Besser ist folgendes:
Delphi-Quellcode:
// von TeamB
procedure LockControl(c: TWinControl; lock: boolean);
begin
   if (c = nil) or (c.Handle = 0) then exit;
   if lock then SendMessage(c.Handle, WM_SETREDRAW, 0, 0)
   else begin
      SendMessage(c.Handle, WM_SETREDRAW, 1, 0);
      RedrawWindow(c.Handle, nil, 0,
         RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
   end;
end;

skyware 15. Nov 2004 12:38

Re: Refresh unterbinden (Begin/EndUpdate)
 
Hi,

vielen Dank für diese prompte Antwort! :-D
Hab das gleich mal so eingebaut, und funktioniert einwandfrei!

Der Aufbau des Inspektors benötigt allerdings immer noch recht
viel Zeit...gibts da eine Möglichkeit dies noch zu beschleunigen?

Gruss,
Markus

mirage228 15. Nov 2004 12:43

Re: Refresh unterbinden (Begin/EndUpdate)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von skyware
Hi,

vielen Dank für diese prompte Antwort! :-D
Hab das gleich mal so eingebaut, und funktioniert einwandfrei!

Der Aufbau des Inspektors benötigt allerdings immer noch recht
viel Zeit...gibts da eine Möglichkeit dies noch zu beschleunigen?

Gruss,
Markus

Hi,

ich habe versucht es etwas zu optimieren. Vielleicht hilft es dir ja weiter.

mfG
mirage228

QuickAndDirty 15. Nov 2004 13:00

Re: Refresh unterbinden (Begin/EndUpdate)
 
Wenn man kein flackern haben will
sollte man beim Panel DoubleBuffered := True
setzen ist dann allerdings wieder mal etwas
langsamer.

skyware 15. Nov 2004 13:02

Re: Refresh unterbinden (Begin/EndUpdate)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

so nun hab ne schnelle Lösung gefunden, danke Euch allen! :dancer:
Den grossen Geschwindigkeitsverlust verursacht hat die ganze Parent
Geschichte. Ich erstelle nun zuerst alle einzelnen Rows, und am Ende
erst werden dann sämtliche Parents verknüpft.
Hab die aktuellste Version nochmals als Attachment angehängt,
falls jemand Interesse hat :-D

Gruss,
Markus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 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