- •Введение
- •Основные концепции объектно-ориентированного программирования
- •Принципы ооп
- •Архитектура программы при ооп
- •Объектно-ориентированные языки програм-мирования
- •Описание класса в Object Pascal
- •События и реакция на них
- •Интегрированная среда разработки
- •Интегрированная среда разработки Delphi 7: 1 – главное окно; 2 - окно Дерева объектов; 3 – окно Инспектора объектов; 4 – окно Проводника кода; 5 – окно Конструктора форм; 6 – окно Редактора кода
- •Характеристика проекта Delphi
- •Компиляция и выполнение проекта
- •Знакомство со средой программирования
- •Компонент Lable
- •Компонент Label
- •Инспектор объектов
- •Компонент Edit
- •Компонент Edit
- •Компоненты Button, BitBtn, SpeedButton
- •Примеры кнопок Button, BitBtn и SpeedButton
- •Пример приложения
- •Форма с размещенными на ней компонентами
- •Компоненты для работы с текстом
- •Строковый редактор
- •Пример работы с компонентом Memo
- •Компонент RichEdit
- •Примеры форматирования текста в компоненте RichEdit
- •Списки строк
- •Компонент ListBox
- •Пример работы со списками строк
- •Компонент ComboBox
- •Переключатели
- •Компонент CheckBox
- •Пример работы с независимыми переключателями
- •Компоненты RadioButton и RadioGroup
- •Пример работы с группой зависимых переключателей
- •Объединение элементов управления. Компонент Panel
- •Примеры различного оформления рамки панелей
- •Компоненты OpenDialog и SaveDialog
- •Диалоговое окно открытия файла
- •Редактор фильтра
- •Работа с меню
- •Компонент MainMenu
- •Конструктор меню
- •Компонент PopupMenu
- •Пример контекстного меню
- •Работа с базами данных
- •Средства для работы с базами данных
- •Создание баз данных с помощью Database Desktop
- •Окно выбора формата таблицы
- •Окно определения структуры таблицы
- •Пример структуры таблицы
- •Пример заполненной таблицы
- •Создание псевдонимов бд в bde Administrator
- •Диалоговое окно создания псевдонима бд
- •Главное окно Администратора bde
- •Компоненты для работы с бд
- •Пример приложения
- •Форма с компонентами Table, DataSource и dbGrid
- •Редактор полей таблицы
- •Пример таблицы с измененными свойствами
- •Работа с графикой
- •Пример работы с графикой
- •Лабораторное задание
- •Указания по оформлению отчета
- •Контрольные вопросы
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Компонент RichEdit
В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font. При сохранении введенного пользователем текста будет создан текстовый файл, содержащий только символы и не содержащий элементов форматирования. При последующем чтении этого файла в Memo формат будет определяться текущим состоянием свойства Font компонента Memo, а не тем, в каком формате ранее вводился текст.
Компонент RichEdit работает с текстом в обогащенном формате RTF. Текст данного формата хранит дополнительную служебную информацию, управляющую свойствами каждого абзаца и сменой шрифта по ходу текста.
RichEdit использует вспомогательные объекты класса TTextAttributes для хранения атрибутов шрифта. Эти атрибуты распространяются на весь текст через свойство редактор DefAttributes или на выделенную часть текста – через его свойство SelAttributes. Класс TTextAttributes содержит следующие свойства:
Color – цвет текста;
Height – высота текста с учетом межстрочного интервала;
Name - название шрифта;
Size – размер шрифта;
Style – стиль текста; может принимать комбинации следующих значений: fsItalic – курсив, fsBold – полужирный, fsUnderline – с подчеркиванием, fsStrikeOut – с перечеркиванием.
Для каждого текстового абзаца создается объект класса TParaAttributes, в котором сохраняются атрибуты абзаца:
Alignment – выравнивание абзаца;
Numbering – наличие маркера слева от текста: nsBullet – есть маркер в виде точки; nsNone – маркера нет.
Например, для первого абзаца изменим стиль текста на курсив с подчеркиванием, второй, третий и четвертый абзацы выровняем по центру и пометим маркером, для пятого абзаца поменяем размер шрифта (рис. 10):
// - - - - Object Pascal - - - -
RichEdit1.SelAttributes.Style := [fsUnderline, fsItalic];
…
RichEdit1.Paragraph.Alignment := taCenter;
RichEdit1.Paragraph.Numbering := nsBullet;
…
RichEdit1.SelAttributes.Size := 12;
// - - - - - - - C++ - - - - - - -
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style << fsUnderline;
RichEdit1->SelAttributes->Style =
RichEdit1->SelAttributes->Style << fsItalic;
…
RichEdit1->Paragraph->Alignment = taCenter;
RichEdit1->Paragraph->Numbering = nsBullet;
…
RichEdit1->SelAttributes->Size = 12;
Примеры форматирования текста в компоненте RichEdit
Списки строк
Компонент ListBox
Компонент ListBox представляет собой стандартный для Windows список строк, с помощью которого пользователь может выбрать один или несколько элементов.
Основное свойство компонента, содержащее список строк - Items. Как и свойство Lines у компонента Memo, Items имеет тип TStrings, соответственно, к строкам спискам применимы все свойства и методы данного класса (Add, Delete, Clear, Insert, Count и т.д.).
У компонента ListBox есть свойство MultiSelect, разрешающее пользователю множественный выбор в списке. Если MultiSelect = false (значение по умолчанию), то пользователь может выбрать только один элемент списка. В этом случае свойство ItemIndex хранит индекс выбранной строки. Если ни одна строка не выбрана, то ItemIndex = -1.
Для списка, допускающего множественный выбор, число выбранных строк хранится в свойстве SelCount. Чтобы узнать, выбрана строка или нет, надо проверить свойство Selected. Если Selected равно true, то строка выбрана.
Например, надо записать в список ListBox2 номера строк, выделенных в списке ListBox1. Это можно реализовать с помощью следующего кода:
// - - - - Object Pascal - - - -
for i := 0 to ListBox1.Items.Count - 1 do
if ListBox1.Selected[i]
then ListBox2.Items.Add(IntToStr(i + 1));
// - - - - - - - C++ - - - - - - -
for (int i = 0; i < ListBox1->Items->Count; i++)
if (ListBox1->Selected[i])
ListBox2->Items->Add(IntToStr(i + 1));
Результат работы программы приведен на рис. 11.