![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Приложение для работы со статическим массивом записей12.1. Цель работы Цель работы - освоение основных приемов работы для: 1. ввода статического массива записей из текстового файла; 2. вывода массива записей в текстовый файл результатов; 3. поиска записи в массиве записей с использованием стандартного диалогового окна для ввода данных для поиска и вывода сообщения; 4. использования типовых диалоговых методов для вывода форм с сообщениями и кнопками; 5. вывода одной записи в строку таблицы типа TStringGrid; 6. вывода массива записей в таблицу StringGrid. 12.2 Задание на выполнение работы Для выполнения работы надо: 1) Для работы с массивом записей создать модуль UNITLR7: а) с процедурами: § ввода исходных данных из текстового файла в ОП, § вывода массива записей в текстовый файл результатов, § вывода одной записи в файл результатов, § смены местами двух строк массива записей, § вывода шапки таблицы в текстовый файл, б) с функцией удаления пробелов в начале и конце строки. 2) Разработать интерфейс с использованием панели и кнопок для: а) ввода исходных данных из текстового файла в ОП; б) вывода массива записей в текстовый файл результатов; в) поиска записи в массиве записей с использованием режима диалога; г) смены местами двух строк массива записей; д) вывода массива записей в таблицу типа TStringGrid. 3) Разработать метод поиска записи по одному поисковому признаку с использованием стандартного диалогового окна и стандартных методов для вывода.модального окна с заданным сообщением и кнопкой. 12.3. Процесс выполнения работы 1) Создать форму с компонентами: ¨ одна кнопка типа TButton; ¨ панель для размещения кнопок; ¨ на панели разместить 4 кнопки типа TButton - для управления выполнением приложения; ¨ кнопка типа TBitBtn для завершения приложения; установить ее свойство Kind = bkClose; ¨ метка для заголовка таблицы; установить ее свойство Caption = СВЕДЕНИЯ О СТУДЕНТАХ; ¨ компонент типа TStringGrid для вывода данных. 2) Установить свойства: а) формы: caption = работа с массивом записей. диалоговый поиск. б) Caption кнопок в соответствии с рис. 12.1; в) Panel1: свойство Visible = False. 3) Присоединить к проекту модуль с подпрограммами: - в список Uses раздела Implementation модуля основной формы добавить имя присоединенного модуля UNIT_LR7; - с помощью конструктора проекта добавить модуль в проект; конструктор вызвать командой Project\Add to Project или пиктограммой. 4) Установить свойства компонента TstringGrid1: FixedCols=0, FixedRows, равное количеству строк заголовка таблицы (например = 2), RowCount = FixedRows + 1, ColCount, равное количеству столбцов. Настроить ширину столбцов таблицы ("перетаскиванием" их границ). 5) Разработать методы реакции на нажатие кнопок для: а) ввода исходных данных из текстового файла в ОП; б) вывода массива записей в текстовый файл результатов; в) смены местами двух строк массива записей; г) вывода массива записей в таблицу типа TStringGrid; д) завершения процесса выполнения приложения. 6) При создании формы (метод FormCreate): ¨ связать и открыть текстовый файл для вывода результатов; ¨ вывести заголовок в таблице типа TStringGrid. 7) Открыть окно репозитария с шаблонами диалоговых форм с помощью команды File\New\Dialogs; выбрать из него стандартную диалоговую форму для ввода поискового признака с двумя кнопками. 8) Присоединить эту форму к проекту с помощью менеджера проекта; вызвать его командой Project\Add to Project или пиктограммой. 9) Установить свойства диалоговой формы: Caption = ФОРМА ДЛЯ ВВОДА ФАМИЛИИ Position = poDefault - для вывода формы в левый верхний угол. 10) Разместить на диалоговой форме: ¨ метки для приглашения ко вводу фамилии; ¨ окно типа TEdit для ввода поискового признака; установить его свойство Text = ИВАНОВ И. И. 11) Разработать метод реакции на нажатие кнопки для диалогового поиска: а) показ диалоговой формы с помощью метода ShowModal для ввода требуемой фамилии; б) ввод поискового признака из окна TEdit в переменную программы; в) вывод модального окна с заданным сообщением и кнопкой с помощью стандартного метода ShowMessagePos в случае ввода пустой строки для поиска; г) поиск записи в массиве записей; д) вывод в результате поиска стандартным методом ShowMessagePos: ¨ сообщения о неуспешном поиске в модальное окно и пустой строки в первую строку таблицы StringGrid или, ¨ сообщения об успешном поиске и найденной записи в первую строку таблицы StringGrid; е) вывод модального окна стандартным методом ShowMessage с сообщением о завершении поиска. Для вывода пустой строки в строку таблицы StringGrid 1 разработать внутреннюю процедуру NN метода Button3Click. На рис. 12.1 представлен вид формы после размещения на ней компонентов.
СВЕДЕНИЯ О СТУДЕНТАХ
Рис 12.1 Вид формы с компонентами в процессе разработки приложений На рис. 12.2 - форма в процессе выполнения приложения.
Рис. 12.2 Форма в процессе выполнения приложения. На рис. 6.3 -диалоговая форма для ввода поискового признака
Рис. 12.3 Диалоговая форма для ввода поискового признака
127.4 Сообщение о вводе поискового признака 12 .5 Сообщение о результате успешного поиска
Рис. 12.6. Сообщение о завершении поиска Рис. 12.7. Сообщение о неуспешном поиске
В листингах 6.1, 6.2 и 6.3 представлены примеры текстов модулей приложения. На листинге 6.4 приведен текст исходных данных для создания массива записей. Текстовый файл Lr7.res с результатами можно вызвать командой File\Open. Листинг 12.1. Текст модуля основной формы приложения для работы со статическим массивом записей unit Unitl; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, ^ Forms, Dialogs, StdCtrls, Buttons, Grids, UNIT_LR7; Type Tform1=class(TForm) // Тип формы с компонентами //Кнопки для: Button1:Tbutton; //Ввода данных из текстового файла Button2:Tbutton; //Вывода данных в текстовый файл Button3:Tbutton; //Поиска записи по фамилии Button4:Tbutton; //Смены местами строк Button5:Tbutton; //Вывода массива записей в таблицу StringGridl: TStringGrid; //Таблица для вывода результатов Panel1:TPanel; //Панель для кнопок BitBtn:TbitBtn; //Завершение работы приложения Label1:TLabel; //Метка для заголовка таблицы procedure FormCreate(Sender: TObject); //При создании формы procedure Button1Click(Sender: TObject) //Ввод данных procedure Button2Click(Sender: TObject) //Вывод данных procedure Button3Click(Sender: TObject) //Поиск по фамилии procedure Button4Click(Sender: TObject) //Смена местами строк procedure Button5Click(Sender: TObject) //Вывод массива в таблицу procedure BitBtn1Click(Sender: TObject) //Завершить приложение private { Private declarations } public { Public declarations } end; var Form1. TForml; implementation uses Unit2; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); VAR I, J: integer; // Массив для вывода шапки таблицы: Const С: array[0..1, 0..3] of string = ((НОМЕР ', ГРУППА ', ' ФАМИЛИЯ,', ' РАЗМЕР'), begin AssignFile (FR, 'Lr7.res'); Rewrite (FR); For J:= 0 to 3 do StringGrid1.Cells[J,I]:= C[I,J] end; // Ввод исходных данных procedure TForm1.Button1Click(Sender: TObject); begin VVOD; // - вызов процедуры из модуля UNIT_LR7 Panel1.Visible;= True; // - сделать панель с кнопками видимой Button1.Enabled: = False; // - сделать кнопку недоступной end; //------------------------------------------------------------------ // Вывод исходных данных массива записей в текстовый файл. procedure TForm1.Button2Click(Sender: TObject); begin VIVOD;.// вызов процедуры из модуля UNIT_LR7
Button2.Enabled:=False; end; //---------------------------------------------------- // Вывод Z-записи в I-строку таблицы StringGridl procedure Stroka(I: byte; Z: STRUC); Var ST: string Begin WITH Form1.StringGrid1, Z DO begin // Вывод элементов записи Z в строку таблицы: Cells[0,I]:=’ ‘+ IntToStr(NZ); Cells[1,I]:=’ ‘+ GR; Cells[2,I]:=’ ‘+ FIO; STR(RS:11:2, ST); // - преобразование числа RS в строку ST Cells[3,I]:=; end; end; //------------------------------------------------------- _ // Поиск записей по фамилии в режиме ДИАЛОГА procedure TForm1.Button3Click(Sender: TObject); Label MK; Var I: integer; // Внутренняя процедура очистки строки таблицы: procedure NN; begin WITH StringGridl DO begin Cells[0,2]:=' '; Cells[1,2]:=’’; Cells[2,2]:=’ Ошибка! ‘; Cells[3,2]:=’ ‘+ ST end; end; begin REPEAT If OKBottomDlg.ShowModal = mrOK THEN // - нажата кнопка Ввод Begin TFM:= OKBottomDlg.Edit1.Text; // - ввод требуемой фамилии // Вывод сообщения: ShowMessagePos('Вы ввели фамилию ‘+TFM, 20, 30); TFM:=FILTR(TFM); IF TFM =' ' then Begin // Вывод сообщения: ShowMessagePos(‘Нет фамилии для поиска’,20,90); CONTINUE end; FOR I:= 1 TO N DO // - перебор номеров элементов массива IF TFM = Z[I].FI0 THEN BEGIN ShowMessagePos('Запись с фамилией '+TFM+'найдена',50,80); Stroka(2, Z[I]); // - заполнение 2-й строки таблицы: GOTO MK // - конец цикла поиска); END; ShowMessagePos (' Фамилия '+TFM+’ ошибочна ',50,80); NN; // - вызов процедуры очистки строки таблицы End; // - после THEN окна диалога ELSE // - нажата кнопка Выход // Выход из метода: begin ShowMessage (' Поиск закончен:’); Exit; End МК: UNTIL False; // - бесконечный цикл end; //---------------------------------------------------- // Смена местами строк массива записей procedure TForm1.Button4Click(Sender: TObject); begin SMENA; // - вызов процедуры из модуля UNIT_LR7 Button5Click(Sender); // - вызов метода для вывода таблицы Button4.Enabled:= False; // - сделать кнопку недоступной end; //-------------------------------------------------------------------------- // Вывод массива записей в таблицу procedure TForm1.Button5Click(Sender: TObject); VAR I: integer; begin StringGridl.RowCount:= N + 2; // - количество строк в StringGridl For I:= 2 to N+1 do // - вывод (I-1) - записи в таблицу Stroka(I, Z[I-1]); end; procedure TForm1.BitBtn1Click(Sender: TObject); begin CloseFile(FR); Close; end; end.. // - модуля
|