home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / tvision / tvdialog / dialoged.txt < prev    next >
Text File  |  1993-07-27  |  23KB  |  577 lines

  1.  
  2.  
  3.  
  4.        Kurzbeschreibung TVDialogEd
  5.        Version 1.00 - Mär. 1993
  6.  
  7.        alle Rechte bei: Jeanette Winzenburg
  8.        Arndtstr. 12, W-1000 Berlin 61 (ab 7/93: 10965 Berlin)
  9.  
  10.        Testen Sie das Programm nach Herzenslust, aber denken
  11.        Sie daran, daß es sich um eine Shareware-Version
  12.        handelt: wenn Sie es regelmäßig benutzen, spätestens
  13.        aber nach Ablauf der Testzeit von 3 Monaten, müssen Sie
  14.        eine registrierte Version (zum fairen Preis von 60,00
  15.        DM bei Vorkasse; bei Nachnahme + 6,- DM) erwerben. Die
  16.        Datei REGFORM.TXT enthält ein Registrierungsformular,
  17.        bereit zum Ausdrucken und Abschicken.
  18.  
  19.        Eine Registrierung bringt einige Vorteile:
  20.        - Sie erhalten 50% Rabatt auf das nächste Update.
  21.        - Sie erhalten den vollständigen Quelltext.
  22.        - Sie können in den Genuß von immer besseren
  23.        Programmiertools kommen, weil Sie die weitere
  24.        Programmentwicklung fördern.
  25.  
  26.  
  27.  
  28.  
  29.  
  30.        Inhalt                                   
  31.  
  32.        Programmidee                             
  33.        Optik                                    
  34.        Funktionsübersicht                       
  35.        Die Funktionen im Einzelnen              
  36.        Fehlerbehandlung                         
  37.        Grenzen - was TVDialogEd nicht kann/können will   
  38.        Ein Kessel Buntes - Hinweise
  39.  
  40.  
  41.  
  42.  
  43.        Programmidee
  44.  
  45.        TVDialogEd ist eine Turbo Vision Applikation, mit der
  46.        interaktiv am Bildschirm ein Dialogfenster für Turbo
  47.        Vision erstellt und/oder verändert werden kann.
  48.  
  49.        Die Leitidee bei der Programmentwicklung war, einen
  50.        Dialog möglichst ausschließlich nach dem optischen
  51.        Eindruck aufzubauen und den/die ProgrammiererIn
  52.        vollständig von der lästigen Aufgabe des Zeilen- und
  53.        Spaltenzählens zu entlasten. Eine Folge davon ist, daß
  54.        die einzufügenden Dialogelemente ihre Ausdehnung soweit
  55.        wie möglich und sinnvoll selbst festlegen, ohne die
  56.        Gestaltungsmöglichkeiten der DialogentwicklerInnen zu
  57.        sehr einzuschränken.
  58.  
  59.        Das Programm ist sehr robust gegen Fehlbedienungen: im
  60.        Kontext unsinnige Funktionen sind in der Regel
  61.        gesperrt, unerlaubte Eingaben werden ignoriert,
  62.        Datenverluste sind durch Sicherheitsabfragen nahezu
  63.        ausgeschlossen.
  64.  
  65.        Auf eine Fehlerüberprüfung bezogen auf die Anordnung
  66.        der Elemente relativ zueinander wird allerdings
  67.        verzichtet: so ist es durchaus möglich - wenn auch
  68.        völlig unsinnig - mehrere Dialogelemente
  69.        übereinanderzustapeln: Für eine "vernünftige"
  70.        Dialoggestaltung ist eben ausschließlich der/die
  71.        ProgrammiererIn verantwortlich.
  72.  
  73.  
  74.        Optik
  75.  
  76.        Nach dem Start zeigt sich TVDialogEd im gewohnten
  77.        TurboVision-Look mit Menüzeile, Desktop und Statuszeile
  78.        - das Hinweisfenster erinnert Sie daran, daß eine
  79.        Registrierung durchaus Vorteile bringt...
  80.  
  81.        In der Statuszeile werden die wichtigsten Befehle
  82.        angezeigt, zusätzlich ist rechts unten der freie Heap
  83.        eingeblendet, bei < 20k in roter Schrift.
  84.  
  85.  
  86.        Funktionsübersicht
  87.  
  88.        Mit den unter Turbo Vision üblichen Mitteln -
  89.        Menüauswahl, Hotkey, Mausclick - wird ein im folgenden
  90.        Entwurfsdialog genanntes Fenster aufgespannt,
  91.        vergrößert, verkleinert oder verschoben.
  92.  
  93.        Es stellt einen Cursor als aktuelle Position bereit, an
  94.        der die Dialogelemente TStaticText, TLabel, TInputline
  95.        - wahlweise mit THistory - TButton, TCheckboxes,
  96.        TRadiobutton und TListbox eingefügt werden können. Die
  97.        Funktionalität dieser Elemente ist im Entwurfsdialog
  98.        gesperrt, so kann z. B. in eine TInputline kein Text
  99.        eingegeben werden. Der Cursor positioniert sich in
  100.        Abhängigkeit von der Größe des eingefügten Elements
  101.        neu. Er kann außerdem mit Maus oder Tastatur beliebig
  102.        innerhalb des Fensters bewegt werden.
  103.  
  104.        Jedes eingefügte Element kann mit Maus/Tastatur
  105.        selektiert und danach verändert, gelöscht oder
  106.        verschoben werden, bis das Erscheinungsbild des Dialogs
  107.        den eigenen Vorstellungen entspricht.
  108.  
  109.        Bei Verschiebungen und/oder Größenveränderungen passen
  110.        sich die Elemente an den "verfügbaren Platz" im
  111.        Dialogfenster an. Dieser wird aus der Position des
  112.        Elements und den Grenzen des Entwurfsdialogs berechnet,
  113.        andere Elemente haben dagegen keinen Einfluß auf die
  114.        Berechnung.
  115.  
  116.        Wird umgekehrt die Größe des Fensters verändert, so
  117.        kann ein Dialogelement seine Position wahlweise relativ
  118.        zur linken oberen oder zur rechten unteren Ecke des
  119.        Fensters konstant halten. Bei Verkleinerung des
  120.        Fensters wird sichergestellt, daß der Dialog keine
  121.        Elemente "verlieren" kann.
  122.  
  123.        Der fertig bearbeitete Dialog kann als Standardobjekt
  124.        TDialog in einem Datei-Stream gespeichert werden, so
  125.        daß er direkt von Anwendungsprogrammen eingelesen
  126.        werden kann. Umgekehrt kann jedes in einem Datei-Stream
  127.        gespeicherte Standard-TDialog-Objekt direkt in
  128.        TVDialogEd eingelesen und bearbeitet werden -
  129.        allerdings darf er nur die Standard-TViews enthalten.
  130.  
  131.        Daneben besteht die Möglichkeit, einen bearbeiteten
  132.        Dialog als Pascal Sourcecode (TP 6.0) zu speichern;
  133.        dabei wird zusätzlich die Typdeklaration des für die
  134.        Datenübergabe notwendige Datenrecord eingefügt.
  135.  
  136.  
  137.        Die Funktionen im Einzelnen
  138.  
  139.        Als Turbo Vision Applikation hält sich die
  140.        Programmbedienung an die von Pascal 6.0 gewohnten IDE-
  141.        Konventionen, die hier nicht wiederholt werden. In der
  142.        Regel sind nur die im Kontext sinnvollen Aktionen
  143.        aktivierbar.
  144.  
  145.        Die Menüzeile hat folgende Auswahlmenüs:
  146.        Datei          Dateioperationen
  147.        Dialog         Funktionen für den Entwurfsdialog
  148.        NeueElemente   Einfügen von Dialogelementen
  149.        Elemente       Funktionen für das selektierte
  150.                      Dialogelement
  151.        Optionen       Vorgabeeinstellungen
  152.        Info           Registrierung und Hilfe
  153.  
  154.  
  155.        Der Menüpunkt Datei
  156.  
  157.        Er enthält die Funktionen für alle unterstützten
  158.        Dateioperationen, zur Programmunterbrechung und zum
  159.        Programmende.
  160.  
  161.        Lesen
  162.             Öffnet einen Dateidialog, mit dem eine Datei zum
  163.             Lesen ausgewählt werden kann, die Vorgabe für die
  164.             Dateikennung ist ".STM".
  165.             Enthält die Datei am Anfang ein Objekt vom Typ
  166.             TDialog, wird daraus ein Entwurfsdialog aufgebaut
  167.             und in den Desktop eingefügt, andernfalls erfolgt
  168.             eine Fehlermeldung.
  169.             Gibt es bereits einen Entwurfsdialog auf dem
  170.             Desktop, ist dieser Befehl gesperrt.
  171.  
  172.        Sichern
  173.             Öffnet einen Dateidialog, mit dem eine Datei zum
  174.             Speichern des Entwurfsdialogs als TDialog-Objekt
  175.             ausgewählt werden kann, die Vorgabe für die
  176.             Dateikennung ist ".STM". Existiert die gewählte
  177.             Datei bereits, so wird eine Backup-Datei mit der
  178.             Dateikennung ".JBK" angelegt.
  179.             Der Entwurfsdialog wird geordnet (s.
  180.             Dialog/Ergebnis) und daraus ein Objekt TDialog
  181.             erzeugt, das in der Datei gespeichert wird. Der
  182.             Entwurfsdialog bleibt zur weiteren Bearbeitung auf
  183.             dem Desktop.
  184.             Ist kein Entwurfsdialog auf dem Desktop, so ist
  185.             dieser Befehl gesperrt.
  186.  
  187.        Sichern als Quelltext
  188.             Öffnet einen Dateidialog, mit dem eine Datei zum
  189.             Speichern des Entwurfsdialogs als TDialog-Objekt
  190.             ausgewählt werden kann, die Vorgabe für die
  191.             Dateikennung ist ".JWD". Existiert die gewählte
  192.             Datei bereits, so wird sie ohne Nachfrage
  193.             überschrieben.
  194.             Der Entwurfsdialog wird geordnet (s.
  195.             Dialog/Ergebnis) und daraus Pascal 6.0 Sourcecode
  196.             erzeugt, der in der Datei als Text gespeichert
  197.             wird.
  198.             Dabei wird zuerst der Sourcecode für den
  199.             erforderlichen Datenrecord geschrieben. Jedes
  200.             Element erzeugt die von ihm geforderte
  201.             Typbezeichnung, als Variablennamen werden die
  202.             ersten 10 Buchstaben des zugehörigen Labels
  203.             benutzt. Anschließend wird Code für eine
  204.             "Procedure DialogInit(var D: PDialog)"
  205.             geschrieben, die bei Ausführung in D einen Zeiger
  206.             auf einen initialisierten TDialog übergibt. Der
  207.             Entwurfsdialog bleibt zur weiteren Bearbeitung auf
  208.             dem Desktop.
  209.             Ist kein Entwurfsdialog auf dem Desktop, so ist
  210.             dieser Befehl gesperrt.
  211.  
  212.        Verzeichnis wechseln
  213.             öffnet einen ChangeDirDialog.
  214.  
  215.        DOS-Shell
  216.             wechselt zur DOS-Ebene, wenn der Arbeitsspeicher
  217.             ausreicht; Rückkehr wie üblich mit "Exit".
  218.  
  219.        Exit
  220.             Programmende; ist ein Entwurfsdialog auf dem
  221.             Desktop, wird eine Datenspeicherung vorgeschlagen.
  222.  
  223.  
  224.        Der Menüpunkt Dialog
  225.  
  226.        Er enthält die Funktionen, die den Entwurfsdialog
  227.        betreffen. Es kann jeweils nur ein Dialog bearbeitet
  228.        werden.
  229.  
  230.        Neu
  231.             Ein leerer Entwurfsdialog wird erzeugt und in den
  232.             Desktop eingefügt. Ein Cursor markiert die
  233.             aktuelle Einfügeposition für die Dialogelemente.
  234.             Er kann mit den Richtungstasten bewegt oder durch
  235.             Druck auf die rechte Maustaste an die Mausposition
  236.             versetzt werden.
  237.             Gibt es bereits einen Entwurfsdialog auf dem
  238.             Desktop, ist dieser Befehl gesperrt.
  239.  
  240.        Löschen
  241.             Der Entwurfsdialog wird vom Desktop entfernt,
  242.             vorher wird eine Datenspeicherung vorgeschlagen.
  243.             Diese Aktion wird auch bei Anklicken des
  244.             Schließfeldes ausgeführt.
  245.  
  246.        Titel
  247.             Es wird ein Dialogfenster geöffnet, mit dem der
  248.             Titel des Anwendungsdialogs geändert werden kann.
  249.             Die Vorgabe für den Titel ist ''; er wird nur im
  250.             Ergebnis (s. Dialog/Ergebnis), nicht aber im
  251.             Entwurfsdialog angezeigt.
  252.  
  253.        Verschieben/Resize
  254.             Der Entwurfsdialog wird im TV-üblichen
  255.             Verschiebemodus verschoben, vergrößert oder
  256.             verkleinert.
  257.             Eine Verkleinerung geht nur soweit, daß jedes
  258.             eingefügte Elememt noch mit seiner minimal
  259.             notwendigen Größe enthalten ist.
  260.  
  261.        Zoom
  262.             Die Größe des Entwurfsdialogs wird zwischen
  263.             Zoomrect/voller Bildschirm umgeschaltet.
  264.  
  265.        Ergebnis
  266.             Der Entwurfsdialog wird so angezeigt, wie er in
  267.             der Anwendung erscheint. Dazu wird zuerst die Z-
  268.             Ordnung der Dialogelemente entsprechend ihrer
  269.             Position eingestellt (s. Optionen/
  270.             Ordnungsrichtung).
  271.             Elemente vom Typ TCluster werden dabei eventuell
  272.             verschoben: sie werden linksbündig unter dem
  273.             Leitfeld (s. NeueElemente/Checkboxes) angeordnet,
  274.             wobei jedes Auswahlfeld eine neue Zeile belegt.
  275.             Die Anzeige wird mit Esc oder Betätigen eines
  276.             Aktionsschalters beendet.
  277.  
  278.  
  279.        Der Menüpunkt NeueElemente
  280.  
  281.        Er enthält alle Funktionen zum Einfügen eines neuen
  282.        Dialogelements. TLabel können nur in Verbindung mit
  283.        anderen Elementen eingefügt werden. Bei Anwahl eines
  284.        Unterpunktes wird ein Dialog erzeugt, mit dem man alle
  285.        wichtigen Parameter des neu einzufügenden Elements
  286.        festlegen kann. Ist der verfügbare Platz an der
  287.        Einfügeposition nicht ausreichend, wird ein Fehler
  288.        erzeugt. Bei Fehlern oder Abbruch des Dialogs wird kein
  289.        Element eingefügt.
  290.        Diese Funktionen sind gesperrt, wenn kein
  291.        Entwurfsdialog auf dem Desktop ist.
  292.  
  293.        Eingabezeile
  294.             Ein neues Element vom Typ TInputline wird
  295.             eingefügt. Abgefragt werden Labelname und Länge
  296.             des Eingabetextes (TInputline.maxlen). Als Option
  297.             kann festgelegt werden, ob die Länge von der
  298.             globalen maximalen Zeilenlänge begrenzt werden
  299.             soll. Dies ist nur sinnvoll, wenn man rechts neben
  300.             langen Eingabezeilen noch andere Dialogelemente
  301.             einfügen möchte.
  302.             Zusätzlich kann als Option eine Historyliste
  303.             eingefügt werden.
  304.  
  305.        Text
  306.             Ein neues Element vom Typ TStatictext wird
  307.             eingefügt. Abgefragt wird der Text. Ist der
  308.             übergebene Text leer, so wird ein Platzhaltertext
  309.             eingefügt.
  310.  
  311.        Aktionsschalter
  312.             Ein neues Element vom Typ TButton wird eingefügt.
  313.             Abgefragt werden Schalterbeschriftung, Name des
  314.             verbundenen Kommandos, Zahlenwert des Kommandos
  315.             und der Zustand von TButton.flags. Der Zahlenwert
  316.             des Kommandos wird bei Sicherung im Stream
  317.             verwendet, der Name bei Sicherung als Sourcecode.
  318.             Es liegt in der Verantwortung der
  319.             ProgrammierInnen, dafür zu sorgen, daß beides
  320.             zusammenpaßt. Ist kein Kommandoname vorhanden, so
  321.             wird auch im Sourcecode die Zahl verwendet.
  322.  
  323.        OkButton, EscButton, YesButton, NoButton
  324.             Es wird jeweils ohne Abfrage ein entsprechender
  325.             Button eingefügt, die Turbo Vision
  326.             Standardkommandos werden benutzt. OkButton erhält
  327.             den Status bfDefault.
  328.  
  329.        Checkboxes, Radiobuttons
  330.             Ein neues Element vom Typ TCheckboxes bzw.
  331.             TRadiobuttons wird eingefügt. Abgefragt werden
  332.             Labelname und Name des Auswahlfeldes. Dieses
  333.             Auswahlfeld ist das Leitfeld des gesamten
  334.             Clusters; es wird hervorgehoben dargestellt. Es
  335.             gilt als Link für den Label. Wird es gelöscht, so
  336.             löscht man den gesamten Cluster. Neue
  337.             Auswahlfelder zu dem Cluster werden mit der
  338.             Funktion Elemente/Erweitern erzeugt.
  339.  
  340.        Listbox
  341.             Ein neues Element vom Typ TListbox wird eingefügt.
  342.             Abgefragt werden Labelname, Breite, Höhe und
  343.             Anzahl der Spalten. Als Option kann ein
  344.             Rollbalken, entweder vertikal oder horizontal,
  345.             eingefügt werden.
  346.  
  347.        Der Menüpunkt Elemente
  348.  
  349.        Er enthält alle Funktionen, die das im Entwurfsdialog
  350.        selektierte Element betreffen. Mit den üblichen Tasten
  351.        Tab und Shift-Tab wird das selektierte Element
  352.        gewechselt.
  353.        Diese Funktionen sind gesperrt, wenn kein
  354.        Entwurfsdialog auf dem Desktop ist.
  355.  
  356.        Editieren
  357.             Das selektierte Dialogelement öffnet einen Dialog,
  358.             mit dem alle Parameter geändert werden können.
  359.  
  360.        Cluster erweitern
  361.  
  362.             Ist das selektierte Element vom Typ TCluster, wird
  363.             hiermit ein weiteres Auswahlfeld angelegt. Der
  364.             Label des Clusters wird angezeigt, kann aber nicht
  365.             verändert werden.
  366.  
  367.        Löschen
  368.             Das selektierte Dialogelement wird aus dem
  369.             Entwurfsdialog entfernt. Ein zugehöriger Label
  370.             wird ebenfalls entfernt. Ist ein Label selektiert,
  371.             so wird der Link auch gelöscht.
  372.             Ein Element vom Typ TCluster wird mit allen
  373.             Auswahlfeldern gelöscht, wenn das hervorgehobene
  374.             Leitelement selektiert ist.
  375.  
  376.        Verschieben
  377.             Der TV-übliche Verschiebemodus wird für das
  378.             selektierte Element eingestellt; jedes Element
  379.             kann auch durch Ziehen mit der Maus verschoben
  380.             werden.
  381.  
  382.        Befestigen/Lösen
  383.             Der "Befestigungsbezug" des selektierten Elements
  384.             wird umgeschaltet, er ist entscheidend für die
  385.             Position des Elements bei Größenänderungen des
  386.             Entwurfsdialogs: im befestigen Zustand bleibt sie
  387.             relativ zur rechten unteren, um gelösten relativ
  388.             zur linken oberen Ecke konstant. Der befestigte
  389.             Zustand wird optisch durch ein Sternchen links
  390.             oben im Element gekennzeichnet. Die Umschaltung
  391.             kann auch durch Doppelclick auf die linke
  392.             Maustaste erfolgen.
  393.  
  394.        Alle Befestigen
  395.        Alle Lösen
  396.             Der Befestigungszustand wird für alle eingefügten
  397.             Elemente entsprechend gesetzt.
  398.  
  399.  
  400.        Menüpunkt Optionen
  401.  
  402.        Er enthält Funktionen, mit denen verschiedene Vorgaben
  403.        eingestellt werden können.
  404.  
  405.        Ordnungsrichtung
  406.             legt die Vorzugsrichtung bei der Einstellung der
  407.             Z-Ordnung im Anwendungsdialog fest. Dabei bedeutet
  408.             der Zustand "Zeilen" eine Einfügung von links nach
  409.             rechts, der Zustand "Spalten" eine Einfügung von
  410.             oben nach unten.
  411.             Diese Funktion ist gesperrt, wenn kein
  412.             Entwurfsdialog auf dem Desktop ist.
  413.  
  414.        Begrenzungen
  415.             öffnet ein Dialogfenster, mit dem die
  416.             programglobalen Begrenzungen eingestellt werden
  417.             können.
  418.             Zeilenlänge: Die maximale Zeilenlänge für
  419.             Eingabezeilen wird festgelegt. Sie ist nur in den
  420.             Eingabezeilen wirksam, deren Option "Grenze
  421.             beachten" gesetzt ist. Die Vorgabe ist 20; beim
  422.             Einlesen eines Dialogs vom Stream wird sie auf die
  423.             Länge der längsten gefundenen Eingabezeile
  424.             gesetzt.
  425.             Schalterbreite: Die Breite der Aktionsschalter
  426.             wird geändert. Die Vorgabe ist 12. Beim Einlesen
  427.             eines Dialogs vom Stream wird sie auf die Breite
  428.             des ersten gefundenen TButtons gesetzt.
  429.  
  430.  
  431.        Fehlerbehandlung
  432.  
  433.  
  434.        Tritt bei der Ausführung einer Funktion ein Fehler auf,
  435.        stellt TVDialogEd so weit wie möglich den Zustand vor
  436.        dem Aufruf der Funktion wieder her und zeigt eine
  437.        Fehlermeldung.
  438.  
  439.        Eine Ausnahme bilden die Funktionen zum Einfügen/Ändern
  440.        der Dialogelemente: unsinnige Eingaben werden
  441.        ignoriert. Dies ist möglich, weil alle Änderungen in
  442.        der Regel sofort auf dem Bildschirm sichtbar werden.
  443.  
  444.        Die Fehlermeldung erklärt das Problem meist
  445.        ausreichend, außer vielleicht bei den Folgenden:
  446.  
  447.        - Nicht genügend Platz im Dialog
  448.             der Cursor im Entwurfsdialog steht so, daß das
  449.             einzufügende Element nach rechts und/oder nach
  450.             unten nicht mehr genügend Platz hat; Cursor
  451.             versetzen und/oder Dialog vergrößern und nochmal
  452.             probieren.
  453.        - Fehler bei Anordnung
  454.             Bei Einstellung der Z-Ordnung vor einer
  455.             Speicherung oder der Funktion Dialog/Ergebnis
  456.             benötigt ein Element mehr Platz als vorhanden ist.
  457.             Zur Zeit kann das nur ein TCluster sein: Entweder
  458.             den Dialog vergrößern oder das Leitfeld des
  459.             Verursachers verschieben.
  460.  
  461.        Die nächsten beiden Meldungen sollten wirklich n i e
  462.             auftreten! Wenn doch, bitte Umstände merken und
  463.             mir mitteilen.
  464.        - Stream-Fehler (stPutError): Contact Operator.
  465.        - Nicht identifizierter Fehler
  466.  
  467.  
  468.        Grenzen - was TVDialogEd nicht kann/können will
  469.  
  470.        -    Die Ordnung der Elemente erfolgt entweder von
  471.             links nach rechts oder von oben nach unten. Eine
  472.             gemischte Festlegung durch Einzelvorgaben ist
  473.             nicht möglich.
  474.  
  475.        -    Die Dialogelemente nehmen sich gegenseitig nicht
  476.             als Hindernisse wahr. Es liegt in der
  477.             Verantwortung der ProgrammiererIn, sie nicht
  478.             übereinanderzustapeln.
  479.  
  480.        -    Der Cursor wird nach dem Einfügen automatisch nur
  481.             in Y-Richtung verschoben.
  482.  
  483.        -    Innerhalb eines Dialogs haben alle Aktionsschalter
  484.             gleiche Breite.
  485.  
  486.        -    Der Druckzustand eines TClusters kann nicht
  487.             eingestellt werden; es ist immer value = 0 im
  488.             Ergebnis.
  489.  
  490.  
  491.        Ein Kessel Buntes - Hinweise
  492.  
  493.        -    Für die Schönheit hält TVDialogEd am linken und
  494.             rechten Rand jeweils eine Spalte frei, in die kein
  495.             Element geschoben/eingefügt werden darf.
  496.  
  497.        -    TLabel und TButton haben am linken Rand immer ein
  498.             Blank - das ist aber nicht meine Idee, Turbo
  499.             Vision war's: bei Monochrom-Bildschirmen benutzt
  500.             es dieses Position zur Hervorhebung. Aus
  501.             Kompatibilitätsgründen habe ich die Blanks
  502.             beibehalten.
  503.  
  504.        -    Bei der Anzeige eines Ergebnisdialogs, der ein
  505.             TCluster enthält, kommt der Hilfekontext
  506.             durcheinander, wenn höhere Schaltfelder selektiert
  507.             sind (sel > 0): TV findet dann helpctx = sel statt
  508.             helpctx = owner^.helpctx + sel. Unschön aber
  509.             harmlos.
  510.  
  511.        -    TVDialogEd ist exzessiv dynamisch programmiert.
  512.             Heapoverflows sind trotzdem nahezu ausgeschlossen,
  513.             weil konsequent die Sicherheitszone (s. TV
  514.             Handbuch) beachtet wird.
  515.             Es gibt allerdings eine Situation, in der diese
  516.             Maßnahme wirkungslos ist: wenn ein Dialog vom
  517.             Stream gelesen wird, überprüft der Load-
  518.             Konstruktor zwischendrin den Speicher nicht. Das
  519.             macht meistens keine Probleme, weil genügend
  520.             Speicher vorhanden ist und ein "normaler" Dialog
  521.             nicht mehr als 5 - 10k verbraucht. Zur Sicherheit
  522.             fragt TVDialogEd vor dem Einlesen aber noch mal
  523.             nach, wenn zu diesem Zeitpunkt der Heap < 20k ist
  524.             (daher die rote Anzeige!).
  525.  
  526.        -    Zur Speicherung als Quellcode muß etwa 15k Heap
  527.             frei sein, im Stream braucht man weniger.
  528.  
  529.        -    In der - auch in TVDialogEd eingesetzten - TV Unit
  530.             Stddlg ist im TFiledialog ein Bug, der das
  531.             Programm sang- und klanglos abstürzen läßt, wenn
  532.             auf einem Diskettenlaufwerk beim Öffnen des
  533.             Filedialogs keine Datei mit dem übergebenen
  534.             Dateinamen zu finden ist. Als "quick and dirty"-
  535.             Lösung legt TVDialogEd deshalb eine Datei
  536.             "DUMMY.STM" bzw. "DUMMY.JWD" an, wenn er im
  537.             aktuellen Verzeichnis keine STM- bzw. JWD-Datei
  538.             findet. Sorry!
  539.  
  540.        -    TV übernimmt die Fehlerbehandlung bei Disk-Errors:
  541.             in der Statuszeile erscheint dann eine - englische
  542.             - Fehlermeldung. Wie schon in der TV-Dokumentation
  543.             erwähnt, muß man dann in der Regel mehrfach Esc
  544.             bzw Enter drücken. Eventuell ist auch die dann
  545.             folgende Messagebox unpassend. Nun aber nicht die
  546.             Nerven verlieren, sondern Fehler beheben und
  547.             nochmal probieren!
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.