СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Работа с файлами в Delphi

Категория: Информатика

Нажмите, чтобы узнать подробности

Эта методическая разработка может быть использована на лабораторной работе по программированию в среде Delphi. Она содержит пошаговые рекомендации для реализации приложения "Учёт поступления товаров на склад", обеспечивающего работу с текстовыми и типизированными файлами.

Просмотр содержимого документа
«Работа с файлами в Delphi»

Тема: «Работа с типизированным файлом в Delphi»


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

Файл

Просмотр

Редактирование

Печать

Справочники

Выход

Создать

Всех данных

Добавление

По условию

Товары


Выбрать

По условию

Корректировка

Документа

Поставщики




Удаление





Требования к приложению:


  1. Все глобальные типы данных, константы и переменные разместите в отдельном модуле (Unit2), который необходимо подключить к другим модулям проекта через пункт меню File / Use Unit.

  2. Для ввода исходных данных в файл (пункты меню «Корректировка» и «Добавление») разработайте экранную форму ввода. Предусмотрите проверку корректности ввода исходных данных используя событие OnKeyPress.

  3. Просмотр данных из файла надо реализовать выводом в таблицу StringGrid.

  4. При реализации пункта меню «Корректировка» на форму ввода должны быть выведены «старые» значения полей корректируемой записи.

  5. Пункт меню «Удаление» должен обеспечивать удаление одной записи из файла по выбору пользователя.

  6. Печать по условию реализуйте с помощью компонента QuickRep и дополнительного текстового файла.

  7. Печать документа можно реализовать с помощью метода Form10.Print, разместив предварительно на форму необходимую информацию.

  8. На форме, помимо главного меню, разместите:
    - картинку, соответствующую предметной области задачи;
    - инструментальную панель (компонент ToolBar) и вынесите не неё несколько кнопок SpeedButton, дублирующих некоторые пункты главного меню.

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

  10. При первом открытии формы, содержащей пункты главного меню задачи, доступными должны быть только пункты «Файл» и «Выход».

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

  12. При желании разместите слева от названия некоторых пунктов меню подходящее по смыслу изображение, используя свойство Bitmap (Program Files \ Common Files \ Borland Shared \ Images \ Buttons)

  13. На форме «Просмотр всех записей файла» организуйте поиск записи и обеспечьте вывод найденной записи на отдельной форме.



ЗАДАНИЕ:


Информация о поступлении товара на склад: дата поступления, поставщик, название товара, цена, количество - должна сохраняться в типизированный файл. Условие для просмотра – товар от выбранного поставщика. Условие для печати – поступление товара за определённую дату. Документ – товарная карточка.


ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАНИЯ:


  1. Создайте новое приложение

  2. На Form1 создайте главное меню, согласно условию задачи.

  3. Вынесите на Form1 компонент Image1. В Инспекторе объектов компоненту Image1 назначьте свойства:
    Align = alClient

Stretch = true
Picture - файл с картинкой

  1. Добавьте к проекту новый модуль File / New / Unit и в разделе Interface пропишите


Type

Ttov = record //структура записи, содержащая сведения о товаре для
// типизированного файла

DateP : TdateTime; //дата поставки

Postav : string [50] ; // фирма-поставщик товара

Tovar : string[15]; //название товара

Cena : real; //цена товара

Kol : integer; //количество товара

End;


Var Tov : Ttov; //запись содержащая сведения о товаре

F1, F3 : file of Ttov; // типизированный файл для хранения сведений о товаре

F2 : textFile ; // текстовый файл для реализации печати по условию

Name_F : string[255]; // имя файла

. . . // другие переменные, которые понадобятся для решения задачи



  1. Добавьте к приложению новую форму «Справочник Товаров» (File / New / Form). Форма «Справочник Товаров» должна содержать компоненты ListBox, Edit, Label и две кнопки BitBtn, позволяющие сохранить содержимое Edit в список ListBox и всё содержимое ListBox в текстовый файл. Компоненту ListBox в Инспекторе объектов назначьте свойству Sorted значение True, тогда элементы будут отсортированы в алфавитном порядке.


  1. В Инспекторе объектов для формы «Справочник Товаров» выберите событие OnActivate. Напишите в процедуре программный код:


If FileExists(‘tovar.txt’) = true then ListBox1.items.LoadFromFile(‘tovar.txt’);

Edit1.SetFocus;


  1. В Инспекторе объектов для кнопки «Добавить в список» выберите событие OnClick. Напишите в процедуре программный код:


Listbox1.Items.Append(Edit1.text);

Edit1.Text := '';

Edit1.SetFocus;


  1. В Инспекторе объектов для кнопки «Удалить из списка» выберите событие OnClick. Напишите в процедуре программный код:


If MessageDlg ( 'Удалить запись? ', mtConfirmation, [mbYes , mbNo], 0 ) = mrYes

then ListBox1.items.Delete (ListBox1.itemindex);


  1. В Инспекторе объектов для кнопки «Закрыть» выберите событие OnClick. Напишите в процедуре программный код:


ListBox1.items.SaveToFile(‘tovar.txt’);

  1. В Инспекторе объектов для кнопки «Закрыть» выберите событие OnClick. Напишите в процедуре программный код: Form3.Close ;


  1. Аналогично выполните работу с формой «Справочник фирм-поставщиков».


  1. В процедуре вызова пункта меню «Товары» пропишите программный код:
    Form3.Show;


  1. В процедуре вызова пункта меню «Поставщики» пропишите программный код:
    Form4.Show;

  2. Вынесите на Form1 компонент SaveDialog1. Напишите программный код процедуры пункта меню «Создать»:


If SaveDialog1.Execute = true then

begin

Name_F := SaveDialog1.FileName ;

AssignFile(F1, Name_F) ;

Rewrite(F1); // файл будет создан и открыт для записи

CloseFile(F1); // закрытие файла

N1.Enabled := true; // пункт меню Файл

N2.Enabled := true; // пункт меню Просмотр

N3.Enabled := true; // пункт меню Редактирование

N4.Enabled := true; // пункт меню Печать

N5.Enabled := true; // пункт меню Справочники

N6.Enabled := true; // пункт меню Выход

end;


  1. Вынесите на Form1 компонент OpenDialog1. Напишите программные код процедуры пункта меню «Открыть»:


if OpenDialog1.Execute = true then

begin

Name_F := OpenDialog1.FileName ;

AssignFile(F1, Name_F);

N1.Enabled := true; // пункт меню Файл

N2.Enabled := true; // пункт меню Просмотр

N3.Enabled := true; // пункт меню Редактирование

N4.Enabled := true; // пункт меню Печать

N5.Enabled := true; // пункт меню Справочники

N6.Enabled := true; // пункт меню Выход

End ;


  1. В Инспекторе объектов для формы Form1 выберите событие OnCreate. Напишите в процедуре программный код:


N1.Enabled := true; // пункт меню Файл

N2.Enabled := false; // пункт меню Просмотр

N3.Enabled := false; // пункт меню Редактирование

N4.Enabled := false; // пункт меню Печать

N5.Enabled := false; // пункт меню Справочники

N6.Enabled := true; // пункт меню Выход




  1. Добавьте к приложению новую форму «Добавление» для ввода исходных данных в файл. Разместите на форме компоненты dateTimePicker1, Combobox1, Combobox2, edit1, edit2, Button1. Обеспечьте проверку корректности ввода данных в компоненты edit1, edit2 используя событие OnKeyPress.

    Для компонентов Combobox запретите ввод данных с клавиатуры (т.к. данные должны выбираться только из справочников). Для этого в процедуре события OnKeyPress пропишите программный код: If not ( key in [ ] ) then key := #0;



  1. В Инспекторе объектов для формы «Добавление» свойству Caption введите значение «Добавление записи» и выберите событие OnActivate. Напишите в процедуре программный код:

If FileExists(‘tovar.txt’) = true then ComboBox1.items.LoadFromFile(‘tovar.txt’);

If FileExists(‘postav.txt’) = true then ComboBox2.items.LoadFromFile(‘postav.txt’);

  1. В Инспекторе объектов для кнопки «Сохранить» выберите событие OnClick. Напишите в процедуре программный код:

If (Edit1.tetx = ‘’) or (Edit2.text = ‘’) or (ComboBox1.text = ‘’) or (ComboBox2.text = ‘’ ) Then Begin

ShowMessage(‘Заполните все поля!’);

Exit ; // принудительный выход из процедуры

End;

Tov.DateP := dateTimePicker1.Date;

Tov.Tovar := Combobox1.text;

Tov.Postav := Combobox2.text ;

Tov.Cena := StrToFloat (edit1.text);

Tov.Kol := StrToInt (edit2.text);


Reset (f1); // открыли файл для записи

Seek (F1, Filesize (F1) ); // переход на последнюю запись файла

Write (F1,Tov); // записываем в файл запись

CloseFile (F1);

Edit1.text := ‘’; // очистка

