Как сделать текстовый редактор в delphi

Добавил пользователь Владимир З.
Обновлено: 16.09.2024

Для работы с многострочным текстом Delphi предоставляет компонент Memo. Многострочный редактор имеет практически те же возможности по редактированию текста, что и однострочные редакторы. Главное отличие этих элементов управления заключается в том, что многострочный редактор содержит несколько строк текста.

Cвойство Text

На скриншоте ниже видно, что в редакторе кода Delphi данное свойство, так же как и другие свойства появляется в подсказке (всплывающее окно) уже тогда, когда мы ввели первую букву названия данного свойства.

Свойство Lines

При этом появится скажем так, редактор. С помощью которого мы можев в ручную отредактировать записи в Memo на этопе разработки программы.

Для работы с отдельными строками используется свойство Lines типа TStrings. Класс TStrings служит для выполнения операций со строками и имеет различные свойства и методы, которые уже были рассмотрены выше. Компонент Memo позволяет использовать возможности этого класса через свое свойство Lines.

Рассмотрим примеры операций с многострочным редактором:

В этом примере четвертой строке редактора Memo1 присваивается новое значение asd (напомним, что в классе TStrings нумерация строк начинается с нуля). Содержимое редактора Memo2 полностью очищается. В конец текста редактора MemoЗ добавляется новая строка.

Методы LoadFromFile и SaveToFile

Содержимое компонента Memo можно загружать из текстового файла и сохранять в текстовом файле. Для этого удобно использовать методы LoadFromFile (const FileName: String) и SaveToFile (const FileName: String) класса TString. Параметр FileName методов определяет текстовый файл для операций чтения и записи.

Пример чтения информации из текстового файла в компонент Memo1:

и записи информации из компонента Memo2 в текстовый файл:

Свойство ScrollBars

Для удобного просмотра информации можно задать в поле редактирования полосы прокрутки с помощью свойства ScrollBars типа TScrollStyle, принимающего следующие значения:

  • ssNone (полосы прокрутки отсутствуют) — по умолчанию;
  • ssHorizontal (горизонтальная полоса прокрутки снизу);
  • ssVertical (вертикальная полоса прокрутки справа);
  • ssBoth (есть обе полосы прокрутки).

Свойство Alignment — способ выравнивания текста в Memo

Текст в поле компонента Memo может быть выровнен различными способами. Способ выравнивания определяет свойство Alignment типа TAlignment, которое может принимать одно из следующих значений:

  • taLeftJustify (выравнивание по левой границе) — по умолчанию;
  • taCenter (выравнивание по центру);
  • taRightJustify (выравнивание по правой границе).

Cвойство WantReturns — реакция компонента Memo на нажатие клавиши Enter

В отличие от однострочного редактора, компонент Memo обладает возможностью реакции на нажатие клавиши . Чтобы при этом происходил ввод новой строки, свойству WantReturns типа Boolean должно быть установлено значение True (по умолчанию). В противном случае редактор не реагирует на нажатие клавиши .

Cвойство WantTabs — реакция компонента Memo на клавишу Tab

Аналогично значение свойства WantTabs типа Boolean определяет реакцию компонента на нажатие клавиши . Если свойство установлено в значение True, то при нажатии клавиши в текст вставляются символы табуляции. По умолчанию свойство WantTabs имеет значение False, и при нажатии клавиши редактор передает фокус ввода следующему оконному элементу управления.

Рассмотрим на примере, как производится установка значений табуляторов:

Здесь для компонента Memo1 определяется новое значение табулятора, равное 100 единицам. Для компонента Memo2 устанавливаются три значения табулятора.

Даже в случае, когда свойства WantReturns и WantTabs имеют значение False, компонент Memo способен обработать нажатия клавиш или при нажатой клавише .

В статье рассматривается разработка текстового редактора в системе программирования Delphi, поддерживающего форматирование текста. Редактор содержит панель инструментов и позволяет настраивать параметры вводимого текста для каждого из символов. Рассмотренный в работе пример может быть использован при обучении студентов и школьников программированию.

Ключевые слова

ПРОЦЕСС ОБУЧЕНИЯ, ТЕКСТОВЫЙ РЕДАКТОР, ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ, РАЗРАБОТКА ПРОГРАММЫ, ФОРМАТИРОВАНИЕ ТЕКСТА

Текст научной работы

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

Изучение программирования начинается в школьном курсе информатики, в некоторых случаях учащиеся изучают программирование как отдельную дисциплину в рамках углубленного изучения или факультативов и школьных кружков. В вузовском курсе объем и глубина изучения программирования зависит от конкретного направления и профиля обучения.

В процессе обучения программированию учащиеся знакомятся с основными конструкциями языков программирования, применяют их для решения разнообразных задач. Правильная методика и подходы при обучении этой важной дисциплине позволяют вырабатывать у учащихся такие качества и способности, как логическое и критическое мышление, внимательность, аккуратность, находчивость, изобретательность, конструктивное мышление, у учащегося раскрываются его творческие способности [4, 7, 8, 13].

Для подготовки специалиста, конкурентоспособного на современном рынке информационных услуг, чрезвычайно важно в процессе обучения программированию постепенно отказываться от традиционных задач в пользу более интересных, сложных, ориентированных на решение практически важных проблем [2-4, 7-11, 16, 19].

Ниже в статье мы рассмотрим учебный пример, показывающий работу в среде визуального программирования Delphi (учебный пример на разработку программы построения графика функции рассмотрен в [17]). Среда разработки Delphi в курсе программирования может быть успешно использована при написании игровых [4, 6, 16], обучающих и контролирующих программ [5, 12], реализации моделей физических и экономических процессов [18], разработки прикладных программ [5, 12, 14, 15]. Для первоначального ознакомления со средой разработки Delphi можно использовать, например, книги [1, 20].

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

  • ввод текста с заданным начертанием и форматированием (выравнивание, настройка размеров, стилей и цвета шрифта);
  • применение настроек форматирования к любому фрагменту текста;
  • сохранение текущих настроек форматирования как параметров по умолчанию при последующих запусках программы;
  • открытие ранее сохраненного документа;
  • сохранение подготовленного документа в файл.

Рассмотрим, какие компоненты и в каком количестве будут использованы в программе. Для удобства представим это в виде таблицы 1. Сразу отметим, что исходный код программы составляет порядка 400 строк и представлен с некоторыми пояснениями в виде архива в [21]. Окно готовой разработанной программы показано на рис. 1.

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

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

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

Результат


Вот что должно получится

И в первой и во второй создаем событие OnClick и пишем код: Загрузку и сохранение мы реализовали, теперь стилизацию текста, для этого сделаем разделитель в ToolBar'е, кликаем на него правой кнопкой и в меню выбираем New Separator и описанным выше способом создаем 3 кнопки и в их обработчиках событий OnClick пишем код:

Результат

Теперь выравнивание, также создаем разделитель и 3 кнопки. В событиях OnClick следующий код:

Результат

Цвет шрифта, вытаскиваем диалог выбора цвета ColorDialog и делаем кнопку с разделителем. В событии OnClick код:

Результат

Работает! Теперь научимся изменять размер выделенного текста, опять делаем разделить и вставляем Edit с компонентом UpDown. Свойство Associate установить на Edit1. В обработчике события Edit1 OnChange напишем код:

Результат

Можно изменять внешний вид шрифта, вытащим FontDialog и создадим еще одну кнопочку в её событии OnClick напишем:

Результат

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

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

Результат

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

Результат

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

На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.

Не доступно

Опрос

Программируем на Delphi. Текстовой редактор за 20 минут

Чтобы написать текстовый редактор, нужно сначала ознакомиться с компонентами, которые будут использоваться в процессе работы. Вот они: Memo, Button, Label, MainMenu, Open Dialog, Save Dialog, Font Dialog, Color Dialog, Print Dialog, Find Dialog. Давайте разберем все компоненты по порядку.


Запустим Delphi. При запуске автоматически создается новый проект, но если он не был создан, нажмите на File/New/Appliation. Проект Delphi содержит следующие файлы: *.dpr - файл проекта, *.pas - файл модуля, в котором содержится программный код, *.dfm - файл, в котором содержится форма, *.dcu - откомпилированный файл модуля, *.res - ресурсный файл, содержащий все иконки, курсоры и прочие ресурсы программы. Следующим нашим шагом будет сохранение проекта в нашу, уже созданную папку MyTextEditor командой File/Save all.
Теперь на палитре инструментов выберем вкладку Standard и переместим с нее на нашу форму, устанавливая желаемые размеры, компоненты MainMenu, Memo и Button. Перейдем на вкладку Dialogs и с нее перетащим на нашу форму компоненты Save Dialog, Open Dialog, Find Dialog, Color Dialog и Font Dialog. В общем, у вас на форме должно быть 8 компонентов, а форма должна выглядеть примерно как на рисунке 2.

Перейдем к созданию главного меню. Дважды щелкните на компоненте MainMenu, который должен находиться на форме, и вы увидите конструктор меню, который показан на рисунке 3.

Чтобы создать пункт меню, нужно выделить незаполненный пункт в редакторе меню и написать имя пункта в свойстве Caption Инспектора объектов. Для создания в меню разделительных линий пишите вместо названия пункта черточку "-". Наверное, каждый замечал, что в меню "Файл" подчеркнута буква "Ф" - это значит, что при нажатии на кнопки + меню будет открываться. Такие клавиши называют клавишами ускоренного доступа. Связать пункт меню с клавишей ускоренного доступа можно, поставив перед соответствующей буквой в имени меню знак "&". Таким образом, постройте меню, показанное на рисунке 4.

Далее очистите свойство Lines у компонента Memo1 (это можно сделать, нажав на кнопку с тремя точками, появляющуюся справа от свойства Lines (когда он выбран)). Свойство же Caption у Label1, так же как и у Form1, может быть любым, я, к примеру, написал "Этот шедевр написал Я - Супер-программист" у Label1 и "Самая лучшая в мире программа " у Form1. У Button1 в Caption напишите "Печать". Функцию к этой кнопке, я надеюсь, вы сможете сделать сами. Выберите свойство Filter, у компонента Open Dialog1, щелкните на кнопке с тремя точками. Вы увидите окно с названием Filter Editor. В левый столбик введите имена фильтров, а в правый сами фильтры, как показано на рисунке 5. Расширение по умолчанию можно задать в свойстве DefaultExt, у нас оно будет равно txt. Аналогичные действия проделайте с компонентом Save Dialog1.

Чтобы главное меню программы функционировало, нужно к каждому отдельному пункту меню написать определенный набор команд - код. Для этого на форме, а не в конструкторе меню, выбираем нужный пункт и щелкаем по нему, и перед нами появляется окно редактора кода, с уже автоматически сделанной заготовкой процедуры, которая будет происходить при каждом нажатии на этом пункте меню. В эту пустую структуру процедуры мы и будем вписывать код программы. Вообще, еще одним плюсом Delphi является, то, что он сам создает заготовки кода, в которые остается написать нужные операторы, и программа начнет работать. Таким образом, мы сможем сделать наше меню не просто "пустышкой", а инструментом работы с текстами.

Итак, напрямую перейдем к процессу кодинга. Теперь мы будем поочередно создавать процедуры для всех пунктов меню. Начнем с пункта "Новый" меню "Файл". В заготовку процедуры впишем следующий код:

With OpenDialog1 do
Begin
If not Execute then Exit;
Memo1.Lines.LoadFromFile (FileName);
End

Аналогично заполним процедуру пункта меню "Сохранить":


Этими процедурами мы закончили делать меню "Файл". Следующее меню, которое мы будем доделывать, - "Правка". Код к этим пунктам необычайно прост. Для "Вставить" вписываем в заготовку следующее:

Для пункта "Копировать" впишем:

Ну и наконец - код для пункта "Вырезать" меню "Правка":

