alle Rechte bei: Jeanette Winzenburg, Arndtstr. 12, 1000 Berlin 61
Testen Sie das Programm nach Herzenslust, aber denken Sie daran, da
es sich um eine Shareware-Version handelt: wenn Sie es regelm
ig benutzen, sp
testens aber nach Ablauf der Testzeit von 3 Monaten, m
ssen Sie eine registrierte Version (zum fairen Preis von 60,00 DM bei Vorkasse; bei Nachnahme + 6,- DM) erwerben. Die Datei REGFORM.TXT enth
lt ein Registrierungsformular, bereit zum Ausdrucken und Abschicken. -
Eine Registrierung bringt einige Vorteile:
- Sie erhalten 50% Rabatt auf das n
chste Update. - Sie erhalten den vollst
ndigen Quelltext. - Sie k
nnen in den Genu
von immer besseren Progammiertools kommen, weil Sie die weitere Programmentwicklung f
rdern. ,
Inhalt
Programmidee
Optik
Funktions
bersicht
Funktionen
Einzelnen
Fehlerbehandlung
Grenzen - was TVDialogEd nicht kann/k
nnen will
Kessel
Buntes
Hinweise
weiter
Programmidee
TVDialogEd ist eine Turbo Vision Applikation, mit der interaktiv am Bildschirm ein Dialogfenster f
r Turbo Vision erstellt und/oder ver
ndert werden kann.
Die Leitidee bei der Programmentwicklung war, einen Dialog m
glichst ausschlie
lich nach dem optischen Eindruck aufzubauen und den/die ProgrammiererIn vollst
ndig von der l
stigen Aufgabe des Zeilen- und Spaltenz
hlens zu entlasten. Eine Folge davon ist, da
die einzuf
genden Dialogelemente ihre Ausdehnung soweit wie m
glich und sinnvoll selbst festlegen, ohne die Gestaltungsm
glichkeiten der DialogentwicklerInnen zu sehr einzuschr
nken.
Das Programm ist sehr robust gegen Fehlbedienungen: im Kontext unsinnige Funktionen sind in der Regel gesperrt, unerlaubte Eingaben werden ignoriert, Datenverluste sind durch Sicherheitsabfragen nahezu ausgeschlossen. A
Auf eine Fehler
berpr
fung bezogen auf die Anordnung der Elemente relativ zueinander wird allerdings verzichtet: so ist es durchaus m
glich - wenn auch v
llig unsinnig - mehrere Dialogelemente
bereinanderzustapeln: F
r eine "vern
nftige" Dialoggestaltung ist eben ausschlie
lich der/die ProgrammiererIn verantwortlich.
weiter zur
Optik
Nach dem Start zeigt sich TVDialogEd im gewohnten TurboVision-Look mit Men
zeile, Desktop und Statuszeile - das Hinweisfenster erinnert Sie daran, da
eine Registrierung durchaus Vorteile bringt...
In der Statuszeile werden die wichtigsten Befehle angezeigt, zus
tzlich ist rechts unten der freie Heap eingeblendet, bei < 20k in roter Schrift.
weiter zur
Funktions
bersicht
Mit den unter Turbo Vision
blichen Mitteln - Men
auswahl, Hotkey, Mausclick - wird ein im folgenden Entwurfsdialog genanntes Fenster aufgespannt, vergr
ert, verkleinert oder verschoben.
Es stellt einen Cursor als aktuelle Position bereit, an der die Dialogelemente TStaticText, TLabel, TInputline - wahlweise mit THistory - TButton, TCheckboxes,
TRadiobutton und TListbox eingef
gt werden k
nnen. Die Funktionalit
t dieser Elemente ist im Entwurfsdialog gesperrt, so kann z. B. in eine TInputline kein Text eingegeben werden. Der Cursor positioniert sich in Abh
ngigkeit von der Gr
e des eingef
gten Elements neu. Er kann au
erdem mit Maus oder Tastatur beliebig innerhalb des Fensters bewegt werden.
Jedes eingef
gte Element kann mit Maus/Tastatur selektiert und danach ver
ndert, gel
scht oder verschoben werden, bis das Erscheinungsbild des Dialogs den eigenen Vorstellungen entspricht.
Bei Verschiebungen und/oder Gr
enver
nderungen passen sich die Elemente an den "verf
gbaren Platz" im Dialogfenster an. Dieser wird aus der Position des Elements und den Grenzen des Entwurfsdialogs berechnet, andere Elemente haben dagegen keinen Einflu
auf die Berechnung.
Wird umgekehrt die Gr
Fensters ver
ndert, so kann ein Dialogelement seine Position wahlweise relativ zur linken oberen oder zur rechten unteren Ecke des Fensters konstant halten. Bei Verkleinerung des Fensters wird sichergestellt, da
der Dialog keine Elemente "verlieren" kann. j
Der fertig bearbeitete Dialog kann als Standardobjekt TDialog in einem Datei-Stream gespeichert werden, so da
er direkt von Anwendungsprogrammen eingelesen werden kann. Umgekehrt kann jedes in einem Datei-Stream
gespeicherte Standard-TDialog- Objekt direkt in TVDialogEd eingelesen und bearbeitet werden - allerdings darf es nur die Standard-TViews enthalten.
Daneben besteht die M
glichkeit, einen bearbeiteten Dialog als Pascal Sourcecode (TP 6.0) zu speichern; dabei wird zus
tzlich die Typdeklaration des f
r die Daten
bergabe notwendige Datenrecord eingef
weiter zur
Die Funktionen im Einzelnen
Als Turbo Vision Applikation h
lt sich die Programmbedienung an die von Pascal 6.0 gewohnten IDE-Konventionen, die hier nicht wiederholt werden. In der Regel sind nur die im Kontext sinnvollen Aktionen aktivierbar. *
Die Men
zeile hat folgende Auswahlmen
Datei Dateioperationen
Dialog Funktionen f
r den Entwurfsdialog
NeueElementeEinf
gen von Dialogelementen
Elemente Funktionen f
r das selektierte Dialogelement
Optionen Vorgabeeinstellungen
weiter zur
Der Men
punkt Datei
Er enth
lt die Funktionen f
r alle unterst
tzten Dateioperationen, zur Programmunterbrechung und zum Programmende. O
Lesen
Sichern
Sichern
Quelltext
Verzeichnis
wechseln
DOS-Shell
Exit
weiter zur
Lesen
ffnet einen Dateidialog, mit dem eine Datei zum Lesen ausgew
hlt werden kann, die Vorgabe f
r die Dateikennung ist ".STM". Enth
lt die Datei am Anfang ein Objekt vom Typ TDialog, wird daraus ein Entwurfsdialog aufgebaut und in den Desktop eingef
gt, andernfalls erfolgt eine Fehlermeldung. Gibt es bereits einen Entwurfsdialog auf dem Desktop, ist dieser Befehl gesperrt.
weiter zur
Sichern
ffnet einen Dateidialog, mit dem eine Datei zum Speichern des Entwurfsdialogs als TDialog-Objekt ausgew
hlt werden kann, die Vorgabe f
r die Dateikennung ist ".STM". Existiert die gew
hlte Datei bereits, so wird eine Backup-Datei mit der Dateikennung ".JBK" angelegt. Der Entwurfsdialog wird geordnet (s. Dialog/Ergebnis) und daraus ein Objekt TDialog erzeugt, das in der Datei gespeichert wird. Der Entwurfsdialog bleibt zur weiteren Bearbeitung auf dem Desktop. Ist kein Entwurfsdialog auf dem Desktop, so ist dieser Befehl gesperrt.
weiter zur
Sichern als Quelltext
ffnet einen Dateidialog, mit dem eine Datei zum Speichern des Entwurfsdialogs als TDialog-Objekt ausgew
hlt werden kann, die Vorgabe f
r die Dateikennung ist ".JWD". Existiert die gew
hlte Datei bereits, so wird sie ohne Nachfrage
berschrieben. Der Entwurfsdialog wird geordnet (s. Dialog/Ergebnis) und daraus Pascal 6.0 Sourcecode erzeugt, der in der Datei als Text gespeichert wird. Dabei wird zuerst der Sourcecode f
r den erforderlichen Datenrecord geschrieben. Jedes Element erzeugt die von ihm geforderte Typbezeichnung, als Variablennamen werden die ersten 10 Buchstaben des zugeh
rigen Labels benutzt. Anschlie
end wird Code f
r eine "Procedure DialogInit(var D: PDialog)" geschrieben, die bei Ausf
hrung in D einen Zeiger auf einen initialisierten TDialog
bergibt. Der Entwurfsdialog bleibt zur weiteren Bearbeitung auf dem Desktop. Ist kein Entwurfsdialog auf dem Desktop, so ist dieser Befehl gesperrt.
weiter zur
Verzeichnis wechseln
ffnet einen ChangeDirDialog.
DOS-Shell
wechselt zur DOS-Ebene, wenn der Arbeitsspeicher ausreicht; R
ckkehr wie
blich mit "Exit".
Exit
Programmende; ist ein Entwurfsdialog auf dem Desktop, wird eine Datenspeicherung vorgeschlagen.
weiter zur
Der Men
punkt Dialog
Er enth
lt die Funktionen, die den Entwurfsdialog betreffen. Es kann jeweils nur ein Dialog bearbeitet werden. :
schen
Titel
Verschieben/Resize
Zoom
Ergebnis
weiter zur
Ein leerer Entwurfsdialog wird erzeugt und in den Desktop eingef
gt. Ein Cursor markiert die aktuelle Einf
geposition f
r die Dialogelemente. Er kann mit den Richtungstasten bewegt oder durch Druck auf die rechte Maustaste an die Mausposition versetzt werden. Gibt es bereits einen Entwurfsdialog auf dem Desktop, ist dieser Befehl gesperrt.
schen
Der Entwurfsdialog wird vom Desktop entfernt, vorher wird eine Datenspeicherung vorgeschlagen. Diese Aktion wird auch bei Anklicken des Schlie
feldes ausgef
hrt.
weiter zur
Titel
Es wird ein Dialogfenster ge
ffnet, mit dem der Titel des Anwendungsdialogs ge
ndert werden kann. Die Vorgabe f
r den Titel ist ''; er wird nur im Ergebnis (s. Dialog/Ergebnis), nicht aber im Entwurfsdialog angezeigt.
weiter zur
Verschieben/Resize
Der Entwurfsdialog wird im TV-
blichen Verschiebemodus verschoben, vergr
ert oder verkleinert. Eine Verkleinerung geht nur soweit, da
jedes eingef
gte Elememt noch mit seiner minimal notwendigen Gr
e enthalten ist.
Zoom
Die Gr
e des Entwurfsdialogs wird zwischen Zoomrect/voller Bildschirm umgeschaltet.
weiter zur
Ergebnis
Der Entwurfsdialog wird so angezeigt, wie er in der Anwendung erscheint. Dazu wird zuerst die Z-Ordnung der Dialogelemente entsprechend ihrer Position eingestellt (s. Optionen/Ordnungsrichtung). Elemente vom Typ TCluster werden dabei eventuell verschoben:sie werden linksb
ndig unter dem Leitfeld (s. NeueElemente/Checkboxes) angeordnet, wobei jedes Auswahlfeld eine neue Zeile belegt. Die Anzeige wird mit Esc oder Bet
tigen eines Aktionsschalters beendet.
weiter zur
Der Men
punkt NeueElemente
Er enth
lt alle Funktionen zum Einf
gen eines neuen Dialogelements. TLabel k
nnen nur in Verbindung mit anderen Elementen eingef
gt werden. Bei Anwahl eines Unterpunktes wird ein Dialog erzeugt, mit dem man alle wichtigen Parameter des neu einzuf
genden Elements festlegen kann. Ist der verf
gbare Platz an der Einf
geposition nicht ausreichend, wird ein Fehler erzeugt. Bei Fehlern oder Abbruch des Dialogs wird kein Element eingef
gt. Diese Funktionen sind gesperrt, wenn kein Entwurfsdialog auf dem Desktop ist. Y
Eingabezeile
Text
Aktionsschalter
Okbutton,
EscButton,
YesButton,
NoButton
Listbox
weiter zur
Eingabezeile
Ein neues Element vom Typ TInputline wird eingef
gt. Abgefragt werden Labelname und L
nge des Eingabetextes (TInputline.maxlen). Als Option kann festgelegt werden, ob die L
nge von der globalen maximalen Zeilenl
nge begrenzt werden soll. Dies ist nur sinnvoll, wenn man rechts neben langen Eingabezeilen noch andere Dialogelemente einf
gen m
chte. Zus
tzlich kann als Option eine Historyliste eingef
gt werden.
weiter zur
Text
Ein neues Element vom Typ TStatictext wird eingef
gt. Abgefragt wird der Text. Ist der
bergebene Text leer, so wird ein Platzhaltertext eingef
weiter zur
Aktionsschalter
Ein neues Element vom Typ TButton wird eingef
gt. Abgefragt werden Schalterbeschriftung, Name des verbundenen Kommandos, Zahlenwert des Kommandos und der Zustand von TButton.flags. Der Zahlenwert des Kommandos wird bei Sicherung im Stream verwendet, der Name bei Sicherung als Sourcecode. Es liegt in der Verantwortung der ProgrammierInnen, daf
r zu sorgen, da
beides zusammenpa
t. Ist kein Kommandoname vorhanden, so wird auch im Sourcecode die Zahl verwendet. +
OkButton, EscButton, YesButton, NoButton
Es wird jeweils ohne Abfrage ein entsprechender Button eingef
gt, die Turbo Vision Standardkommandos werden benutzt. OkButton erh
lt den Status bfDefault.
weiter zur
Checkboxes, Radiobuttons
Ein neues Element vom Typ TCheckboxes bzw. TRadiobuttons wird eingef
gt. Abgefragt werden Labelname und Name des Auswahlfeldes. Dieses Auswahlfeld ist das Leitfeld des gesamten Clusters; es wird hervorgehoben dargestellt. Es gilt als Link f
r den Label. Wird es gel
scht, so l
scht man den gesamten Cluster. Neue Auswahlfelder zu dem Cluster werden mit der Funktion Elemente/Erweitern erzeugt.
weiter zur
Listbox
Ein neues Element vom Typ TListbox wird eingef
gt. Abgefragt werden Labelname, Breite, H
he und Anzahl der Spalten. Als Option kann ein Rollbalken, entweder vertikal oder horizontal, eingef
gt werden.
weiter zur
Der Men
punkt Elemente
Er enth
lt alle Funktionen, die das im Entwurfsdialog selektierte Element betreffen. Mit den
blichen Tasten Tab und Shift-Tab wird das selektierte Element gewechselt. Diese Funktionen sind gesperrt, wenn kein Entwurfsdialog auf dem Desktop ist. Y
Edit
Cluster
erweitern
schen
Verschieben
Befestigen/l
Alle
befestigen/l
weiter zur
Editieren
Das selektierte Dialogelement
ffnet einen Dialog, mit dem alle Parameter ge
ndert werden k
nnen.
Cluster erweitern
Ist das selektierte Element vom Typ TCluster, wird hiermit ein weiteres Auswahlfeld angelegt. Der Label des Clusters wird angezeigt, kann aber nicht ver
ndert werden.
weiter zur
schen
Das selektierte Dialogelement wird aus dem Entwurfsdialog entfernt. Ein zugeh
riger Label wird ebenfalls entfernt. Ist ein Label selektiert, so wird der Link auch gel
scht. Ein Element vom Typ TCluster wird mit allen Auswahlfeldern gel
scht, wenn das hervorgehobene Leitelement selektiert ist.
weiter zur
Verschieben
Der TV-
bliche Verschiebemodus wird f
r das selektierte Element eingestellt; jedes Element kann auch durch Ziehen mit der Maus verschoben werden.
Befestigen/L
Der "Befestigungsbezug" des selektierten Elements wird umgeschaltet, er ist entscheidend f
r die Position des Elements bei Gr
nderungen des Entwurfsdialogs: im befestigen Zustand bleibt sie relativ zur rechten unteren, um gel
sten relativ zur linken oberen Ecke konstant. Der befestigte Zustand wird optisch durch ein Sternchen links oben im Element gekennzeichnet. Die Umschaltung kann auch durch Doppelclick auf die linke Maustaste erfolgen.
Alle Befestigen
Alle L
Der Befestigungszustand wird f
r alle eingef
gten Elemente entsprechend gesetzt.
weiter zur
punkt Optionen
Er enth
lt Funktionen, mit denen verschiedene Vorgaben eingestellt werden k
nnen. !
Ordnungsrichtung
Begrenzungen
weiter zur
Ordnungsrichtung
legt die Vorzugsrichtung bei der Einstellung der Z-Ordnung im Anwendungsdialog fest. Dabei bedeutet der Zustand "Zeilen" eine Einf
gung von links nach rechts, der Zustand "Spalten" eine Einf
gung von oben nach unten. Diese Funktion ist gesperrt, wenn kein Entwurfsdialog auf dem Desktop ist.
weiter zur
Begrenzungen
ffnet ein Dialogfenster, mit dem die programmglobalen Begrenzungen eingestellt werden k
nnen.
Zeilenl
Die maximale Zeilenl
nge f
r Eingabezeilen wird festgelegt. Sie ist nur in den Eingabezeilen wirksam, deren Option "Grenze beachten" gesetzt ist. Die Vorgabe ist 20; beim Einlesen eines Dialogs vom Stream wird sie auf die L
nge der l
ngsten gefundenen Eingabezeile gesetzt.
Schalterbreite:
Die Breite der Aktionsschalter wird ge
ndert. Die Vorgabe ist 12. Beim Einlesen eines Dialogs vom Stream wird sie auf die Breite des ersten gefundenen TButtons gesetzt.
weiter zur
Fehlerbehandlung
Tritt bei der Ausf
hrung einer Funktion ein Fehler auf, stellt TVDialogEd so weit wie m
glich den Zustand vor dem Aufruf der Funktion wieder her und zeigt eine Fehlermeldung.
Eine Ausnahme bilden die Funktionen zum Einf
ndern der Dialogelemente: unsinnige Eingaben werden ignoriert. Dies ist m
glich, weil alle
nderungen in der Regel sofort auf dem Bildschirm sichtbar werden. ^
Die Fehlermeldung erkl
rt das Problem meist ausreichend, au
er vielleicht bei den Folgenden: #
- Nicht gen
gend Platz im Dialog
der Cursor im Entwurfsdialog steht so, da
das einzuf
gende Element nach rechts und/oder nach unten nicht mehr gen
gend Platz hat; Cursor versetzen und/oder Dialog vergr
ern und nochmal probieren.
- Fehler bei Anordnung
Bei Einstellung der Z-Ordnung vor einer Speicherung oder der Funktion Dialog/Ergebnis ben
tigt ein Element mehr Platz als vorhanden ist. Zur Zeit kann das nur ein TCluster sein: Entweder den Dialog vergr
ern oder das Leitfeld des Verursachers verschieben. u
Die n
chsten beiden Meldungen sollten wirklich n i e auftreten! Wenn doch, bitte Umst
nde merken und mir mitteilen. 2
- Stream-Fehler (stPutError): Contact Operator.
- Nicht identifizierter Fehler
weiter zur
Grenzen - was TVDialogEd nicht kann/k
nnen will
- Die Ordnung der Elemente erfolgt entweder von links nach rechts oder von oben nach unten. Eine gemischte Festlegung durch Einzelvorgaben ist nicht m
glich.
- Die Dialogelemente nehmen sich gegenseitig nicht als Hindernisse wahr. Es liegt in der Verantwortung der ProgrammiererIn, sie nicht
bereinanderzustapeln. R
- Der Cursor wird nach dem Einf
gen automatisch nur in Y-Richtung verschoben. I
- Innerhalb eines Dialogs haben alle Aktionsschalter gleiche Breite. j
- Der Druckzustand eines TClusters kann nicht eingestellt werden; es ist immer value = 0 im Ergebnis.
weiter zur
Ein Kessel Buntes - Hinweise
- F
r die Sch
nheit h
lt TVDialogEd am linken und rechten Rand jeweils eine Spalte frei, in die kein Element geschoben/eingef
gt werden darf.
- TLabel und TButton haben am linken Rand immer ein Blank - das ist aber nicht meine Idee, Turbo Vision war's: bei Monochrom-Bildschirmen benutzt es diese Position zur Hervorhebeung. Aus Kompatibilit
nden habe ich die Blanks beibehalten.
- Bei der Anzeige eines Ergebnisdialogs, der ein TCluster enth
lt, kommt der Hilfekontext durcheinander, wenn h
here Schaltfelder selektiert sind (sel > 0): TV findet dann helpctx = sel statt helpctx = owner^.helpctx + sel. Unsch
n aber harmlos. q
- TVDialogEd ist exzessiv dynamisch programmiert. Heapoverflows sind trotzdem nahezu ausgeschlossen, weil konsequent die Sicherheitszone (s. TV Handbuch) beachtet wird. Es gibt allerdings eine Situation, in der diese Ma
nahme wirkungslos ist: wenn ein Dialog
Stream
gelesen wird,
berpr
ft der Load-Konstruktor zwischendrin den Speicher nicht. Das macht meistens keine Probleme, weil gen
gend Speicher vorhanden ist und ein "normaler" Dialog nicht mehr als 5 - 10k verbraucht. Zur Sicherheit fragt TVDialogEd vor dem Einlesen aber noch mal nach, wenn zu diesem Zeitpunkt der Heap
20k ist (daher die rote Anzeige!). `
- Zur Speicherung als Quellcode mu
etwa 15k Heap frei sein, im Stream braucht man weniger.
- In der - auch in TVDialogEd eingesetzten - TV Unit Stddlg ist im TFiledialog ein Bug, der das Programm sang- und klanglos abst
rzen l
t, wenn auf einem Diskettenlaufwerk beim
ffnen des Filedialogs keine Datei mit dem
bergebenen Dateinamen zu finden ist. Als "quick and dirty"-L
sung legt TVDialogEd deshalb eine Datei "DUMMY.STM" bzw. "DUMMY.JWD" an, wenn er im aktuellen Verzeichnis keine STM- bzw. JWD-Datei findet. Sorry! o
- TV
bernimmt die Fehlerbehandlung bei Disk-Errors:in der Statuszeile erscheint dann eine - englische - Fehlermeldung. Wie schon in der TV-Dokumentation erw
hnt, mu
man dann in der Regel mehrfach Esc bzw Enter dr
cken. Eventuell ist auch die dann folgende Messagebox unpassend. Nun aber nicht die Nerven verlieren, sondern Fehler beheben und nochmal probieren!