При запуске вместо текста вопроса написана строка «Текст вопроса», а вместо вариантов ответов – «Вариант1 (2,3)». Мышкой можно выбирать «радиобаттон», а потом вводить в поле «текст варианта» нужный вариант.
Для этого предназначена утилитная программа RC. (Result Creator). После запуска этой программы выводится окно, представленное на рис. 1. 4, стр. 12.
Рисунок 1. 4 – Окно программы Result Creator
Как видно из рис. 1. 4, текст результата вводится в окне ввода типа Memo. В верхние спинэдиты помещается минимальное и максимальное количесиво очков, которые должен набрать тестируемый, чтобы высветился именно этот вариант результатов. Спинэдит «Вариант № » показывает, над каким вариантом результата ведется работа. Кнопки «Сохранить» и «Загрузить» вызывают стандартные диалоговые окна Windows для, соответственно, сохранения и загрузки файла результатов.
Сохраняя файл результатов, желательно давать ему расширение RTS.
Среда программирования Borland Delphi имеет два компонента для создания меню: TMainMenu и TPopupMenu. Они делают программирование меню приложений несложной задачей. В данной курсовой работе будут описаны способы создания меню с обеими компонентами, а также представлены примеры программ.
На панели инструментов этот компонент помечен значком: . Для того, чтобы создать меню, поместите компонент на форму, а потом щелкните по нему два раза левой кнопкой мышки. Появится специальное окно для ввода пунктов меню, пример которого представлен на рис. 2. 1.
Рисунок 2. 1 – Окно для ввода меню
На рис. 2.1 показано окно для ввода пунктов меню, а также часть инспектора объектов со свойством Caption, которому нужно присвоить строку меню. Кроме того, можно изменить свойство Name.
Чтобы программа реагировала на выбор пункта меню, нужно создать специальный обработчик события, который будет вызываться каждый раз при щелчке мышки по пункту или при нажатии клавиши «ENTER».
Вставить обработчик события выбора меню можно несколькими способами: двойной щелчек по пункту на окне редактирования меню, на форме; можно, в крайнем случае, назначить событие на странице «Events» инспектора объектов.
Такие меню широко применяются во многих приложениях Windows и не только. Выбирая пункт меню, пользователь попадает в другое меню (как правило, расположенное вертикально) и может выбирать там.
После ввода пункта горизонтального меню, оно принимает вид:
Рисунок 2. 2 – Вложенное меню
Теперь можно выделить мышкой пункт вложенного меню и вводить его параметры, как и для главного.
Вложенным меню, в свою очередь, можно также назначать вложенные. Самый удобный способ – нажать правую кнопку мышки и выбрать из появившегося меню пункт «Create Submenu». После этих манипуляций наше меню примет такой вид, как показано на рис. 2. 3.
Рисунок 2. 3 – Вложенные меню второго уровня
Создавать вложенные меню Windows позволяет до бесконечности (на практике – сколько хватит памяти или пока не надоест).
Вместо обычного выполнения действия при выборе пункта меню, можно сделать так, чтобы он отмечался «птичкой» (Рис. 2. 4). В этом случае данный пункт действует подобно элементу интерфейса CheckBox. Чтобы в программе узнать, «включен» ли пункт, надо проверить свойство Checked.
Рисунок 2. 4 – Меню, отмеченное “птичкой”
Во многих приложениях также применяется возможность закрытия доступа к определенному пункту меню, есло в данный момент он не может выполнится. Для этого служит свойство Enabled. Оно, как и Checked, имеет тип Boolean.
На рис. 2.4 видно, что пункт «Меню2» выделен жирным шрифтом. Это результат установки еще одного логического свойства объекта – Default.
Еще одна важная возможность – вставка разделительной линии. На рис. 2.5 (стр. 16) она размещена между «Меню1» и «Меню2»:
Рисунок 2. 5 –
Эту «примочку» используют в основном для отдления различных типов действия, вызываемого меню, например, часто в меню «Файл» помещают список нескольких открывавшихся ранее файлов, отделенный от остального меню такими линиями. Прекрасным примером использования разделительных линий также может служить меню «Файл» программы Microsoft Word. Оно приведено для наглядности на рис. 2. 6.
Рисунок 2. 6 – Меню «Файл» Word'a
Одной из самых удобных возможностей системы меню является возможность использования клавиш быстрого доступа, например, в меню на рис. 2. 6 при одновременном нажатии клавиш Ctrl и Р текущий документ отправлется на печать. И не нужно отвлекаться, тратить время, снимать руку с клавиатуры…
Рассматриваемый нами компонент TMainMenu также обладает возможностью назначения клавиш быстрого доступа. Для этого служит свойство ShortCut.
В инспекторе объектов оно имеет раскрывающийся список, из которого можно выбрать нужную комбинацию клавиш. Пример такого списка представлен на рис. 2. 7.
Рисунок 2. 7. –
Если кому-то захочется сделать уж очень «крутую» программу, тут ему поможет возможность вставки картинок.
Для того, чтобы меню «всплывало», нужно в свойстве PopupMenu формы указать его (меню) имя.
Ниже будут представлены примеры программ, использующие такие компоненты, как меню. Кроме исходного кода будут иллюстрации.
Пример представляет собой несложную программу, позволяющую просматривать и редактировать текстовые файлы. Окно этой программы показано на рис. 2. 8.
Рисунок 2. 8 – Окно программы-примера
Ниже будет представлен листинг программы:
unit Unit1;
{Главный модуль программы}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu; {Главное меню}
N1: TMenuItem; {Меню “Файл”}
N2: TMenuItem; {Меню “Открыть”}
N3: TMenuItem; {Меню “Сохранить”}
N4: TMenuItem; {Меню “Выход”}
N5: TMenuItem; {Разделительная линия}
N6: TMenuItem; {Меню “Помощь”}
N7: TMenuItem; {Меню “О программе”}
Memo1: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
PopupMenu1: TPopupMenu; {Всплывающее меню}
procedure N4Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
aboutbox.show
end;
procedure TForm1.N2Click(Sender: TObject);
begin
if opendialog1.Execute then memo1.Lines.LoadFromFile(opendialog1.filename)
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if savedialog1.Execute then memo1.Lines.SaveToFile(savedialog1.filename)
end;
end.
unit Unit2;
{Модуль, описывающий окно “О программе”}
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls;
type
TAboutBox = class(TForm)
Panel1: TPanel;
ProgramIcon: TImage;
ProductName: TLabel;
Comments: TLabel;
OKButton: TButton;
procedure OKButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutBox: TAboutBox;
implementation
{$R *.DFM}
procedure TAboutBox.OKButtonClick(Sender: TObject);
begin
Hide
end;
end.
Данная программа демонстрирует использование меню. Она имеет главное меню и всплывающее, которое появляется при нажатии правой кнопки мышки. Меню снабжены клавишами быстрого доступа, используется разделительная линия.
Меню «Открыть», «Сохранить», «Выход» и «О программе» снабжены клавишами быстрого доступа. Всплывающее меню, имеющее два пункта – «Открыть» и «Сохранить». При их нажатии вызываются события соотвутствующих пунктов главного меню.
В данной курсовой работе разработана система для психотестирования на Borland Delphi 5. 0. Кроме основной программы, созданы две утилитные – для создания тестов, которые хранятся в отдельных файлах.
В процессе составления программы детально были изучены основные объекты графического интерфейсa Windows.
В процессе выполнения второй части курсовой работы были детально изучены компоненты, позволяющие создавать систему меню. При рассмотрении этих компонентов приведена программа-пример.