11. Feb. 2010 

register

Neuerdings (v11) beherrscht 4D die Registerkarten, die mit Panther im Okt. 2003 neu eingeführt wurden.

Das ist schon so out-to-date wie das Alu-Fenster aus iTunes 1 (MacWorld 2001). Registerkarten auf Windows, … vergiß die Baumarkt-Optik.

modernrk

Ich würde gerne Registerkarten aus Buttons bauen. Die iTunes-Register aus V8 und V9 gefallen mir nicht, viel zu breit und schattig.

Habe mir die Buttons selber gemalt, bzw. aus Screenshots zusammengestellt. Als Toolbarbutton mit 4 Zuständen sehen sie gut aus und funktionieren. Ich brauche es als Radio-Button: also, wenn gedrückt, soll Zustand 3 stehen bleiben. Viele Kombinationen aus Buttontypen und Aktivierungen habe ich durchprobiert, war alles nicht das Gelbe vom Ei.
Den Zustand 3 würde ich gerne erzwingen. Direkt geht nicht, ergo drum herum arbeiten :-)

Diesen Weg habe ich gefunden und im Deko_Mngr untergebracht. Umstellen auf Radiobutton-Optik ist der Aufruf:
Deko_Mngr ("RegisterButton_Activated";->bInfo;"Buttonname";$Info_RKButton)
Zurückstellen auf Toolbarbutton-Optik geschieht mit diesem Aufruf:
Deko_Mngr ("RegisterButton_Default";->bInfo;"Buttonname";$Info_RKButton)

rkBilder

Ich verwende zwei Bilder. blackBlueRegister ist das Standard-Bild für die Zustände activ, hover, pressed, inactiv und blackBlueRadio hat eine andere Farbe für den Zustand activ und erzeugt den Eindruck einer ausgewählten Registerkarte.

Dem Button wird das Bild zum erreichten Zustand über den Befehl
SET FORMAT(*;$objectName;$graphikFormat)
fliegend untergeschoben. Die Info welches Bild und wie darstellen steckt im $graphikFormat.

Zuerst hole ich mir den Pfad auf das benötigte Bild, die im Ordner Resources liegen:
: ($what="RegisterButton_@")
Case of
  : ($what="@_Default")
    $graphikPath:="file:"+"blackBlueRegister.png"
  : ($what="@_Activated")
    $graphikPath:="file:"+"blackBlueRadio.png"
End case
Hier vereinfacht, d.h. ohne Unter-Ordner. Den Pfad kann ich in "Bild Name/ID" der Eigenschaftenliste ablesen.

Danach fülle ich die Parameter fürs Graphikformat:
$title:="DerGültigeTitel" `den hole ich aus dem Datadictionary aka XLIFF
$background:=""
dreirk $titlePos:=""
$titleVisible:=""
$iconVisible:=""
$style:=""
$horMargin:=""
$vertMargin:=""
$IconOffset:=""
$popupMenu:=""
Hier ist wichtig, daß "0" eine Bedeutung hat. Deshalb Leerwerte. Ja, ich weiß, komisch.
Jetzt wird das Format zusammengebaut ($trenner:=";"):
$graphikFormat:=$title+$trenner+$graphikPath+$trenner+$background+$trenner+$titlePos
+$trenner+$titleVisible+$trenner+$iconVisible+$trenner+$style+$trenner+$horMargin
+$trenner+$vertMargin+$trenner+$IconOffset+$trenner+$popupMenu
und dem Objekt das Format zugewiesen:
SET FORMAT(*;$objectName;$graphikFormat)

In meiner Datenbank sieht das Graphikformat z.B. so aus: "Tierinfo;file:DBZ/blackBlueRegister.png;;;;;;;;;"

Ich verwende immer häufiger den Objektnamen statt dem Variablennamen. Meine Entscheidung welchen Namen ich verwende mache ich hiervon abhängig:

  • Wenn es um eine Instanz einer Variablen geht: den Objektnamen.
  • Nur wenn es um die Variable direkt geht: den Variablennamen.
Das scheint sich zu bewähren. Wenn ich mich richtig an die Entwicklerkonferenz 2009 erinnere, ist das eine gute Vorbereitung auf V12 und V13 ff.

Und auf den Zeilenumbruch im Methodeneditor der V12 freue ich mich auch :-)

4D Themen: Berichte in Arbeit