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 ShllListView flackert (https://www.delphipraxis.net/35789-shlllistview-flackert.html)

ereetzer 11. Dez 2004 21:14


ShllListView flackert
 
Hallo,

habe hier die Situation, daß ich mir per Buttonclick ein Form aufrufe und dort eine Protokolldatei in einem
Stringgrid anzeigen lasse.

Während nun das Stringgrid gefüllt wird, flackert auf dem Hauptformular die ShellListView-Komponente. Das ist sehr störend.

Mein Problem ist nun, daß ich nicht weiß, wie 1. das flackern kommt (in dem Augenblick mache ich doch gar nichts mit der ShellListview) und 2. natürlich, wie ich das flackern weg bekomme.

Hat jemand eine Idee.

Mario 14. Dez 2004 10:29

Re: ShllListView flackert
 
Vermutlich wird ein Teil Deines Formulares (oder sogar das ganze) angewiesen, sich neu zu zeichnen.

Probiere mal (zur Laufzeit) DoubleBuffered vom Formular auf True zu setzen.

jim_raynor 14. Dez 2004 10:33

Re: ShllListView flackert
 
Gibt es nicht beim StringGrid soetwas wie BeginUpdate und EndUpdate. Dann könnte man es darüber lösen, da dies auch wesentlich schneller wär.

ibp 14. Dez 2004 10:44

Re: ShllListView flackert
 
versuch mal beim befüllen den fokus auf das stringgrid zu legen

Sharky 14. Dez 2004 10:48

Re: ShllListView flackert
 
Zitat:

Zitat von jim_raynor
Gibt es nicht beim StringGrid soetwas wie BeginUpdate und EndUpdate. Dann könnte man es darüber lösen, da dies auch wesentlich schneller wär.

Guckst Du genau hier :stupid:

ereetzer 14. Dez 2004 20:01

Re: ShllListView flackert
 
danke soweit für die Tips.

Leider klappt das alles nicht.

Zitat:

Mario Verfasst am: 14.12.2004, 11:29 Titel: Re: ShllListView flackert
Vermutlich wird ein Teil Deines Formulares (oder sogar das ganze) angewiesen, sich neu zu zeichnen.
wie kann ich denn herausfinden ob dem so ist ?

ereetzer

Mario 14. Dez 2004 20:19

Re: ShllListView flackert
 
Zitat:

Zitat von ereetzer
wie kann ich denn herausfinden ob dem so ist ?

Ist das nicht eigentlich offensichtlich, wenn es flackert?

Mir fällt gerade was auf: Auf dem Hauptform zeigt die ShellListView nicht zufällig das Verzeichnis an, in dem Du arbeitest? Falls ja solltest Du beim Aufruf des Forms versuchen diese stillzulegen (BeginUpdate)...

ereetzer 18. Dez 2004 10:47

Re: ShllListView flackert
 
für alle die es interessiert, habe ich folgende flackerfreie Lösung gefunden:


Die folgende Funktion wird mit dem vorrübergehend einzufrierenden Fenster aufgerufen. (Natürlich das "aufwecken" em Ende nicht vergessen)

Delphi-Quellcode:
procedure LockWinControl(const WC: TWinControl; ALock: Boolean);
begin
  if (not Assigned(WC)) or (WC.Handle = 0) then
    exit;
  if ALock then WC.Perform(WM_SETREDRAW, 0, 0) else
  begin WC.Perform(WM_SETREDRAW, 1, 0);
    RedrawWindow(WC.Handle, nil, 0, RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
  end;
end;

ereetzer


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