Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
Devillio
Member

Откуда: Волгоград
Сообщений: 274
Добрый день!

Вопрос скорее по rtf, но т.к. использую DevExpress.VCL, задаю тут :)
Устанавливаю размер:
cxRichEdit.SelAttributes2.Size := 8

А после сохранения вижу в параграфе не \fs16, а fs12
Методом подгона установил, что Size := 11 дает \fs16, но также иногда дает и \fs17 (что 8.5pt)
Подскажите, будьте добры, кто знает, как точно определять размер шрифта?
Нужны 8, 10 и 12 )

Спасибо!
6 ноя 18, 11:49    [21725020]     Ответить | Цитировать Сообщить модератору
 Re: TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6271
по вопросу не знаю ;) , но заметил кое-что похожее

TEdit

//выставил Font.Name в "Arial"

Font.Size:=8   --> Font.Height=-11
Font.Size:=11  --> Font.Height=-15
6 ноя 18, 15:33    [21725389]     Ответить | Цитировать Сообщить модератору
 Re: TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46152

Devillio
Вопрос скорее по rtf, но т.к. использую DevExpress.VCL, задаю тут :)

Скорее это вопрос по DevExpress. При пересчёте размеров шрифта используется DPI экрана.

Posted via ActualForum NNTP Server 1.5

6 ноя 18, 16:24    [21725480]     Ответить | Цитировать Сообщить модератору
 Re: TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1933
Devillio
Вопрос скорее по rtf, но т.к. использую DevExpress.VCL, задаю тут :)
Устанавливаю размер:
cxRichEdit.SelAttributes2.Size := 8

А после сохранения вижу в параграфе не \fs16, а fs12
Методом подгона установил, что Size := 11 дает \fs16, но также иногда дает и \fs17 (что 8.5pt)
Подскажите, будьте добры, кто знает, как точно определять размер шрифта?
Нужны 8, 10 и 12 )

Спасибо!
А стандартный TRichEdit как себя ведёт?
6 ноя 18, 17:17    [21725584]     Ответить | Цитировать Сообщить модератору
 Re: TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
Devillio
Member

Откуда: Волгоград
Сообщений: 274
используется DPI экрана

да, это так. При смене - все цифры меняются.
Решил проблему так. При OnCreate - ставлю RETextPrim.Style.Font.Size := 8;
(иначе на других DPI может быть что угодно там, а у меня еще и скалирование ScaleBy при создании форм, для слабовидящих, тоже влияет).

+ При изменении пользователем назначаю:
procedure TdlgEditPrim.BTextSize10Click(Sender: TObject);
begin
  RETextPrim.SelAttributes2.Size := 13;
end;

procedure TdlgEditPrim.BTextSize12Click(Sender: TObject);
begin
  RETextPrim.SelAttributes2.Size := 15;
end;

procedure TdlgEditPrim.BTextSize8Click(Sender: TObject);
begin
  RETextPrim.SelAttributes2.Size := 11;
end;

+ При перемещении курсора
procedure TdlgEditPrim.RETextPrimPropertiesSelectionChange(Sender: TObject);
begin

  BTextBold.Down := fsBold in RETextPrim.SelAttributes2.Style;
  BTextItalic.Down := fsItalic in RETextPrim.SelAttributes2.Style;
  BTextUnderline.Down := fsUnderline in RETextPrim.SelAttributes2.Style;

  BTextSize8.Down := RETextPrim.SelAttributes2.Size = 11;
  BTextSize10.Down := RETextPrim.SelAttributes2.Size = 13;
  BTextSize12.Down := RETextPrim.SelAttributes2.Size = 15;

end;

+ а при сохранении просто "чиню":
  function CorrectFonts(AStr: String): String;
  begin
    Result := AStr;
    Result := StringReplace(Result, '\f1 ', '\f0 ', [rfReplaceAll]);
    Result := StringReplace(Result, '\fs17 ', '\fs16 ', [rfReplaceAll]);
    Result := StringReplace(Result, '\fs23 ', '\fs24 ', [rfReplaceAll]);
    Result := StringReplace(Result, '\fs19 ', '\fs20 ', [rfReplaceAll]);
    Result := StringReplace(Result, '\fs21 ', '\fs20 ', [rfReplaceAll]);
  end;

Вдруг кому-то понадобится, вполне подходит :)
7 ноя 18, 07:57    [21726074]     Ответить | Цитировать Сообщить модератору
 Re: TcxRichEdit при сохранении в rtf - Font.Size не соответствует тегу \fsXX  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 46152

Devillio
Решил проблему так. При OnCreate - ставлю RETextPrim.Style.Font.Size := 8;

Если хочешь задавать размер шрифта в пикселях - не используй Size, используй Heigth.

Posted via ActualForum NNTP Server 1.5

7 ноя 18, 13:07    [21726638]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить