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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.08.2012, 18:28
Artem7 Artem7 вне форума
Прохожий
 
Регистрация: 25.08.2012
Сообщения: 3
Репутация: 10
По умолчанию Почему то RichEdit.Alignment не меняет свойство выравнивания

Я делаю текстовый редактор чтобы он работал и с .txt и c rtf т.е чтобы когда .txt был открыт нельзя было выбрать отдельное выравнивание для абзаца...И вот столкнулся с проблемой не выравнивает вот кусок кода...
Код:
if Pos('.txt',Textovi.Caption)>0 then RichEdit1.Alignment:=taCenter
 else RichEdit1.Paragraph.Alignment:=taCenter;
Ответить с цитированием
  #2  
Старый 25.08.2012, 20:09
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Artem7
Я делаю текстовый редактор чтобы он работал и с .txt и c rtf т.е чтобы когда .txt был открыт нельзя было выбрать отдельное выравнивание для абзаца...И вот столкнулся с проблемой не выравнивает вот кусок кода...
Код:
if Pos('.txt',Textovi.Caption)>0 then RichEdit1.Alignment:=taCenter
 else RichEdit1.Paragraph.Alignment:=taCenter;
Вообще TRichEdit весьма глючной компонент. Попробуй использовать другую реализацию, например TRxRichEdit из библиотеки RxLib (можно найти на torry.net).

Пример со стандартным TRichEdit:
Код:
  RichEdit1.PlainText:=True;
  RichEdit1.Alignment:=taCenter;
- не работает.

Пример с TRxRichEdit:
Код:
  RxRichEdit1.PlainText:=True;
  RxRichEdit1.Alignment:=taCenter;
- нормально работает.

Правда насколько я помню, у TRxRichEdit вроде были свои глюки, которых нет у стандартного TRichEdit. Так что экспериментируй.
Ответить с цитированием
  #3  
Старый 25.08.2012, 21:48
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Когда-то тоже сталкивался с такой проблемой (при выравнивании TRichEdit.Alignment). Сделал просто: копировал весь текст в StringList (если без форматирования), дальше
Код:
RichEdit1.Alignment:=taCenter;
 RichEdit1.Lines.Text:='';
 RichEdit1.Lines.AddStrings(StringList);
Но это если без форматированного текста.
Ответить с цитированием
  #4  
Старый 25.08.2012, 22:16
Аватар Аватар вне форума
Прохожий
 
Регистрация: 16.11.2010
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Вообще TRichEdit весьма глючной компонент
Причем глючность? Есть св-во Paragraph для форматирования текущего или выделенных абзацев
Ответить с цитированием
  #5  
Старый 25.08.2012, 22:39
Artem7 Artem7 вне форума
Прохожий
 
Регистрация: 25.08.2012
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Аватар
Причем глючность? Есть св-во Paragraph для форматирования текущего или выделенных абзацев
а если хорошо почитайте то я хочу сделать чтобы работало и с txt и с doc т.е если я работая с tхt то отдельные строки незя форматировать и надо форматировать общий текст...
У мя были мысли проходить по всем строкам и выравнивать через параграф но это Муть надо более рациональное решение...
Ответить с цитированием
  #6  
Старый 25.08.2012, 23:07
Аватар Аватар вне форума
Прохожий
 
Регистрация: 16.11.2010
Сообщения: 8
Репутация: 10
По умолчанию

Я про выделенные абзацы не просто так написал
Код:
  RichEdit1.SelStart:=0;
  RichEdit1.SelLength:=Length(RichEdit1.Text);
  RichEdit1.Paragraph.Alignment:=taCenter;
  RichEdit1.SelStart:=0;

Последний раз редактировалось Аватар, 25.08.2012 в 23:10.
Ответить с цитированием
  #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.

Последний раз редактировалось poli-smen, 26.08.2012 в 02:58.
Ответить с цитированием
  #8  
Старый 26.08.2012, 08:59
Artem7 Artem7 вне форума
Прохожий
 
Регистрация: 25.08.2012
Сообщения: 3
Репутация: 10
По умолчанию

poli-smen, потестил вариант Аватара с вашими доработками всё робит...пока не найду косяк к этому варианту склонюсь
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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