Про эти свойства компонента я не рассказывал, потому что они настолько просты и понятны (PasteFromClipboard - вставить из буфера обмена, CopyToClipboard - копировать в буфер обмена, CutToClipboard - вырезать в буфер обмена). Также я не рассказал про свойства SaveToFile() и LoadFromFile(), которые тоже интуитивно понятны (сохранить текст из компонента Memo1 в файл и открыть файл с текстом, загрузив текст в Memo1).

Перейдем к меню "Вид". В этом меню пользователь, работающий в нашем редакторе, сможет изменять шрифт и цвет фона компонента Memo1. В заготовку пункта "Изменить шрифт" впишем:

With FontDialog1 do
Begin
If not Execute then Exit;
Memo1.Font:= Font;
End

Код для пункта "Изменить цвет фона" выглядит так:

With ColorDialog1 do
Begin
If not Execute then Exit;
Memo1.Color:= Color;
End

Для поиска текста, сделайте еще одно меню под названием "Текст" с пунктом "Поиск текста". И в заготовку процедуры пункта "Поиск текста" впишите:


Var
SelPos: integer;
Begin
With TFindDialog (Sender) do
Begin
SelPos: = Pos (FindText, Memo1.Lines.Text);
If SelPos > 0 then
Begin
Memo1.SelStart:= SelPos -1;
Memo1.SelLength:= Length (FindText);
End else
ShowMessage ('Текст "' + FindText + '" не найден');
End;

В этом коде использованы стандартные процедуры работы с текстом, которые вы, при желании, можете найти в любой книжке по Delphi. Осталось написать только процедуру для пункта "Выход" меню "Файл". Вот она:

Нажмите на кнопку F9 (Запустить), и через несколько мгновений должна появиться только что написанная вами программа. Она должна выглядеть примерно как на рисунке

Пишем простенькие программы на Delphi.Урок №3.Текстовый Редактор


Всем привет!
Урок №3. Пишем текстовый редактор.
В этом уроке я раскажу как написать простенький текстовый редактор,аналогичный Блокноту.
Начнем?Ну поехали. Врубайте музыку и читайте то что напишу=).
Создаем новый проэкт в Delphi.Даем ему название. ну к примеру. ну я назвал "БлОКнотэ".Для этого изменяем свойсвто Caption у нашей формы.
Теперь кидаем на форму обьект RichRdit(находится в Win32) и обьект MainMenu.Отредактируем некоторые свойства нашего RichRdit,а именно:
Lines(уберем текст RichRdit) и Align ставим на alClient.И исе Scrollbars=ssBoth.Языком delphi это говорится так

Теперь при нажатии кнопки выход будем выходит ис программы))
Теперь напишем код для пункта подменю Открыть.Блин чуть не забыл еще надо кинуть на форму обьекты OpenDialog SaveDialog и FontDialog.
Теперь их еще надо настроить
Для этого выберите на форме компонент OpenDialog, и в Инспекторе Объектов найдите свойство Filter. Теперь нажмите на кнопку с тремя точками и перед вами откроется диалоговое окно "Filter Editor" (Редактор фильтра) (Рисунок 3). В поле Filter Name (имя фильтра) можно писать что вам вздумается, но характеризующее тип файлов, для которого создается фильтр. В нашем примере можно написать что-то наподобие Текстовые файлы или Только текст. А в поле Filter надо написать сам фильтр. Фильтр имеет формат:

Если допустимо любое имя, то ставится звездочка, тогда для нашего редактора можно написать:

Тоже самое для SaveDialog.

а вот тепер жмем на открыть и пишем ему код

аналогично для Сохранить как будет такой код

то что меняется выделил цветами. Ну понятно Open на Save и from(открыть из) на to(сохранить в. ).
теперь напишем код для Копировать и Вставить

и последнее О программе создадим новую форму и для свойства Caption напишем О программе.Добавляйте туда что хотите главное добавте кнопку ОК(и код ей на закрытие формы. вспоминайте).А для пункта о программе добавим такой код

все код готов можно еще добавить компонент Xpmanifest это для стиля кнопок,Чтобы они были не такие как в Вин 98 2000 итп а такие какие у вас в теме оформления,для хп хп для висты виста и т.п.компилируем меняем иконку и радуемся))))

Читайте также: