Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите вытащить символ [D5, Win2k]


Daken ©   (2002-11-26 07:15:00) 

Вообщем есть буквы казахского алфавита которых нет в латинице
или кирилице. Но в стандартном Times Roman они присутствуют
(коды Unicod"а от 0492 до 04E9) Неподскажите как можно их
использовать хотя бы в лэйбле


Alx2   (2002-11-26 08:52:00) [1]

Использовать Функции прорисовки с UniCode (суффикс W)

В реализации TLabel сего нет. Там используется Ansi вариант.

procedure TCustomLabel.DoDrawText(var Rect: TRect; Flags: Longint);
var
Text: string;
begin
Text := GetLabelText;
if (Flags and DT_CALCRECT 0) and ((Text = "") or FShowAccelChar and
(Text[1] = "&") and (Text[2] = #0)) then Text := Text + " ";
if not FShowAccelChar then Flags := Flags or DT_NOPREFIX;
Flags := DrawTextBiDiModeFlags(Flags);
Canvas.Font := Font;
if not Enabled then
begin
OffsetRect(Rect, 1, 1);
Canvas.Font.Color := clBtnHighlight;
DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
OffsetRect(Rect, -1, -1);
Canvas.Font.Color := clBtnShadow;
DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
end
else
DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
end;

где
function DrawText; external user32 name "DrawTextA"; // модуль Windows.

Несколько кривой путь к решению - заменить с помощью "разрешенных" приемов в отдельно взятом государстве
function DrawText; external user32 name "DrawTextW";
То есть написать умного и доброго наследника к TLabel с нужной спецификой. И работать с unicode. (WideString)

PS
Наверняка решение не единственно и не оптимально.


Наверх

Титульная страница Поиск, карта сайта Написать письмо