![]() |
Message o.Ä. wenn Scrollbar(s) eingeblendet werden
Gibt es eine Möglichkeit festzustellen, wenn bei einem TWinControl die Scrollbars eingeblendet werden? Konkret habe ich den Fall eines Abkömmlings von TScrollbox, welcher diverse Controls erstellt und auf seine ClientArea packt. Das Layout ordnet sich automatisch entsprechend der Dimensionen der ClientArea. Wenn es nun mehr Controls gibt als die ClientArea fassen kann, erscheinen automatisch die Scrollbars. Da aber keine WM_SIZE bzw. WM_SIZING Message kommt (das übergeordnete Control wird ja nicht in seiner Bounds-Größe geändert), bekomme ich das Einblenden der Scrollbars nicht mit. Ich finde aber auch keine betreffende andere Message. Vielleicht habe ich aber auch was übersehen?
|
AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden
Zum direkten Auslesen fällt mir grade nix ein, aber du kannst es einfach prüfen.
Wenn AutoScroll aktiv ist und eventuell noch nicht gescrollt wurde. (Letzeres, wenn zwar alles draufgepaßt hätte, es aber anfangs ungünstig positioniert war ... eventuell vorher auch einfach auf 0:0 scrollen) ScrollBox1.ClientRect auslesen und dann für alle Childs nachsehn, ob bei Einem Child.BoundsRect teilweise/ganz außerhalb des sichtbaren Bereichs liegt. |
AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden
wenn Du Dich in WM_SIZE hängst wirst Du zwar etwas öfter aufgerufen als nötig, aber mit einer zusätzlichen Prüfung hier könntest Du weiterkommen
Delphi-Quellcode:
type
TScrollBox=Class(Forms.TScrollBox) procedure WMSize(var Message: TWMSize); message WM_SIZE; End; TForm2 = class(TForm) ... procedure TScrollBox.WMSize(var Message: TWMSize); begin inherited; Showmessage('Size'); end; |
AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden
Reicht dir OnResize nicht aus? :angle2:
Ber Änderung des Inhalts (die enthaltenen Komponenten und deren Position) wird man so aber nicht informiert. |
AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden
@himitsu
meinst Du mich? Wenn er eine Komponente erstellt hat wird er sich vorzugsweise nicht in OnResize hängen, da diesen im OI oder zu Laufzeit geändert werden kann, über die Message kann er Logik implementieren die hiervon unabhängig bleibt. |
AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden
:oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:31 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