home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Kurzbeschreibung TVDialogEd
- Version 1.00 - Mär. 1993
-
- alle Rechte bei: Jeanette Winzenburg
- Arndtstr. 12, W-1000 Berlin 61 (ab 7/93: 10965 Berlin)
-
- 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
- Programmiertools kommen, weil Sie die weitere
- Programmentwicklung fördern.
-
-
-
-
-
- Inhalt
-
- Programmidee
- Optik
- Funktionsübersicht
- Die Funktionen im Einzelnen
- Fehlerbehandlung
- Grenzen - was TVDialogEd nicht kann/können will
- Ein Kessel Buntes - Hinweise
-
-
-
-
- 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.
-
- 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.
-
-
- 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.
-
-
- 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öße des 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.
-
- 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 er 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ügt.
-
-
- 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üs:
- Datei Dateioperationen
- Dialog Funktionen für den Entwurfsdialog
- NeueElemente Einfügen von Dialogelementen
- Elemente Funktionen für das selektierte
- Dialogelement
- Optionen Vorgabeeinstellungen
- Info Registrierung und Hilfe
-
-
- Der Menüpunkt Datei
-
- Er enthält die Funktionen für alle unterstützten
- Dateioperationen, zur Programmunterbrechung und zum
- Programmende.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
-
- Der Menüpunkt Dialog
-
- Er enthält die Funktionen, die den Entwurfsdialog
- betreffen. Es kann jeweils nur ein Dialog bearbeitet
- werden.
-
- Neu
- 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.
-
- Löschen
- Der Entwurfsdialog wird vom Desktop entfernt,
- vorher wird eine Datenspeicherung vorgeschlagen.
- Diese Aktion wird auch bei Anklicken des
- Schließfeldes ausgeführt.
-
- 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.
-
- 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.
-
- 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.
-
-
- 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.
-
- 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.
-
- Text
- Ein neues Element vom Typ TStatictext wird
- eingefügt. Abgefragt wird der Text. Ist der
- übergebene Text leer, so wird ein Platzhaltertext
- eingefügt.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- Lö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.
-
- 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ösen
- Der "Befestigungsbezug" des selektierten Elements
- wird umgeschaltet, er ist entscheidend für die
- Position des Elements bei Größenä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ösen
- Der Befestigungszustand wird für alle eingefügten
- Elemente entsprechend gesetzt.
-
-
- Menüpunkt Optionen
-
- Er enthält Funktionen, mit denen verschiedene Vorgaben
- eingestellt werden können.
-
- 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.
-
- Begrenzungen
- öffnet ein Dialogfenster, mit dem die
- programglobalen Begrenzungen eingestellt werden
- können.
- Zeilenlänge: 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.
-
-
- 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ügen/Ä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.
-
- Die nächsten beiden Meldungen sollten wirklich n i e
- auftreten! Wenn doch, bitte Umstände merken und
- mir mitteilen.
- - Stream-Fehler (stPutError): Contact Operator.
- - Nicht identifizierter Fehler
-
-
- 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.
-
- - Der Cursor wird nach dem Einfügen automatisch nur
- in Y-Richtung verschoben.
-
- - Innerhalb eines Dialogs haben alle Aktionsschalter
- gleiche Breite.
-
- - Der Druckzustand eines TClusters kann nicht
- eingestellt werden; es ist immer value = 0 im
- Ergebnis.
-
-
- 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 dieses Position zur Hervorhebung. Aus
- Kompatibilitätsgrü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.
-
- - 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 vom
- 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!
-
- - 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!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-