The smoother upgrade-path from 4D Write to 4W Write Pro for you and your customers and V16 without the R, no dot-notation required
Summary
Moving from 4D Write to 4D Write Pro is less smooth, than our users like updates to be. The complains I heard most often is the missing menu and toolbar atop of a 4D Write-Document. This was a real-estate-conscious user-interface to the power of 4D Write. Here is my take of that for 4D Write Pro for V16 without the R and no dot-notation required.
Seit einigen 4D R-Versionen gibt es 4D Write Pro als Nachfolger für 4D Write, das sich langsam an dessen Features ran-entwickelt. In den letzten Monaten höre ich häufiger den Wunsch nach einem raumsparenden Interface zum 4D Write Pro, also einer Menüleiste mit einigen Werkzeugen. Hier ist mein Entwurf für 4D Write Pro für V16 ohne R und ohne dot-notation.
Eine Menüzeile und einige Tools in direktem Zugriff ist das bekannte Interface zu 4D Write-Dokumenten. Es ist sehr raumsparend,
Die Menüzeile und die Icon-Tools sind altmodisch geworden. Viele sehen drüber weg, weil Menüs und Tools praktisch sind und wenig Platz oberhalb der nutzbaren 4D Write-Fläche verbrauchen. Das wollen viele wiederhaben, weil die Kunden das kennen und der Entwickler seine Formulare nicht komplett umbauen muß, um Platz zu schaffen wo keiner ist.
Ich habe eine modernisierte Fassung der Menüzeile und wichtige Tools als Widget für die V16 zusammengestellt. Auch in der V16.0 sind nicht alle Funktionen von 4D Write in 4D Write Pro nachgebildet. Doch die wichtigen Funktionen sind vorhanden und diese bietet DBZ_WrProMenus an.
Die Menüs und Menübefehle sind ähnlich aber nicht identisch zu denen in 4D Write. Manche Menübefehle haben ein Button-Äquivalent in der Toolbar. Eigenschaften, die eine neuere V16-Version verlangen wie Tabellen, haben deaktivierte Platzhalter.
V16 4D Write Pro braucht die Version die 16.0, in 32- oder 64-bit. Das Lineal, das wir aus 4D Write kennen, liefert die V16R3 nach, wie im Screenshot dargestellt.
V15 Bleiben Sie noch länger auf V15 sind, brauchen Sie den Sourcecode von DBZ_WrProMenus, um diesen an 4D Write Pro für V15 anzupassen.
Nutzung
DBZ_WrProMenus ist eine Komponente und ein Widget. Sie installieren die Komponente und
- plazieren das Widget DBZ_WP_Menu in Ihrem Formular oberhalb eines 4D Write Pro-Bereichs
- dem 4D Write Pro-Objekt weisen Sie die Methode DBZ_WPArea_Manager („WParea“;“dbzWidgetMenu“;Self) zu
- installieren eine Callback-Methode, um Menü-Aktionen wie Neu, Sichern, Sichern als, … für den 4D Write Pro-Bereich Ihrer Host-DB auszuführen
$callBackMethod:=“Documents_Mngr“
DBZ_Callback_Mngr („Set“;->$callBackMethod)
So könnte Ihr Formular aussehen, in dem Sie das Widget einbinden. Der Datentyp des Widgets ist Object.
Das Widget sollte in der Horizontalen wachsen. Die rote Umrandung hebt den geringen Platzbedarf des Widgets hervor. Sie geben dem Widget einen Rahmen, wenn Sie möchten.
Dem 4D Write Pro-Feld oder der -Variablen weisen Sie die Objekt-Methode DBZ_WPArea_Manager („WParea“;“dbzWidgetMenu“;Self) zu und übergeben die Objektnamen des 4D Write Pro-Bereiches, den des DBZ_WrProMenus-Widgets und den Pointer Self.
Sie sollten eine Callback-Methode installieren, um die Rückmeldung zum Datensatz mit dem 4D Write Pro-Dokument anzunehmen und zu verarbeiten. Hier mein Vorschlag zum Callback-Manager:
Case of
: ($what=“WrPro_New“)
Documents_Mngr („Record_New“)
: ($what=“WrPro_Save“)
Documents_Mngr („Record_Save“)
: ($what=“WrPro_SaveAs“)
Documents_Mngr („Record_SaveAs“)
: ($what=“WrPro_newTemplate“)
Documents_Mngr („Template_New“)
Else
$message:=“Geben Sie sich Rückmeldung, daß ein Callback nicht bearbeitet wird.“
End case
Wenn was nicht klappt, prüfen Sie die Objektnamen der beiden Objekte. Für den 4D Write Pro-Bereichs müssen dieses Events aktiv sein: On Load + On After Edit + On Selection Change + On Getting Focus/On Losing Focus.
Nicht vergessen, die übergebene Callback-Methode für Host und Komponente freizugeben.
Moving target
V16 und 4D Write Pro verändern sich vierteljährlich, mit jeder R-Version. Die 4D Gemeinde ist sehr heterogen sowohl in dem was sie entwicklen wie in der Art und Weise. Ich versuche defensiven Code zu schreiben, doch ab und an überrascht eine besondere Situation und wirft einen Runtime-Fehler. Von dem wüßte ich gerne. Einfach Screenshot der Fehlermeldung mailen. Danke!
No hassles Lizenz
Sie dürfen diese Komponente in Ihren 4D-Anwendungen einsetzen.
Brauchen Sie die Komponente in Ihrer Sprache und die ist weder deutsch noch englisch, dürfen Sie den *.lproj-Ordner mit Inhalt anlegen. Wollen Sie Ihre Sprache den Kollegen anbieten, werde ich sie gerne in die Komponente integrieren.
Download
Zum Download meine HowToUse_WPmenus.4dbase. Die Komponente findet sich dort im Ordner Components.
Sourcecode
Sie wollen den Sourcecode haben, um selber zu erweitern und die Verfügbarkeit sicherzustellen? Machen Sie mir ein Angebot, dem ich nicht widerstehen kann, per Mail oder rufen Sie an +49 151 2753 2470.
Ich verkaufe Ihnen den Sourcecode, wenn Sie sich verpflichten 1) den Sourcecode an niemand anderen weiterzugeben und 2) kein vergleichbares Produkt (Komponente oder Widget) anzubieten.
A menubar and some tools for direct access is the proven and loved interface to 4D Write-Documents for lots of us.
The graphics of the icons make the toolbar look oldfashioned. Nothing to really complain about, as the ui-concept is proved and convincing. Another advantage is the amount of real estate necessary. Having something equivalent with 4D Write Pro does help us to update without completely rearranging existing layouts, which is a nightmare, both for the developer and the user.
This is my take of a modernised menu-toolbar, realised as component/widget for V16 and better. Even with V16.0 some functionality of 4D Write is still missing from 4D Write Pro. Therefor no 1:1 copy of the menubar and tools.
The menus and menu-commands resemble those of 4D Write. Some menu-commands are also available as button from the toolbar. Features which will be available later in the progress of 4D Write Pro, are disabled for now, like tables-assistant.
V16 You need at least version 16.0 of 4D, either 32- or 64-bit. The ruler you see in the 4D Write-screenshot above, is part of V16R3.
V15 If you’re bound to V15, you need the sourcecode of DBZ_WrProMenus, to adapt to 4D Write Pro of version V15.
Usage
DBZ_WrProMenus is a component and a widget. You install the component and
- place the widget inside your form above the 4D Write Pro-area
- install this 4D Write Pro-objekt method DBZ_WPArea_Manager („WParea“;“dbzWidgetMenu“;Self)
- install a callback-method to be informed when menu-actions like New, Save, Save As, … happened to take action inside your host-DB
$callBackMethod:=“Documents_Mngr“
DBZ_Callback_Mngr („Set“;->$callBackMethod)
Your form where you include the widget could look like this. The widget is of data-type object.
The widget should grow horizontally. The shown red rectangle highlights the size of the widget. The border-style is up to you.
To connect the 4D Write Pro-field or -variable to the widget use this object-method DBZ_WPArea_Manager („WParea“;“dbzWidgetMenu“;Self) to pass both object-names, 4D Write Pro-area and DBZ_WrProMenus-widget, plus Self.
You should install a callback-method, to take of the feedback concerning the record containing the 4D Write Pro-document. This is my attempt in designing a callback-manager:
Case of
: ($what=“WrPro_New“)
Documents_Mngr („Record_New“)
: ($what=“WrPro_Save“)
Documents_Mngr („Record_Save“)
: ($what=“WrPro_SaveAs“)
Documents_Mngr („Record_SaveAs“)
: ($what=“WrPro_newTemplate“)
Documents_Mngr („Template_New“)
Else
$message:=“Send yourself a message about a missing reaction to this callback“
End case
If it doesn’t work immediately, check for the objectnames given to both objects. The 4D Write Pro-area needs to have activated these events: On Load + On After Edit + On Selection Change + On Getting Focus/On Losing Focus.
Don’t forget, to make the callback-method available for both host and component.
Moving target
V16 and 4D Write Pro are changing with every R-Version. 4D developers are very heterogeneous both in the subjects they are working on and their style of coding. I’m trying to code as defensive as possible, but sometimes surprises happen and 4D throughs a runtime-error. I’d like to know about those. A screenshot of the of the error-message mailed should help. Thanks!
No hassles license
You are allowed to run this component as part of your 4D-applications.
If you need the component your language which neither english nor german, you are allowed to add the *.lproj-folder with translated contents. If you want to offer your language to the colleagues, I would integrate into the component.
Download
For download my HowToUse_WPmenus.4dbase. You’ll find the component in folder components.
Sourcecode
You like to buy the sourcecode, to enhance the component yourself and take care of the availability in the future? Make me an offer I can’t resist, by mail or call +49 151 2753 2470.
You have to oblige to both conditions: 1) not to give the sourcecode to somebody else and 2) not to offer a product (component or widget) similar to this one yourself.