Nachprogrammierung des Standard-Buchungsdialoges

Als nächstes Beispiel für einen individuellen Dialog werden wir den Standard-Buchungsdialog mit dem Dialogeditor "nachbauen". Der praktische Nutzen eines solchen nahezu identischen Buchungsdialoges ist natürlich gering, doch der Lerneffekt ist besonders hoch, weil Sie den Standard-Buchungsdialog als TEXTBUCH Nutzer sehr gut kennen und Sie über die Funktionalität und den Sinn der einzelnen Dialogelemente gut Bescheid wissen.

Den Dialog finden Sie fertig montiert unter "Buchungsdialoge\Versteckt\BuchDialog2.dlg" bei den Hinz- und Kunz Beispielsdaten. Der Sinn dieses Tutorials ist, dass Sie ihn selbst zusammenbauen. Nur wenn Sie ihn als Ausgangsbasis für einen eigenen Dialog verwenden möchten, sollten sie den fertigen Dialog aufrufen. Um TEXTBUCH Einsteiger nicht zu verwirren, erscheint der Buchungsdialog nicht im Buchungseditor, weil er im Unterverzeichnis "Versteckt" liegt.

(1) Diesmal benötigen wir den Buchungsdialogeditor: Eingabe - Dialoge editieren - Buchungsdialog.

Öffnen Sie zu Ihrer eigenen Orientierung zusätzlich zum Dialogeditor einen Standard-Buchungsdialog und richten Sie die drei Fenster so am Bildschirm aus, dass Sie alle drei Fenster sehen können.

Als Titel des Dialogfensters wählen wir z.B. "nachprogrammierter Buchungsdialog".

(2) Die Dialogelemente für die oberen drei Dialogfelder Belegnummer, Datum und Buchungstext finden Sie unter Element - Textfelder: Hier benötigen Sie die Dialogeelemente Belegnummer, Datumsfeld, Eingabefeld. Das Eingabefeld für den Buchungstext müssen Sie natürlich auf eine große Länge ziehen, indem Sie das mittlere schwarze Quadrat mit der Maus greifen.

(3) Alle diese Eingabefelder sollten zusätzlich noch mit fixem Text überschrieben werden, damit der Benutzer weiß, was die Eingabefelder bedeuten: Element - Textfelder - Fixer Text.

Um ein Dialogelement mit derselben Schrift zu duplizieren, selektieren Sie es durch einen Einfachklick, kopieren es in die Zwischenablage mit Strng-Einfg und holen es gleich mit Großschr-Einfg wieder aus der Zwischenablage heraus. Oder sie selektieren es einfach, bevor Sie ein neues Element erzeugen lassen. Das neue Element erhält die Schrift des vorher selektierten Elements.

(4) Nun sollten wir den begonnenen Dialog das erste Mal abspeichern: Dialog - Speichern unter.

(5) Wenden wir uns nun der Auswahl eines Soll- und eines Haben-Kontos zu.

Wir beginnen mit zwei Konten-Auswahlfeldern für die Soll- und Haben-Buchung: Element - Konten - Auswahlfeld. Lassen Sie darüber noch eine Zeile Platz für die spätere Radioauswahl. Wie schon im Standard-Buchungsdialog sollten Sie auch hier das Auswahlfeld für eine Soll-Buchung etwas nach links und für die Haben-Buchung etwas nach rechts rücken. Ziehen Sie die Auswahlfelder möglichst lang. Je länger die Auswahlfelder sind, desto weniger kurz werden die Kontobezeichnungen abgekürzt. Der Abkürzungsmechanismus für lange Konto-Erklärungstexte ist immer aktiviert.

(6) Spendieren Sie nun noch jedem der zwei Konten-Auswahlfelder je einen Button zum Aktivieren des Kontendialoges: Element - Konten - Button Kontendialog und legen als Text für den einen Button "Soll" und für den anderen "Haben" fest. Die Buttons sind mit den Konto-Auswahlfeldern verbunden, indem das Konto-Auswahlfeld das räumlich nächste zum Button ist. Sie müssen nichts weiter hierfür tun.

(7) Jetzt wird es etwas komplizierter, weil wir nicht einfach eine Kontenauswahl, sondern auch eine Vorauswahl von Kontenmengen per Radiobuttons erzeugen wollen, wie dies auch im Standard-Buchungsdialog von TEXTBUCH der Fall ist. Die vorher ausgesparte Radioauswahl erzeugen wir mit Element - Radioauswahl - sonstige und ziehen sie lang, bei geringer Höhe.

Standardmäßig werden Radioauswahl-Elemente untereinander geschrieben. Wir möchten nun aber die vier Auswahlmöglichkeiten nebeneinander anordnen und haben somit vier Spalten. Die Ziffer 4 wird durch ein Apostroph-Zeichen von der Überschrift des Radiobuttons getrennt. Da die Spaltenzahl immer an zweiter Stelle steht, müssen wir davor noch den Standardwert für die Radioauswahl angeben, wobei wir eine "Null" für "keine Vorauswahl" verwenden. Als Überschrift schreiben wir erst einmal XXX. Die einzelnen Wahlmöglichkeiten der Radiobuttons werden mit dem Oder-Zeichen | getrennt.


