Разработка программы психотестированияРефераты >> Программирование и компьютеры >> Разработка программы психотестирования
Для того, чтобы меню «всплывало», нужно в свойстве 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;