Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];

Вниз

Бред с отображением кэпшнов на формах.   Найти похожие ветки 

 
eSKey   (2002-05-24 12:35) [0]

У меня в программе все заголовки на формах (кнопочки, чекбоксы, лейблы) названы по-русски. Знакомый, тестивший ее на НТ4 в Париже (есессно без кириллицы), сказал странное:

(на моей французской NT 4.0 Server твоя программа отказывается отображать надписи на русском языке)
и
Сейчас русские надписи нормально работают в меню, в подписях к кнопкам в основном окне (имеется ввиду кнопки тулбара), и в названиях закладок в настройках.

Этому можно верить, ибо поиск в экзешнике (в кодировке Unicode) именно эти строки находит, а другие, с тех же форм (!) не находит вообще ни в _какой_ кодировке (тем не менее успешно отображая их в русской локали).

Вообщем - есть у почтенных мастеров какие-то идеи? Для примера есть кусок .dfm:
object PageControl1: TPageControl
Left = 8
Top = 0
Width = 553
Height = 289
ActivePage = TabGeneral
TabIndex = 1
TabOrder = 3
object TabExam: TTabSheet
Caption = #1069#1082#1079#1072#1084#1077#1085
...<skipped>
object TabGeneral: TTabSheet
Caption = #1054#1073#1097#1080#1077
ImageIndex = 1
object GroupBox1: TGroupBox
Left = 8
Top = 8
Width = 281
Height = 137
Caption = #1057#1077#1090#1100
TabOrder = 0
object Label1: TLabel
Left = 8
Top = 48
Width = 129
Height = 17
AutoSize = False
Caption = #1055#1086#1088#1090" "#1087#1086#1080#1089#1082#1072" "#1089#1077#1088#1074#1077#1088#1072
end

Как видно кэпшн хранятся как двухбайтовые символы... что не мешает им отображаться по разному.


 
Andrey007   (2002-05-24 13:08) [1]

Надо у всех форм сделать Font.Charset:=RUSSIAN_CHARSET. Если у каких-то компонент ParentFont=False, то нужно им сделать то же самое.


 
eSKey   (2002-05-30 14:55) [2]

Спасибо за помощь, ситуация улучшилась, однако:

(цитирую)
Поздравляю - в интерфейсе появились русские надписи, правда, не везде пока что.
Крючки остались:
- в сообщении, которое выскакивает при запуске программы;
- в тултипсах;
- в описании формата загружаемого файла в комбобоксе выбора типов файла (это в диалоге Browse File);
- в списке экзаменующихся, который открывается по кнопке "Просмотр" (причем там и в самом списке, и в заголовках столбцов), да и во всех других случаях применения контрола Grid;
- во всех выскакивающих окошках с различными подтверждениями;
- в базе вопросов;
- во время экзамена - вопрос крючками, варианты ответа нормально.


Последние два пункта - это ричедит, а ведь свойство чарсет я задал. Если еще не пропало желание помогать безвозмоздно :), подскажите - что надо делать чтобы например месседжДлг выводились правильно, не говоря уже о содержимом Grid.
Все указанные контролы я заполняю данными динамически - ричедит через Clear + Lines.Add, Stringgrid через Addstrings & DelimiterText (и прямым присваиванием Cell в заголовках колонок тоже). Текст если нужно, приведу, а пока любые идеи, плиз!



 
Andrey007   (2002-05-30 17:26) [3]

1. Установлена ли в ОС на том компьютере поддержка русского языка?
2. Вы уверены, что в тех компонентах, в которых проблемы с русскими буквами Font.Charset=RUSSIAN_CHARSET?


 
Cobalt   (2002-05-30 17:41) [4]

Попробуйте использовать Wide-функции ( > - в сообщении, которое выскакивает при запуске программы;)


 
eSKey   (2002-05-30 19:35) [5]


> Andrey007


> 1. Установлена ли в ОС на том компьютере поддержка русского
> языка?

Дык конечно нет :) В первом посте же написано "французская НТ-Сервер 4". Однако ваш совет определенно помог прогрессу!


> 2. Вы уверены, что в тех компонентах, в которых проблемы
> с русскими буквами Font.Charset=RUSSIAN_CHARSET?

Именно! Это был первый вопрос, который я себе задал! =)


 
Andrey007   (2002-05-31 10:38) [6]

А что, собственно, мешает установить на франзуской NT-4 поддержку русского языка? Я, например, в русской Win2000 ставил поддержку греческого языка - и никаких проблем.


 
Smok_er   (2002-05-31 10:53) [7]

Интересно, а как могут отображаться русские символы, если не установлен язык? Попробуйте у себя запустить программу на китайском :), то есть просто переключить на китайский, к примеру язык интерфейса флэшгета.
У меня есть 2 рекомендации: просто добавить язык, и , если не поможет, сделать его локалью. Тогда 100% все будет видно.