XXX'0'4|Aufwand|Ertrag|Neutral|Korr

Jetzt sollten Sie die Radiobuttons schon in ihrer endgültigen Form sehen. Es ist aber noch keine Funktion enthalten.

Wir müssen nun Soll-Kontenmengen und Haben-Kontenmengen vergeben, durch Apostroph-Zeichen getrennt. Wenn eine Aufwandsbuchung durchgeführt wird, so wird im Soll ein Aufwandskonto und im Haben ein Bestandskonto bebucht. Also schreiben wir anstelle von "Aufwand":


Aufwand'AUFWANDSKONTEN'BESTANDSKONTEN

Für die anderen Auswahlmöglichkeiten müssen ebenfalls zwei Konten angegeben werden. Der endgültige Text für die Radioauswahl lautet:


XXX'0'4|Aufwand'AUFWANDSKONTEN'BESTANDSKONTEN|Ertrag'BESTANDSKONTEN'ERTRAGSKONTEN|Neutral'BESTANDSKONTEN'BESTANDSKONTEN|Korrektur'KONTEN'KONTEN

Mit diesem Text sind wir schon bei über 200 Zeichen. Mehr als 255 Zeichen dürfen einem Dialogelement als Text nicht übergeben werden. Bei größeren Mengen an derartigen Informationen schreiben Sie einen Dateinamen in das Textfeld, der mit ".TXT" oder mit ".LST" endet. Ein Doppelklick öffnet den Texteditor. Statt dem | "Oder" Zeichen wird eine neue Zeile begonnen, es gibt dann gar keine Beschränkungen mehr hinsichtlich der Menge der Daten.

Wir müssen nun mit der "Verdrahtung" der Dialogelemente fortfahren. Den Ausdruck XXX ersetzen wir nun durch Elementvariablen, die für das jeweilige Konto stehen:


<KONTO1>:<KONTO2>

Der Text für die Radioauswahl lautet nun also:


<KONTO1>:<KONTO2>'0'4|Aufwand'AUFWANDSKONTEN'BESTANDSKONTEN|Ertrag'BESTANDSKONTEN'ERTRAGSKONTEN|Neutral'BESTANDSKONTEN'BESTANDSKONTEN|Korrektur'KONTEN'KONTEN

Die zwei Kontenauswahl-Felder müssen jetzt als Text Kontenmengen enthalten. Wenn es keine Radio-Vorauswahl gäbe, so würde man als Text für eine Kontenauswahl z.B. festlegen:


AUFWANDSKONTEN

Hier ist dank der Radioauswahl die Kontenmenge für jede Kontenauswahl variabel. Statt einer konkreten Kontenmenge verwenden wir die Elementvariable


<RADIO1.2>

bei der Kontenauswahl für die Sollbuchung und <RADIO1.3> für die Kontenauswahl der Habenbuchung. Drückt der spätere Benutzer einen Radiobutton, so wird <RADIO1.2> bzw. <RADIO1.3> durch den entsprechenden Wert, z.B. "AUFWANDSKONTEN", ersetzt und die Kontenauswahl lädt die entsprechenden Konten.

Nun speichern wir mit der Taste Speichern den aktuellen Buchungsdialog und drücken auf testen. Drücken Sie nun einen Radiobutton und sehen nach, welche Konten in der jeweiligen Kontenauswahl aufgelistet sind.

(8) (optional) Nun wenden wir uns den Gegenständen zu, wenn Sie bei Ihren Buchungen Gegenstände verwenden. Wie im Standard-Buchungsdialog benötigen wir zweimal ein Pärchen Gegenstands-Auswahlfeld plus Zahlenfeld, einmal für die Soll-Seite und einmal für die Haben-Seite. Für das Soll- und das Habenkonto wählen Sie ein Gegenstands-Auswahlfeld aus (Element - Gegenstände - Auswahlfeld) und docken daran ein normales Zahlen-Eingabefeld für die Stückzahl (Element - Zahlenfelder - Zahl editierbar), das vom Programm automatisch durch seine Nähe verbunden wird. Wichtig ist hier die Verwendung von "Zahl" und nicht von "Betrag", weil Beträge auf zwei Stellen hinter dem Komma fixiert sind, während Gegenstände beliebige Kommastellen haben können. Das Andocken an ein Gegenstands-Auswahlfeld funktioniert auch grundsätzlich nur mit Zahlenfeldern, nicht aber mit Betragsfeldern.

Befindet sich ein Betragsfeld in der Nähe, so findet eine ggfs. eine zweite Andockung statt: Mit Auswahl eines Gegenstandes wird der Wert des Gegenstandes in das (Euro-) Betragsfeld vom Programm eingesetzt. Das ist beispielsweise zum Herausbuchen bezahlter Rechnungen sinnvoll.

Grundsätzlich findet ein Andockvorgang statt, wenn das Dialogfeld näher als 80 Pixel vom Gegenstandsauswahl-Feld entfernt liegt.

