![]() |
Flackern beim erstellen einer Form vermeiden
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 |
AW: Flackern beim erstellen einer Form vermeiden
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 |
AW: Flackern beim erstellen einer Form vermeiden
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:
Es ist zwar jetzt eine Verbesserung da, es gibt aber immer noch ein leichtes flackern.
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; Gibt es kein Event (z.B. OnFinishPaint) das aufgerufen wird, wenn alles gezeichnet ist? |
AW: Flackern beim erstellen einer Form vermeiden
so wie ich das verstehe(und davon leider wenig) :wink:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz