![]() |
was passiert intern bei panel.scrollby(x,y)
hallo,
kann mir da vielleicht jemand auskunfs geben? besonders interessiert mich was mit den objecten passiert die das panel als owner haben und eventuell vorhandene interne canvas des panels. Gruß Richard |
Re: was passiert intern bei panel.scrollby(x,y)
1. Alle untergeordneten Elemente werden verschoben (deltax, deltay)
2. Alle untergeordneten Elemente werden neu ausgerichtet entsprechend den Eigenschaften "Align" und "Anchors". Sieh dir dazu am besten "TWinControl.AlignControls" in "Controls.pas" an (bei mir in Zeile 5739). |
Re: was passiert intern bei panel.scrollby(x,y)
@flocke
nein das mein ich nicht, was genau passiert beim zeichnen? also werden alle untercontrols komplett neu gezeichnet? |
Re: was passiert intern bei panel.scrollby(x,y)
Das Zeichnen passiert nicht dort - das Verschieben von Fenster markiert nur die "freigelegten" Bereiche als ungültig, so dass das System weiß, dass sie beim nächsten Update (WM_PAINT) neu gezeichnet werden müssen. Das passiert aber erst wenn die Anwendung wieder in die Meldungsschleife kommt oder wenn du manuell Panel.Update aufrufst.
[Nachtrag] Bei den untergeordneten Fenster sieht es so aus, dass sie wahrscheinlich nicht immer neu gezeichnet werden. War das Fenster vorher vollständig sichtbar, dann verschiebt Windows wahrscheinlich nur das Fenster auf dem Bildschirm und zeichnet es nicht neu. Wenn du mit dem übergeordneten Control Panel.Invalidate vor dem ScrollBy aufrufst, dann müssten immer alle neu gezeichnet werden (bin ich mir aber nur zu 99,9% sicher). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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