Autor Beitrag
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Mo 23.07.12 11:36 
Hallo,

ich habe gerade das Problem, dass ich in Comboboxen und Listboxen kyrillischen Text brauche ohne Unicode zu verwenden.
Ich hätte erwartet, dass ich einfach Font.Charset auf RUSSIAN_CHARSET stellen muss und schon ist alles gut.
Leider musste ich feststellen, dass das nicht funktioniert. Jedenfalls funktioniert es da dann nicht, wenn die Eigenschaft der Combobox auf csDropDown oder csDropDownList bzw. die der Listbox auf lbStandard steht.
Erst wenn ich auf einen Wert, der "OwnerDraw" beinhaltet umstelle, bekomme ich die kyrillischen Buchstaben.

Kennt jemand das Problem und weiß, wie man kyrillische Zeichen ohne Änderung des Styles bekommt?

Beste Grüße
Tastaro
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Fr 27.07.12 11:59 
Ein vor-dem-Wochende-push. Vielleicht hat ja doch noch jemand eine Idee, was man bezüglich der kyrillischen Buchstaben tun könnte.

Schönes Wochenende!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 27.07.12 14:31 
Was spricht denn gegen OwnerDraw, wenn es damit funktioniert?

Ich glaube nicht, dass du viele findest, die kyrillische Buchstaben ohne Unicode nutzen. :zwinker: (Ich würde auch nicht auf die Idee kommen.) Aber ich kann es nachher ja mal ausprobieren.

// EDIT:
Hast du denn eine Schriftart eingestellt, die russische Zeichen auf der entsprechenden Codepage kennt?
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Mo 30.07.12 07:22 
Hallo Jaenicke,

"OwnerDraw" ist eine Alternative zu "csDropDownList", aber leider nicht zu "csDropDown". Ich habe in der Zwischenzeit auch festgestellt, dass RadioGroups und CheckBoxes sich genauso verhalten. :/

Ich würde auch gerne Unicode nehmen, aber mein Chef ist gerade dagegen, dass wir unsere Software jetzt so auf die Schnelle umstellen. :)

Auf die Schriftart habe ich geachtet. Ich denke es würde sonst auch nicht funktionieren, wenn ich auf "OwnerDraw" stelle.

Danke für Deine Hinweise.

Beste Grüße
Tastaro
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 30.07.12 20:56 
Interessant, mit DropDownList stimmt auch das Eingabefeld nicht, mit allen anderen nicht-OwnerDraw-Styles stimmt das Eingabefeld, aber nicht die Liste.

So wie ich das im Code sehe, wird das Charset nur beachtet, wenn Delphi selber zeichnet. Wenn Windows das übernimmt, wird die Einstellung komplett ignoriert - aber nicht auf dem ChildWindow (dem Edit).
Ich behaupte mal, das ist ein Windows-Bug.

So, während der Editor hier offen ist hab ich mal ein Testprogramm geschrieben und das mit dem API Monitor durchleuchtet. Das ist tatsächlich ein Windows-Bug: der erstellte und selektierte Font ist vollkommen korrekt. Trotzdem ist das Ergebnis falsch. Ich such mal weiter, und sende hier erstmal ab ;)

€/ Okay, also: Das Canvas des EDIT-Controls beachtet die Charset-Einstellung des selektierten HFONT, das Canvas der COMBOBOX nicht.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
Tastaro Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Di 31.07.12 07:35 
Hallo Martok,

danke für Deine Untersuchungen. Ähnliches hatte ich schon befürchtet. Meist du es gibt da ein Arbeitaußenherum (Workaround)?

Beste Grüße