Урок 25 - Подробное изучение RichEdit'a

  В этом уроке изучим компонент RichEdit на вкладке Win32.

   Кинем на форму компонент RichEdit и ToolBar, свойство Align у RichEdit установим на alClient и наш компонент растянется на всю форму. Определимся что будет уметь делать наш редактор: Загружать, сохранять, выравнивание (По левому краю, по центру, по правому краю), стилизация текста.

   Итак начнем с самого простого, загрузка и сохранение, вытаскиваем 2 компонента OpenDialog и SaveDialog с вкладки Dialogs, и кликаем на ToolBar правой кнопкой, в появившемся меню выбираем New Button, также создадим еще одну кнопочку.

Результат
Вот что должно получится


  И в первой и во второй создаем событие OnClick и пишем код:
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then  //Вызываем диалог открытия
    RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName); //Открываем файл
end;
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
  if SaveDialog1.Execute then //Вызываем диалог сохранения
    RichEdit1.Lines.SaveToFile(SaveDialog1.FileName); //Сохраняем файл
end;
   Загрузку и сохранение мы реализовали, теперь стилизацию текста, для этого сделаем разделитель в ToolBar'е, кликаем на него правой кнопкой и в меню выбираем New Separator и описанным выше способом создаем 3 кнопки и в их обработчиках событий OnClick пишем код:
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
  RichEdit1.SelAttributes.Style:=[fsBold];  //Жирный
end;

procedure TForm1.ToolButton5Click(Sender: TObject);
begin
  RichEdit1.SelAttributes.Style:=[fsItalic]; //Курсив
end;

procedure TForm1.ToolButton6Click(Sender: TObject);
begin
  RichEdit1.SelAttributes.Style:=[fsUnderline]; //Подчеркнутый
end;


Результат


   Теперь выравнивание, также создаем разделитель и 3 кнопки. В событиях OnClick следующий код:
procedure TForm1.ToolButton7Click(Sender: TObject);
begin
  RichEdit1.Paragraph.Alignment:=taLeftJustify;//По левому краю
end;

procedure TForm1.ToolButton8Click(Sender: TObject);
begin
  RichEdit1.Paragraph.Alignment:=taCenter;// По центру
end;

procedure TForm1.ToolButton9Click(Sender: TObject);
begin
  RichEdit1.Paragraph.Alignment:=taRightJustify;// По правому краю
end;


Результат


   Цвет шрифта, вытаскиваем диалог выбора цвета ColorDialog и делаем кнопку с разделителем. В событии OnClick код:
procedure TForm1.ToolButton12Click(Sender: TObject);
begin
  if ColorDialog1.Execute then //Открываем диалог выбора цвета
    RichEdit1.SelAttributes.Color:= ColorDialog1.Color; //Применяем цвет выделенному фрагменту
end;


Результат


   Работает! Теперь научимся изменять размер выделенного текста, опять делаем разделить и вставляем Edit с компонентом UpDown. Свойство Associate установить на Edit1. В обработчике события Edit1 OnChange напишем код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  RichEdit1.SelAttributes.Size:=StrToInt(Edit1.Text);  // Изменяем размер
end;


Результат


   Можно изменять внешний вид шрифта, вытащим FontDialog и создадим еще одну кнопочку в её событии OnClick напишем:
procedure TForm1.ToolButton15Click(Sender: TObject);
begin
   if FontDialog1.Execute then
    RichEdit1.Font:= FontDialog1.Font;
end;


Результат


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

   Все что нам надо сделать это вытащить ActionList и PopupMenu на вкладке Standart. Кликаем два раза на ActionList и дальше как на картинке.

Результат


   Затем выбираем действие в появившемся меню TEditCut, также добавляем: TEditCopy, TEditPaste, TEditSelectAll, TEditUndo. В конечном итоге у вас должно получится вот это:

Результат


   Теперь в PopupMenu создаём 5 пунктов с любым именем, в свежесозданом пункте в свойстве Action выберем наше действие и Caption задастся сам и так для всех пяти штук, по желанию их можно перевести на русский язык. К конце нужно установить свойство PopupMenu RichEdit'а на PopupMenu1 и все готово можно пользоваться правой кнопкой.

Результат


   Картинки я оставляю на вашу совесть. Экспериментируете!

Удачи!
Встретимся в следующем уроке!



  1. Владимир
    Владимир 2 years ago
    Здравствуйте! Очень много информации для начинающих, но мне хотелось-бы понять как добавлять в RichEdit картинки у меня это не получается.
    • Василий
      Василий a year ago
      Кидаешь на форму ImageList, заполняешь его картинками, далее к форме привязываешь его и выбираешь индекс картинки для каждой кнопки.
Отменить.