AGB  ·  Datenschutz  ·  Impressum  







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

Message o.Ä. wenn Scrollbar(s) eingeblendet werden

Ein Thema von Codehunter · begonnen am 20. Apr 2012 · letzter Beitrag vom 20. Apr 2012
Antwort Antwort
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 08:31
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 10:19
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 10:35
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 10:37
Reicht dir OnResize nicht aus?

Ber Änderung des Inhalts (die enthaltenen Komponenten und deren Position) wird man so aber nicht informiert.
$2B or not $2B

Geändert von himitsu (20. Apr 2012 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 10:40
@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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Message o.Ä. wenn Scrollbar(s) eingeblendet werden

  Alt 20. Apr 2012, 11:29
$2B or not $2B
  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 11:52 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