Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2006, 08:52
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию Как сохранить стиль шрифта?

Ребята, подскажите как сохранить стиль шрифта (жирный, курсив и т.д)? Я пишу текстовый редактор, уже научился сохранять сам шрифт и его размер. Все данные о шрифте хранятся у меня в ini-файле. Заранее благодарен.
Ответить с цитированием
  #2  
Старый 10.12.2006, 12:34
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Вот пример из DRKB
Код:
 
uses...Registry; 
 
procedure SaveFontToRegistry(Font: TFont; SubKey: string); 
var 
  R: TRegistry; 
  FontStyleInt: byte; 
  FS: TFontStyles; 
begin 
  R := TRegistry.Create; 
  try 
    FS := Font.Style; 
    Move(FS, FontStyleInt, 1); 
    R.OpenKey(SubKey, True); 
    R.WriteString('Font Name', Font.Name); 
    R.WriteInteger('Color', Font.Color); 
    R.WriteInteger('CharSet', Font.Charset); 
    R.WriteInteger('Size', Font.Size); 
    R.WriteInteger('Style', FontStyleInt); 
  finally 
    R.Free; 
  end; 
end; 
 
function ReadFontFromRegistry(Font: TFont; SubKey: string): boolean; 
var 
  R: TRegistry; 
  FontStyleInt: byte; 
  FS: TFontStyles; 
begin 
  R := TRegistry.Create; 
  try 
    result := R.OpenKey(SubKey, false); if not result then exit; 
    Font.Name := R.ReadString('Font Name'); 
    Font.Color := R.ReadInteger('Color'); 
    Font.Charset := R.ReadInteger('CharSet'); 
    Font.Size := R.ReadInteger('Size'); 
    FontStyleInt := R.ReadInteger('Style'); 
    Move(FontStyleInt, FS, 1); 
    Font.Style := FS; 
  finally 
    R.Free; 
  end; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if FontDialog1.Execute then 
    begin 
      SaveFontToRegistry(FontDialog1.Font, 'Delphi Kingdom\Fonts'); 
    end; 
end; 
 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  NFont: TFont; 
begin 
  NFont := TFont.Create; 
  if ReadFontFromRegistry(NFont, 'Delphi Kingdom\Fonts') then 
    begin //здесь добавить проверку - существует ли шрифт 
      Label1.Font.Assign(NFont); 
      NFont.Free; 
    end; 
end;
Ответить с цитированием
  #3  
Старый 10.12.2006, 12:48
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Вот еще один
Код:
 
function FontToStr(font: TFont): string; 
  procedure yes(var str: string); 
  begin 
 
    str := str + 'y'; 
  end; 
  procedure no(var str: string); 
  begin 
 
    str := str + 'n'; 
  end; 
begin 
 
  {кодируем все атрибуты TFont в строку} 
  Result := ''; 
  Result := Result + IntToStr(font.Color) + '|'; 
  Result := Result + IntToStr(font.Height) + '|'; 
  Result := Result + font.Name + '|'; 
  Result := Result + IntToStr(Ord(font.Pitch)) + '|'; 
  Result := Result + IntToStr(font.PixelsPerInch) + '|'; 
  Result := Result + IntToStr(font.size) + '|'; 
  if fsBold in font.style then 
    yes(Result) 
  else 
    no(Result); 
  if fsItalic in font.style then 
    yes(Result) 
  else 
    no(Result); 
  if fsUnderline in font.style then 
    yes(Result) 
  else 
    no(Result); 
  if fsStrikeout in font.style then 
    yes(Result) 
  else 
    no(Result); 
end; 
 
procedure StrToFont(str: string; font: TFont); 
begin 
 
  if str = '' then 
    Exit; 
  font.Color := StrToInt(tok('|', str)); 
  font.Height := StrToInt(tok('|', str)); 
  font.Name := tok('|', str); 
  font.Pitch := TFontPitch(StrToInt(tok('|', str))); 
  font.PixelsPerInch := StrToInt(tok('|', str)); 
  font.Size := StrToInt(tok('|', str)); 
  font.Style := []; 
  if str[0] = 'y' then 
    font.Style := font.Style + [fsBold]; 
  if str[1] = 'y' then 
    font.Style := font.Style + [fsItalic]; 
  if str[2] = 'y' then 
    font.Style := font.Style + [fsUnderline]; 
  if str[3] = 'y' then 
    font.Style := font.Style + [fsStrikeout]; 
end; 
 
function tok(sep: string; var s: string): string; 
 
  function isoneof(c, s: string): Boolean; 
  var 
    iTmp: integer; 
  begin 
    Result := False; 
    for iTmp := 1 to Length(s) do 
    begin 
      if c = Copy(s, iTmp, 1) then 
      begin 
        Result := True; 
        Exit; 
      end; 
    end; 
  end; 
var 
 
  c, t: string; 
begin 
 
  if s = '' then 
  begin 
    Result := s; 
    Exit; 
  end; 
  c := Copy(s, 1, 1); 
  while isoneof(c, sep) do 
  begin 
    s := Copy(s, 2, Length(s) - 1); 
    c := Copy(s, 1, 1); 
  end; 
  t := ''; 
  while (not isoneof(c, sep)) and (s  '') do 
  begin 
    t := t + c; 
    s := Copy(s, 2, length(s) - 1); 
    c := Copy(s, 1, 1); 
  end; 
  Result := t; 
end;
Ответить с цитированием
  #4  
Старый 11.12.2006, 10:22
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
Радость

Списибо, вам! Ваш moo2k
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:26.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter