Im letzten Kapitel wollen wir uns noch anschauen, wie man die Buttons einer Toolbar beliebig anordnen kann und wie diese Änderungen dann entsprechend gespeichert und geladen werden.
Die VCL von Delphi unterstützt diese Funktionalität leider erst ab Version 7, obwohl sie (rein technisch) vom Betriebssystem bereitgestellt wird. Daher können wir sie für unser kleines nonVCL-Beispiel auch mit älteren Delphi-Versionen problemlos verwenden.
Zuerst einmal müssen wir die Toolbar mit dem zusätzlichen Stilattribut CCS_ADJUSTABLE erstellen:
hToolBar := CreateWindowEx(0,TOOLBARCLASSNAME,nil,WS_CHILD or WS_VISIBLE or CCS_ADJUSTABLE or CCS_NODIVIDER or TBSTYLE_TOOLTIPS or TBSTYLE_FLAT or TBSTYLE_LIST, 0,0,0,0,hWnd,IDC_TOOLBAR,hInstance,nil);
Dieses Attribut reicht schon aus, um die Buttons mit gedrückter Shift-Taste zu verschieben. Nur nutzt das natürlich bis jetzt noch nichts. Und wenn Sie testweise einen Doppelklick in einem freien Bereich der Toolbar ausführen, dann werden Sie evtl. ein kurzes Flackern bemerken. Dieses Flackern ist die Dialogbox, auf die wir später noch eingehen werden. Dass sie nicht erscheint bzw. sichtbar bleibt, hat natürlich auch seine Gründe.
Apropos: Drag & Drop. Wenn Sie die Buttons lieber mit gedrückter ALT-Taste umsortieren wollen, dann verwenden Sie zusätzlich noch das Attribut TBSTYLE_ALTDRAG beim Erzeugen der Toolbar.
Zu guter Letzt sollten Sie noch sicherstellen, dass die Variable, die Sie für Ihre Toolbar-Buttons benutzt haben (in dem Fall "tbButtons"), eine globale Variable ist. Eine lokale Variable in Ihrer "WndProc" würde nur Probleme verursachen.