Edit2.text := ’’;

ComboBox1.text := ‘’;

ComboBox2.text := ‘’;

Form5.close;


  1. Добавьте к приложению новую форму «Просмотр всех данных» для вывода данных из файла. Разместите на форме компонент StringGrid1. В Инспекторе объектов для формы «Просмотр всех данных» выберите событие OnActivate. Напишите в процедуре программный код:


Reset(F1); // открыли файл для чтения

StringGrid1.RowCount : = FileSize(F1)+1 ; // установили количество строк в таблице

CloseFile(F1) ;

StringGrid1.CoLCount : = 5 ; // установили количество столбцов в таблице

StringGrid1. FixedCols := 0 ; // количество фиксированных столбцов

StringGrid1. FixedRows := 1; // количество фиксированных строк


Stringgrid1.ColWidths[0] := 100; // ширина первого поля таблицы

Stringgrid1.ColWidths[1] := 120; // ширина второго поля таблицы

Stringgrid1.ColWidths[2] := 130; // ширина третьего поля таблицы

Stringgrid1.ColWidths[3] := 100; // ширина четвертого поля таблицы

Stringgrid1.ColWidths[4] := 100; // ширина пятого поля таблицы


StringGrid1.CeLLs[0,0] := ‘Дата поставки’ ;

StringGrid1.CeLLs[1,0] := ‘Название товара’ ;

StringGrid1.CeLLs[2,0] := ‘Поставщик’ ;

StringGrid1.CeLLs[3,0] := ‘Цена за единицу’ ;

StringGrid1.CeLLs[4,0] := ‘Количество’ ;


Reset (f1); // открыли файл для чтения

i := 1;

WhiLe not eof(F1) do

Begin

Read(F1,tov) ; // считали запись из файла

StringGrid1.CeLLs[0,i] := DateToStr(tov.DateP) ;

StringGrid1.CeLLs[1,i] := tov.Tovar ;

StringGrid1.CeLLs[2,i] := tov.Postav ;

StringGrid1.CeLLs[3,i] := FloatToStr(tov.cena) ;

StringGrid1.CeLLs[4,i] := intToStr(tov.kol) ;

i := i + 1 ;

end;

CloseFile(F1);

  1. Добавьте к приложению новую форму «Просмотр по условию» для вывода данных из файла. Разместите на форме компоненты Label, ComboBox1, BitBtn1 и StringGrid1. В Инспекторе объектов для формы «Просмотр по условию» выберите событие OnActivate. Напишите в процедуре программный код:


If FileExists(‘postav.txt’) = true then ComboBox1.items.LoadFromFile(‘postav.txt’);
StringGrid1.visible := false ;


  1. В Инспекторе объектов для компонента BitBtn1назначьте свойству Caption значение ‘Просмотр’ и выберите событие OnClick. Напишите в процедуре программный код:


If ComboBox1.text = ‘’ Then // если не выбран Поставщик тогда …

Begin

ShowMessage(‘Заполните все поля!’);

Exit ; // принудительный выход из процедуры

End;

K : = 0 ;

Reset(F1); // открыли файл для чтения

WhiLe not eof(F1) do

Begin

Read(F1,tov) ; // считали запись из файла

If tov.Postav = ComboBox1.text then K : = K + 1 ;

end;

CloseFile(F1);


If k = 0 Then // если нет товара от выбранного Поставщика тогда …

Begin

ShowMessage ( ‘Нет товара от выбранного поставщика!’);

Exit ; // принудительный выход из процедуры

End;


StringGrid1.RowCount : = k+1 ; // установили количество строк в таблице

StringGrid1.CoLCount : = 5 ; // установили количество столбцов в таблице

StringGrid1. FixedCols := 0 ; // количество фиксированных столбцов

StringGrid1. FixedRows := 1; // количество фиксированных строк


Stringgrid1.ColWidths[0] := 100; // ширина первого поля таблицы

Stringgrid1.ColWidths[1] := 120; // ширина второго поля таблицы

Stringgrid1.ColWidths[2] := 130; // ширина третьего поля таблицы

Stringgrid1.ColWidths[3] := 100; // ширина четвертого поля таблицы

Stringgrid1.ColWidths[4] := 100; // ширина пятого поля таблицы


StringGrid1.CeLLs[0,0] := ‘Дата поставки’ ;

StringGrid1.CeLLs[1,0] := ‘Название товара’ ;

StringGrid1.CeLLs[2,0] := ‘Поставщик’ ;

StringGrid1.CeLLs[3,0] := ‘Цена за единицу’ ;

StringGrid1.CeLLs[4,0] := ‘Количество’ ;

Reset (f1); // открыли файл для чтения

i := 1; // i – номер строки таблицы для вывода данных из файла

WhiLe not eof(F1) do

Begin

Read(F1,tov) ; // считали запись из файла

If tov.Postav = ComboBox1.text then

begin

StringGrid1.CeLLs[0,i] := DateToStr(tov.DateP) ;

StringGrid1.CeLLs[1,i] := tov.Tovar ;

StringGrid1.CeLLs[2,i] := tov.Postav ;

StringGrid1.CeLLs[3,i] := FloatToStr(tov.cena) ;

StringGrid1.CeLLs[4,i] := intToStr(tov.kol) ;

i := i + 1 ; // переход на следующую строку

end;

end;

CloseFile(F1);

StringGrid1.visible := true ;




  1. Добавьте к приложению новую форму «Корректировка данных» для изменения записи файла (например, Form8). Разместите на форме компоненты такие же как на форме «Добавление». Обеспечьте проверку корректности ввода данных в компоненты edit1, edit2 используя событие OnKeyPress.
    В Инспекторе объектов для формы «Корректировка данных» выберите событие OnActivate. Напишите в процедуре программный код:


If FileExists(‘tovar.txt’) = true then ComboBox1.items.LoadFromFile(‘tovar.txt’);

If FileExists(‘postav.txt’) = true then ComboBox2.items.LoadFromFile(‘postav.txt’);

  1. В процедуру пункта меню «Корректировка» напишите программный код:


Form6.Show ; // вызов формы «Просмотр всех данных»
Z := 44; // признак того, что мы открыли форму «Просмотр» из пункта меню
// «Корректировка»


В Инспекторе объектов для компонента StringGrid1 формы «Просмотр всех данных» выберите событие OnDbLClick. Напишите в процедуре программный код:


If z = 44 then

BEGIN

Y := StringGrid1.Row ; // определили номер текущей строки таблицы

Reset (F1) ; // открыли файл для чтения

Seek (F1, y – 1 ) ; // переместились в файле на запись с номером у-1

Read(F1, Tov) ; // считали из файла запись

CloseFile(F1) ;

Form8.dateTimePicker1.Date := Tov.DateP ;

Form8.Combobox1.text := Tov.Tovar ;

Form8.Combobox2.text := Tov.Postav ;

Form8.edit1.text := FLoatToStr ( Tov.Cena ) ;

Form8.edit2.text := intToStr ( Tov.Kol ) ;

Form8.Show ;

END;


  1. Выбрав событие OnClick для кнопки «Сохранить» на Form8 напишите в процедуру программный код:


If (Edit1.tetx = ‘’) or (Edit2.text = ‘’) or (ComboBox1.text = ‘’) or (ComboBox2.text = ‘’ ) Then Begin

ShowMessage(‘Заполните все поля!’);

Exit ; // принудительный выход из процедуры

End;

Reset (F1) ; // открыли файл для записи

Seek (F1, y – 1 ) ; // переместились в файле на запись с номером у-1

Tov.DateP := dateTimePicker1.Date;

Tov.Tovar := Combobox1.text;

Tov.Postav := Combobox2.text ;

Tov.Cena := StrToFloat (edit1.text);

Tov.Kol := StrToInt (edit2.text);

Write (F1,Tov); // записываем в файл запись

CloseFile (F1);

Edit1.text := ‘’; // очистка

Edit2.text := ’’;

ComboBox1.text := ‘’;

ComboBox2.text := ‘’;

Form8.close;


  1. В процедуру пункта меню «Удаление» напишите программный код:

Form6.Show ; // вызов формы «Просмотр всех данных»
Z := 55; // признак того, что мы открыли форму «Просмотр» из пункта меню
// «Удаление»


В Инспекторе объектов для компонента StringGrid1 формы «Просмотр всех данных» выберите событие OnDblClick. Дополните процедуру программным кодом:


If z = 55 then

BEGIN

Otv := MessageDlg ( 'Удалить запись? ', mtConfirmation, [mbYes , mbNo], 0 ) ;

if Otv = mrYes then

Begin

Y1 := StringGrid1.Row ; // определили номер текущей строки таблицы

Y2 := Y1 -1 ; // номер записи в файле, которую надо удалить

AssignFile(F3, ‘result.dat’);

Rewrite(F3); // создали и открыли файл для записи

Reset (F1) ; // открыли файл для чтения

While not eof(F1) do

If FilePos(F1) Y2 then

begin

Read(F1, tov) ; // считали запись из файла F1

Write(F3, tov) ; // записали запись в файл F3

End

ELSE Read(F1,tov);

CloseFile(F1);

CloseFile(F3);

Deletefile(Name_F) ; // удалили исходный файл

RenameFile(‘result.dat’, Name_F); // переименовали файл result.dat

End;

END;


  1. Добавьте к приложению новую форму «Печать по условию». Разместите на форме компоненты Label, DateTimePicker, BitBtn.

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


AssignFile(F2, ‘pechat.txt’);

Rewrite(F2); // создали и открыли файл для записи

Reset (F1) ; // открыли файл для чтения

K1 := 0; //первоначальное значение для подсчёта количества записей за указанную дату

While not eof(F1) do

begin

Read(F1, tov) ; // считали запись из типизированного файла

If DateToStr( tov.DateP) = DateToStr (DateTimePicker1.date) then

Begin

D := DateToStr(DateTimePicker1.date ) ;

K1 := K1 + 1; // подсчёт количества записей за указанную дату

WriteLN (F2, tov.Tovar : 20, tov.Postav : 20, tov.Cena : 20 : 2, tov.Kol : 15 ) ; // записали в
текстовый файл

End;

end;

CloseFile(F1);

CloseFile(F2);

  1. Добавьте к приложению новую форму (Form10).

  • установите на Form10 компонент QuickRep1, который находится на странице QREPORT палитры компонентов;

  • в Инспекторе объектов выберите в свойстве Bands подсвойство HasPageHeader и установите ему значение True, что обеспечит наличие верхнего колонтитула в
    выходном документе;

  • в Инспекторе объектов выберите в свойстве Bands подсвойство HasTitle и установите ему значение True, что обеспечит наличие заголовочной полосы в выходном документе;

  • установите на компонент QuickRep1 компонент QRStringsBand, который находится на странице QREPORT палитры компонентов;

  • в Инспекторе объектов для компонента QuickRep1 выберите в свойстве Bands подсвойство HasPageFooter и установите ему значение True, что обеспечит наличие нижнего колонтитула в выходном документе;

  • установите на полосу отчёта HasPageHeader компонента QuickRep1 компонент QRMemo1, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов в свойстве Lines запишите информацию об организации на чей склад поступают товары;

  • установите на полосу отчёта HasTitle компонента QuickRep1 компонент QRLabel1, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов свойству Caption назначьте значение "Информация о поступлении товаров за ". В Инспекторе объектов измените значения свойства Font, чтобы заголовок документа выделялся от основной информации;

  • установите на полосу отчёта HasTitle компонента QuickRep1 компонент QRLabel2, который находится на странице QREPORT палитры компонентов. Дополните программный код кнопки «Печать» строчкой:
    Form10.QRLabel2.Caption := D ;

  • установите на компонент QRStringsBand компонент QRExpr1, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов свойству Expression назначьте значение QRStringsBand1;

  • установите на полосу отчёта HasPageFooter компонента QuickRep1 компонент QRLabel3, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов свойству Caption назначьте значение "Дата и время формирования документа";

  • установите на полосу отчёта HasPageFooter компонента QuickRep1 компонент QRSysData1, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов свойству Data назначьте значение qrsDateTime;

  • установите на полосу отчёта HasPageFooter компонента QuickRep1 компонент QRLabel4, который находится на странице QREPORT палитры компонентов. В Инспекторе объектов свойству Caption назначьте значение "Общее количество товаров:";

  • установите на полосу отчёта HasPageFooter компонента QuickRep1 компонент QRLabel5, который находится на странице QREPORT палитры компонентов. В программный код кнопки "ПЕЧАТЬ" допишите строку:
    Form10.QRLabel5.Caption := intToStr (k1);

  • тело процедуры-обработчик события "Нажатие кнопки ПЕЧАТЬ" дополните следующим программным кодом:

If k1 = 0 then

Begin

ShowMessage (‘Поставки за выбранную дату отсутствуют!’);

Exit ; // принудительный выход из процедуры

End;

form10.QRStringsBand1.Items.Clear;

form10.QRStringsBand1.Items.LoadFromFile( 'pechat.txt' );

form10.QRExpr1.AutoSize:=false;

form10.QRExpr1.AutoStretch:=true;

form10.QRExpr1.Left:=0;

form10.QRExpr1.Width:=form10.QRStringsBand1.Width;