А вообще подобные глюки мною были замечены уже давно, причем именно на NT4, при установленном языке(!) и не установленной локали.


 
eSKey   (2002-05-31 12:57) [8]


> Smok_er


> Интересно, а как могут отображаться русские символы, если
> не установлен язык?

Ты несколько заблуждаешься. Уже довольно давно микромягкие операционки поддерживают Юникод. И, как я понимаю, системный фонт типа MS Serif един для французов, немцев, прибалтов и русаков - просто используются разные группы (СHARSETS). Поэтому НТя 4 может отображать как минимум европейские языки.
Вот выдержка из хелпа по TFontCharset type

Each Windows typeface supports one or more character sets, which indicate what characters can be written using the font. For example, most fonts that can represent japanese characters use a particular multi-byte character set.
Т.е. - каждый фонт поддерживает одну _или более_ наборов символов, что указывает, какие символы могут быть выведены используя этот фонт. Есессно, такому производителю как микрософт легче для системного шрифта создать достаточно полную сборку чарсетов чем персональные наборчики для разных языков :)

И далее:
Each font supports its own, unique set of character sets. Check with the font vendor to determine which character sets are supported.
Т.е. вообще, производитель фонта конечно не обязан поддерживать русский или грузинский :). Что легко заметить, пробуя разные шрифты из МС Оффис - самые "вкусные" из стандартных фонтов не имеют кириллицы.

И на закуску:
MAC_CHARSET 77 Macintosh characters. Not available on NT 3.51.
SHIFTJIS_CHARSET 128 Japanese shift-JIS characters.
HANGEUL_CHARSET 129 Korean characters (Wansung).
JOHAB_CHARSET 130 Korean characters (Johab). Not available on NT 3.51

GB2312_CHARSET 134 Simplified Chinese characters (mainland china).
CHINESEBIG5_CHARSET 136 Traditional Chinese characters (Taiwanese).
GREEK_CHARSET 161 Greek characters. Not available on NT 3.51.
TURKISH_CHARSET 162 Turkish characters. Not available on NT 3.51
VIETNAMESE_CHARSET 163 Vietnamese characters. Not available on NT 3.51.
HEBREW_CHARSET 177 Hebrew characters. Not available on NT 3.51
ARABIC_CHARSET 178 Arabic characters. Not available on NT 3.51

BALTIC_CHARSET 186 Baltic characters. Not available on NT 3.51.
RUSSIAN_CHARSET 204 Cyrillic characters. Not available on NT 3.51.
THAI_CHARSET 222 Thai characters. Not available on NT 3.51
EASTEUROPE_CHARSET 238 Includes diacritical marks for eastern european countries. Not available on NT 3.51.
OEM_CHARSET 255 Depends on the codepage of the operating system.



> Andrey007


> А что, собственно, мешает установить на франзуской NT-4
> поддержку русского языка?

Не пойдет - это-ж рабочий комп программера, у буржуев известное дело - баловать с рабочими компами низзя. :)
Да и дело-то в том, что врядли нужно это! Я ж говорю, когда я сделал по Вашему совету положение резко улучшилось. И кстати, тестер говорит, что тот-же Флашгет у него все отображает нормально!
Имхо, копать надо в сторону механизма преобразования шрифтов по умолчанию. Например у меня большинство строк хранятся в ресурсах, т.е. в Юникоде. Однако отображаются все равно "крючками". Но каким образом обрабатывается строка в функции ShowMessage(strMyMessagefromresource), вот в чем вопрос! ВОзможно поможет ShowMessage( widestring(strMyMessagefromresource))...
Кстати, только щас стукнуло в голову - ведь StringGrid у меня отрисовывается через собственный ДравЦелл, в т.ч. и вывод надписей - может быть в этом дело? Ведь Canvas.Font тоже имеет свой Charset!
А вот насчет тултипс хочется услышать ваше авторитетное мнение :)

Коллеги, вопрос-то не праздный, всем пригодится!


 
Andrey007   (2002-06-03 11:12) [9]

Насчёт того, почему нельзя на том компьютере установить поддержку русского языка я так и не понял. Это ж не баловство. Можно поставить, а если не поможет - снести.
Canvas.Font.Charset влияет на текст только если использовать Canvas.TextOut или что-то подобное.
А что такое тултипс?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.005 c
3-39932
Юляша
2002-05-20 15:54
2002.06.13
Объединение несколиких полей в одно в SQL


14-40154
Baz
2002-05-09 06:15
2002.06.13
Организация местных форумов


6-40141
Serd_hhc
2002-03-30 13:44
2002.06.13
Как написать свой Server (типа TServerSocket) с uses WinSock?


1-40079
Shrek
2002-06-02 19:36
2002.06.13
Печать в Дельфи


8-40115
Toltec
2002-01-30 03:23
2002.06.13
Преобразовать RGB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский