45308 (664625), страница 2

Файл №664625 45308 (Разработка программы психотестирования) 2 страница45308 (664625) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)



Рисунок 2. 6 – Меню «Файл» Word'a

Одной из самых удобных возможностей системы меню является возможность использования клавиш быстрого доступа, например, в меню на рис. 2. 6 при одновременном нажатии клавиш Ctrl и Р текущий документ отправлется на печать. И не нужно отвлекаться, тратить время, снимать руку с клавиатуры…

Рассматриваемый нами компонент TMainMenu также обладает возможностью назначения клавиш быстрого доступа. Для этого служит свойство ShortCut.

В инспекторе объектов оно имеет раскрывающийся список, из которого можно выбрать нужную комбинацию клавиш. Пример такого списка представлен на рис. 2. 7.


Рисунок 2. 7. – Р
аскрывающийся список комбинаций клавиш быстрого доступа

Если кому-то захочется сделать уж очень «крутую» программу, тут ему поможет возможность вставки картинок.

2. 2 TPopupMenu


Это всплывающее меню, оно вызывается нажатием правой кнопки мыши. В палитре компонентов его значок такой: . Как и MainMenu, этот компонент следует поместить на форму, для редактирования два раза щелкнуть. Во всем, что касается создания пунктов, этот компонент идентичен MainMenu. Ну, разве что, сразу строится вертикальное меню.

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

  1. 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;

rb2.Enabled:=true;

rb3.Enabled:=true;

rb1.Checked:=false;

rb2.Checked:=false;

rb3.Checked:=false;

if rb3.caption='' then rb3.hide else rb3.Show

end;

procedure TfrmTest.FormActivate(Sender: TObject);

begin

testcount:=0;

defque:=1;

load

end;

procedure TfrmTest.rb1Click(Sender: TObject);

begin

speedbutton1.Enabled:=true;

rb1.Enabled:=false;

rb2.Enabled:=false;

rb3.Enabled:=false;

inc(testcount,test[defque].count[1])

end;

procedure TfrmTest.rb2Click(Sender: TObject);

begin

speedbutton1.Enabled:=true;

rb1.Enabled:=false;

rb2.Enabled:=false;

rb3.Enabled:=false;

inc(testcount,test[defque].count[2])

end;

procedure TfrmTest.rb3Click(Sender: TObject);

begin

speedbutton1.Enabled:=true;

rb1.Enabled:=false;

rb2.Enabled:=false;

rb3.Enabled:=false;

inc(testcount,test[defque].count[3])

end;

procedure TfrmTest.SpeedButton1Click(Sender: TObject);

var f:file of TResult;

r:tresult;

begin

inc(defque);

if defque=testnum then begin

assignfile(f,copy(testfilename,1,length(testfilename)-3)+'rts');

reset(f);

while not eof(f) do begin

read(f,r);

if testcount in [r.min..r.max] then begin

frmres.label1.Caption:=r.text;

break

end

end;

closefile(f);

frmtest.hide;

frmres.show;

end;

load

end;

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

begin

frmmain.show;

action:=cahide

end;

end.

unit Resfrm;

interface

uses

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

StdCtrls;

type

TfrmRes = class(TForm)

Label1: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject);

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

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmRes: TfrmRes;

implementation

uses Mainfrm;

{$R *.DFM}

procedure TfrmRes.Button1Click(Sender: TObject);

begin

frmres.hide;

frmmain.show

end;

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

begin

action:=cahide;

frmmain.show

end;

end.

unit TestTypes;

interface

type

TTest=record

text:string[255];

quest:array[1..3] of string[100];

count:array[1..3] of byte;

end;

var

testfilename: string;

test:array[1..100] of ttest;

testnum:byte;

implementation

end.

Листинг программы ТС:

unit Mainfrm;

interface

uses

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

StdCtrls, Spin, TestTypes;

type

TfrmMain = class(TForm)

rb1: TRadioButton;

rb2: TRadioButton;

rb3: TRadioButton;

Edit1: TEdit;

Label1: TLabel;

SpinEdit1: TSpinEdit;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Button2: TButton;

SaveDialog1: TSaveDialog;

OpenDialog1: TOpenDialog;

StaticText1: TStaticText;

Label5: TLabel;

SpinEdit2: TSpinEdit;

Button3: TButton;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure rb1Click(Sender: TObject);

procedure rb2Click(Sender: TObject);

procedure rb3Click(Sender: TObject);

Характеристики

Тип файла
Документ
Размер
165,5 Kb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6525
Авторов
на СтудИзбе
301
Средний доход
с одного платного файла
Обучение Подробнее