form10.QuickRep1.Preview;


  1. Добавьте к приложению новую форму (Form11). В Инспекторе объектов свойству Caption назначьте значение "Товарная карточка". Разместите на форме компоненты такие же как на форме «Добавление», но вместо компонентов dateTimePicker1, Combobox1 и Combobox2 используйте компоненты Edit3, Edit4 и Edit5, а кнопку «Сохранить» переименуйте в «Печать»

  2. В процедуру пункта меню «Печать документа» напишите программный код:


Form6.Show ; // вызов формы «Просмотр всех данных»
Z := 66; // признак того, что мы открыли форму «Просмотр» из пункта меню
// «Печать документа»


В Инспекторе объектов для компонента StringGrid1 формы «Просмотр всех данных» выберите событие OnDbLClick. Дополните процедуру программным кодом:


If z = 66 then

BEGIN

Y := StringGrid1.Row ; // определили номер текущей строки таблицы

Reset (F1) ; // открыли файл для чтения

Seek (F1, y – 1 ) ; // переместились в файле на запись с номером у-1

Read(F1, Tov) ; // считали из файла запись

CloseFile (F1) ;

Form11.Edit5.text := DateToStr( Tov.DateP ) ;

Form11.Edit4.text := Tov.Tovar ;

Form11.Edit3.text := Tov.Postav ;

Form11.Edit1.text := FLoatToStr ( Tov.Cena ) ;

Form11.Edit2.text := intToStr ( Tov.Kol ) ;

Form11.Show ;

END;


  1. В Инспекторе объектов для кнопки «Печать» на Form11 выберите событие OnClick. Напишите в процедуре программный код: Form11.Print ;


  1. Добавьте к приложению новую форму (Form12). Используя пункт меню Project / Options, перейдите на страницу «Forms», выберите в списке Main form: FORM12. При этом форма Form12 станет главной, значит с неё будет начинаться работа программы.

  2. В Инспекторе объектов свойству Caption назначьте значение "Вход в программу". Разместите на форме компоненты согласно рисунку


  3. В Инспекторе объектов для компонента Edit1 свойству PasswordChar назначьте значение *, тогда при вводе пароля символы будут заменяться на *.

  4. В Инспекторе объектов для кнопки «Ok» выберите событие OnСlick. Напишите в процедуре программный код:


If Edit1.text = … then

begin

Form1.Show;

Form12.Hide;

End ELSE ShowMessage ( ‘Пароль неверный ’ ) ;

  1. В Инспекторе объектов для кнопки «Выход» выберите событие OnСlick. Напишите в процедуре программный код: Form12.Close;

  2. Выполните необходимые действия для реализации требования к Приложению под пунктом 8.

  3. Добавьте на форму «Просмотр всех данных» компонент GroupBox1. В Инспекторе объектов свойству Caption назначьте значение «Поиск записи».

  4. Поместите в компонент GroupBox1 компоненты Label1, Label2, DateTimePicker1, Combobox1, BitBtn.

  5. В Инспекторе объектов для компонента Label1 свойству Caption назначьте значение «Дата поставки», для компонента Label2 свойству Caption назначьте значение «Поставщик», для компонента BitBtn свойству Caption назначьте значение «Найти».


  6. В Инспекторе объектов для формы «Просмотр всех данных» выберите событие OnActivate. Дополните процедуру программным кодом:

    If FileExists(‘postav.txt’) = true then ComboBox1.items.LoadFromFile(‘postav.txt’);


  7. Добавьте к приложению новую форму (например, Form13). Разместите на ней 10 компонентов Label.



В Инспекторе объектов для кнопки «Найти» выберите событие OnClick. Напишите в процедуре программный код:

XX := 0 ;

Reset (F1) ; // открыли файл для чтения

While not eof(F1) do

begin

Read(F1, tov) ; // считали запись из типизированного файла

If ( DateToStr (tov.DateP) = DateToStr (DateTimePicker1.date) ) and (tov.Postav = Combobox1.text) then

Begin

XХ := 1 ;

Form13. Label6. caption := DateToStr ( Tov.DateP ) ;

Form13. Label7. caption:= Tov.Tovar ;

Form13. Label8. caption:= Tov.Postav ;

Form13. Label9. caption := FloatToStr ( Tov.Cena ) ;

Form13. Label10. caption := IntToStr ( Tov.Kol ) ;

Form13.Show ;

End ;

End ;

CloseFile (F1) ;

If XX = 0 then ShowMessage ( ‘Данные отсутствуют… ‘ ) ;



22