Разработка программы психотестирования
Рефераты >> Программирование и компьютеры >> Разработка программы психотестирования

Для того, чтобы меню «всплывало», нужно в свойстве PopupMenu формы указать его (меню) имя.

2. 3 Пример программы

Ниже будут представлены примеры программ, использующие такие компоненты, как меню. Кроме исходного кода будут иллюстрации.

Пример представляет собой несложную программу, позволяющую просматривать и редактировать текстовые файлы. Окно этой программы показано на рис. 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.

В процессе выполнения второй части курсовой работы были детально изучены компоненты, позволяющие создавать систему меню. При рассмотрении этих компонентов приведена программа-пример.

Список литературы

1. Культин Н. Delphi 4. Программирование на Object Pascal. BHV, Санкт-Петербург, 1999. – 480 с., ил.

2. Дэн Оузьер и др. Delphi 3. Освой самостоятельно. М.: “Издательство БИНОМ”, 1998 г. – 560 с.: ил.

3. Бондарев В. М., Рублинецкий В. И., Качко Е. Г. Основы программирования. Харьков: Фолио; Ростов н/Д: Феникс, 1998 – 368 с.

Приложение А

Листинг программы.

unit Mainfrm;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Buttons, ExtCtrls, TestTypes;

type

TfrmMain = class(TForm)

Image1: TImage;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

Image2: TImage;

SpeedButton3: TSpeedButton;

procedure runtest;

procedure SpeedButton1Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure SpeedButton3Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

end;

var

frmMain: TfrmMain;

testcount:integer;

implementation

uses Testfrm;

{$R *.DFM}

procedure tfrmmain.runtest;

var f:file of ttest;

begin

frmmain.hide;

assignfile(f,testfilename);

try

reset(f);

except

showmessage('Файл теста не найден!');

exit

end;

testnum:=1;

while not eof(f) do begin

try

read(f,test[testnum]);

inc(testnum);

except

showmessage('Ошибка в файле теста');

frmmain.show;

exit

end

end;

closefile(f);

frmTest.show;

end;

procedure TfrmMain.SpeedButton1Click(Sender: TObject);

begin

testfilename:='Time.tst';

runtest

end;

procedure TfrmMain.SpeedButton2Click(Sender: TObject);

begin

testfilename:='Agress.tst';

runtest

end;

procedure TfrmMain.SpeedButton3Click(Sender: TObject);

begin

testfilename:='health.tst';

runtest

end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if messagedlg('Вы действительно хотите выйти?',mtwarning,[mbyes,mbno],0)=mrno then action:=canone

end;

end.

unit Testfrm;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls, Buttons, testtypes;

type

TfrmTest = class(TForm)

Image1: TImage;

rb1: TRadioButton;

rb2: TRadioButton;

rb3: TRadioButton;

Label1: TLabel;

SpeedButton1: TSpeedButton;

procedure load;

procedure rb1Click(Sender: TObject);

procedure rb2Click(Sender: TObject);

procedure rb3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure SpeedButton1Click(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

defque:byte;

end;

var

frmTest: TfrmTest;

implementation

{$R *.DFM}

uses mainfrm, Resfrm;

procedure tfrmtest.load;

begin

label1.caption:=test[defque].text;

rb1.Caption:=test[defque].quest[1];

rb2.Caption:=test[defque].quest[2];

rb3.Caption:=test[defque].quest[3];

speedbutton1.enabled:=false;

rb1.Enabled:=true;


Страница: