Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Использование компонентов MainMenu, PopupMenu, StringGrid




В 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...