Seite 1 von 1
mdigadgets - scrolleiste immer einblenden?
Verfasst: 17.05.2008 23:34
von smateja
Hallo zusammen, weiß jemand evtl. ob und wenn ja wie es machbar ist - die vertikale Scrolleiste immer einblenden zu lassen, auch wenn das mdi noch leer ist?
Habe diesbezüglich leider nichts im Forum großartig finden können, aber evtl. hat ja jemand einen kleinen Tipp für mich.
Merci schon mal im Voraus.
Verfasst: 18.05.2008 00:41
von Fluid Byte
Stellt sich die Frage warum? Die Scrollbars erscheinen nur wenn ein MDI Child Fenster die Maße des Clients überschreitet. Alles andere macht auch keinen Sinn. Normalerweise kann man die Scrollbars von Fenstern sichtbar machen indem man einfach eine 'Range' setzt, also Minimum / Maximum. Das Problem ist dass das MDI Client Fenster bei diversen Windows Messages überprüft ob Scrollbars angezeigt werden müssen und die 'Range' entsprechend wieder auf Null setzt wenn dies nicht der Fall ist.
Mir fällt jetzt keine andere Lösung ein aber wie gesagt erachte ich es sowieso als sinnfrei.
re:
Verfasst: 18.05.2008 12:06
von smateja
Narf - also warum ich das machen mag:
ich bau mir gerade einen loginscreen der via sqllib in einem mdi gadget useraccounts listet. auf der linken seite ist das mdi. jeder user bekommt quasi hier ein neues fenster zugeteilt mit daten wie letzter login userpic usw.
es ist quasi eine schönheitsmanko wenn auf einmal die leiste auftaucht. daher will ich sie von haus aus einblenden auch wenn nur ein user gelistet wird.
finde leider immer noch nichts passendes dazu.
[/img]
Nachtrag:
Verfasst: 19.05.2008 11:59
von smateja
Habe nun im Forum mal folgendes gefunden:
ShowScrollBar_(GadgetID(#mdigadget),#SB_VERT,#True)
hat aber leider keine Auswirkungen auf die Scrolleiste im MDI.
Evtl. hat ja sonst noch jemand eine IDee?!
Verfasst: 19.05.2008 12:03
von Kaeru Gaman
und wenn du die Leiste von vorne herein im Layout mit einplanst,
zum Beispiel dem Platz, wo sie erscheinen wird, eine andere Farbe gibst?
sorry, dass ich dir sonst nicht helfen kann, aber mir ist keine einzige GUI bekannt,
bei der ein Scrollbar da ist bevor er benötigt wird.
RE:
Verfasst: 19.05.2008 12:11
von smateja
wäre ne idee - anbei - websiten machen das manchmal auch so um die platz vorzureservieren
aber easy - ich versuch das mal nun dur vorbelegung zu definieren. Merci aber für den Tipp gelle.
Verfasst: 19.05.2008 12:14
von Fluid Byte
ShowScrollBar_() bleibt wirkungslos aus zwei Gründen:
1.) die Scrollbars des MDI Gadgets sind keine eigenen extra Controls sondern erzwungen mittels des #WS_*SCROLL Stils. Solche Scrollbars lassen sich nur dann anzeigen wenn vorher überhaupt ein Minimum/Maxium festgelegt wurde.
2.) wie ich oben geschrieben habe überprüft der MDI Client mehrfach ob Scrollbars angezeigt werden müssen. Ist kein Minimum/Maxium festgelegt wird die Scrollbar automatisch unsichtbar und ShowScrollBar_() funktioniert nicht.
Die einzige Möglichkeit die Ich sehe wäre per subclassing. Dazu müsstest du aber genau wissen wie und wo die 'Range' berechnet wird.
Verfasst: 19.05.2008 12:27
von Rokur
Kaeru Gaman hat geschrieben:...
sorry, dass ich dir sonst nicht helfen kann, aber mir ist keine einzige GUI bekannt,
bei der ein Scrollbar da ist bevor er benötigt wird.
Notepad?
Ich finde es garnicht so schlecht wenn Scrollbars immer sichtbar sind, dann sieht der Anwender auf einen Blick das es sich um was scrollbares handelt, auch wenn momentan noch nicht genügend Inhalt vorhanden ist um scrollen zu müssen.
Aber das kommt sehr auf die Anwendung an, ob und wann welche Version besser aussieht.
Du könntest das vielleicht noch "per Hand" lösen:
Mit #PB_MDI_NoScrollBars schaltest du die Scrollbars ganz aus, dann kannst du selber welche anlegen und scrollst einfach das ganze Gadget übers Fenster. Allerdings musst du dich dann selber um die Größe usw. kümmern.
Verfasst: 19.05.2008 12:35
von Fluid Byte
Rokur hat geschrieben:Notepad?

Das ist aber nicht gewollt sondern liegt am Sizing Grip (die kleine ecke mit der man das Fenster größer und kleiner zieht).