Разработка программы "Блокнот" для хранения информации по месяцам года

Источник: codingrus
Kest

Создайте новый проект. Сохраните новое приложение в текущей папке: файл модуля под именем Main.pas, файл проекта - Notebook.dpr.
1-й этап. Создание визуального интерфейса приложения
1.1. Задайте значения свойств формы следующим образом:
Name - NotebookF;
Caption - Блокнот.
1.2. Поместите на форму компонент Notebook (блокнот) со страницы Win3.1 палитры компонентов.
1.3. Создайте страницы компонента NoteBookl. Для этого в инспекторе объектов найдите свойство Pages (страницы); щелкните на кнопке с тремя точками для открытия диалогового окна редактирования значений выбранного свойства (рис. 1).
инспектор объектов
Рис. 1
Используя диалоговое окно, создайте 12 страниц, каждая из которых называется именем, соответствующим месяцу года (Январь, Февраль и т. д.). Для редактирования названия первой страницы воспользуйтесь кнопкой Edit, для добавления очередной страницы - кнопкой Add. Значение Help context можно оставить без изменения (это свойство используется при вызове контекстно-зависимой справочной системы приложения), так как приложение не содержит справочной системы. Для завершения создания списка страниц нажмите на кнопку Close.
1.4. Поместите компонент TabSet (список закладок) со страницы Win3.1 под компонентом NoteBookl. Сделайте эти компоненты одинаковыми по ширине.
1.5. Положите на каждую из 12 страниц компонента NoteBookl компонент ListBox (окно списка) для размещения записей на каждый месяц. Для этого выполните такую последовательность действий.
Установите свойство ActivePage (активная страница) компонента NoteBook в значение, равное 'Январь'. Щелкните на выбранной странице объекта NoteBookl. В палитре компонентов на странице Standard выберите компонент ListBox и поместите его (щелкните) в компонент NoteBookl. Для свойства Align компонента ListBox1 установите значение AlClient. 
Повторите эту операцию для оставшихся 11 страниц блокнота.
1.6. В правую часть формы поместите компонент Panel (страница Standard палитры компонентов), на него положите один компонент Label, один компонент Edit и три компонента Button. Поместите еще 2 компонента Button в правой нижней части формы (рис. 2).
форма
Рис. 2
Установите следующие свойства компонентов:

1.7. Сохраните проект. Убедитесь, что после запуска приложения форма ничем не отличается от режима проектирования. 
2-й этап. Создание программного кода
2.1. Создание закладок в TabSetl и синхронизация их со страницами блокнота. 
Для этого используется свойство Tabs компонента TabSet, представляющее список имен закладок. В примере список закладок соответствует списку страниц блокнота (Pages). Создайте следующий обработчик события:

Procedure TNoteBookF.FormCreate(Sender: TObject);
begin 
TabSetl.Tabs:=NoteBookl.Pages;
{копирование содержимого свойства Pages компонента NoteBook в свойство Tabs
компонента TabSet, т. е. создание закладок в TabSet} 
TabSetl.TabIndex:=NoteBookl.Pagelndex;
{В соответствии с тем, какая страница блокнота активна во время проектирования 
(свойство ActivePage), активной будет закладка с тем же именем (номером)} 
end;



2.2. Используя свойства UnSelectedColor, SelectedColor, BackgroundColor, DitherBackground, StartMargin, EndMargin компо¬нента TabSetl, измените внешний вид закладок. 
2.3. Сохраните и запустите проект. Проверьте, имеют ли закладки на форме названия, соответствующие страницам блокнота.
2.4. Создание обработчика события OnClick для кнопки 'Добавить'. 
После щелчка на кнопке содержимое окна редактирования (RecordEdt) должно добавляться в список на выбранной странице блокнота. Для операций со строками у компонента ListBox имеется свойство Items, принадлежащее классу TStrings. Чтобы добавить строку в список, используется метод Add этого класса (см. выше список методов класса TStrings). Текст обработчика события может быть создан двумя способами.
1-й способ
procedure TNoteBookF.AddBtnClick(Sender: TObject); 
begin
if RecordEdt.Text <>"" then 
begin
case NoteBookl.PageIndex of
{Для того чтобы поместить запись в список на страницу блокнота, выбираем 
компонент ListBox по номеру страницы блокнота}
0 : ListBoxl.Items.Add(RecordEdt.Text);
1 : ListBox2.Items.Add(RecordEdt.Text) ;
2 : ListBox3.Items.Add(RecordEdt.Text); 
3: ListBox4.Items.Add(RecordEdt.Text) ;
4 : ListBox5.Items.Add(RecordEdt.Text);
5 : ListBox6.Items.Add(RecordEdt.Text); 
6: ListBox7.Iterns.Add(RecordEdt.Text); 
7 : ListBox8.Items.Add(RecordEdt.Text) ;
8: ListBox9.Items.Add(RecordEdt.Text); 
9: ListBox10.Items.Add(RecordEdt.Text); 
10: ListBoxll.Items.Add(RecordEdt.Text); 
11: ListBoxl2.Items.Add(RecordEdt.Text); 
end;
RecordEdt. Text: =""; {введенный текст затираем}
end; 
end;



2-й способ
В Object Pascal имеется функция: 
function FindComponent(const AName: string): TComponent;



Функция возвращает ссылку на компонент, имя которого задано параметром AName.
Эту функцию можно использовать в коде обработчика события OnClick кнопки "Добавить' следующим образом:
procedure TNoteBookF.AddBtnClick(Sender: TObject); 
var TempComponent: TListBox; {вспомогательная переменная} 
begin TempComponent:=TListBox(FindComponent('ListBox'+ 
IntToStr(NoteBook1.PageIndex+1)));
{TListBox(<компонент>) используется для преобразования к типу TListBox} 
if RecordEdt.Text <>"" then 
TempComponent.Items.Add(RecordEdt.Text); 
RecordEdt.Text:=""; 
end;




2.5. Сохраните, запустите проект и добавьте строки на разные страницы блокнота. В данном варианте программы они должны записываться только на страницу, которая была открыта при запуске приложения. Это объясняется тем, что закладки Tabset1 не синхронизированы со страницами NoteBook1, т. е. при выборе закладки соответствующая страница блокнота не активизируется.
Чтобы устранить этот недостаток, следует создать обработчик события OnClick для закладок Tabset1:
procedure TNoteBookF.TabSetlClick(Sender: TObject); 
begin
NoteBook1.PageIndex:=TabSet1.TabIndex;
{страница блокнота и страница набора закладок должны совпадать} 
end;



2.6. Сохраните проект и проверьте правильность работы приложения, т. е внесение записей на различные страницы блокнота.

Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=30128