![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использвание CharSet [D5, Win95/98]
Мефодий © (2002-11-05 09:58:00)Каким образом можно в RunTime загрузить перечень CharSet в ListBox и потом выбирать из него и присваивать свойству Font.CharSet ? Читал в хелпе про GetCharSetValues, но не смог использовать.
Спасибо.
Мефодий (2002-11-05 16:48:00) [1]Все сработало !
Спасибо всем.
Skier (2002-11-05 15:02:00) [2]>Мефодий
см. CharsetToIdent(...) и IdentToCharset(...)
Мефодий (2002-11-05 14:57:00) [3]С помощью кода от <Рыжик ©> благополучно загрузил CharSet в ListBox. Но как же сделать обратное ?
Label1.Font.Charset := ListBox1.Items[ListBox1.ItemIndex],
естественно, не срабатывает, так как тут разные типы: TFontCharset и String. Брать в качестве значения константы ItemIndex тоже нельзя так как в Graphics.pas они идут не подряд (0,1,2,77,128...).
Пришлось создать свой массив констант (используя данные из Graphics.pas)
const aConst: array[0..17] of integer = (0,1,2,77,128,129,130,134,136,161,162,177,178,186,204,222,238,255);
и изменить предыдущий код на
Label1.Font.Charset := aConst[ListBox1.ItemIndex];
В общем, нормально работает, но как то некрасиво все это. Может есть код попроще ?
Marcus (2002-11-05 12:46:00) [4]На самом деле в windows.pas описаны константы от ANSI_CHARSET до RUSSIAN_CHARSET. Собственно они же есть и в массиве FontCharsets в Graphics.pas и GetCharsetValues именно их и перебирает. Но поскольку он спрятан в implementation, можно его просто выдрать оттуда в свой юнит и засунуть в ListBox в цикле.
Рыжик (2002-11-05 11:59:00) [5]
> Читал в хелпе про GetCharSetValues, но не смог использовать
А там даже пример есть, между прочим!
procedure TForm1.AddCharacterSet(const S: string);
begin
ListBox1.Items.Add(S);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetCharsetValues(AddCharacterSet);
end;
Skier (2002-11-05 10:03:00) [6]>Мефодий
посмотри реализацию редактора св-ва TFontCharsetProperty