Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »
Страницы: 1 2

RichEdit в Kol [Delphi, Windows]


QAZ   (19.02.16 17:42

Никак не въеду в принцип работы ричедита в принципе и в кол тем более.
Нужно тупо назначить конкретный шрифт и размер, конкретно всему тексту.
Из того что мне удалось пример
procedure Test;
Var s,dos:AnsiString;
begin
 s:='Некоторые оптимизации оконных программ';
 SetString(dos,nil,length(s));
 CharToOemA(PAnsiChar(s),PAnsiChar(dos));
  RichEdit1.BeginUpdate;
  RichEdit1.Text:=dos;
  RichEdit1.SelectAll;
  RichEdit1.RE_Font.FontName:='Terminal';
  RichEdit1.RE_Font.FontHeight:=320;
  RichEdit1.EndUpdate;
RichEdit1.RE_SaveToFile('D:\txt.txt',reText,false);
end;

в результате имя шрифта устанавливается, размер непонятно в каких единицах (на глаз 14й) тоже, но у текста визуально  проглатываются буквы, при этом в сохраненном в файл тексте все норм.
Кодировка оем и данный шрифт принципиальны.
может надо еще какой-то параметр изменить?
и вообще я правильно текст меняю или нет?
например метод RichEdit1.RE_FmtFontName который вроде как тоже должен изменять имя шрифта абсолютно не работает


RusSun ©   (19.02.16 19:40[1]

...
RichEdit1.RE_Font.FontHeight:=-14;


DWorker   (20.02.16 06:08[2]

Всё это описано в книге по КОЛу..


> RE_FmtBold - стиль "утолщенный" для шрифта в области форматирования,
>  для того,
> чтобы узнать, относится ли возвращенное значение ко всем
> символам в области
> выделения или только к первому символу, следует использовать
> свойство:
> RE_FmtBoldValid;
> И, аналогичные свойства для прочих стилей символов:
...
RE_FmtFontName и RE_FmtFontNameValid - имя шрифта.


QAZ   (20.02.16 18:33[3]

описано, но тот же RE_FmtFontName не работает

и больше интересует почему буквы пропадают


RusSun ©   (20.02.16 18:56[4]

RichEdit1.RE_Font.FontName:='Terminal';
RichEdit1.RE_Font.FontHeight:= 280; //14 в ворде
RichEdit1.RE_FmtBold:=false;


RusSun ©   (20.02.16 19:00[5]

function StrAnsiToOem(aStr : String) : String;
begin
 Result := '';
 if Length(aStr) > 0 then begin
   SetLength(Result, Length(aStr));
   CharToOem(PChar(aStr), PChar(Result));
 end;
end;


QAZ   (20.02.16 19:00[6]


> RusSun ©   (20.02.16 18:56) [4]

мой код пробовал?


RusSun ©   (20.02.16 19:42[7]


> и больше интересует почему буквы пропадают


ЌҐЄ®в®алҐ ®ЇвЁ¬Ё§ жЁЁ ®Є®­­ле Їа®Ја ¬¬
есть у меня decoder (win dos koi iso) обратно возвращает
Некоторые оптимизации оконных программ


RusSun ©   (20.02.16 20:01[8]


> Кодировка оем и данный шрифт принципиальны.

Как я понимаю это только для правильного отображения в консоли


program Project1;

{$APPTYPE CONSOLE}

uses
 Windows;

function StrAnsiToOem(aStr : String) : String;
begin
Result := '';
if Length(aStr) > 0 then begin
  SetLength(Result, Length(aStr));
  CharToOem(PChar(aStr), PChar(Result));
end;
end;
begin
 Writeln(StrAnsiToOem('Некоторые оптимизации оконных программ'));
 Readln;
end.


RusSun ©   (20.02.16 20:24[9]

procedure Test;
Var s1,s,dos:AnsiString;
begin
s:='Некоторые оптимизации оконных программ';
SetString(dos,nil,length(s));
CharToOemA(PAnsiChar(s),PAnsiChar(dos));
 RichEdit1.BeginUpdate;

  SetString(s1,nil,length(dos));
 OemToChar(PAnsiChar(dos),PAnsiChar(s1));

   RichEdit1.Text:=s1;
 RichEdit1.SelectAll;
 RichEdit1.RE_Font.FontName:='Terminal';
 RichEdit1.RE_Font.FontHeight:=280;
 RichEdit1.RE_FmtBold:=false;
 //RichEdit1.RE_Font.FontHeight:= 280; //14 в ворде
 //
 RichEdit1.EndUpdate;
RichEdit1.RE_SaveToFile('txt.txt',reText,false);
end;


DWorker   (20.02.16 20:38[10]


> описано, но тот же RE_FmtFontName не работает


Работает он..


Var
 s:   AnsiString;
 dos: AnsiString;
begin
 s := 'Некоторые оптимизации оконных программ';
 dos := ansi2oem(s);

 RichEdit1.Text := dos;
 RichEdit1.SelectAll;
 RichEdit1.RE_FmtFontCharset := DEFAULT_CHARSET;
 RichEdit1.RE_FmtFontName    := 'Terminal';
 RichEdit1.RE_FmtFontSize    := 9 * 20;



> и больше интересует почему буквы пропадают


А вот буквы пропадут.. То ли рич замечательный, то ли..

А зачем именно этот шрифт и именно oem?


QAZ   (20.02.16 20:40[11]


> RusSun ©   (20.02.16 19:42) [7]


> RusSun ©   (20.02.16 20:01) [8]

ты можешь просто посмотреть на результат моего кода без догадок и изменений?


DWorker   (20.02.16 20:44[12]

Да и с Memo таких проблем нету. Видимо в риче что-то не так


QAZ   (20.02.16 20:47[13]


> Работает он..

как же работает, если у меня даже в пустом дефолтном проекте на RE_FmtFontName никакой реакции, только через RE_Font


QAZ   (20.02.16 20:49[14]


> А зачем именно этот шрифт и именно oem?

затем, что это единственный способ в винде, корректно отобразить ДОСовский текст включая псевдографику в любом текстовом контроле


DWorker   (20.02.16 20:53[15]


> как же работает, если у меня даже в пустом дефолтном проекте
> на RE_FmtFontName никакой реакции, только через RE_Font


Ну у меня работает. Мб версия кол другая, мб ричи разные, гадать смысла не вижу.


> атем, что это единственный способ в винде, корректно отобразить
> ДОСовский текст включая псевдографику в любом текстовом
> контроле


В мемо шрифт отображается нормально


QAZ   (20.02.16 21:10[16]


> DWorker   (20.02.16 20:53) [15]

хм у меня в дефолте в этом риче вообще шрифт не меняется никаким способом, полюбому упоротая реализация
версия последняя с твоим "фиксом" меню


Dimaxx ©   (21.02.16 00:27[17]

Я тоже этот коловский ричедит не понимаю. Установил шрифт по умолчанию. Загрузка текста и его отображение происходит этим шрифтом. Но стоит начать набирать текст в любом месте - набирает системным.


RusSun ©   (21.02.16 06:08[18]


> > RusSun ©   (20.02.16 20:01) [8]
>
> ты можешь просто посмотреть на результат моего кода без
> догадок и изменений?

У меня > (20.02.16 19:42) [7] ЌҐЄ®в®алҐ ®ЇвЁ¬Ё§ жЁЁ ®Є®­­ле Їа®Ја ¬¬


QAZ   (21.02.16 10:40[19]


> RusSun ©   (21.02.16 06:08) [18]

вот видишь у тебя даже шрифт не установился через RichEdit1.RE_Font.FontName, у меня установился но буквы пропали, а у DWorker другим методом RichEdit1.RE_FmtFontName установился что у меня не работает
3 человека - 3 разных результата

з.ы. проверил в ВКЛ, если коловский визуально проглатывает буквы "а" и двойные "н", то вкэловский только двойные "н"


Страницы: 1 2 версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо