Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2009, 09:10   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Отступы в RTF

Как мне применить к имеющимся строкам RichEdit определенный отступ от левого края (хочу сделать редактор с автоматическим форматированием подпрограмм и циклов)?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.03.2009, 09:24   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Немного теории :
Цитата:
За выравнивание, отступы и т.д. в пределах текущего абзаца отвечает свойство Paragraph типа TParaAttributes. Этот тип в свою очередь имеет ряд свойств:
Alignment - Определяет выравнивание текста. Может принимать значения taLeftJustify (влево), taCenter (по центру) или taRightJustify (вправо).
FirstIndent - Число пикселей отступа красной строки.
Numbering - Управляет вставкой маркеров, как в списках. Может принимать значения nsNone — отсутствие маркеров, nsBullet — маркеры ставятся.
LeftIndent - Отступ в пикселях от левого поля.
RightIndent - Отступ в пикселях от правого поля.
TabCount - Количество позиций табуляции.
Tab - Значения позиций табуляции в пикселях.

Значения подсвойств свойства Paragraph можно задавать только в процессе выполнения приложения, например, в событии создания формы или при нажатии какой-нибудь кнопки. Значения подсвойств свойства Paragraph относятся к тому абзацу, в котором находится курсор. Например, каждый из следующих операторов осуществит соответственное выравнивание текущего абзаца:

RichEdit1.Paragraph.Alignment:=taLe ftJustify; // Влево
RichEdit1.Paragraph.Alignment:=taCe nter; // По центру
RichEdit1.Paragraph.Alignment:=taRi ghtJustify;// Вправо
Следующий оператор приведет к тому, что текущий абзац будет отображаться как список, т.е. с маркерами:
RichEdit1.Paragraph.Numbering:=nsBu llet;
Уничтожение списка в текущем абзаце осуществляется оператором
RichEdit1.Paragraph.Numbering:=nsNo ne;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 13.03.2009, 09:41   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Немного теории :
Спасибо конечно, но я сначала прочитал и попробовал. Я перехожу на нужную мне строку через ВинАпи, потом выделяю всю строку до конца и пытаюсь настроить соответствующий отступ через LeftIdent. Все чудесно работает. Только никаких видимых эффектов не возникает .
Сначала использую Lines.BeginUpdate в конце соответственно Lines.EndUpdate.
Я не силен в английском, но как я понял этот эффект применим только к вновь создаваемым абзацам. А я хочу изменять то, что введено.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.03.2009, 09:57   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
// сначала выравнивание по правому краю и что-нибудь набираем там 3-4 строки
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.Paragraph.Alignment := taRightJustify; // сначала справа 
end;

// при клике на некую кнопку выделяем 2 строку в процессе выполнения - все работает
procedure TForm1.Button1Click(Sender: TObject);
begin
with richedit1 do
begin
  selstart:=FindText(lines[1],0,length(text), [stWholeWord]);
  sellength:=length(lines[1]);
end;
RichEdit1.Paragraph.Alignment := taLeftJustify;// выделенная строка выравнивается влево
RichEdit1.Update;
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 13.03.2009, 10:03   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Попробуйте переходить на любую строку (в любое место - это неважно), ничего выделять не нужно...
Просто примените такую строку:
RichEdit1.Paragraph.FirstIndent := 10;
и вы сразу увидите результат - появится отступ.

Последний раз редактировалось mihali4; 13.03.2009 в 19:37.
mihali4 вне форума Ответить с цитированием
Старый 13.03.2009, 10:06   #6
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Как мне применить к имеющимся строкам RichEdit определенный отступ от левого края (хочу сделать редактор с автоматическим форматированием подпрограмм и циклов)?
Может лучше вставлять табы или пробелы для автоматического форматирования, чтобы в любом редакторе оно сохранилось?
s.Creator вне форума Ответить с цитированием
Старый 13.03.2009, 10:10   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от s.Creator Посмотреть сообщение
Может лучше вставлять табы или пробелы для автоматического форматирования, чтобы в любом редакторе оно сохранилось?
Нет, текст надо просто форматировать при загрузке. Сохранять по идеи должно без форматирования .
Спасибо за советы, пойду пробовать
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.03.2009, 14:53   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Это не работает не в моем проекте, не в отдельном. Даже Ваш пример с кнопкой . Я просто взял Ваш код с форума и вставил в проект. Никаких внешних изменений.
Сначала я думал, что не работает в моем приложении (мало ли чего там в ВинАпи), но теперь уже не знаю что и думать... Делфи 7
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
RTF > Jpg prizrak1390 Общие вопросы Delphi 6 06.02.2009 22:55
отступы от блока Grind HTML и CSS 0 04.01.2009 21:50
Отступы в С++ nighthack Общие вопросы C/C++ 6 16.06.2008 15:09
RTF Mickle Общие вопросы Delphi 2 03.04.2007 21:34