![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли сохранять и считывать TFont из файла [D7, WinXP]
Гриха © (2005-08-16 04:18:00)Здравствуйте, уважаемые Мастера!
Написал миниатюрные экранные часы с ремайндером.
Для хранения данных о настройках пользователя использовал файл опций.
При каждом закрытии программы в него производится запись, а при открытии она считывается
Записывается примерно такая запись:
type opts = record
dt:TDateTime; \\ Время ремайндера
op:Boolean; \\ Прозрачность фона вокаруг часов
xy:TPoint; \\ Положение на экране
f:TFont; \\ шрифт, которым отображаются часы
end;
var
o:opts
Bсе работает, все применяется, кроме шрифта. А шрифт - по умолчанию. Применяю таким вот образом:
label1.font:=o.f;
Помогите, пожалуйста.
PS^ Здесь могут быть ошибки синтаксиса - Дельфы под рукой нет.
Пип (2005-08-16 09:02:00) [1]Hierarchy
TObject
TPersistent
TGraphicsObject
TFont
afanasic (2005-08-16 08:56:00) [2]Сохраняй отдельно FontName, Size и Bold... меньше головняков, а потом устанавливай...
Gydvin (2005-08-16 06:45:00) [3]function fonttostr(font:tfont):string;
var
s,p:string;
begin
if font.Style=[] then p:='[]';
if font.Style=[fsBold] then p:='[fsBold]';
if font.Style=[fsItalic] then p:='[fsItalic]';
if font.Style=[fsBold,fsItalic] then p:='[fsBold,fsItalic]';
s:=s+'name='+font.Name+'*'+
'color='+colortostring(font.Color)+'*'+
'Size='+inttostr(font.size)+'*'+
'Height='+inttostr(font.Height)+'*'+'Style='+p;
result:=s;
end;
function strtofont(s:string):tfont;
var
r:tstringlist;
p:string;
begin
if s<>'' then begin
result:=tfont.Create;
r:=tstringlist.Create;
r.Sorted:=false;
while pos('*',s)>0 do begin
r.Add(copy(s,1,pos('*',s)-1)) ;
delete(s,1,pos('*',s)) ;
end;
if s<>'' then begin
r.Add(s);
s:='';
end;
result.Name:=r.Values['name'];
result.Color:=stringtocolor(r.Values['color']);
result.Height:=strtoint(r.Values['Height']);
result.Size:=strtoint(r.Values['size']);
p:= r.Values['style'];
if p='[]' then result.Style:=[] ;
if p='[fsBold]' then result.Style:=[fsBold];
if p='[fsItalic]' then result.Style:=[fsItalic];
if p='[fsBold,fsItalic]' then result.Style:=[fsBold,fsItalic];
// result.Charset:=DEFAULT_CHARSET;
// result.Pitch:=fpDefault;
r.Free;
// result.Free;
end;
end;
Гриха (2005-08-16 05:24:00) [4]Спасибочки. Попробую...
Юрий Зотов (2005-08-16 05:18:00) [5]Сама Delphi ведь сохраняет фонты? Сохраняет. Значит, и нам можно.
Измените у формы любые свойства фонта, а потом просмотрите форму, как текст - и увидите, что и как там сохраняется.