TMemo и TRichEdit 

  Memo - простой текстовый редактор, в котором пользователь может ввести несколько строк текста. Доступ к строкам обеспечивает свойство Lines, представляющее собой объект класса TStrings.  С помощью его методов строки можно добавлять, вставлять, удалять, читать из файла и сохранять в файл. Свойство Lines доступно из инспектора объектов на стадии дизайна. При щелчке мышью по многоточию в поле свойства Lines вызывается редактор строк. 
   Основное отличие RichEdit от Memo - это возможность вывода и редактирования форматированного текста. Форматирование текста предполагает форматирование шрифта , т.е. отдельные фрагменты текста могут иметь различные атрибуты (цвет, начертание, размер и другие ),  и   форматирование абзацев - каждый абзац может иметь свои параметры (отступы, выравнивание и др.).
Memo и RichEdit
Свойство Описание
TAlign Align Способ выравнивания окна Memo в пределах владельца.
TAlignment Alignment Расположение текста в пределах окна Memo.
TStrings Lines Строки текста в многострочном редакторе.
bool ReadOnly Если равно true, то пользователь не может редактировать текст.
TScrollStyle ScrollBars Определяет видимость полос прокрутки.
bool WordWrap Если равно true, то работает перенос слов.
Только RichEdit
Свойство Описание
bool PlainText Определяет, простой или форматированный текст отображать.

TStrings

TStrings - базовый класс  списка (массива) строк.
TStrings представляет  свойства и методы для того, чтобы:
  • Добавить, или удалить строки в указанных позициях в списке.
  • Перестроить строки в списке.
  • Обращаться к строке в специфическом местоположении.
  • Читать строки и сохранять строки в файл или поток.
  • Связать объект с каждой строкой в списке.
Свойства Описание
int Count Указывает число строк в списке.
:AnsiString Strings[int Index] Строка с индексом Index. (индексация начинается с 0).
AnsiString Text Одиночная строка содержащая все строки списка, разграниченными переводами каретки и переводами строки.
 
Метод Описание
void  Append( AnsiString S) Добавляет строку S к концу списку.
void  Assign ( TPersistent* Source) Устанавливает строки в списке, и возможно связанные объекты, от исходного объекта Source
void Clear() Удаляет все строки в списке и связанные с ними ссылки на объекты.
void Delete( int I ) Удаляет указанную строку из списка.
void Exchange(int I1, int I2) Меняет позицию двух строк в списке.
int  IndexOf(AnsiString S) Возвращает позицию первого вхождения  строки S в списке. Если строки не в списке строк, возвращает  -1.
void  Insert ( int Index,   AnsiString S) Вставляет строку  S в позицию Index.
void  LoadFromFile ( AnsiString FileName) Читает строки из файла,   указанного  в FileName.
void Move ( int CurIndex, int NewIndex); Перемещает  строку из позиции CurIndex в позицию NewInde
void  SaveToFile ( AnsiString FileName ) Сохраняет строки в файле,   указанному  в FileName.

OpenDialog и SaveDialog.

Диалоговые окна для выбора открываемого или сохраняемого файла организуются с помощью компонентов OpenDialog   и SaveDialog, расположенные на странице Dialogs .
Свойства Описание
AnsiString DefaultExt Определяет заданное по умолчанию расширение файла.
AnsiString FileName FileName возвращает имя и полный путь   последнего выбранного файла.
AnsiString Filter   Определяет маски файла (фильтры), доступные в диалоге.
Чтобы конфигурировать маски файла во времени разработки, нажмите на метки  (...) направо от свойства Filter в  Инспекторе Объектов. Это открывает редактор Filter. В левом столбце редактора под Filter Name -  краткое описание  типа файлов, которые будут доступны. В правом столбце напечатают маску файла, соответствующую каждому описанию. Например, описание "Текстовые файлы" могло бы появляться налево от маски " *. TXT ", и описание " исходные файлы Паскаля " могло бы появляться налево от маски " *. PAS ".
Чтобы создавать маски файла в коде программы, назначьте значение свойству Filter, которое состоит из описания и маски, отделяемой символом "|". Например,
OpenDialog1->Filter = "Text files (*.txt)|*.TXT".
Множественные фильтры должны отделиться символом "|". Например,
OpenDialog1->Filter = "Text files |*.TXT|Pascal files|*.PAS";
Чтобы включать несколько  масок в  фильтр, отделите маски  точкой с запятой.  Например,
OpenDialog1->Filter = "Pascal files|*.PAS;*.DPK;*.DPR";
Если никакое значение не назначено Filter, диалог отображает все файлы типа.
int FilterIndex Определяет выбранный по умолчанию   фильтр при открытии диалога.
AnsiString InitialDir Определяет текущий каталог при открытии диалога.
Если никакое значение не назначено к InitialDir, или если определенный каталог не существует, диалог открывается с текущим каталогом.
 
