AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Flackern beim erstellen einer Form vermeiden

Offene Frage von "alfold"
Ein Thema von manuel.taber · begonnen am 15. Mär 2011 · letzter Beitrag vom 15. Mär 2011
Antwort Antwort
manuel.taber

Registriert seit: 15. Mär 2011
5 Beiträge
 
#1

Flackern beim erstellen einer Form vermeiden

  Alt 15. Mär 2011, 14:31
Hallo,

habe eine kurze Frage zu Delphi.

Ich habe das Problem, dass beim erstellen einer Form die Anzeige teilweise sehr stark flackert. Nach einigen Analysen habe ich festgestellt, dass beim OnShow Ereignis die Form noch nicht gezeichnet ist.

Ist es irgendwie möglich, die Anzeige so lange zu sperren bis sie vollständig gezeichnet ist?

Danke im voraus
mfg Manuel
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Flackern beim erstellen einer Form vermeiden

  Alt 15. Mär 2011, 14:45
So ist es. Erst nach onShow ist das Zeichnen abgeschlossen.
Ich würde aber mal vermuten das Du irgend was nicht richtig machst, so das ein Durchgängiges Zeichnen verhindert wird.

Ansonsten DoubleBuffered := True setzen.

Empfehlung, mal den Code durchsuchen wo und wer da was alles sich behindert!

alfold
  Mit Zitat antworten Zitat
manuel.taber

Registriert seit: 15. Mär 2011
5 Beiträge
 
#3

AW: Flackern beim erstellen einer Form vermeiden

  Alt 15. Mär 2011, 15:24
Hallo alfold,

vielen dank für deine schnelle Antwort.
Ich habe jetzt Versucht im OnResize ein Application.ProcessMessages einzubauen.
Darum habe ich das Hauptpanel mit folgender Funktion gesperrt:

Code:
procedure LockControl(pWinControl: TWinControl; pLock: Boolean);
begin
  { Uebergebene Komponente wird gesperrt }
  if (pWinControl = nil) or (pWinControl.Handle = 0) then
    Exit;
  if pLock then begin
    SendMessage(pWinControl.Handle, WM_SETREDRAW, 0, 0)
  end else begin
    SendMessage(pWinControl.Handle, WM_SETREDRAW, 1, 0);
    RedrawWindow(pWinControl.Handle, nil, 0,
      RDW_ERASE or RDW_FRAME or RDW_INVALIDATE or RDW_ALLCHILDREN);
  end;
end;
Es ist zwar jetzt eine Verbesserung da, es gibt aber immer noch ein leichtes flackern.

Gibt es kein Event (z.B. OnFinishPaint) das aufgerufen wird, wenn alles gezeichnet ist?
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Flackern beim erstellen einer Form vermeiden

  Alt 15. Mär 2011, 15:40
so wie ich das verstehe(und davon leider wenig)
rufst du hintereinander das neuzeichnen auf?
einmal um die form zu zeichnen
SendMessage(pWinControl.Handle, WM_SETREDRAW, 1, 0);

und danach noch mal um den rest mit zuzeichnen
RedrawWindow(pWinControl.Handle ......

währe es nicht besser:
mit SendMessage eine WM_PAINT Nachricht an das Fenster senden?

alfold
  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 00:24 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