Vier D HomeArchivSeminareNachrichten - Twitter4D Expertise
Antworten auf Ihre Fragen •
Datenbank-Pflege •
4D Coaching •
OpenDDDD •
Termine •
4D Expert
V11/V12-Service • Konzepte •
Alternativen •
Meine Apps
Gebrauchtes Mac + iPhone: zu verkaufenFinden Geo-Themen + Projekte GoogleMap-Integration • GeoDDDD • Database Publishing • Database PhotographyVerschiedenes |
14. Nov 2009 Listboxen – bei allem was ich mir noch wünschen könnte – sind ein feines Werkzeug. Ein kleines Tool, das ich mir für Listboxen einrichtete ist ListBox_GenService ("ScrollBar_Visible";$lb_ObjName). Es ist für die Funktion einer Listbox vollkommen unwichtig und fürs gute Aussehen unverzichtbar. Standard RollbalkenIm ersten Bild ist die Standard-Darstellung zu sehen. Die Tabelle zeigt mehr Datenzeilen an, als in den Rahmen passen und die Breite aller Spalten reicht über den Ausschnitt hinaus. Also sind beide Rollbalken zu sehen, sowohl der vertikal wie der horizontale. An den Enden sind die Pfeile aktiv und der Fahrstuhl gibt einen Hinweis auf die Länge der Liste bzw. die Breite der Spalten und die aktuelle Position. Blinde RollbalkenSind nur wenige Datenzeilen zu sehen sind oder ist das Fenster breit genug, alle Spalten darzustellen, werden automatisch blinde Rollbalken angezeigt. Das ist systemüblich. Gefällt mir trotzdem nicht. Ich will eine Zeile mehr Daten sehen, wenn alle Spalten in den verfügbaren Raum passen. Sind nicht mehr Daten anzuzeigen als Zeilen da sind, kann die letzte Spalte den zusätzlichen Raum des vertikalen Rollbalkens nutzen. Ich möchte wenn es paßt nur den horizontalen Rollbalken sehen oder nur den vertikalen oder keinen von beiden. ListBox_GenServiceUnd ich will es nicht jedesmal neu erfinden wollen, wie ich das Ziel erreiche. Das macht ListBox_GenService ("ScrollBar_Visible";$lb_ObjName). Im ersten Parameter steht, was soll der Service tun ("ScrollBar_Visible") und im zweiten Parameter der Name des Objektes ($lb_ObjName). Die Variablen- und Array-Definitionen lasse ich weg und mit ↩ markiere ich einen von mir für die Darstellung auf dieser Seite eingerichteten Zeilenumbruch in einer einzeiligen 4D-Anweisung.
GET OBJECT RECT(*;$lb_ObjName;$l;$o;$r;$u)
$lb_ObjName:=$1
$rowheight_L:=Get listbox rows height(*;$lb_ObjName)
$N:=Size of array($t_SpaNamen) SET SCROLLBAR VISIBLE(*;$lb_ObjName;$horizontalVisible_b;$verticalVisible_b) EinbauIn On Load, On Resize und im On Clicked eines Splitters sowie nach Füllen der Listbox und im On Column Resize rufe ich ListBox_GenService ("ScrollBar_Visible";$lb_ObjName) auf und habe Rollbalken, wie sie mir gefallen.
So ist das im Prinzip richtig, doch träge, weil erst nach einem erneuten Klick der Effekt sichtbar wird. Deshalb setze ich an den genannten Ereignissen $checkLBoxScrollBars_b:=True und prüfe:
In On Timer werden tatsächlich für die betroffenen Listboxen die Rollbalken ein- und ausgeschaltet: Wunschliste
Sie möchten den Sourcecode haben? Kein Problem! Überweisen Sie, was es Ihnen wert ist auf mein PayPal-Konto: info@mettre.de. Was ist denn üblich? Dazu auch den Redraw - zeitversetzt, Zap-Reiz unterdrücken, Der linke und der rechte Teil der Listbox. |