-
Доброго дня! Есть прекрасный компонент TCoolTrayIcon. Исходник можно видеть здесь: http://files.codes-sources.com/fichier.aspx?id=47399&f=CoolTrayIcon%2fCoolTrayIcon.pasИ есть в нем функция нужная мне - function TCoolTrayIcon.ShowBalloonHintUnicode, но беда в том что она не выводит правильно юникодные символы. Я попробывал несколько изменить код функции TCoolTrayIcon.ShowBalloonHintUnicode так: function TCoolTrayIcon.ShowBalloonHintUnicode(Title, Text: WideString;
IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean;
const
aBalloonIconTypes: array[TBalloonHintIcon] of Byte =
(NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR, NIIF_USER);
var
i: Integer;
s: String;
begin
HideBalloonHint;
with IconData do
begin
uFlags := uFlags or NIF_INFO;
FillChar(szInfo, 0, SizeOf(szInfo));
i := SizeOf(szInfo) - 1;
s := WideCharToString(PWideChar(Text));
if (i > Length(s)) then i := Length(s);
Move(PCHAR(s)^, szInfo, i);
FillChar(szInfoTitle, 0, SizeOf(szInfoTitle));
i := SizeOf(szInfoTitle) - 1;
s := WideCharToString(PWideChar(Title));
if (i > Length(s)) then i := Length(s);
Move(PCHAR(s)^, szInfoTitle, i);
TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
dwInfoFlags := aBalloonIconTypes[IconType];
end;
Result := ModifyIcon;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
end; или так: function TCoolTrayIcon.ShowBalloonHintUnicode(Title, Text: WideString;
IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean;
const
aBalloonIconTypes: array[TBalloonHintIcon] of Byte =
(NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR, NIIF_USER);
var
i: Integer;
s: String;
begin
HideBalloonHint;
with IconData do
begin
uFlags := uFlags or NIF_INFO;
FillChar(szInfo, 0, SizeOf(szInfo));
i := SizeOf(szInfo) - 1;
s := WideStringToStringEx(Text, 1252);
if (i > Length(s)) then i := Length(s);
Move(PCHAR(s)^, szInfo, i);
FillChar(szInfoTitle, 0, SizeOf(szInfoTitle));
i := SizeOf(szInfoTitle) - 1;
s := WideStringToStringEx(Title, 1252);
if (i > Length(s)) then i := Length(s);
Move(PCHAR(s)^, szInfoTitle, i);
TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
dwInfoFlags := aBalloonIconTypes[IconType];
end;
Result := ModifyIcon;
IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
end; Мои попытки просто изменить Char на WideChar и прочее в том же духе также не привели к успеху. Уважаемые Мастера, прошу Вашей помощи - что в этом модуле нужно изменить, чтобы правильно выводить WideChar (юникодные) символы.Спасибо.
-
Добрый день!
Мастера, подскажите что необходимо исправить, чтобы корректно выводить в этом компоненте юникодные символы?
Спасибо.
-
преобразуй юникод в win1251 и отображай где хош...
-
Спасибо, а можно хотя бы небольшой пример?
-
копипастер?
-
Навыерное, я не понял Вас правильно, а Вы меня. Мне нужно скорректировать конкретный модуль, приведенный выше. У Вас есть идеи по этому поводу. Может я что не так прописал или упустил. Спасибо.
-
ты этот код понимаешь? или из инета взял? то что передаешь через Title, Text: WideString; преобразуй из Unicode в Win1251 кодировку и не парься...
-
Я понимаю, но не понимаю как можно преобразовать юникодный символ, например, ñ в русскую букву. Будьте так любезны и напишите как Вы себе это представляете. Спасибо.
-
> но не понимаю как можно преобразовать юникодный символ, > например, n в русскую букву. Будьте так любезны и напишите > как Вы себе это представляете.
спроси у гугла а?
-
Спасибо, Может Мастера все же подскажут возможность корректировки приведенного кода. Спасибо.
-
Доброе утро! Мастера. помогите найти решение! Спасибо.
-
Насколько я знаю, Shell_NotifyIcon, вокруг которой вертится эта компонента, юникод не поддерживает
-
Тогда какое решение, может ее можно чем-то заменить? Я полагаю, что такое решение было бы интересно очень многим пользователям этого форума.
-
Неdthyj
> TNotifyIconDataA = _NOTIFYICONDATAA; > TNotifyIconDataW = _NOTIFYICONDATAW;
-
Спасибо за ответ, а можно немного по-подробне, пожалуйста. Как это может быть реально в коде компонента? Спасибо
-
Вместо TNotifyIconData использовать явно TNotifyIconDataW
-
Код конечно к черту переписать, код принципиально не сможет работать с Юникод.
-
Кстати я обратил внимание, что Дельфи 7, а у нее редактор не Юникодовый!
-
все стереть к черту, проект перевести на D2009 - там есть и юникод и компонент для запуздыривания иконки не хуже TCoolTrayIcon :-)
-
> Eraser © (09.09.08 00:39) [18]
Некромант? (с) sniknik
-
-
> s: String;
И хде тута юникода?
Остальные "многа букав" читать не стал, боюсь глазки поломать...
|