Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Menue Chinesisch (https://www.delphipraxis.net/153067-menue-chinesisch.html)

khh 19. Jul 2010 18:23

Menue Chinesisch
 
hallo zusammen,
ich hoffe ich bin im richtigen Forum.

Folgendes Szenario,

ich erzeuge während der Laufzeit ein TMainmenu

Code:
FMainMenu:= TMainMenu.create(owner);
wobei owner das jeweilige form ist.

ebenso zur Laufzeit werden die dazugehörenden Menuitems erzeugt.
dabei ist FMenuItem.name identisch mit FMenuItem.caption.

die entsprechenden Items werden in einer Schleife erzeugt und die Werte aus der Db gelesen.

soweit so gut.


Funktioniert bisher tadellos.
Allerdings kommt jetzt die Anforderung das menue auf chinesisch umzustellen.;-)

Funktioniert soweit auch, caption hat keine Probleme mit den chinesischen Zeichen.
Bis auf den FMenuItem.name,

hier werden die chinesischen Zeichen nicht akzeptiert.

Gibts irgend ne Möglichkeit den chinesischen zeichensatz in eine für den namen aktzeptablen Zeichensatz umzuwandeln?

Ich möchte ungern die gesamte Routine grundlegend ändern :-(

danke für eure Ideen

EDIT: hab gerade festgestellt, dass das feld in der DB wohl auch nen anderen zeichensatz benötigt :-(

UNICODE ???

Gruss KHH

himitsu 19. Jul 2010 18:46

AW: Menue Chinesisch
 
In Delphi 2010 (bei 2009 vermutlich auch) sollten chinesische Zeichen für Funktions-, Klassen-, Variablen- und sonstigen Bezeichner zulässig sein. (innerhalb der RTTI werden diese als UTF-8 behandelt)


Aber für dynamisch erzeugte Objekte brauchst du nicht unbedingt den .Name festlegen ... laß diesen also einfach leer.
Es sei denn du mußt dieses Objekt über FindComponent finden können.

khh 19. Jul 2010 18:55

AW: Menue Chinesisch
 
Zitat:

Zitat von himitsu (Beitrag 1036238)
In Delphi 2010 (bei 2009 vermutlich auch) sollten chinesische Zeichen für Funktions-, Klassen-, Variablen- und sonstigen Bezeichner zulässig sein. (innerhalb der RTTI werden diese als UTF-8 behandelt)


Aber für dynamisch erzeugte Objekte brauchst du nicht unbedingt den .Name festlegen ... laß diesen also einfach leer.
Es sei denn du mußt dieses Objekt über FindComponent finden können.

supi, auf das Einfachste kommt man selbst nie ;-)
funktioniert ohne name.
Aber, ich habs schon befürchtet, die DB kommt mit den Zeichen nicht klar, es werden im caption nur ??? angezeigt.
was für einen Zeichensatz brauch ich da in der firebird db?

Mschmidt 19. Jul 2010 19:09

AW: Menue Chinesisch
 
ich kenn zwar nicht firebird, aber bei Oracle oder auch SQL Server reicht die Typdeklaration nvarchar2 bzw. nvarchar aus und die DB akzeptiert auch unicode-Zeichen.
:-mschmidt

himitsu 19. Jul 2010 19:42

AW: Menue Chinesisch
 
Zitat:

Zitat von khh (Beitrag 1036240)
Aber, ich habs schon befürchtet, die DB kommt mit den Zeichen nicht klar, es werden im caption nur ??? angezeigt.

Tja, das Fragezeichen ist halt nicht erlaubt. :angle2:

PS: falls es dich dennoch interessiert ... siehe Funktion IsValidIdent aus der SysUtils

Bernhard Geyer 19. Jul 2010 20:44

AW: Menue Chinesisch
 
Zitat:

Zitat von Mschmidt (Beitrag 1036244)
ich kenn zwar nicht firebird, aber bei Oracle .. reicht die Typdeklaration nvarchar2

Hier sollte man aber auch nvarchar2(<Länge> CHAR) damit du auch wirklich <Länge> Zeichen in dein Feld hinein bekommst.

himitsu 19. Jul 2010 20:56

AW: Menue Chinesisch
 
Muß man hier eigentlich auch den Zeichensatz der Datenbankanbindung auch mit einstellen?

Nicht daß die Verbindung zur DB nur ANSI ist, dann wäre ja das Format der Felder/Tabellen am Ende auch "egal", da es beim Übertragen "geschrottet" wird.

khh 20. Jul 2010 05:50

AW: Menue Chinesisch
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1036263)
Zitat:

Zitat von Mschmidt (Beitrag 1036244)
ich kenn zwar nicht firebird, aber bei Oracle .. reicht die Typdeklaration nvarchar2

Hier sollte man aber auch nvarchar2(<Länge> CHAR) damit du auch wirklich <Länge> Zeichen in dein Feld hinein bekommst.

gibts bei firebird leider nicht .-(

EDIT: mit unicode klappts,
danke für eure Hilfe

Gruss KHH

mkinzler 20. Jul 2010 07:03

AW: Menue Chinesisch
 
Brauchst man auch nicht. Man muss nur die richtige locale einstellen
Welche Delphiversion? Warum muss im Namen einer Komponente chinesische Zeichen sein?

himitsu 20. Jul 2010 07:56

AW: Menue Chinesisch
 
Viele geben auf Zwang einen Namen an, weil sie denken dieser muß unbedingt angegeben werden.
Und so, wie die IDE die Caption als Vorlage für den Namen nimmt, wollte er es wohl auch so ähnlich machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz