Unicode-Unterstützung
Unicode-Unterstützung Auswirkungen der Unicode-Unterstützung von Anzeige-Objekten
Ist die Unicode-Unterstützung aktiviert, erfolgt für bestimmte Oberflächen- oder Druck-Objekte die Ausgabe von Text im UTF-8 Zeichensatz.
Aktivierung
Die Unicode-Unterstützung ist für Dialoge, Menüs und Druck-Objekte implementiert. Eine Aktivierung erfolgt entweder beim Erstellen oder wenn das Objekt aus der Datenbank geladen wird.
Folgende Modi stehen zur Verfügung:
- Modus: Beschreibung Symbol
- Kein Unicode: Das Objekt besitzt keine Unicode-Unterstützung.
- Unicode-Ausgabe: Das Objekt besitzt Unicode-Unterstützung in Ausgabe-Objekten.
- Unicode-Eingabe: Das Objekt besitzt Unicode-Unterstützung in Ausgabe-Objekten und dem Edit -Objekt.
Im Modus "Unicode-Eingabe" können die Eigenschaften Password , PasswordChar und EditMask nicht gesetzt werden. Bei einer Konvertierung in diesen Modus werden die Eigenschaften auf den Standardwert zurückgesetzt.
Um einen Dialog oder ein Menü mit Unicode-Unterstützung zu erstellen, muss in den Designer-Einstellungen im Abschnitt Objekterstellung in der Popup-Liste "Unicode-Objekte" "Unicode-Ausgabe" oder "Unicode-Eingabe" ausgewählt werden. Unabhängig davon kann eine Aktivierung auch für Druck-Objekte in dem entsprechenden Abschnitt erfolgen. Frame - und Menü-Objekte oder Druck-Objekte werden ab diesem Zeitpunkt mit Unicode-Unterstützung erstellt. Im Titel des Fenster-Objekts wird dann "Unicode" angezeigt. Ebenso im Titel des Menü-Editors oder im Fenster zur Erstellung der entsprechenden Druck-Objekte. Auf die gleiche Weise kann die Unicode-Unterstützung auch wieder ausgeschaltet werden. Es werden dann die Objekte ohne Unicode-Unterstützung erstellt. Standardmäßig ist die Unicode-Unterstützung nicht aktiviert.
Im Öffnen-Dialog des Designers wird angezeigt, welche Objekte bereits mit Unicode-Unterstützung gespeichert sind. In der Spalte UCS (Universal Character Set) wird die entsprechende Nummer des Modus angezeigt. Desweiteren gibt es im unteren Teil des Dialoges ebenfalls eine Popup-Liste, sofern ein Dialog, ein Menü oder ein Druck-Objekt geöffnet wird. Über diese Liste kann die Unicode-Unterstützung für das selektierte Objekt aktiviert oder deaktiviert werden.
Wird der ausgewählte Modus nicht verändert, wird das Objekt mit oder ohne Unicode-Unterstützung geladen, abhängig davon wie das Objekt gespeichert ist. Ansonsten wird die Unicode-Unterstützung beim Laden des Objektes entweder aktiviert oder deaktiviert. Vorhandene Sonderzeichen werden dabei gewandelt. Sind beim Deaktivieren im ANSI-Zeichensatz nicht vorhandene Unicode-Zeichen im Dialog enthalten, werden diese in Fragezeichen gewandelt.
Auswirkungen
Folgende Objekte haben ebenfalls Unicode-Unterstützung, wenn das Objekt in ein Objekt mit Unicode-Unterstützung eingefügt wird oder wenn das Objekt im Designer mit Unicode-Unterstützung geöffnet wurde:
- Button
- Checkbox
- Edit (nur im Modus "Unicode-Eingabe")
- GroupBox
- GroupSplit
- GroupTile
- HyperLink
- Label
- Notebookpage
- RadioButton
- Statusbar
- Statusbar-Button
- TextEdit
- ToolbarDock
- Toolbar
- Toolbar-Button
- Windowbar
- PrtText
- PrtTblCellText
- PrtInterval
- PrtGanttAxis
Analog verhält es sich mit den MenuItem -Objekten eines mit Unicode-Unterstützung erstellten oder geöffneten Menüs.
Diejenigen Eigenschaften eines Objekts mit Unicode-Unterstützung werden in der Liste der Eigenschaften mit einem "Stern"-Symbol gekennzeichnet. Im Folgenden werden diese Eigenschaften als Unicode-Eigenschaften bezeichnet. Folgende Eigenschaften sind betroffen:
Wird eine Unicode-Eigenschaft prozedural ermittelt, wird entsprechend eine UTF-8-Zeichenkette zurückgegeben.
Ob ein Objekt Unicode-Unterstützung hat kann mit WinInfo ( _WinUnicode ) ermittelt werden.
Wird ein Objekt zur Laufzeit mittels WinCreate () (unter Angabe des Elternobjektes) oder WinAdd () zu einem Frame hinzugefügt, dessen Unicode-Unterstützung aktiviert ist, erhält das hinzugefügte Objekt auch Unicode-Unterstützung.
Eingabe von UTF-8-Zeichenketten
Soll eine Unicode-Eigenschaft prozedural gesetzt werden, muss der Wert als UTF-8-Zeichenkette angegeben werden. Jede 7-Bit-ASCII-Zeichenkette ist automatisch eine gültige UTF-8-Zeichenkette. Innerhalb des Editors kann ein Text aus der Zwischenablage als UTF-8-Zeichenkette über das Kontextmenü eingefügt werden. Bestehende Zeichenketten können mit der Anweisungen StrCnv (..., _StrToUTF8 ) umgewandelt werden.
Objekte, deren Inhalt aus der Datenbank kommt (Eigenschaft DbFieldName), erwarten eine Zeichenkette im UTF-8 Zeichensatz.
Die in Windows installierten Schriftarten unterstützen nur einen Unterbereich der in Unicode definierten Zeichensätze. "Arial" beispielsweise unterstützt neben den lateinischen Schriftzeichen auch griechisch, nicht jedoch chinesisch. Die Darstellung chinesischer Schriftzeichen funktioniert in diesem Fall nur deshalb, da Windows intern "Arial" durch "Arial Unicode MS" ersetzt. Diese Schriftart unterstützt sehr viele Zeichensätze, unter anderem auch chinesisch. Ist diese Schriftart nicht auf dem Rechner installiert ist, schlägt die Anzeige chinesischer Zeichen fehl.
Unicode-Deaktivierung
Da die Unicode-Eigenschaften im UTF-8-Zeichensatz in der Datenbank gespeichert werden, muss bei der Deaktivierung berücksichtigt werden, dass es bei der Konvertierung in den ANSI-Zeichensatz zu Zeichenverlusten kommen kann. D. h. diejenigen Zeichen im UTF-8-Zeichensatz, die nicht im ANSI-Zeichensatz vorhanden sind, können nicht umgewandelt werden und werden im Wert der Eigenschaft durch ein '?' repräsentiert.
Laden von Dialogen, Menüs und Druck-Objekten zur Laufzeit
Ein Dialog mit Unicode-Unterstützung wird genauso wie ein Dialog ohne Unicode-Unterstützung geladen (z. B. WinDialog ()). Es müssen lediglich die obigen Erläuterungen berücksichtigt werden.
Bei Druck-Objekten wird beim Erzeugen des Druckjobs (PrtJobOpen ()) mit der Option _PrtConvUnicode die Unicode-Unterstützung angegeben. Alle Objekte, die in den Druckjob gedruckt werden sollen, müssen ebenfalls mit Unicode-Unterstützung geladen werden. Dies kann auf folgende Weise geschehen:
- Das Druck-Objekt wurde im Designer mit Unicode-Unterstützung erstellt.
- Das Objekt wurde im Designer nicht mit Unicode-Unterstützung erstellt. In diesem Fall muss dem Befehl
PrtFormOpen ()die Option_PrtConvUnicodeübergeben werden. Dadurch wird das Objekt mit Unicode-Unterstützung geöffnet. Vorhandene Zeichenketten in Unicode-Eigenschaften werden automatisch in den UTF8-Zeichensatz konvertiert.
Es wird der Laufzeitfehler _ErrHdlInvalid erzeugt, wenn das Druckformular ohne Unicode-Unterstützung geöffnet wurde, der Druckjob jedoch mit Unicode-Unterstützung erstellt wurde.