Текущий архив: 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