Методы Описание
bool Execute Открывает диалог выбора файла, возвращая истину, когда пользователь выбирает файл и нажимает Open. Если пользователь нажимает Cancel, Execute возвращает ложь.

RichEdit ( пример-задание)

Создать приложение, содержащее форму со следующими визуальными компонентами:
  • RichEdit - для вывода на экран форматированного текста.
  • Две кнопки BitBtn - для вызова стандартных диалогов открытия файла и сохранения текста в файл.
  • Edit - для отображения полного имени файла, выведенного в RichEdit.
  • Для тестирования Вашего приложения создайте, используя  WinWord, небольшой файл с применением возможностей форматирования и сохраните его в формате RTF в папке C:\Мои документы.

Смотри пример: RichEdit  -  шаг 4.

Создайте новое приложение, на Form1 поместите компоненты и установите их свойства:
Компонент Свойства Значение
Panel  Name Panel1
  Align alTop
RichEdit Name RichEdit1
  Align alClient

Смотри пример: RichEdit  -  шаг 1.

На Panel1 поместите компоненты и установите их свойства:
Компонент Свойства Значение
Edit  Name Edit1
  Enabled false
BitBtn Name BBopen
  Caption Open
  Glyph fileopen.bmp   см. комментарии
BitBtn Name BBsave
  Caption Save
  Glyph filesave.bmp см. комментарии

Комментарии :
  Edit1
в данном приложении предназначен только для отображения имени файла и не предусматривает его редактирования. Поэтому его свойство Enabled установлено в false.
Для установки свойства Glyph компонента BitBtn используется специальный ввод , предусматривающий чтение графического образа из файла с расширением .BMP.
Указанные файлы находятся в папке ...\Images\Buttons\ .
Смотри пример: RichEdit  -  шаг 2.

Поместите на форму невизуальные компоненты OpenDialog и SaveDialog и установите их свойства:
Компонент Свойства Значение
OpenDialog Name OpenDialog1
  Filter RTF|*.rtf
  InitialDir C:\Мои документы'
SaveDialog Name SaveDialog1
  DefaultExt rtf'
  Filter RTF|*.rtf
  InitialDir C:\Мои документы

Смотри пример: RichEdit  -  шаг 3.

· Для кнопки BBopen введите код тела функции обработчика события OnClick
void __fastcall TForm1:: BBopenClick(TObject *Sender)
{
if(OpenDialog1->Execute()) Вызов модального диалога открытия файла
  {
   Edit1->Text=OpenDialog1->FileName; Отображение имя файла в Edit1
   RichEdit1->Lines->LoadFromFile
             (OpenDialog1->FileName);
Чтение выбранного файла в RichEdit
  }
}

Для кнопки BBsave введите код тела функции обработчика события OnClick

void __fastcall
TForm1::BBsaveClick(TObject *Sender)
{
if(SaveDialog1->Execute()) Вызов модального диалога сохранения файла
  {
   Edit1->Text=SaveDialog1->FileName; Отображение имя файла в Edit1
   RichEdit1->Lines->SaveToFile
             (SaveDialog1->FileName);
Сохранение выбранного файла
  }
}

Memo (задание)

Создать приложение, содержащее форму со следующими визуальными компонентами:
  • Memo - для вывода на экран неформатированного текста
  • Две кнопки BitBtn - для вызова стандартных диалогов открытия файла и сохранения текста в файл
  • Edit - для отображения полного имени файла, выведенного в Memo.
  • Для тестирования Вашего приложения создайте, используя  Блокнот, небольшой файл и сохраните его с расширением TXT в папке C:\Мои документы.