Показать сообщение отдельно
  #7  
Старый 26.08.2012, 02:54
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Аватар
Я про выделенные абзацы не просто так написал
Код:
  RichEdit1.SelStart:=0;
  RichEdit1.SelLength:=Length(RichEdit1.Text);
  RichEdit1.Paragraph.Alignment:=taCenter;
  RichEdit1.SelStart:=0;
Я вообще-то про глючность TRichEdit-а тоже не просто так написал. Вы этот код проверяли? Он нерабочий. Выполните его и обратите внимание на последнюю (пустую) строчку в RichEdit1 - она не будет выровнена по центру.
Кстати у TRichEdit-а есть специальный метод для выделения всего текста - SelectAll. Поэтому более правильно вышеприведённый код должен выглядеть так:
Код:
RichEdit1.SelectAll;
RichEdit1.Paragraph.Alignment:=taCenter;
RichEdit1.SelStart:=0;
Вот в таком виде даже последняя (пустая) строчка будет выровнена правильно.

Тем не менее что в первом, что во втором случае достаточно выделить весь текст (Ctrl+A) и удалить его (Delete) и опять выравнивание будет не по центру, а в соответствии с значением свойства RichEdit1.Alignment (а вовсе не в соответствии с RichEdit1.Paragraph.Alignment).
И отсюда кстати вытекает способ который предлагает YVitaliy: Свойство RichEdit1.Alignment правильно сработает только на пустом TRichEdit. Если же TRichEdit непустой и содержит нужный текст, то перед очисткой TRichEdit-а этот текст можно сохранить. Например так:
Код:
var
  s: String;
begin
  RichEdit1.Alignment := taCenter;
  s := RichEdit1.Text;
  RichEdit1.Text := '';
  RichEdit1.Text := s;
end;

P.S. Речь выше шла конечно же о неформатированном тексте. В форматированном же тексте каждый абзац может быть выровнен по своему и тут уже нужно использовать свойство Paragraph.
Ответить с цитированием