Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выравнивание ширины текста в RichEdit [D7, WinXP]


Suvit_ ©   (2005-02-09 11:09:00) 

Уважаемые мастера, как такое реализовано в word? Подскажите как такое реализовать средствами Delphi?


Suvit_   (2005-02-13 19:56:00) [1]

procedure TRxCustomRichEdit.CreateParams(var Params: TCreateParams);
const
 HideScrollBars: array[Boolean] of DWORD = (ES_DISABLENOSCROLL, 0);
 HideSelections: array[Boolean] of DWORD = (ES_NOHIDESEL, 0);
 WordWraps: array[Boolean] of DWORD = (0, ES_AUTOHSCROLL);
 SelectionBars: array[Boolean] of DWORD = (0, ES_SELECTIONBAR);
begin
 inherited CreateParams(Params);
 case RichEditVersion of
   1: CreateSubClass(Params, RICHEDIT_CLASS10A);
   else CreateSubClass(Params, RICHEDIT_CLASS);
 end;
 with Params do begin
   Style := (Style and not (WS_HSCROLL or WS_VSCROLL)) or ES_SAVESEL or
     (WS_CLIPSIBLINGS or WS_CLIPCHILDREN);
   { NOTE: WS_CLIPCHILDREN and WS_CLIPSIBLINGS are essential otherwise }
   { once the object is inserted you see some painting problems.       }
   Style := Style and not (WS_HSCROLL or WS_VSCROLL);
   if ScrollBars in [ssVertical, ssBoth] then
     Style := Style or WS_VSCROLL;
   if (ScrollBars in [ssHorizontal, ssBoth]) and not WordWrap then
     Style := Style or WS_HSCROLL;
   Style := Style or HideScrollBars[FHideScrollBars] or
     SelectionBars[FSelectionBar] or HideSelections[FHideSelection] and
     not WordWraps[WordWrap];
   WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
 end;
end;


Fay   (2005-02-11 15:18:00) [2]

Как выглядит CreateParams этого RxRichEdit ?


Suvit_   (2005-02-11 13:22:00) [3]


> Выравнивания по обоим краям нет. Это надо делать самому.
> Принцип простой: в позициях, где пробелы добавляешь еще
> пробелов пока длина строки не станет равна ширине клиентской
> области ричедита.

И что ты думаешь в wordе пробелы добавляются, сомниваюсь.


Fostr   (2005-02-11 11:31:00) [4]

RichEdit1.Paragraph.Alignment:=taLeftJustify;// по левому краю
RichEdit1.Paragraph.Alignment:=taCenter;    // по центру
RichEdit1.Paragraph.Alignment:=taRightJustify; //по правому краю

Выравнивания по обоим краям нет. Это надо делать самому.
Принцип простой: в позициях, где пробелы добавляешь еще пробелов пока длина строки не станет равна ширине клиентской области ричедита.


Suvit_   (2005-02-11 11:25:00) [5]

у RxRichEdit
нашел Alignment paJustify, которые по идее мне и нужен, только он почему то не работает ( выравнивание все варно по левому краю), в справке написано
paJustify - Paragraphs are justified. Rich edit controls earlier than version 3.0 display the text aligned with the left margin.
но я проверил у меня RichEditVersion = 3, что я сделал не так, может кто сталкивался, посовейтуте как исправить???


Suvit_   (2005-02-10 12:57:00) [6]

может какой winApi сообщение послать, или это ворд руками делает?


Наверх

Титульная страница Поиск, карта сайта Написать письмо