Использование компонентов MainMenu, PopupMenu, StringGrid
⇐ ПредыдущаяСтр 14 из 14 В Delphi есть два компонента, используемые для создания меню: MainMenu – главное меню и PopupMenu – контекстное меню. MainMenu - невизуальный компонент. Наиболее важным свойством этого компонерта является свойство Items. Для его заполнения нужно вызвать Menu Designer, которое появляется при двойном щелчке по компоненту MainMenu. Каждый элемент свойства Items – это отдельный пункт меню, который обладает след. Свойствами: - Caption – заголовок пункта меню; - Count – указывает количество элементов; - Dafault – устанавливает данный пункт меню в качестве используемого по умолчанию; - MenuIndex – Вычисляет индекс указанного пункта меню; - ShortCut – позволяет указать «горячую» клавишу для данного пункта меню. PopupMenu – невизуальный компонент, который в отличие от главного меню, которое постоянно находится на экране, выводится в случае необходимости при нажатии правой кнопки мыши на компонент, с которым оно связано. Для того, чтобы связать это меню с определенным компонентом, используется свойство PopupMenu визуальных компонентов. StringGrid – позволяет хранить и автоматически отображать текстовую информацию. Основные свойства - ColCount, RowCount – задают число строк и число столбцов таблицы (нумерация с нуля); - ColWidth, RowHeigth – задают высоту строк и ширину столбцов; - FixedCols,FixedRows – задают число фиксированных строк и столбцов(остаются недвижимыми при прокрутке); - Cells[aCol, aRow] – используется для доступа к отдельной ячейке, aCol – номер столбца, aRow – номер строки; - Cols[index], Row[index] – обеспечивает доступ к любому столбцу и строке таблицы. В Delphi имеется ряд диалогов для операционной системы Windows. OpenDialog – компонент представляет собой стандартное диалоговое окно выбора и открытия файлов.
OpenPictureDialog – предназначен для открытия графических файлов. Основные свойства: - FileName – содержит имя выбранного файла; - Files – содержит список имен выделенных файлов; - Filter – позволяет задавать фильтр для файлов, которые будут отображаться в диалоговом окне; - InitialDir – позволяет установить начальный каталог поиска в Инспекторе объектов. FontDialog – предназначен для настройки шрифта и его характеристик. Основные свойства - Font – результат изменения характеристик шрифта; - MaxFontSize – установка максимального размера шрифта; - MinFontSize – установка минимального размера шрифта. ColorDialog – предоставляет возможность выбора определенного цвета из палитры. Основным свойством является свойство Color - содержит данные о выбранном пользователем цвете. Практическое задание: Составить программу для работы с картотекой Обучающийся, которая создается в виде файла записей. Каждая запись содержит поля: Фамилия Имя Отчество (FIO) - строка 25 символов, дата рождения (DR) - строка 10 символов, адрес(Adres) - строка 25 символов, курс/ группа (Kurs Gr) - строка 10 символов. 1. Запустите Delphi Открыть новый проект - новую форму с многостраничным блокнотом: File New. Forms TabbedPages. 2. Для создания приложения необходимо использовать следующие объекты управления (рис. 31):
Рисунок 31- Объекты управления
3. Для окна формы с многостраничным блокнотом PageDlg поменять заголовок на Картотека Обучающийсяов и стиль окна BorderStyle - Sizeable для возможности изменять размеры формы 4. Многостраничный блокнот по умолчанию имеет 3 страницы: TabSheetl, TabSheet2, TabSheet3, которые находятся на Panel 1 и входят в состав PageControll. Необходимо выполнить следующие преоб разования: ->Удалить Panel2 с кнопками Ok, Cancel и Help в нижней части блокнота -> Удалить TabSheet3 с помощью клавиши Delete.Заменить заголовки TabSheetl, TabSheefl соответственно на Полный список и Поиск и редактирование - свойство Caption.
->Назначить для PageControll свойство HotTrack-True - назва ние вкладки автоматически выделяется цветом при перемещении по нему указателя мыши. 5. Необходимые объекты перенести на форму (в соответствии с рис. 32, 33), добавить главное меню MainMenul и заполнить его в соответствии с пунктами на рис. 32. Команда Справка содержит один пункт О программе.
Рис. 32. Заготовка «Страница 2 многостраничного блокнота»
В работе использованы следующие свойства Properties: Labell Caption= ‘Выберите запись из списка’ Label2 Caption= ‘Введите Фамилию Имя Отчество’ Label3 Caption= ‘ Дата рождения’ Labe14 Caption= ‘ Адрес’ Label5 Caption= ‘ Курс J группа’ Editl, Edit2, Edit3, Edit4, Edit5 Text = ‘ ’ ComboBoxl Style=csDropDownList DropDownCount=583 Buttonl Caption= ‘Previous ’ Button2 Caption= ‘Next’ Button3 Caption= ‘Delete ’ Button4 Caption= ‘Find ’ StringGridl ColCount=4 FixedCols=0 FixedRows=l RowCount=100 Font=Times/8 Otions=goColSizing=True Options=goEditing=True GroupBoxlCaption= ‘Найдена запись’
Рис. 33. Страница 1 - результат работы программы. Состав меню
6. Для создания информационного окна О программе (рис. 34) необходимо открыть окно новой формы AboutBoxl: File 4 New...-> Forms -> AboutBoxl. Изменить информацию в открывшемся окне можно в соответствии с образцом на рис. 29. Стиль формы BorderStyle следует установить bsDialog, так как пользователь не должен иметь возможность изменять ее размеры. Для загрузки графического файла следует нажать кнопку - свойство Picture в Инспекторе объектов. Чтобы форма About стала видимой, не84обходимо написать оператор. Для этого в главном меню надо выбрать команду Справка пункт О программе.
Рис. 34. Информационное окно О программе
В заготовку программного кода главного модуля внести оператор AboutShow. Программный код для модуля unit UAbout_kart заполняемый пользователем должен содержать только описание кнопки Ок - закрыть форму:
procedure TAboutBox.OKButtonClick(Sender; TObject); begin Close end;
Чтобы модуль UAbout_kart был доступен из главного модуля, необходимо, чтобы раздел implementation головного модуля содержал оператор uses UAbout_kart. 5. Удалить пустую форму Form. В менеджере проекта View-> Project Manager выделить строку (рис. 35) с именем Forml и удалить командой Remove 6. Сохранить файл программы и файл формы в рабочей папке на диске с соответствующими расширениями.
7. Добавить кнопки для организации стандартного диалога от крытия и закрытия файлов в Windows - OpenDialogl и SaveDialogl. Кнопки находятся на вкладке инструментов Dialog.
Рис. 35. Project Manager после удаления Forml
7. Страница событий Events заполняется для следующих компонентов: Menul -> событие N4Click (Чтение из файла) AboutBox -> событие N11Click Menul -> событие N5Click (Запись в файл) ComboBoxl(OnChange)-> событие NewEdit Menul -> (Сохранить)событие N8Click Buttonl событие OnClick Menul -> событие ExitClick PageDlgl событие FormCreate Внимание!!! События Nl--Nll в другой программе могут быть предназначены для других событий.Обращения к процедурам в разделе interface имеет следующий вид: procedure NewComboBox; {Заполнение комбинированного списка- назначается пользователем} procedure N4Click(Sender: TObject); {Чтение из файла} procedure N5CIick(Sender: TObject); {Запись в файл} procedure FormCreate(Sender: TObject); {Создание формы} procedure NewEdit(Sender: TObject); {Заполнение полей редактировать} procedure NllClick(Sender: TObject); {Закрыть информационное окно About} procedure £xitlClick(Sender: TObject); {Выход из программы} procedure N8Click(Sender: TObject); {Сохранить изменения} procedure ButtonlCIick(Sender: TObject); {Переход к следующей записи} Полный текст программного кода для PageDlgl, который составляется пользователем Туре Anketa = record FIO: string[25]; DR:string[10]; Adres:string[25]; Kurs_Gr:string[ 10]; end; var PagesDlgl: TPagesDlgl; file_An: File of Anketa; FAn: Anketa; Ns:integer; Implementation {уже имеются вuses UAbout_kart; программном коде} {$R *.dfm} procedure TPagesDlgl.N4Click(Sender: TObject); var i: integer; begin {Читать из файла} if OpenDialogl.Execute then begin AssignFile(File_an, OpenDialogl.FileName); Reset(File_an); Ns:=0; While not eof(File_an) do begin Read(File_an,FAn); StringGridl.Cells[0,Ns+l]:=FAn.FIO; StringGrid 1.Cells[l,Ns+l ]:=FAn.DR; StringGrid 1.Cells[2,Ns+l ]:=FAn.Adres; StringGridl.Cells[3,Ns+l]:=FAn.Kurs_Gr; Ns:=Ns+l; end; CloseFile(File_An); NewEdit(ComboBoxl); NewComboBox; end;end; procedure TPagesDlgl.FormCreate(Sender: TObject); begin {Создание формы - многостраничный блокнот} StringGrid 1.Cells[0,0]:=' Ф.И.О.’; StringGridl.Cells[l,0]:='Дата рождения'; StringGrid l.Cells[2,0]:=' Адрес'; StringGrid 1.Cells[3,0]:='Kypc/rpynna'; ComboBoxl.Items.Add("); ComboBoxl.ltemlndex:=0; procedure TPagesDIgl.ButtonlCIick(Sender: TObject); begin if ComboBoxl.Itemlndex=0 then ComboBoxl.ItemIndex:=Ns-l elseComboBoxl.ItemIndex:=ComboBox1.Itemlndex -1;
NewEdit(ComboBox 1); end; end; procedure TPagesDlgl.ExitlClick(Sender: TObject); begin Closeend; procedure TPagesDlgl.NewComboBox; var ij:integer; begin j:=ComboBoxl.Itemlndex; ComboBoxl.Clear; for i:=l to Ns do ComboBoxl.Items. Add(StringGrid 1.Cells[0,i]); СomboBoxl. Itemlndex:=j; end; procedure TPagesDlgl.NllClick(Sender: TObject); begin AboutBox.Show end; procedure TPagesDlgl.N5C!ick(Sender: TObject); var i: integer; begin {Записать в файл} if SaveDialogl.Execute then begin AssignFile(File_An,SaveDialog 1.FileName); Rewrite(FiIe_An); i:=l; While StringGridl.Cells[3,i]<>" do begin FAn.FIO:=StringGridl.Cells[0,i]; FAn.DR:=StringGridl.Cells[l Д; FAn.Adres:=StringGridl.Cells[2,i]; FAn.Kurs_Gr:=StringGrid 1.Cells[3,i]; Write(File_An,FAn); i:=i+l; end; CloseFile(File_An); end; end; procedure TPagesDlgl.NewEdit(Sender: TObject); var nrinteger; begin {Заполнение полей редактирования} n:=ComboBoxl.ItemIndex +1; if n>0 then begin Edit2.Text:=StringGrid1.Cells[0,n]; Edit3.Text:=StringGridl.Cells[l,n]; Edit4.Text:=StringGridl.Cells[2,n]; Edit5.Text:=StringGridl.Cells[3,n]; end; end; procedure TPagesDlgl.N8Click(Sender: TObject); var n:integer ;begin (Сохранить изменения} n:=ComboBox 1.Itemlndex+l; if PageControll.ActivePage=TabSheet2 then begin StringGridl.Cells[0,n]:=Edit2.Text; StrmgGridl.CeIIs[l,n]:=Edit3.Text; StringGrid 1.Cells[2,n]:=Edit4.Text; StringGrid 1.Cells[3,n]:=Edit5.Text; End else NewEdit(ComboBoxl); NewComboBox; end;end. 9. Запустите программу на выполнение: из меню Run или клавишей F9. 10. После запуска программы на экране появится многостраничный блокнот с двумя вкладками(рис. 32,33). 11. Заполните картотеку записями, используя StringGridl на вкладке Полный список и из меню Файл -> Записать в файл записать в файл kartoteka.txt. Перейти на вкладку Поиск и редактирование и прочитать записи, используя текстовые поля Editl* Edit4 и ComboBoxl. 12. Для завершения выполнения программы выполняется команда Файл/ Exit или выполнить команду Run/ Program Reset. 13. Задания: Запрограммируйте кнопки Next, Delete, Find. Запрограммируйте команды подменю Сортировка: По возрастанию и По убыванию.
Контрольные вопросы 1. Для чего в Delphi еспользуются компоненты MainMenu и PopupMenu? 2 Верно ли утверждение - MainMenu - невизуальный компонент? 3 Использование какого свойства MainMenu позволяет добавлять отдельные пункт меню? 4 В чем отличие главного и контекстного меню? 5 …………….– компонент представляет собой стандартное диалоговое окно выбора и открытия файлов.
Практическая работа №16, Лабораторная работа №16 Тема. Разработка консольного приложения Цель. И зучить технологию создания консольного приложения в Delphi; Ход работы. 1. Изучить теоретический материал. 2. Ответить на контрольные вопросы 3. Выполнить практическое задание. 4. Составить отчет. Теоретический материал Программа состоит из: заголовка, за которым следуют список подключаемых модулей, объявления меток, констант, типов данных и переменных, описания процедур и функций. Вслед за этой заголовочной частью располагаются собственно программные инструкции. На практике все это выглядит таким образом:
program<Имя программы>; uses<Список модулей>; label<Список меток>; const<Список констант>; type<Описания типов>; var<Объявления переменных>; <Описание процедур и функций>; begin <Инструкци> end. В структуре программы та или иная часть этих разделов может отсутствовать за ненадобностью.
В случае применения символа «=» в качестве оператора присваивания, то «=» используется совместно с символом двоеточия и имеет следующий общий синтаксис: переменная:= значение При присваивании используется 2 операнда, при этом подразумевается, что левому операнду (переменной) будет присвоено значение правого. Такая запись называется выражением. Операторы ввода. Операторы read и reeadln являются операторами обращения к встроенным процедурам ввода информации. Операторы read (считывать) и readln, который происходит от двух английских слов read (считывать) и line (строка) используются в программах для ввода информации в память компьютера и "считывания" значений в переменную. Таких переменных может быть несколько, тогда они записываются в этих операторах через запятую, например:read(a); readln(k, p, d) и т.п. Вывод данных — это передача данных после обработки из оперативной памяти на внешнее устройство (экран, принтер, файл на диске). Инструкция вывода на экран записывается в одной из следующих форм: write(yl, у2,..., уN); writeln; writeln (yl, y2,..., yN);где y1, у2,., -, уN — список вывода. Причем, первые два оператора, выполненные последовательно, эквивалентны третьему. Например: write(а + b); writeln('Сумма равна: ', sum); Следует знать: - инструкции write и writeln предназначены для вывода констант различных типов, значений переменных или выражений. Число параметров — произвольно; - из констант наиболее часто выводятся строки текста (вспомним, что строковые константы заключаются в апострофы); - если в инструкции вывода записано выражение, то сначала оно будет вычислено, а затем выполнен вывод полученного результата. - процедура вывода writeln аналогична write. Отличие заключается в том, что после вывода последней переменной из списка, курсор автоматически переходит в начало новой строки; - инструкция writeln; (без параметров) переводит курсор в начало следующей строки. Формат вывода В операторах вывода имеется возможность записи выражения, определяющего ширину поля вывода для каждой выводимой переменной или константы: write(yl: w: d, y2: w: d,..., yN: w: d); writeln(yl: w: d, y2: w: d,..., yN: w: d); где w задает общую ширину поля вывода; d — место под дробную часть; w и d — константы или выражения целого типа. Например:с: =1. 234; write('С=': 10, с: 7: 3); выведет на экран:xxxxxxxxC=xxl. 234, где х — это пустая позиция (пробел).
Практическое задание: 1. Загрузите Delphi. 2. Из меню File выберите команду New | Other, затем на вкладке New появившегося диалогового окна New Items - тип создаваемого приложения — Console Application. Рис.16.1. Выбор создаваемого консольного приложения в окне New Items
Рис.16.2.Шаблон главной процедуры консольного приложения
3. В результате этих действий на экране появится окно Project1.dpr, в котором можно набирать инструкции программы (Рис.16.2). Директива {$APPTYPE CONSOLE} предназначена для компилятора и сообщает ему, что программу нужно генерировать как консольное приложение. Далее используем знания языка Pascal: операторы записывается между begin и end, константы и переменные объявляются выше основной программы, процедуры и функции размещают между объявлением переменных и основной программой. Добавьте в тело программы строчку Writeln('Hello!'). Запустите ее на выполнение, щелкнув по кнопке или нажав клавишу F9. 4. Быстро появится и исчезнет черное окно. Как следует поступить далее, чтобы можно было “остановить” это окно? Простейший метод — добавить оператор Readln.
Рис.16.3. Окно с кодом программы
5. Запустите программу на выполнение.
Рис.16.4. Результат выполнения программы Console.dpr
6. Сохраните проект в отдельной папке Консоль под именем Console, выбрав пункт меню File-Save All. В момент сохранения проекта имя программы будет автоматически заменено на имя, под которым сохранен проект. 7. Откройте папку Консоль, затем файл Console.dpr — это и есть та основная программа, которая редактируется. 8. В программном коде замените команду вывода на Writeln('Здравствуй!'); и запустите программу на выполнение. Наверняка, вместо приветствия вы увидели какую-то “чушь”. 9. Чтобы русский текст можно было прочитать, нужно его перекодировать. Чтобы перекодировать символьную строку s из кодировки Windows-1251 в кодировку CP-866 используется команда: CharToOEM (PСhar(s), PChar(s)); Здесь PChar(s) обозначает адрес символа, с которого начинается строка s. Первый параметр функции — адрес исходной строки, а второй — адрес строки-результата. В данном случае оба адреса совпадают. Объявите символьную переменную (var s:string;). Внесите изменения в код основной программы таким образом: s:= ' Здравствуй!'; CharToOEM (PChar(s), PChar(s)); Writeln (s); Readln; 10. Добавьте модуль Windows в список uses: Uses Windows, SysUtils;
Рис.16.5. Окно с кодом программы 11. Запустите программу.
Рис. 16.6. Результат исполнения программы Console_rus.dpr 12 Сохраните программу (Console_rus.dpr) и закройте проект. 13. Ознакомьтесь с условием задачи: Создать консольное приложение для вычисления площади прямоугольника. Создайте консольное приложение по предложенному на рис.16.7. образцу:
Рис.16.7. Окно консольного приложения Plosh_pryamoug.exe
14. Сравните свой программный код с листингом 16.1.
Листинг 16.1. Площадь параллелограмма program Plosh_pryamoug; {$APPTYPE CONSOLE} Uses Windows, SysUtils; var s,i,h,p:string; dl,shir,pl:integer; // длина, ширина, площадь begin s:= 'Площадь прямоугольника'; CharToOEM (PChar(s), PChar(s)); Writeln (s); i:='Введите значение длины'; CharToOEM (PChar(i), PChar(i)); Writeln (i); Readln(dl); h:='Введите значение ширины'; CharToOEM (PChar(h), PChar(h)); Writeln (h); Readln(shir); pl:=dl*shir; p:='Площадь прямоугольника равна '; CharToOEM (PChar(p), PChar(p)); Writeln(p,pl); readln; end.
15. самостоятельно создать консольное приложение с использованием оператора for, который используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений; повторить оператор ветвления if…then; закрепить навыки выведения текста на экран.
Задача: С клавиатуры вводятся N чисел. Составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. Значение N вводится с клавиатуры Листинг 16.2. for_if program for_if; {$APPTYPE CONSOLE} uses Windows, SysUtils; var a,b,n,so,sp,sn:integer; // a -параметр цикла, n - число вводимых чисел, b - вводимое число, so - число введенных отрицательных чисел, sp - число введенных положительных чисел, sn - число введенных нулей. s1,s2,s3,s4,s5:string; begin s1:= 'Задайте количество чисел, которые будут введены'; CharToOEM (PChar(s1), PChar(s1)); Writeln (s1); ReadLn(n); so:=0; sp:=0; sn:=0; For a:=1 to n do begin s2:='Введите любое целое число'; CharToOEM (PChar(s2), PChar(s2)); Writeln (s2); readln(b); If b<0 then so:=so+1; If b>0 then sp:=sp+1; If b=0 then sn:=sn+1; end; s3:= 'Число введенных отрицательных_чисел равно'; CharToOEM (PChar(s3), PChar(s3)); WriteLn(s3,so); s4:= 'Число введенных положительных_чисел равно'; CharToOEM (PChar(s4), PChar(s4)); WriteLn(s4,sp); s5:= 'Число введенных нулей равно'; CharToOEM (PChar(s5), PChar(s5)); WriteLn(s5,sn); Readln; end.
Рис.16.8. Окно созданного консольного приложения for_if.exe
Контрольные вопросы 1 Программа состоит из:……. 2 В каком случае применяется символ «=», а когда «:=»? 3 Какие операторы используются для ввода значений в переменную? 4 Какие операторы используются для вывода значений величин? 5 Что делает инструкция writeln; (без параметров? 6 Формат вывода – это……?
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|