Die Verbindung Kontenauswahl - Gegenstandsauswahl müssen Sie selbst durchführen, indem Sie dem Gegenstands-Auswahlfeld die zugehörige Kontenauswahl als Elementvariable übergeben, indem Sie z.B. als Text wählen: <KONTO1>. Wenn Sie jeweils zuerst das Soll- und dann das Haben-Feld erzeugt haben, wird, muss GEGAUSWAHL1 den Text <KONTO1> und GEGAUSWAHL2 den Text <KONTO2> erhalten.

(9) Für die Behandlung der Mehrwertsteuer gibt es fertige Radiobuttons unter Element - Radioauswahl. Um einen Standardwert festzulegen, fügen Sie ans Ende der Überschrift noch '1 für das erste Radioauswahl-Element oder '2 für das zweite usw. an, wie dies soeben unter (7) beschrieben wurde.

Statt einem fixen Standardwert ist es aber intelligenter, dem Programm den korrekten Standardwert anhand der Auswahl des Soll- und des Habenkontos auszuwählen. Hierfür schreiben Sie statt der Ziffer einen Ausdruck SOLLKONTO:HABENKONTO. Konkret heißt das bei Mehrwertsteuer-Radioauswahl und Brutto/Netto-Auswahl:


Mwst.'<KONTO1>:<KONTO2>|null'o|halb'h|voll'v' Brutto/Netto'<KONTO1>:<KONTO2>|brutto'b|netto'n'

Sonst sind diese speziellen Radioauswahlen nichts anderes als eine allgemeine Radioauswahl, aber mit vordefiniertem Inhalt. Den Inhalt können Sie im Detail auch wieder anpassen. Schweizer und Österreicher müssen noch von Hand den Sonder-Mwst-Satz hinzufügen. Die Radioauswahl "Netto-Brutto-Buchung" können Sie genauso direkt verwenden. Sie dürfen auch die Reihenfolge der Einträge vertauschen, ohne dass die Ermittlung des Standardwertes über Konten damit Probleme hätte.

(10) Für den Betrag wählen Sie Element - Zahlenfeld - Betrag editierbar. Wichtig ist hierbei "Betrag". Denn die alternativen Zahlenfelder sind nicht auf 2 Zeichen hinter dem Komma festgelegt, dies benötigen wir aber für Geldbeträge.

Im Prinzip können Sie den im vorangegangenen Kapitel beschriebenen Währungsrechner in diesen Buchungsdialog integrieren. Sie benötigen dann im Währungsauswahl-Feld eine Zeile mit "EUR" und einem "Umrechnungsfaktor" von 1,000. Der Betrag in ggfs. Fremdwährung wird in das Betrags-Eingabefeld geschrieben und gleich in einem fixen Betragsfeld in EUR angezeigt; der Eintrag "EUR" sollte dann auch gleich der Standardwert beim Öffnen des Dialoges sein. In der Schablonendatei muss dann allerdings der Betrag im fixen Betragsfeld und nicht der Betrag im editierbaren Feld abgefragt werden.

(11) Zum Schluss benötigen wir noch die bis zu vier Ende-Buttons, "Übertragen", "+nächster", die Sie unter Elemente - Ende-Buttons finden. Wenn Sie keine Ende-Buttons in den Buchungsdialog einbauen, könnte der künftige Benutzer nur den Dialog mit dem standardmäßigen X-Button wegklicken, was "Verwerfen" entspräche.

(12) Nun speichern wir den Dialog nochmals und wenden uns der Schablonendatei zu. Hierzu wählen wir den Menüpunkt Ansicht - Schablonendatei. Hier schreiben wir nun den Text, der anhand der Informationen im Dialog in den Buchungseditor übertragen werden soll, wenn der Benutzer auf einen der Ende-Buttons (außer "Verwerfen") drückt.

Wenn Sie Dialogelemente desselben Typs in der selben Reihenfolge erzeugt haben wie in diesem Tutorial, sollte der richtige Text für die Schablonendatei unseres Dialogs lauten:


<BELEGNR1> <DATUM1> <EINGABE1> <RADIOMWST1.2><RADIOBN1.2> <KONTO1>:<KONTO2> <BETRAG1>

Diese Zeile können Sie über die Zwischenablage in die Schablonendatei kopieren.

Um den jeweiligen Namen des Dialogelementes zu erfahren, fahren Sie am einfachsten mit der Maus über das fragliche Dialogelement und lesen am Fensterrand unten links den Namen ab.

Denken Sie daran, dass wenn Sie den Dialog verändern, dies häufig auch Änderungen in der Schablonendatei erforderlich macht.

Die Leerzeichen zwischen den Elementvariablen bleiben unverändert stehen, d.h. es findet keine Formatierung statt.

(13) Wenn Sie Gegenstände programmiert haben, so müssen Sie in der Schablonendatei vor oder nach <EINGABE1> noch den entsprechenden Ausdruck für Gegenstände schreiben:


[<ZAHL1> <GEGAUSWAHL1>:<ZAHL2> <GEGAUSWAHL2>]

Wenn keine Gegenstände angegeben wurden, so werden beim Übertragen in den Buchungseditor automatisch die eckigen Klammern bzw. der Doppelpunkt weggelassen.