Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

Как пункты меню и captions писать unicod-ом ?   Найти похожие ветки 

 
Dimedrol ©   (2004-11-05 12:29) [0]

Собственно, коллеги, - сабж!
Можно ли пункты меню (TMenu) и надписи на кнопочках,
сообщения в MessageBox-ах писать уникодом, чтобы при разных
региональных установках я смог бы отображать специфические
для неких языков символы ?


 
a123   (2004-11-15 18:18) [1]

У меня тоже такая же проблема, но похоже это возможно только в CLX приложениях ??


 
VMcL ©   (2004-11-15 18:35) [2]

>>Dimedrol ©  (05.11.04 12:29)

Нет. Визуальные компоненты VCL не поддерживают Unicode.


 
KilkennyCat ©   (2004-11-15 19:12) [3]


> VMcL ©   (15.11.04 18:35) [2]


стандартные. Компания Tmssoftware выпускает и с поддержкой юникода.


 
Piter ©   (2004-11-15 19:51) [4]

Dimedrol ©   (05.11.04 12:29)
Можно ли пункты меню (TMenu) и надписи на кнопочках


я для этого переделывал VCL

сообщения в MessageBox-ах писать уникодом

конечно, ведь есть функция MessageBoxW, описанная в модуле Windows.

Вот, кстати, моя реализация:

function MessageBoxExMy(hWnd: HWND; lpText, lpCaption: PChar;
 uType: UINT; wLanguageId: Word): Integer;
var
 SizeText, SizeCaption: integer;
 wideText, wideCaption: PWideChar;
begin
if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion>=5) then
 begin
   SizeText := MultiByteToWideChar(3, 0, lpText, -1, nil, 0);
   SizeCaption :=  MultiByteToWideChar(3, 0, lpCaption, -1, nil, 0);
   GetMem(wideText, SizeText*SizeOf(WideChar));
   GetMem(wideCaption, SizeCaption*SizeOf(WideChar));
   try
     MultiByteToWideChar(3, 0, lpText, -1, wideText, SizeText);
     MultiByteToWideChar(3, 0, lpCaption, -1, wideCaption, SizeCaption);
     Result := MessageBoxExW(hWnd, wideText, wideCaption, uType, wLanguageId);
   finally
     FreeMem(wideText);
     FreeMem(wideCaption);
   end;
 end
else
 Result := MessageBoxEx(hWnd, lpText, lpCaption, uType, wLanguageId);
end;


...

function MessageBoxMy(hWnd: HWND; lpText, lpCaption: PChar;
 uType: UINT): Integer;
begin
 Result := MessageBoxExMy(hWnd, lpText, lpCaption, uType, GetUserDefaultLangID);
end;


Эти две функции описаны у меня в модуле Utils. Пользуюсь, конечно, MessageBoxMy - корректно выдает РУССКИЕ буквы на unicode системах с любой локалью


 
wnew ©   (2004-11-15 20:24) [5]

Здесь компоненты, которые не подменяют собой стандартные, но имеют ту же функциональность плюс поддержка UNICODE, правда только для Windows NT/2000/XP http://tnt.ccci.org/delphi_unicode_controls/


 
Piter ©   (2004-11-15 22:25) [6]

wnew ©   (15.11.04 20:24) [5]
только для Windows NT/2000/XP


а что, в NT 4.0 есть Unicode?


 
wnew ©   (2004-11-15 22:36) [7]

Piter ©   (15.11.04 22:25) [6]
Наверное да, так в описании. http://tnt.ccci.org/delphi_unicode_controls/

Microsoft Windows NT/2000/XP, Office 2000/XP, and probably every future product that will come from Microsoft natively support Unicode. Unicode <http://www.unicode.org/> is a character encoding system that provides a unique number for every character regardless of the language. It allows an application to easily handle multiple languages simultaneously. Unfortunately, Windows 95/98/ME don"t support Unicode, but rather they support a character encoding system called ANSI. The ANSI character encoding system does not provide a unique number for every character, but instead it uses a system of "code pages". Each character set (ie. Latin, Russian, Chinese, etc.) has its own code page, and Windows has a single code page for non-Unicode programs to use. Windows 95/98/ME have a single fixed code page. The active code page in Windows NT/2000/XP can be changed, but this requires a rebooting of the operating system.


 
wnew ©   (2004-11-15 22:45) [8]

