1. Реализовать телефонный справочник с возможностью сохранения данных в текстовый файл (<имя программы>.dat), расположенного в папке с программой, и чтения из него. Реализовать сохранение данных о размере и положении окна программы в текстовый файл (<имя программы>.ini) при выходе и загрузки данных настроек при запуске.
1) Создайте папку под новый проект.
2) Создайте новый проект и сохраните его в созданную папку.
3) Оформите внешний вид окна: задайте заголовок «Телефонный справочник» (Caption), размеры (Width, Height), позицию / положение (Position / Top, Left) формы.
4) Разместите на форме следующие компоненты и задайте им свойства:
5) Заполните хранилище изображений ImageList изображениями для действий, указанных ниже.
6) Откройте окно менеджера действий ActionManager и добавьте следующие пользовательские действия (Ins):
7) Оформите форму следующим образом:
8) Для заполнения заголовков таблицы создайте обработчик создания формы (onCreate):
procedure TfrmMain.FormCreate(Sender: TObject);
begin
sgrMain.Cells[0,0] := 'ФИО';
sgrMain.Cells[1,0] := 'Адрес';
sgrMain.Cells[2,0] := 'Телефон';
end;
9) Для реализации сохранения и загрузки настроек окна программы создайте обработчики на закрытие (onClose) и отображение (onShow) главной формы:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
f: TextFile;
s: string;
begin
s := ChangeFileExt(Application.ExeName, '.ini');
AssignFile(f, s);
{$I-}
ReWrite(f);
if IOResult<>0 then
exit;
{$I+}
writeln(f, frmMain.Left);
writeln(f, frmMain.Top);
writeln(f, frmMain.Width);
writeln(f, frmMain.Height);
CloseFile(f);
end;
procedure TfrmMain.FormShow(Sender: TObject);
var
f: TextFile;
s: string;
i: integer;
begin
s := ChangeFileExt(Application.ExeName, '.ini');
if not FileExists(s) then
exit;
AssignFile(f, s);
Reset(f);
readln(f, i);
frmMain.Left := i;
readln(f, i);
frmMain.Top := i;
readln(f, i);
frmMain.Width := i;
readln(f, i);
frmMain.Height := i;
CloseFile(f);
end;
10) Откройте двойным щелчком контекстное меню PopupActionBar (или через пункт контекстного меню «Menu Designer…») и настройте контекстное меню путем выбора для пунктов соответствующих действий в свойстве Action.
11) Сохраните проект и запустите программу на исполнение.
2. Сформировать текстовый файл, в котором построчно записаны произвольные целые числа. Считать данные из файла и занести:
1) в один список – четные числа, в другой – не четные.
2) в один список – отрицательные числа, в другой – положительныe.
1) Создайте папку под новый проект.
2) Создайте новый проект и сохраните его в созданную папку.
3) Оформите внешний вид окна: задайте заголовок «Числа» (Caption), размеры (Width, Height), позицию / положение (Position / Top, Left) формы.
4) Разместите на форме следующие компоненты и задайте им свойства:
5) В панели со страницами (PageControl) создайте две страницы: щелкните правой кнопкой мыши на компоненте PageControl и выполните команду контекстного меню «New Page». Задайте страницам свойства:
6) На панели (Panel) разместите следующие компоненты и задайте им свойства:
7) На первой странице панели со страницами (PageControl) разместите следующие компоненты и задайте им свойства:
8) На второй странице панели со страницами (PageControl) разместите следующие компоненты и задайте им свойства:
9) Оформите форму следующим образом:
10) Создайте обработчики нажатий (onClick) соответствующих кнопок:
procedure TfrmMain.bbtCloseClick(Sender: TObject);
begin
Close
end;
procedure TfrmMain.bbtLoadClick(Sender: TObject);
var
f: TextFile;
n,i: integer;
s: string;
begin
if not odMain.Execute then
exit
else
if not FileExists(odMain.FileName) then
exit;
AssignFile(f, odMain.FileName);
Reset(f);
n := 0;
lbOdd.Clear;
lbNoOdd.Clear;
lbPlus.Clear;
lbMinus.Clear;
try
while not eof(f) do
begin
readln(f, i);
inc(n);
s := IntToStr(i);
if odd(i) then
lbOdd.Items.Add(s)
else
lbNoOdd.Items.Add(s);
if i>0 then
lbPlus.Items.Add(s)
else
if i<0 then
lbMinus.Items.Add(s);
end;
except
Application.MessageBox(PChar('Ошибка. Файл "'+odMain.FileName+'" содержит неверные данные.'), 'Чтение из файла',MB_OK+MB_ICONERROR);
exit;
end;
CloseFile(f);
Application.MessageBox(PChar('Из файла "'+odMain.FileName+'" считано '+IntToStr(n)+' записей.'), 'Чтение из файла',MB_OK+MB_ICONINFORMATION)
end;
procedure TfrmMain.bbtSaveClick(Sender: TObject);
var
f: TextFile;
n,i: integer;
begin
if not sdMain.Execute then
exit;
randomize;
n := udCount.Position;
AssignFile(f, sdMain.FileName);
ReWrite(f);
for i := 1 to n do
writeln(f, random(101)-50);
CloseFile(f);
Application.MessageBox(PChar('Запись чисел в файл "'+sdMain.FileName+'" окончена.'), 'Запись в файл',MB_OK+MB_ICONINFORMATION)
end;
procedure TfrmMain.bbtAboutClick(Sender: TObject);
begin
Application.MessageBox('Автор: Баночкин Ф.Б.', 'Числа',MB_OK+MB_ICONINFORMATION)
end;
11) Сохраните проект и запустите программу на исполнение.
1) Создайте папку под новый проект.
2) Создайте новый проект и сохраните его в созданную папку.
3) Оформите внешний вид окна: задайте заголовок «Телефонный справочник» (Caption), размеры (Width, Height), позицию / положение (Position / Top, Left) формы.
4) Разместите на форме следующие компоненты и задайте им свойства:
Название | Компонент | Значения свойств |
Список изображений | ImageList (Win32) | Name = ilMain Height = 24 Width = 24 |
Менеджер действий | ActionManager (Additional) | Name = amMain Images = ilMain |
Главное меню для действий | ActionMainMenuBar | Name = ammMain ActionManager = amMain |
Панель инструментов для действий | ActionToolBar (Additional) | Name = atbMain ActionManager = amMain ShowHint = True |
Контекстное меню для действий | PopupActionBar (Additional) | Name = pabMain |
Таблицу строк | StringGrid (Additional) | Name = sgrMain Align = alClient ColCount = 3 DefaultColWidth = 170 DefaultRowHeight = 20 FixedCols = 0 RowCount = 2 Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing] PopupMenu = pabMain |
5) Заполните хранилище изображений ImageList изображениями для действий, указанных ниже.
6) Откройте окно менеджера действий ActionManager и добавьте следующие пользовательские действия (Ins):
Действие | Значения свойств | Обработчик |
Выход | Name = acClose Category = 'Файл' Caption = 'Выход' Hint = 'Выход' ImageIndex = иконка ShortCut = Ctrl+Q | procedure TfrmMain.acCloseExecute(Sender: TObject); begin Close end; |
Добавить | Name = acAdd Category = 'Данные' Caption = 'Добавить' Hint = 'Добавить' ImageIndex = иконка ShortCut = Ctrl+N | procedure TfrmMain.acAddExecute(Sender: TObject); begin sgrMain.RowCount := sgrMain.RowCount+1; end; |
Удалить | Name = acDel Category = 'Данные' Caption = 'Удалить' Hint = 'Удалить' ImageIndex = иконка ShortCut = Ctrl+Y | procedure TfrmMain.acDelExecute(Sender: TObject); begin if sgrMain.RowCount>2 then sgrMain.RowCount := sgrMain.RowCount-1; end; |
Загрузить | Name = acLoad Category = 'Файл' Caption = 'Загрузить' Hint = 'Загрузить' ImageIndex = иконка ShortCut = Ctrl+O | procedure TfrmMain.acLoadExecute(Sender: TObject); var f: TextFile; s: string; i: integer; begin s := ChangeFileExt(Application.ExeName, '.dat'); if not FileExists(s) then begin Application.MessageBox('Файл с данными не найден!', 'Открытие', MB_OK+MB_ICONERROR); exit; end; AssignFile(f, s); Reset(f); i := 0; while not eof(f) do begin readln(f, s); inc(i); sgrMain.Cells[0,i] := s; readln(f, s); sgrMain.Cells[1,i] := s; readln(f, s); sgrMain.Cells[2,i] := s; end; sgrMain.RowCount := i; CloseFile(f); Application.MessageBox(PChar('Считано '+IntToStr(i-1)+' записей.'), 'Открытие', MB_OK+MB_ICONINFORMATION); end; |
Сохранить | Name = acSave Category = 'Файл' Caption = 'Сохранить' Hint = 'Сохранить' ImageIndex = иконка ShortCut = Ctrl+S | procedure TfrmMain.acSaveExecute(Sender: TObject); var f: TextFile; s: string; i,n: integer; begin s := ChangeFileExt(Application.ExeName, '.dat'); AssignFile(f, s); ReWrite(f); n := sgrMain.RowCount; for i := 1 to n do begin writeln(f, sgrMain.Cells[0,i]); writeln(f, sgrMain.Cells[1,i]); writeln(f, sgrMain.Cells[2,i]); end; CloseFile(f); Application.MessageBox('Запись данных окончена', 'Открытие', MB_OK+MB_ICONINFORMATION); end; |
О программе… | Name = acAbout Category = 'Справка' Caption = 'О программе...' Hint = 'О программе...' ImageIndex = иконка | procedure TfrmMain.acAboutExecute(Sender: TObject); begin Application.MessageBox('Автор: Баночкин Ф.Б.', 'Телефонный справочник', MB_OK+MB_ICONINFORMATION); end; |
7) Оформите форму следующим образом:
procedure TfrmMain.FormCreate(Sender: TObject);
begin
sgrMain.Cells[0,0] := 'ФИО';
sgrMain.Cells[1,0] := 'Адрес';
sgrMain.Cells[2,0] := 'Телефон';
end;
9) Для реализации сохранения и загрузки настроек окна программы создайте обработчики на закрытие (onClose) и отображение (onShow) главной формы:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
f: TextFile;
s: string;
begin
s := ChangeFileExt(Application.ExeName, '.ini');
AssignFile(f, s);
{$I-}
ReWrite(f);
if IOResult<>0 then
exit;
{$I+}
writeln(f, frmMain.Left);
writeln(f, frmMain.Top);
writeln(f, frmMain.Width);
writeln(f, frmMain.Height);
CloseFile(f);
end;
procedure TfrmMain.FormShow(Sender: TObject);
var
f: TextFile;
s: string;
i: integer;
begin
s := ChangeFileExt(Application.ExeName, '.ini');
if not FileExists(s) then
exit;
AssignFile(f, s);
Reset(f);
readln(f, i);
frmMain.Left := i;
readln(f, i);
frmMain.Top := i;
readln(f, i);
frmMain.Width := i;
readln(f, i);
frmMain.Height := i;
CloseFile(f);
end;
10) Откройте двойным щелчком контекстное меню PopupActionBar (или через пункт контекстного меню «Menu Designer…») и настройте контекстное меню путем выбора для пунктов соответствующих действий в свойстве Action.
1) в один список – четные числа, в другой – не четные.
2) в один список – отрицательные числа, в другой – положительныe.
1) Создайте папку под новый проект.
2) Создайте новый проект и сохраните его в созданную папку.
3) Оформите внешний вид окна: задайте заголовок «Числа» (Caption), размеры (Width, Height), позицию / положение (Position / Top, Left) формы.
4) Разместите на форме следующие компоненты и задайте им свойства:
Название | Компонент | Значения свойств |
Форма | Главная форма | Name = frmMain Caption = 'Числа' Constraints.MinHeight = 350 Constraints.MinWidth = 440 Position = poScreenCenter |
Панель | Panel (Standard) | Name = pnlMain Align = alRight |
Панель со страницами (вкладкам) | PageControl (Win32) | Name = pgcMain Align = alClient |
Диалог сохранения файла | SaveDialog (Dialogs) | Name = sdMain DefaultExt = 'txt' Filter = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*' |
Диалог открытия файла | OpenDialog (Dialogs) | Name = odMain DefaultExt = 'txt' Filter = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*' |
5) В панели со страницами (PageControl) создайте две страницы: щелкните правой кнопкой мыши на компоненте PageControl и выполните команду контекстного меню «New Page». Задайте страницам свойства:
Название | Компонент | Значения свойств |
Страница панели | TabSheet | Name = tsh1 Caption = 'Четные и нечетные' |
Страница панели | TabSheet | Name = tsh2: TTabSheet Caption = 'Положительные и отрицательные' |
6) На панели (Panel) разместите следующие компоненты и задайте им свойства:
Название | Компонент | Значения свойств |
Поле ввода | Edit (Standard) | Name = edtCount Text = '100' |
Регулятор числового значения | UpDown (Win32) | Name = udCount Associate = edtCount Max = 32000 Position = 100 |
Кнопка с изображением | BitBtn (Additional) | Name = bbtSave Caption = 'сгенерировать' Glyph = иконка Layout = blGlyphTop |
Кнопка с изображением | BitBtn (Additional) | Name = bbtLoad Caption = 'считать' Glyph = иконка Layout = blGlyphTop |
Кнопка с изображением | BitBtn (Additional) | Name = bbtClose Anchors = [akLeft, akBottom] Caption = 'выход' Glyph = иконка Layout = blGlyphTop |
Кнопка с изображением | BitBtn (Additional) | Name = bbtAbout Anchors = [akLeft, akBottom] Caption = 'о программе...' Glyph = иконка Layout = blGlyphTop |
7) На первой странице панели со страницами (PageControl) разместите следующие компоненты и задайте им свойства:
Название | Компонент | Значения свойств |
Список | ListBox (Standard) | Name = lbOdd Align = alLeft |
Разделитель | Splitter (Additional) | Name = Splitter1 |
Список | ListBox (Standard) | Name = lbNoOdd Align = alClient |
8) На второй странице панели со страницами (PageControl) разместите следующие компоненты и задайте им свойства:
Название | Компонент | Значения свойств |
Список | ListBox (Standard) | Name = lbPlus Align = alLeft |
Разделитель | Splitter (Additional) | Name = Splitter2 |
Список | ListBox (Standard) | Name = lbMinus Align = alClient |
9) Оформите форму следующим образом:
procedure TfrmMain.bbtCloseClick(Sender: TObject);
begin
Close
end;
procedure TfrmMain.bbtLoadClick(Sender: TObject);
var
f: TextFile;
n,i: integer;
s: string;
begin
if not odMain.Execute then
exit
else
if not FileExists(odMain.FileName) then
exit;
AssignFile(f, odMain.FileName);
Reset(f);
n := 0;
lbOdd.Clear;
lbNoOdd.Clear;
lbPlus.Clear;
lbMinus.Clear;
try
while not eof(f) do
begin
readln(f, i);
inc(n);
s := IntToStr(i);
if odd(i) then
lbOdd.Items.Add(s)
else
lbNoOdd.Items.Add(s);
if i>0 then
lbPlus.Items.Add(s)
else
if i<0 then
lbMinus.Items.Add(s);
end;
except
Application.MessageBox(PChar('Ошибка. Файл "'+odMain.FileName+'" содержит неверные данные.'), 'Чтение из файла',MB_OK+MB_ICONERROR);
exit;
end;
CloseFile(f);
Application.MessageBox(PChar('Из файла "'+odMain.FileName+'" считано '+IntToStr(n)+' записей.'), 'Чтение из файла',MB_OK+MB_ICONINFORMATION)
end;
procedure TfrmMain.bbtSaveClick(Sender: TObject);
var
f: TextFile;
n,i: integer;
begin
if not sdMain.Execute then
exit;
randomize;
n := udCount.Position;
AssignFile(f, sdMain.FileName);
ReWrite(f);
for i := 1 to n do
writeln(f, random(101)-50);
CloseFile(f);
Application.MessageBox(PChar('Запись чисел в файл "'+sdMain.FileName+'" окончена.'), 'Запись в файл',MB_OK+MB_ICONINFORMATION)
end;
procedure TfrmMain.bbtAboutClick(Sender: TObject);
begin
Application.MessageBox('Автор: Баночкин Ф.Б.', 'Числа',MB_OK+MB_ICONINFORMATION)
end;
11) Сохраните проект и запустите программу на исполнение.
Комментариев нет:
Отправить комментарий