|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.08.2008, 16:25 | #1 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Как исправить компонент TCoolTrayIcon для корректного выведения юникодных символов?
Доброго дня!
Хочу показывать всплывающую подсказку типа баллона. Есть такой прекрасный компонент TCoolTrayIcon как (исходник можно видеть здесь - http://files.codes-sources.com/fichi...olTrayIcon.pas) и есть там функция нужная мне - function TCoolTrayIcon.ShowBalloonHintUnicod e, но беда в том что она не выводит правильно символы юникодные. Мои попытки просто изменить Char на WideChar и прочее в том же духе не привели к успеху. Кто-то может подсказать мне, что в этом модуле нужно изменить, чтобы правльно вывводить WideChar символы, Спасибо. |
18.08.2008, 16:36 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Гм. Это вроде уже нарушение идет. Только что на ваш вопрос отвечал
|
18.08.2008, 16:44 | #3 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Извинте, какой вопрос? Об этом компоненте я в первый раз спрашиваю. и только зашел в эту рубрику.
|
18.08.2008, 16:57 | #4 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Думаю что ничего такого страшного
I'm learning to live...
|
|
18.08.2008, 17:20 | #5 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Спасибо, надеюсь, что возможно мне здесь кто-нибудь поможет. Еще раз спасибо за помощь.
|
18.08.2008, 19:07 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Просто смешно. Ну лично когда я постил та тема была не закрыта и решение я предложил, т.к. такой код перевода с уникода в анси это просто "бред" сумашедшего!
Код:
|
18.08.2008, 21:12 | #7 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Вы имеете ввиду, что приведенный кусок кода нужно заменить на:
szInfo := WideCharToString(Text); ? Но, не проиворечит ли это объявленным полям и например - szInfo? Спасибо. |
18.08.2008, 22:38 | #8 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Там все поля, что текст, что инфа, что заголовок являются массивами чаров ( Char ) он же байт. Уникод занимает 2 байта... т.е. надо грубо говоря делать немного не так... ну без проверки могу сказать сразу что думаю такой способ сработает:
Код:
|
18.08.2008, 22:49 | #9 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Спасибо. Но, без ошибок код выглядит так:
FillChar(szInfo, 0, SizeOf(szInfo)); // чтобы был 0 в конце // следовательно max длинна строки = SizeOf(szInfo) - 1 i := SizeOf(szInfo) - 1; s := WideCharToString(PWideChar(Text)); if (i > Length(s)) then i := Length(s); Move({source}PCHAR(s)^, {dest}szInfo, i); Только юникодные символы все равно неправильно отображаются. Что не так? Спасибо. |
18.08.2008, 23:14 | #10 |
Форумчанин
Регистрация: 05.04.2008
Сообщений: 244
|
Пробовал уже разными способами, но результата нет.
Вот код, который не вызывает ошибки, но и результата никакого: function TCoolTrayIcon.ShowBalloonHintUnicod e(Title, Text: WideString; IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean; // Show balloon hint. Return false if error. const aBalloonIconTypes: array[TBalloonHintIcon] of Byte = (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR, NIIF_USER); var i: Integer; s: String; begin // Remove old balloon hint HideBalloonHint; // Display new balloon hint with IconData do begin uFlags := uFlags or NIF_INFO; FillChar(szInfo, 0, SizeOf(szInfo)); // чтобы был 0 в конце // следовательно max длинна строки = SizeOf(szInfo) - 1 i := SizeOf(szInfo) - 1; s := WideStringToStringEx(Text, 1252); if (i > Length(s)) then i := Length(s); Move({source}PCHAR(s)^, {dest}szInfo, i); FillChar(szInfoTitle, 0, SizeOf(szInfoTitle)); // чтобы был 0 в конце // следовательно max длинна строки = SizeOf(szInfo) - 1 i := SizeOf(szInfoTitle) - 1; s := WideStringToStringEx(Title, 1252); if (i > Length(s)) then i := Length(s); Move({source}PCHAR(s)^, {dest}szInfoTitle, i); TimeoutOrVersion.uTimeout := TimeoutSecs * 1000; dwInfoFlags := aBalloonIconTypes[IconType]; end; Result := ModifyIcon; // Remove NIF_INFO before next call to ModifyIcon (or the balloon hint will redisplay itself) IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; end; Что можно еще переделать в исходном коде (http://files.codes-sources.com/fichi...lTrayIcon.pas), чтобы он выводил юникодные символы? Спасибо. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
исправить компонент под делфи 2007 | Roof | Компоненты Delphi | 1 | 31.08.2008 09:09 |
Как запретить/разрешить ввод от клавиатуры любых символов (в том числе и юникодных)? | SkAndrew | Общие вопросы Delphi | 8 | 15.08.2008 15:30 |
Как исправить??? | BlackMamba | Microsoft Office Word | 1 | 03.08.2008 12:23 |
Исправить ошибку | LLIypLLIyH | Помощь студентам | 5 | 16.06.2008 16:50 |
Суммирование значений и выведения максимального значения | Bor_man | Microsoft Office Excel | 2 | 12.04.2007 19:49 |