Кстати, Piter, по моему зря не доверяешь этим компонентам - я их потестировал и мне они очень понравились :), жаль только, что не поддерживается UNICODE в Win9x/WinMe. Но в крайнем случае для этих систем можно пользоваться раздельными кодовыми таблицами, что по крайней мере с TMemo, TLabel, TRichEdit и возможно и с некоторыми другими получается нормально.


 
Суслик ©   (2004-11-16 10:44) [9]


> [4] Piter ©   (15.11.04 19:51)


> Эти две функции описаны у меня в модуле Utils. Пользуюсь,
> конечно, MessageBoxMy - корректно выдает РУССКИЕ буквы на
> unicode системах с любой локалью

Если не ошибаюсь, то русский язык все-таки уставновлен в системе должен быть. Или нет?


 
VMcL ©   (2004-11-16 10:50) [10]

>>wnew ©  (15.11.04 22:45) [8]

>жаль только, что не поддерживается UNICODE в Win9x/WinMe

Тайные источники сообщают, что можно скачать с сайта MS и установить Microsoft Layer for Unicode.


 
Piter ©   (2004-11-16 11:42) [11]

Суслик ©   (16.11.04 10:44) [9]
Если не ошибаюсь, то русский язык все-таки уставновлен в системе должен быть. Или нет?


ну должен быть, конечно. Только код использует UNICODE в windows 2000 и выше, а в этих системах русский по умолчанию включен во все локализации. Иначе толку от этого Unicode никакого бы не было...

VMcL ©   (16.11.04 10:50) [10]
Тайные источники сообщают, что можно скачать с сайта MS и установить Microsoft Layer for Unicode.


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


 
VMcL ©   (2004-11-16 21:33) [12]

>>Piter ©  (16.11.04 11:42) [11]

>ну не будешь же каждого клиента заставлять качать это?

Включи в дистрибутив своего софта (если это позволяется лицензией MS).

>А она не бось немало весит и вместе с программой тоже ее распространять не очень...

Не знаю, 276128 байт - это много или мало?


 
wnew ©   (2004-11-16 22:27) [13]

Piter ©   (16.11.04 11:42) [11]

> Только код использует UNICODE в windows 2000 и выше

Всё-таки NT тоже. Я порыскал по и-нету и выяснил, что WinNT тоже справляется с Unicode.


 
wnew ©   (2004-11-16 22:47) [14]

VMcL ©   (16.11.04 10:50) [10]

> Тайные источники сообщают, что можно скачать с сайта
> MS и установить Microsoft Layer for Unicode.


Тайные источники раскололись без пыток:)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnanchor/html/anch_mslu.asp


 
wnew ©   (2004-11-16 23:02) [15]

http://www.unicode.org/

http://fundementals.sourceforge.net/unicode.html


 
Piter ©   (2004-11-17 00:36) [16]

VMcL ©   (16.11.04 21:33) [12]
Не знаю, 276128 байт - это много или мало?


Это мало. Неужели вся поддержка в 300 Kb умещается? Невероятно... там же столько функций...

wnew ©   (16.11.04 22:27) [13]
Я порыскал по и-нету и выяснил, что WinNT тоже справляется с Unicode


А WinME поддерживает?


 
Defunct ©   (2004-11-17 00:42) [17]

>ну не будешь же каждого клиента заставлять качать это?

Пишите в системных требованиях для вашей программы: CP 1251, 866
и нафих не нужен юникод. ;>


 
Defunct ©   (2004-11-17 00:47) [18]

Dimedrol ©   (05.11.04 12:29)  

Или вы делаете поддержку корейского и китайского языков?


 
VMcL ©   (2004-11-17 07:51) [19]

>>Piter ©  (17.11.04 00:36) [16]

См. [14].



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

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1099969001
Думкин
2004-11-09 05:56
2004.11.28
С днем рождения! 9 ноября


1-1100531696
PC
2004-11-15 18:14
2004.11.28
ScrollBar в окне с BorderStyle = bsNone


1-1100108593
BlackLord2003
2004-11-10 20:43
2004.11.28
Сообщение об ошибках


1-1100503791
malamba
2004-11-15 10:29
2004.11.28
снова о TreeView - как вернуться к выделенному


3-1098961483
BigError
2004-10-28 15:04
2004.11.28
Что-то никак не соображу как правильно сделать..





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский