АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Пример решения задачи

Прочитайте:
  1. I. ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ
  2. II. Задачи по частной патологической анатомии
  3. II. ОСНОВНЫЕ ЗАДАЧИ ДИАГНОСТИКИ.
  4. II. Целевые задачи
  5. II. Целевые задачи.
  6. III. Задачи
  7. III. ЗАДАЧИ
  8. III. ЗАДАЧИ ЗАНЯТИЯ.
  9. III.ЗАДАЧИ
  10. IX. Клинические задачи и тестовый контроль

Составьте программу, в которой при выборе элемента в выпадающем списке ComboBox, заголовок главной формы будет изменен на строку, являющуюся значением выбранного элемента списка ComboBox.

 

Создадим новое приложение. Выберем меню File > New > Application. Обратимся к вкладке Standard палитры компонентов Delphi, и поместим на форму компонент ComboBox (Рис. 1).

 

Рис. 1. Редактируемая форма. Компонент ComboBox1.

 

Заполним список несколькими значениями. Вызовем редактор свойства Items компонента ComboBox1 (Рис. 2).

Рис. 11. Редактор свойства Items компонента ComboBox1.

Установим в свойство ItemIndex компонента ComboBox1 значение 0. Это позволит списку изначально отображать первый элемент (Рис. 12).

Рис. 12. Редактируемая форма. Компонент ComboBox1.

 

При выборе элемента выпадающего списка происходит событие OnSelect этого компонента. Создадим обработчик события OnSelect компонента ComboBox1. В обработчике компонента будем изменять заголовок формы на текст выделенного в списке элемента:

 

procedure TForm1.ComboBox1Select(Sender: TObject);

Begin

Form1.Caption:=ComboBox1.Text;

end;

 

Приложение. Некоторые функции модуля SysUtils.

 

Функция Описание
functionIntToStr(Value:integer):string Переводит целое число в строку
function StrToInt(Value: string): integer Переводит строку в целое число
functionStrComp(Str1:PAnsiChar; Str2:PAnsiChar):integer Сравнивает две строки. Возвращает 0 если строки совпадают. Если вы используете переменные типа string, то в функцию необходимо помещать преобразованный тип. Например:   … var s1,s2:string; … ifStrComp(PAnsiChar(s1), PAnsiChar(s2))=0 then…
functionTrim(const S:String):string Функция возвращает строку равную строке S, но с удаленными концевыми пробелами

 

 


Вариант 1

Составьте программу, в которой при выборе элемента в выпадающем списке ComboBox, заголовок главной формы будет изменен на строку, являющуюся значением выбранного элемента списка ComboBox.

 

Вариант 2

Составьте программу, которая при отпускании правой кнопки мыши над списком ListBox, будет выдавать информационное сообщение, содержащее индекс выделенного элемента этого списка

 

Вариант 3

Составьте программу, в которой при нажатии левой кнопки мыши элементы списка ListBox сортируются по алфавиту

 

Вариант 4

Составьте программу, которая выясняет, совпадает ли содержимое двух списков строк, представленных компонентами ListBox и ComboBox

 

Вариант 5

Составьте программу, выясняющую, сколько элементов списка ListBox содержат символ «V»

 

Вариант 6

Составьте программу, удаляющую из списка ListBox выделенный элемент по нажатию правой кнопки мыши над ним.

 

Вариант 7

Составьте программу, которая при выборе элемента из списка ComboBox, будет выяснять, существует ли этот элемент в списке ListBox.

 

Вариант 8

Составьте программу, организующую добавление и удаление элементов списка ListBox

 

Вариант 9

Составьте программу, выясняющую все ли элементы списка ComboBox различны

 

Вариант 10

Составьте программу, поиска в списке заданного слова X

 

Вариант 11

Составьте программу, утраивающую каждый третий символ в каждом элементе списка ListBox

 

Вариант 12

Составьте программу, удаляющую из списка ListBox те элементы, что стоят на четных местах

 

Вариант 13

Составьте программу, удаляющую те элементы списка ListBox, что стоят на нечетных местах

Вариант 14

Составьте программу, в которой при выборе элементов, представляющих числовые значения, в списке ComboBox, в соответствие с выбранным значением (числом), будет изменяться ширина главной формы.

 

Вариант 15

Составьте программу, удаляющую из списка ListBox те элементы, что не встречаются в списке ComboBox

 

Вариант 16

Составьте программу, выясняющую, сколько раз в списке ListBox встречается его последний элемент

 

Вариант 17

Составьте программу, в которой, при выборе элемента в списке ListBox в компонент Memo будет добавляться его значение.

 

Вариант 18

Составьте программу, загружающую из файла элементы списка ComboBox.

 

Вариант 19

Составьте программу, вычеркивающую из списков ListBox и ComboBox те элементы, что встречаются в них одновременно

 

Вариант 20

Составьте программу, в которой при отпускании правой кнопки мыши над списком ListBox в него будет заноситься элемент, значение которого есть текст компонента Edit

 

Вариант 21

Составьте программу, организующую добавление и удаление элементов списка ListBox

 

Вариант 22

Составьте программу, удаляющую те элементы списка ListBox, что не встречаются в ComboBox

 

Вариант 23

Составьте программу, выясняющую, все элементы списка ComboBox одинаковы

 

Вариант 24

Составьте программу, позволяющую при выборе элемента списка ComboBox добавлять элемент с таким же значением в список ListBox

 

Вариант 25

Составьте программу, позволяющую мышью переносить элемент из одного списка ListBox в другой список ListBox

 

Вариант 26

Составьте программу, которая позволяет записывать индексы одновременно выделенных нескольких элементов списка ListBox в редактор текста Memo, при двойном щелчке на нем.

 

Вариант 27

Составьте программу, выясняющую, сколько элементов списка ListBox, находятся в выделенном состоянии. Если не один, то записать значения выделенных элементов в список ComboBox

 

Вариант 28

Составьте программу, определяющую, сколько в списке ListBox повторяющихся строк

 

Вариант 29

Составьте программу, в которой в зависимости от выбранного элемента списка ComboBox изменяется текст всплывающей подсказки редактора текста Edit

 

Вариант 30

Составьте программу, удаляющую из списка ListBox те элементы, что не встречаются в списке ComboBox

 

Вариант 31

Составьте программу, выясняющую, какой из элементов списка ListBox имеет максимальную длину

 

Вариант 32

Составьте программу поиска чаще всего встречающегося элемента списка ComboBox

 

Вариант 33

Составьте программу, выясняющую, совпадают ли первый и последний элементы списка ComboBox

 

Вариант 34

Составьте программу, заменяющую каждый элемент списка ListBox, имеющий четный индекс, символом «0»

 

Вариант 35

Составьте программу, позволяющую добавлять, удалять элементы списка ListBox, и сохранять их в текстовый файл

 

Вариант 36

Составьте программу, добавляющую в список ComboBox те элементы списка ListBox, что имеют нечетный индекс

Вариант 37

Составьте программу, выясняющую, сколько элементов списка ListBox встречаются в списке ComboBox

 

Вариант 38

Составьте программу, в которой при двойном щелчке мышью на компоненте ListBox, все его элементы переносятся в список ComboBox

 

Вариант 39

Составьте программу, позволяющую при выборе элемента списка ComboBox, изменять текст в редакторе Edit на текст выбранного элемента списка

 

Вариант 40

Составьте программу вставки после каждого элемента списка ListBox строки «XXX»


Лабораторная работа № 4

«Работа с компонентами ImageList, ComboBoxEx»

 

Невизуальный компонент ImageList предназначен для хранения в памяти последовательности (списка) небольших графических изображений формата BMP или ICO. Располагается этот компонент на вкладке Win32 палитры компонентов Delphi.

 

Создадим новое приложение. Перейдем на вкладку Win32 и поместим на форму компонент ImageList (Рис. 6).

Рис. 6. Редактируемая форма. Компонент ImageList1.

 

Двойным щелчком левой кнопки мыши над компонентом ImageList1 вызовем редактор списка графических изображений, хранящегося в этом компоненте. Изначально он пуст (Рис. 7). Для того чтобы поместить одно или сразу несколько изображений, необходимо нажать кнопку Add.

 

Примечание. Подходящие изображения можно найти по адресу Program Files\Common Files\Borland Shared\Images\Icons

После загрузки появится список с графическими изображениями. Как и все списки в Delphi, этот список начинается с нуля (Рис. 8).

Рис. 7. Редактор списка изображений компонента ImageList1.

 

В списке можно перетаскивать мышью изображения. Заменить (Replace), удалить (Delete), экспортировать (Export) изображение. Очистить список целиком (Clear).

 

Рис. 8. Редактор списка изображений компонента ImageList1.

 

После подтверждения все изображения сохранятся в файле формы DFM и не будут связаны с файлами, из которых они были загружены. Отредактировать список ImageList1 можно также в редакторе, который вызывается двойным щелчком левой кнопки мыши.

 

Сам по себе невизуальный компонент ImageList является лишь своеобразным хранилищем данных. Где в качестве данных выступают графические изображения, как правило, ширина и высота которых не превышает 32 px. В нашем случае не превышает 16 px.

 

Компонент ComboBoxEx. Одним из компонентов, который имеет возможность использовать данные списка ImageList, является визуальный компонент ComboBoxEx, располагающийся на той же вкладке Win32. Этот компонент подобен визуальному компоненту ComboBox, реализующему выпадающий список. Новый компонент ComboBoxEx отличается от обычного списка тем, что помимо строк, он может отображать графическое изображение для каждого элемента списка.

Продолжим разработку нашего приложения. Поместим на форму компонент ComboBoxEx (Рис. 9).

Рис. 9. Редактируемая форма. Компонент ComboBoxEx1.

 

Для того чтобы компонент ComboBoxEx1 знал откуда ему брать графические изображения для своих элементов, необходимо связать его с компонентом ImageList. Эту связь мы организуем при помощи диаграммы. Перейдем на окно редактора кода и выберем вкладку Diagram. Поместим в область Diagram из окна дерева объектов компоненты ImageList1 и ComboBoxEx1 (путем перетаскивания мышью). Расположим компонент ImageList1 выше компонента ComboBoxEx1 (Рис. 9).

 

Рис. 9. Окно редактора кода. Вкладка Diagram.

 

Выберем инструмент Property Connector (соединение компонента по свойству). Доведем указатель мыши в виде крестика до компонента ComboBoxEx1 и соединим с компонентом ImageList1 – установится связь (Рис. 10), Delphi автоматически запишет в свойство Images компонента ComboBoxEx1 значение ImageList1. Это означает, что ComboBoxEx1 будет использовать изображения из списка ImageList1.

 

Рис. 10. Окно редактора кода. Вкладка Diagram. Связь между компонентами.

 

Переходим к компоненту ComboBoxEx1. Создадим элементы списка. Для этого вызовем редактор свойства ItemsEx компонента ComboBoxEx1. С помощью кнопки в редакторе добавим три элемента (Рис. 11).

Рис. 11. Редактор свойства ItemsEx компонента ComboBoxEx.

 

Выделим первый элемент списка в редакторе (Рис.11) и свойству Caption элемента назначим значение «Строка1». В области значения свойства ImageIndex элемента выберем первое изображение, значение 0.

Для второго элемента установим:

· Caption = Строка2

· ImageIndex=1

Для третьего элемента установим:

· Caption = Строка3

· ImageIndex=2

 

Завершим работу с редактором свойства ItemsEx. Запустим приложение. На форме отображается компонент ComboBoxEx1, его содержимое: три элемента, содержащие текст и графическое изображение (Рис. 12).

 

Рис. 12. Приложение. Выпадающий список, реализованный на основе компонента ImageList1.

 

Общее задание

 

Дополнить выпадающий список ComboBoxEx1 V-ю (V-номер варианта) различными графическими изображениями.

 


Лабораторная работа № 5

«Компоненты-оболочки для специализированных окон диалогов»

 

В Delphi существуют специальные компоненты, позволяющие организовать работу со специализированными окнами диалогов операционной системы. К таким диалогам относят: диалог выбора пути к файлу, диалог выбора цвета, диалог настройки шрифта и т.д. Все эти диалоги вызываются специализированными функциями операционной системы, но в Delphi эти диалоги выполнены в виде невизуальных компонентов. Эти компоненты называются компонентами-оболочками. Они позволяют уже на этапе разработки приложения настроить все необходимые параметры окна диалога (например: для диалога выбора цвета – текущий цвет, для диалога выбора пути к файлу – тип просматриваемых файлов или текущая директория), а во время работы приложения вызвать необходимое окно диалога.

 

Создадим новое приложение. Перейдем к вкладке Standard палитры компонентов и поместим на форму компонент Memo и четыре компонента Button. Настроим свойства компонентов.

 

Для компонента Memo1:

· Top=0

· Left=0

· Width=300

· Height=300

· Lines (В появившемся редакторе свойства необходимо удалить все строки)

Для компонента Button1:

· Caption = Открыть.

· Top=10

· Left=310

· Width=75

· Height=25

Для компонента Button2:

· Caption = Сохранить.

· Top=40

· Left=310

· Width=75

· Height=25

 

Для компонента Button3:

· Caption = Шрифт.

· Top=70

· Left=310

· Width=75

· Height=25

 

Для компонента Button4:

· Caption = Фон

· Top=100

· Left=310

· Width=75

· Height=25

Для компонента Form1 (формы):

· Caption = Диалоги

· Width=400

· Height=350

· BorderStyle = bsDialog

 

Перейдем на вкладку Dialogs палитры компонентов и поместим на форму компоненты:

1. OpenDialog – диалог открытия файла;

2. SaveDialog – диалог сохранения файла;

3. ColorDialog – диалог выбора цвета;

4. FontDialog – диалога выбора шрифта.

 

Редактируемая форма будет выглядеть следующим образом (Рис. 1):

 

Рис. 1. Редактируемая форма.

 

Настроим свойства компонента OpenDialog:

 

· Title (Заголовок окна диалога) = Открытие текстового файла

· Filter (Рис. 2). В редакторе этого свойства мы указываем, какие файлы должен отображать диалог. В поле Filter Name записывается комментарий, в поле Filter командная строка. Командная строка должна состоять из «*.» и расширения файла.

 

Рис. 2. Редактор свойства Filter компонента OpenDialog1

Наш диалог будет отображать для открытия только текстовые файлы с расширением TXT.

 

Таким же образом настроим значение свойства Filter компонента SaveDialog1. Далее настроим также его свойства:

 

· Title = Сохранение текстового файла

· DefaultExt = txt (Расширение файла по умолчанию. Если при сохранении пользователь приложения забудет написать расширение файла, то диалог автоматически запишет файлу расширение, указанное в DefaultExt).

 

Создадим обработчик события OnClick компонента Button1 и вызовем в нем диалог открытия файла:

 

procedure TForm1.Button1Click(Sender: TObject);

Begin

// если пользователь выбрал файл для открытия

if OpenDialog1.Execute then

// загружаем в редактор Memo1 текст из файла (путь к файлу – значение свойства FileName)

memo1.Lines.LoadFromFile(Opendialog1.FileName);

end;

 

Метод Execute является функцией вызывающей окно диалога (это справедливо для всех рассматриваемых далее диалогов). Она принимает значение истины, если пользователь подтверждает свой выбор в диалоге, – ложь в противном случае (т.е. если нажата кнопка «Отмена»).

 

Создадим обработчик события OnClick компонента Button2 и вызовем в нем диалог сохранения файла:

 

procedure TForm1.Button2Click(Sender: TObject);

Begin

// если сформирован путь, имя нового файла, и пользователь подтвердил свои действия

if SaveDialog1.Execute then

// сохраняем текст из Memo1 по указанному пути (путь к файлу – значение свойства FileName)

memo1.Lines.SaveToFile(SaveDialog1.FileName);

end;

Создадим обработчик события OnClick компонента Button3 и вызовем в нем диалог выбора шрифта:

procedure TForm1.Button3Click(Sender: TObject);

Begin

// если выбран шрифт, то меняем шрифт редактора Memo1 на выбранный шрифт

if FontDialog1.Execute then

Memo1.Font:=FontDialog1.Font;

end;

Создадим обработчик события OnClick компонента Button4 и вызовем в нем диалог выбора цвета:

procedure TForm1.Button4Click(Sender: TObject);

Begin

// если выбран цвет, то меняем цвет редактора Memo1 на выбранный цвет

if ColorDialog1.Execute then

Memo1.Color:=ColorDialog1.Color;

end;

Теперь мы получили с вами простейшее приложение с использованием стандартных диалогов. Запустите приложение и проверьте его работу.

 

Общее задание

Создать приложение с использованием диалогов открытия и сохранения графических изображений (OpenPictureDialog, SavePictureDialog). Для отображения графики необходимо использовать компонент Image.


Лабораторная работа № 6

«Компоненты – переключатели и флажки, их группирование»

 

Компоненты RadioButton (радиокнопка или переключатель) и CheckBox (флажок) – это оконные элементы управления, предназначенные для организации выбора действий в приложении. Располагаются они на вкладке Standard палитры компонентов Delphi.

 

Компонент RadioButton, как правило, используется в группе с несколькими компонентами своего типа. Причем если эти компоненты располагаются в одном родительском окне, то выделен, может быть лишь один из них – при выделении одного из переключателей, выделение у всех остальных снимается (Рис. 1).

Рис. 1. Группа компонентов RadioButton

 

Программно узнать, выделен компонент RadioButton или нет, а также принудительно выделить его – можно, обратившись к свойству Checked логического типа.

 

Компонент CheckBox может использоваться как в группе с несколькими компонентами своего типа, так и один (Рис. 2). Пользователь в любой момент может выделить флажок или отменить его выделение. Причем, это не зависит от того, используется он в группе таких же компонентов, или нет. Программно узнать, выделен флажок CheckBox или нет, а также принудительно выделить его – можно также, обратившись к свойству Checked логического типа.

 

Рис. 2. Компоненты CheckBox

 

Для группировки переключателей и флажков может использоваться любой компонент, являющийся оконным элементом управления (на этапе разработке только окна-контейнеры: ScrollBox, Form, GroupBox, Frame и т.д.).

 

Создадим приложение с использованием рассмотренных нами компонентов. Приложение позволит автоматизировать процесс педагогического тестирования по информатике.

 

Тест по программированию будет состоять из пяти вопросов:

 

Вопрос 1. С какого служебного слова начинается описание модуля в Object Pascal?

1) Main_proc ();

2) Global_module

3) Module

Unit

 

Вопрос 2. В Object Pascal служебное слово Inherited означает:

1) вызов унаследованного метода;

2) подключение DLL;

3) подключение модуля.

 

Вопрос 3. В Turbo Pascal 7 в главной программе невозможно описание вида:

1) var D:array[1..100] of integer;

2) var F:integer

3) var HC:integer=0.

 

Вопрос 4. (15 mod 3)=

1) 3

2) 5

3) 0

 

Вопрос 5. (57 div 2)=

1) 23,5

2) 23

3) 28

 

Создадим новое приложение, выбрав File > New > Application. Обратимся к вкладке Win32 и поместим на форму компонент PageControl. Создадим пять страниц в элементе управления, вызвав его контекстное меню правой кнопкой мыши над ним, и выбрав New Page. (Рис. 3). Выделим компонент PageControl, щелкнув левой кнопкой мыши в область заголовка этого компонента и в Инспекторе объектов настроим его свойства:

· Top=0

· Left=0

· Width=400

· Height=300

Выберем первую страницу TabSheet1, щелкнув левой кнопкой мыши на ее заголовок и щелкнув в ее графическую область. Свойству Caption страницы TabSheet1 установим значение «Вопрос №1». Поместим на страницу четыре компонента типа RadioButton (если компонент помещен на страницу, то он при перетаскивании он не будет выходить за ее пределы). Свойствам Caption компонентов типа RadionButton установим значения в соответствии с ответами на первый вопрос теста. Выделим первую радиокнопку, установив в ее свойство Checked значение true. Поместим на страницу TabSheet1 компонент Label, и его свойству Caption установим значение, являющееся текстом первого вопроса теста (Рис. 4).

 

Рис. 3. Редактируемая форма. Компонент PageControl.

 

Подобным образом, в соответствие с вопросами теста заполним остальные четыре страницы TabSheet2, TabSheet3, TabSheet4, TabSheet5.

 

Рис. 4.

 

Поместим на форму компонент Memo. Он необходим нам для вывода результатов тестирования (статистики тестирования).

 

Установим значения свойств компонента Memo1:

 

· Left=400

· Top=0

· Width=100

· Height=300

· Lines (В редакторе свойства необходимо удалить все строки)

· ReadOnly = true (Только для чтения)

 

Поместим на форму компонент Button (Рис. 5) и установим значения его свойств:

 

· Caption = Показать результат тестирования

· Left=0

· Top=300

· Width=500

· Height=25

 

Рис. 5. Редактируемая форма. Компонент Button1.

 

Создадим обработчик события OnClick компонента Button1:

 

procedure TForm1.Button1Click(Sender: TObject);

Begin

// очищаем редактор текста от предыдущих результатов

Memo1.Lines.Clear;

// так как в первом вопросе верным ответом является четвертый, а ответ реализован компонентом

// RadioButton4, то проверяем, отмечен ли четвертый переключатель и заносим в Memo

// соответствующую информацию

if RadioButton4.Checked then memo1.Lines.Add('Вопрос №1 Ok')

else memo1.Lines.Add('Вопрос №1 No');

end;

 

Общее задание

Завершить визуальное построение теста на страницах TabSheet2, TabSheet3, TabSheet4, TabSheet5 компонента PageControl1. Дополнить обработчик события OnClick компонента Button1 кодом проверки правильных ответов последних четырех вопросов теста.


Лабораторная работа № 7

«Организация меню. Главное и контекстное меню. Компонент TActionList»

 

Для организации главного меню формы используется невизуальный компонент MainMenu. Располагается этот компонент на вкладке Standard палитры компонентов Delphi. Рассмотрим работу этого компонента на примере небольшого приложения.

 

Создадим новое приложение. Поместим на форму компонент MainMenu. Главное меню формируется при помощи дизайнера меню. Дизайнер меню можно вызвать двойным щелчком левой кнопки мыши над компонентом MainMenu или через свойство Items этого компонента в Инспекторе объектов. Дизайнер меню представляет собой редактор элементов (пунктов) меню, он автоматически предлагает создать каждый новый пункт меню, и автоматически дает им имена.

 

Каждый пункт меню имеет свои собственные свойства и события, которые отображаются в Инспекторе объектов при выделении пункта меню. Главное меню состоит из строки элементов, к каждому из которых может быть сформировано выпадающее меню.

 

За текст элемента меню отвечает его свойство Caption. В выпадающем меню текст «-» в свойстве Caption элемента воспринимается как команда по разделению, и на месте элемента меню появится разделяющая линия. Создадим стандартное для большинства приложений меню (Рис. 1):

 

Рис.1. Дизайнер меню.

 

Дизайнер позволяет осуществлять редактирование меню при помощи своего контекстного меню, которое вызывается по нажатию правой кнопки мыши. Например, создадим выпадающее меню для созданного нами пункта меню «Печать». Для этого выделим этот пункт меню (Рис. 1), далее вызовем контекстное меню и выберем команду Create Submenu (создать подменю). После чего дизайнер предложит нам создать элементы этого меню (Рис. 2).

 

Контекстное меню дизайнера позволяет осуществлять удаление и вставку элементов меню. Для этого можно также использовать клавиши Delete и Insert.

Рис. 2. Создание подменю

 

Создадим подменю из двух элементов («Настройка печати», «Печать»). После этого закроем дизайнер меню. Форма примет следующий вид (Рис. 4):

Рис. 4. Редактируемая форма. Сформированное главное меню.

 

Создадим контекстное меню, по составу аналогичное выпадающему меню в первом пункте главного меню. Контекстное меню реализуется при помощи компонента PopupMenu. Этот компонент располагается на вкладке Standard палитры компонентов Delphi. Контекстное меню изначально не принадлежит ни одному из компонентов, но оно может быть назначено любому визуальному компоненту. Для этого большинство визуальных компонентов имеют свойство PopupMenu. Контекстное меню создается также как и главное при помощи дизайнера меню. После того как контекстное меню создано, назначим его форме. Для этого в списке значений свойства PopupMenu формы выберем значение PopupMenu1. Запустим приложение и правой кнопкой мыши над формой вызовем созданное нами контекстное меню (Рис. 5).

Рис. 5. Работающее приложение. Контекстное меню формы.

 

Для того чтобы определить код, который должен выполняться при выборе элемента меню, необходимо создать обработчик события OnClick элемента меню. Это осуществляется в дизайнере меню: выделяется элемент меню, в Инспекторе объектов на вкладке Events выбирается событие OnClick и двойным щелчком мыши в область значения этого свойства создается обработчик события.

 

Фактически мы имеем два одинаковых меню (Главное и контекстное) и нам придется писать два одинаковых кода в обработчиках событий. Допустим меню «Сохранить как» вызывает сложный, громоздкий код сохранения какого-либо проекта в файл. Будет достаточно неудобно копировать два куска кода, и увеличивать размеры программы. А если будет существовать еще несколько графических кнопок, которые будут выполнять то же самое? Конечно, гораздо удобнее создать одну подпрограмму.

 

Для того чтобы избавить программиста от ненужных манипуляций с вызовом одного и того же кода при событиях различных компонентов, был спроектирован невизуальный компонент TActionList. Он располагается на вкладке Standard палитры компонентов. Поместим его на форму.

Двойным щелчком вызывается редактор подпрограмм, они называются Actions (действия). Создадим одно действие (Рис. 6). Выделим строку Action1, свойству Caption действия назначим значение «Сохранить как». В Инспекторе объектов создадим обработчик события OnExecute элемента Action1. В обработчик события OnExecute поместим вызов информационного окна, которое будет сигнализировать о выбранном действии.

 

procedure TForm1.Action1Execute(Sender: TObject);

Begin

Showmessage('Вызвано действие сохранения');

end;

Завершим работу с редактором действий и перейдем на форму.

Рис. 6. Редактор действий.

 

Вызовем дизайнер меню MainMenu1. Выделим элемент «Сохранить как» и в его свойстве Action выберем наше действие Action1. Вызовем дизайнер меню PopupMenu1. Выделим элемент «Сохранить как» и в его свойстве Action выберем наше действие Action1. Запустим приложение и проверим работу меню.

 

Далее, если нам необходимо будет изменить код действия сохранения, нам не придется обращаться поочередно к одинаковым пунктам главного и контекстного меню. Достаточно будет лишь обратится к компоненту ActionList1, вызвать редактор действий, и изменить обработчик события OnExecute действия Action1.

 

Общее задание

 

Создайте действия при помощи компонента ActionList1 для каждого пункта меню.

 

Задание по вариантам:

Задание 1. Организуйте открытие и сохранение текстового файла с помощью пунктов главного меню.

Задание 2. Организуйте печать текстового документа и выход их программы с помощью пунктов контекстного меню.

 


Лабораторная работа № 8

«Создание компонентов. Графический и оконный элемент управления»

 


Дата добавления: 2015-09-18 | Просмотры: 1095 | Нарушение авторских прав



1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |



При использовании материала ссылка на сайт medlec.org обязательна! (0.07 сек.)