Программа была создана как исследовательский проект, с целью попытаться сымитировать на компьютере тестирование по программе ЕГЭ по физике за 2006 год. При создании программы мы старались сделать ее максимально удобной для освоения, и при этом, сохранить приближенность к условиям тестирования по настоящему ЕГЭ.
Программа может служить прекрасным помощником для учащихся 10 – 11 классов при подготовке к тестированию, а также просто для проверки своих знаний. Программа может быть использована учителем при проведении уроков в школе, чтобы составить картину об успеваемости учащихся.
Вложение | Размер |
---|---|
referat_habarov.doc | 797 КБ |
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И ВЫСШЕЙ ШКОЛЫ РЕСПУБЛИКИ КОМИ
МУНИЦИПАЛЬНОЕ УЧРЕЖДЕНИЕ
«УПРАВЛЕНИЕ ОБРАЗОВАНИЯ АДМИНИСТРАЦИИ
МУНИЦИПАЛЬНОГО ОБРАЗОВАНИЯ ГОРОДСКОГО ОКРУГА «УСИНСК»
МУНИЦИПАЛЬНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
«СРЕДНЯЯ ОБЩЕОБРАЗОВАТЕЛЬНАЯ ШКОЛА № 2»
«Обучающая компьютерная программа по физике
VIRTUOS ФИЗИКА»
Автор:
учащийся 11 Г класса
Руководитель:
Зайкова Анна Вадимовна,
учитель информатики
Руководитель:
Батухтина Августа Анатольевна,
учитель физики
2006 г.
СОДЕРЖАНИЕ:
Программа была создана как исследовательский проект, с целью попытаться сымитировать на компьютере тестирование по программе ЕГЭ по физике за 2006 год. При создании программы мы старались сделать ее максимально удобной для освоения, и при этом, сохранить максимальную приближенность к условиям тестирования по настоящему ЕГЭ.
Программа может служить прекрасным помощником для учащихся 10 – 11 классов при подготовке к тестированию, а также просто для проверки своих знаний. Программа может быть использована учителем при проведении уроков в школе, чтобы составить картину об успеваемости учащихся.
Основным разделом программы является раздел Тестирования ЕГЭ. Единый государственный экзамен (ЕГЭ) по физике позволяет объединить итоговую аттестацию учащихся в школе и проверку уровня подготовленности абитуриентов, поступающих в высшие и средние специальные учебные заведения. Тренировочные задания состоят из трех частей, различающихся формой и уровнем сложности: базовым, повышенным и высоким.
В часть А включены 30 заданий, из которых 25 заданий ориентированны на проверку подготовки учащихся по физике на базовом уровне – уровне общеобразовательной подготовки выпускников средней школы. Более подробный список освещенных вопросов содержит раздел 2.
В часть B включены 4 задания, которые проверяют умение использовать несколько (2 или более) физических законов или определений, относящихся к одной и той же теме. Для выполнения этих заданий требуется повышенный уровень подготовки школьников. При решении заданий части В необходимо получить краткий ответ, в виде цифр, которые следует записать в поля ввода ответа.
Часть С включает 6 заданий, которые проверяют умения использовать законы из теории физики. Выполнение таких заданий требует применения знаний из разных разделов физики, т.е. высокого уровня подготовки учащихся. Задания части С требуют ответа, который учащийся получает решая самостоятельно предложенную задачу, а программа проверяет ответ.
За выполнение заданий учащиеся получают баллы: часть А и В – 1 балл, за один правильный ответ, часть С – три балла за один правильный ответ. Наибольшее число баллов повышает вероятность успешной сдачи ЕГЭ.
Раздел Тестирования ЕГЭ в программе является расширяемым, т.е. возможно добавление новых вариантов тестирования. Такая возможность позволит программе быть актуальной в течение долгого периода времени.
В программу включен раздел Лабораторных работ. Данный раздел предназначен для наглядного проведения лабораторных работ, проведение которых связано с использованием материалов, которые являются мало доступными в условиях школьных уроков. Лабораторные работы представлены в виде последовательного интерактивного ознакомления учащегося с материалом работы. В течение, которого учащийся наглядно видит все последствия своих действий в проводимой лабораторной работе, тем самым достигается приближенность компьютерной имитации к реальным условиям.
Также в программе имется раздел Статьи и Теория. В этой части представлены материалы с научных сайтов сети Интернет, о научных открытиях и изобретениях, сделанных совсем недавно. Данный раздел интересен тем, что данная информация еще долго не появится в книгах и другой литературе. Раздел этой программы также пополняем и в него можно добавлять новые статьи.
В программе имеется раздел Справочных данных. Созданный с целью помощи учащемуся при выполнении работы. В этом разделе собраны различные данные о физических постоянных.
В программе ведется автоматическая статистика оценок учащихся. Так чтобы учитель мог в любое удобное ему время просмотреть оценки всех тестируемых учащихся, а также, чтобы сами учащиеся могли после нескольких попыток тестирования сравнить полученные ими оценки в различное время. Все оценки сортируются по классам, в которых учатся тестируемые. Вся информация об оценках преподнесена в удобной форме и не вызовет каких либо затруднений у учителя с поиском оценки того или иного ученика.
1. Структура теста ЕГЭ по физике (часть А)
6. Построение изображений в плоском зеркале и собирающей линзе.
2. Приемы работы с программой
Программа не требует установки, чтобы начать работу запустите исполняемый файл Virtuos.exe, который находится в корневой папке с программой. Откроется главное окно программы, представленное на рис. 1
Рисунок 1
В верхней части окна находится главное меню, которое состоит из:
Файл – в раскрывающемся списке Тестирование ЕГЭ вы можете запустить и завершить тестирование. Выбрав пункт Лабораторные работы можно начать выполнение одной из лабораторных работ. Пункт Статьи и теория содержит раздел последних достижений и открытий по физике с научных сайтов и книг по физике и открытиям в области точных наук.
Учителю – находящийся в данном разделе пункт Оценки вызывает список оценок всех учащихся прошедших тестирование. Пароль для очистки списка оценок – overload. Раздел Учителю открывается только при завершенном тестировании ЕГЭ.
Помощь – раздел справочных данных.
Ход выполнения Лабораторных работ описан по шагам, поэтому от ученика требуется лишь внимательность и знание темы, по которой ведется работа. Все интерактивные элементы лабораторной работы выделяются цветом при наведении на них мышью. Если вы уже начали выполнение Лабораторной работы, вы не сможете начать тестирование ЕГЭ, сначала закройте Лабораторную работу.
При работе с тестом, перемещение по различным вопросам теста осуществляется посредством двойного щелчка по элементам дерева вопросов, находящегося в левом верхнем углу рабочего окна программы. Элементы дерева вопросов ЕГЭ имеют индикацию, при ответе на вопрос вы должны щёлкнуть мышью на галочке в правом нижнем углу, цвет элемента дерева вопросов изменится, поэтому вы всегда будете знать на какие вопросы вы уже давали ответ, а на какие еще нет.
Тестирование ЕГЭ ведется в течение 3 часов 30 минут, по стандартам ЕГЭ, время оставшееся до окончания тестирования показывает таймер в правом верхнем углу рабочего окна программы.
По завершении тестирования ЕГЭ будет выведен ваш результат. Программа автоматически поставит вам оценку в соответствии с критериями оценок по ЕГЭ за 2006 год с официального сайта ЕГЭ (www.ege.edu.ru), а также выведет статистику ответов. При получении оценки нажав на кнопку Полной статистики, вы увидите более подробную информацию о количестве правильных и неправильных ответов в тесте, эта информация может быть сохранена на компьютере или распечатана.
3. Использованные материалы и программное обеспечение.
Для создания программы использовалась среда языка программирования Borland Delphi 6.0.
Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 6. Как и предыдущие версии, Borland Delphi 6 позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.
Borland Delphi 6 может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативная память - 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт).
Для обработки графики был использован пакет для работы с растровой графикой Adobe Photoshop 7.0 Самый совершенный набор инструментов С момента своего появления Adobe Photoshop неизменно держит марку самого современного профессионального графического редактора.
В программе также использованы дополнительные компоненты для улучшения графического интерфейса приложения. Основные исполняемые процедуры и функции программы и их модули и юниты:
dxfClock - компонента для использования часов.
dxfTimer – компонента для использования таймера.
acDragPanel – компонента интерактивного меню (окон).
acPanel – компонента палении инструментов.
acPicturePanel – компонента для вставки и использования изображения.
acPropImage - компонента для вставки и использования изображения.
Buttons, acButtons – компонента кнопки.
acEdit – компонента текстового поля
ImgList, pngimage - компонента для вставки и использования изображения.
DXClass – модуль использования классов
DXDraws – модуль использования поверхностей, и слайдов
acLabels, acRichLabel – юнит для использования меток (формы для ввода ответа)
Для создания и особенно отладки программы было использовано много теоретического материала по физике. Было исследовано большое количество физических задач. Для проверки правильности работы программы многие задачи были решены в режиме реального времени.
Примеры решения задач по физике:
Задача 1
Масса Марса составляет 0,1 от массы Земли, диаметр Марса вдвое меньше, чем диаметр Земли. Каково отношение периодов обращения искусственных спутников Марса и Земли Тм/ Т3, движущихся по круговым орбитам на небольшой высоте?
Решение
Ускорение спутника, движущегося со скоростью v вокруг планеты массой М по круговой траектории радиуса R, равно .
, откуда ,
Период обращения спутника
.
Задача 2
Фотоны, имеющие энергию 5 эВ, выбивают электроны с поверхности металла. Работа выхода электронов из металла равна 4,7 эВ. Какой импульс приобретает электрон при вылете с поверхности металла?
Решение:
Согласно закону фотоэффекта, кинетическая энергия фотоэлектронов,
EK = hv - A; Ек=, р = mv.
Следовательно, (кгм/с).
Перспективы увеличения возможностей программы.
В программу можно внести большое количество дополнительных возможностей. Программа составлена таким образом, что можно добавлять новые лабораторные работы, новые варианты ЕГЭ, а также расширять раздел теории. Можно улучшить графический интерфейс, а также интегрировать в программу систему скинов, что позволит более удобно настраивать пользователю программы ее интерфейс.
V. Приложения.
1. Листинг программы.
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, dxfClock, dxfTimer, ComCtrls, acDragPanel,
Grids, StdCtrls, acPanel, acHeaderPanel, acPicturePanel, jpeg,
acPropImage, acControls, Buttons, acEdit, ImgList, acButtons, acComCtrls,
pngimage, DXClass, DXDraws, lab1frm, acLabels, acRichLabel, OleCtrls,
SHDocVw;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
tm_clock: TdxfTimer;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
Dannie: TacDragPanel;
StringGrid1: TStringGrid;
Label1: TLabel;
acDragPanel1: TacDragPanel;
TreeView1: TTreeView;
ZadaniePanel: TacHeaderPanel;
AnswerImage: TacProportionalImage;
AnswerPanel: TacHeaderPanel;
RadAnsw1: TacRadioButton;
RadAnsw2: TacRadioButton;
RadAnsw3: TacRadioButton;
RadAnsw4: TacRadioButton;
acEdit1: TacEdit;
SysPics: TImageList;
N20: TMenuItem;
N21: TMenuItem;
MarkPanel: TacHeaderPanel;
markIMG2: TacProportionalImage;
markIMG3: TacProportionalImage;
markIMG4: TacProportionalImage;
markIMG5: TacProportionalImage;
MarkResult: TacHeaderPanel;
ArightLab: TLabel;
BrightLab: TLabel;
CrightLab: TLabel;
MarksStat: TacDragPanel;
MarksTree: TacTreeView;
acBitBtn1: TacBitBtn;
acBitBtn2: TacBitBtn;
Panel1: TPanel;
acEdit2: TacEdit;
acBitBtn3: TacBitBtn;
acBitBtn4: TacBitBtn;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
acBitBtn5: TacBitBtn;
AnswerYES: TacBitBtn;
LabsScreen: TacHeaderPanel;
DXDraw: TDXDraw;
DXTimer: TDXTimer;
Lab1_frame1: TLab1_frame;
DXImageList1: TDXImageList;
lab1_link: TLabel;
lab2_link: TLabel;
lab3_link: TLabel;
Timer1: TTimer;
Timer2: TTimer;
LabErrorPan: TPanel;
acRichLabel1: TacRichLabel;
Label5: TLabel;
Panel2: TPanel;
acRichLabel2: TacRichLabel;
Label6: TLabel;
AboutPanel: TacDragPanel;
Image1: TImage;
Image2: TImage;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
acBitBtn6: TacBitBtn;
Label10: TLabel;
Label11: TLabel;
Theor: TacHeaderPanel;
BrowserScreen: TWebBrowser;
acBitBtn7: TacBitBtn;
acBitBtn8: TacBitBtn;
Theor_TPan: TacDragPanel;
theor_tree: TTreeView;
N22: TMenuItem;
Label12: TLabel;
Label13: TLabel;
acProportionalImage1: TacProportionalImage;
procedure N2Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure TreeView1DblClick(Sender: TObject);
procedure ZadaniePanelRightButtonClick(Sender: TObject);
procedure AnswerYESClick(Sender: TObject);
procedure N20Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure tm_clockEndOfTime(Sender: TdxfTimer);
procedure MarkPanelRightButtonClick(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure acBitBtn2Click(Sender: TObject);
procedure acBitBtn1Click(Sender: TObject);
procedure acBitBtn4Click(Sender: TObject);
procedure acBitBtn3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure acBitBtn5Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure DXTimerTimer(Sender: TObject; LagCount: Integer);
procedure lab1_linkMouseEnter(Sender: TObject);
procedure lab1_linkMouseLeave(Sender: TObject);
procedure lab2_linkMouseEnter(Sender: TObject);
procedure lab2_linkMouseLeave(Sender: TObject);
procedure lab3_linkMouseLeave(Sender: TObject);
procedure lab3_linkMouseEnter(Sender: TObject);
procedure lab1_linkClick(Sender: TObject);
procedure LabsScreenRightButtonClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Label5MouseEnter(Sender: TObject);
procedure Label5MouseLeave(Sender: TObject);
procedure Label5Click(Sender: TObject);
procedure Label6MouseEnter(Sender: TObject);
procedure Label6MouseLeave(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure acBitBtn6Click(Sender: TObject);
procedure theor_treeDblClick(Sender: TObject);
procedure acBitBtn7Click(Sender: TObject);
procedure acBitBtn8Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure TheorRightButtonClick(Sender: TObject);
procedure Label12MouseEnter(Sender: TObject);
procedure Label12MouseLeave(Sender: TObject);
procedure Label13MouseEnter(Sender: TObject);
procedure Label13MouseLeave(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
pip=record
name:string[255];
clas:string[255];
mark:byte;
zero:integer;
end;
EGEtab=record
MarksTableProc:array[0..34,0..18] of byte;
end;
procedure LoadVariants;
const EGEpass='overload';
var
Form1: TForm1;
EGEright,curquest,variantSTR:string;
rightA:array [1..30] of boolean;
rightB:array [1..4] of boolean;
rightC:array [1..6] of boolean;
Aright,Bright,Cright:byte;
classNodes: array [1..100] of TTreeNode;
classNodesCount:byte;
EGEsize:byte;
CurQuestBals,takedBals:byte;
TreeSelected:integer;
f:text;
fp:file of pip;
ftab:file of EGEtab;
EGETable:EGEtab;
//labors variables arrays
labvars:array[0..10]of real;
tempo:real;
trNodeNum:integer;
implementation
{$R *.dfm}
uses new,ShellApi;
Procedure LoadTheoryList;
var ldstr:string;
tmpNODE:TTreeNode;
begin
AssignFile(f,'data\pages\list.txt');
Reset(f);
While not eof(f) do
begin
readln(f,ldstr);
Delete(ldstr,length(ldstr)-4,5);
tmpNODE:=form1.theor_tree.Items.Add(form1.theor_tree.TopItem,ldstr);
tmpNODE.ImageIndex:=2;
tmpNODE.SelectedIndex:=3;
end;
CloseFile(f);
end;
Procedure CleanLabWindow;
begin
form1.DXDraw.Surface.Fill(0);
form1.Lab1_frame1.acEdit1.text:='';
form1.Lab1_frame1.acEdit2.text:='';
form1.Lab1_frame1.acEdit3.text:='';
form1.Lab1_frame1.acEdit4.text:='';
form1.Lab1_frame1.acEdit1.color:=clWhite;
form1.Lab1_frame1.acEdit2.color:=clWhite;
form1.Lab1_frame1.acEdit3.color:=clWhite;
form1.Lab1_frame1.acEdit4.color:=clWhite;
form1.Lab1_frame1.acEdit1.font.color:=clblack;
form1.Lab1_frame1.acEdit2.font.color:=clblack;
form1.Lab1_frame1.acEdit3.font.color:=clblack;
form1.Lab1_frame1.acEdit4.font.color:=clblack;
form1.Lab1_frame1.Visible:=false;
form1.LabErrorPan.Visible:=false;
form1.Panel2.Visible:=false;
end;
Function GetMyPath:string;
Begin
Result:=ExtractFilePath(paramstr(0));
End;
Procedure BrowseNavigate(str:string);
begin
form1.BrowserScreen.Navigate(GetMyPath+'data\pages\'+str+'.html');
end;
Procedure LoadVariants;
var tempstr:string;
begin
Assign(f,'data/variants.txt');
Reset(f);
While not Eof(f) do
begin
readln(f,tempstr);
new.nm_form.VariantsBox.Items.Add(tempstr);
end;
CloseFile(f);
end;
Procedure LoadEGETable;
begin
Assign(ftab,'data.dat');
Reset(ftab);
Seek(ftab,0);
read(ftab,EGETable);
CloseFile(ftab);
end;
Function CalculateMark:byte;
begin
if EGETable.MarksTableProc[Aright+Bright,Cright]<=32 then CalculateMark:=2 else
if EGETable.MarksTableProc[Aright+Bright,Cright]<=49 then CalculateMark:=3 else
if EGETable.MarksTableProc[Aright+Bright,Cright]<=67 then CalculateMark:=4 else
if EGETable.MarksTableProc[Aright+Bright,Cright]<=100 then CalculateMark:=5 else
CalculateMark:=32;
end;
procedure CleanItemsCheck;
begin
Form1.N12.Checked:=false;
Form1.N13.Checked:=false;
Form1.N14.Checked:=false;
Form1.N15.Checked:=false;
Form1.N16.Checked:=false;
Form1.N17.Checked:=false;
Form1.N18.Checked:=false;
Form1.N19.Checked:=false;
end;
function findClass(tstrs:string):TTreeNode;
var i:byte;
reslt:boolean;
begin
reslt:=false;
if classNodesCount<>0 then
for i:=0 to classNodesCount do
if classNodes[i]<>nil then
if classNodes[i].Text=tstrs then
begin
findClass:=classNodes[i];
reslt:=true;
end;
if not reslt then
findClass:=nil;
end;
Procedure CleanMarksTree;
var i:byte;
begin
Form1.MarksTree.Items.Clear;
for i:=0 to classNodesCount do
classNodes[i]:=nil;
classNodesCount:=0;
end;
Procedure CleanArrays;
var i:byte;
begin
for i:=1 to 30 do
begin
rightA[i]:=false;
if i<=4 then rightB[i]:=false;
if i<=6 then rightC[i]:=false;
end;
end;
procedure CleanTree;
var i:byte;
begin
for i:=2 to 31 do
begin
Form1.TreeView1.Items[i].ImageIndex:=0;
Form1.TreeView1.Items[i].SelectedIndex:=0;
Form1.TreeView1.Items[i].StateIndex:=0;
end;
for i:=33 to 36 do
begin
Form1.TreeView1.Items[i].ImageIndex:=0;
Form1.TreeView1.Items[i].SelectedIndex:=0;
Form1.TreeView1.Items[i].StateIndex:=0;
end;
for i:=38 to 43 do
begin
Form1.TreeView1.Items[i].ImageIndex:=0;
Form1.TreeView1.Items[i].SelectedIndex:=0;
Form1.TreeView1.Items[i].StateIndex:=0;
end;
end;
procedure LoadQuest(quf:string);
var strt:string;
i:byte;
begin
if FileExists('data\'+quf+'-'+variantSTR+'.txt') then
begin
Form1.ZadaniePanel.Text:='';
Assign(f,'data\'+quf+'-'+variantSTR+'.txt');
Reset(f);
readln(f,strt);
if length(strt)>0 then
Form1.AnswerImage.Picture.LoadFromFile(strt);
while strt<>'[END]' do
begin
readln(f,strt);
Form1.ZadaniePanel.Text:=Form1.ZadaniePanel.Text+strt;
end;
readln(f,strt);
EGEsize:=strtoint(strt);
if EGEsize>1 then
begin
Form1.acEdit1.Visible:=false;
for i:=1 to strtoint(strt) do
begin
readln(f,strt);
case i of
1 : begin Form1.RadAnsw1.Caption:=strt; Form1.RadAnsw1.Visible:=true end;
2 : begin Form1.RadAnsw2.Caption:=strt; Form1.RadAnsw2.Visible:=true end;
3 : begin Form1.RadAnsw3.Caption:=strt; Form1.RadAnsw3.Visible:=true end;
4 : begin Form1.RadAnsw4.Caption:=strt; Form1.RadAnsw4.Visible:=true end;
end;
end;
end else
begin
Form1.acEdit1.Visible:=true;
Form1.RadAnsw1.Visible:=false;
Form1.RadAnsw2.Visible:=false;
Form1.RadAnsw3.Visible:=false;
Form1.RadAnsw4.Visible:=false;
end;
readln(f,EGEright);
readln(f,CurQuestBals);
Close(f);
end;
end;
procedure TForm1.N2Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.N12Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Десятичные приставки';
N12.Checked:=true;
StringGrid1.ColCount:=3;
StringGrid1.RowCount:=11;
StringGrid1.DefaultColWidth:=86;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Наименование';
StringGrid1.Cells[0,1]:='Гига';
StringGrid1.Cells[0,2]:='Мега';
StringGrid1.Cells[0,3]:='Кило';
StringGrid1.Cells[0,4]:='Гекто';
StringGrid1.Cells[0,5]:='Деци';
StringGrid1.Cells[0,6]:='Санти';
StringGrid1.Cells[0,7]:='Милли';
StringGrid1.Cells[0,8]:='Микро';
StringGrid1.Cells[0,9]:='Нано';
StringGrid1.Cells[0,10]:='Пико';
StringGrid1.Cells[1,0]:='Обозначение';
StringGrid1.Cells[1,1]:='Г';
StringGrid1.Cells[1,2]:='М';
StringGrid1.Cells[1,3]:='к';
StringGrid1.Cells[1,4]:='г';
StringGrid1.Cells[1,5]:='д';
StringGrid1.Cells[1,6]:='с';
StringGrid1.Cells[1,7]:='м';
StringGrid1.Cells[1,8]:='мк';
StringGrid1.Cells[1,9]:='н';
StringGrid1.Cells[1,10]:='п';
StringGrid1.Cells[2,0]:='Множитель';
StringGrid1.Cells[2,1]:='10 в степени 9';
StringGrid1.Cells[2,2]:='10 в степени 6';
StringGrid1.Cells[2,3]:='10 в степени 3';
StringGrid1.Cells[2,4]:='10 в степени 2';
StringGrid1.Cells[2,5]:='10 в степени -1';
StringGrid1.Cells[2,6]:='10 в степени -2';
StringGrid1.Cells[2,7]:='10 в степени -3';
StringGrid1.Cells[2,8]:='10 в степени -6';
StringGrid1.Cells[2,9]:='10 в степени -9';
StringGrid1.Cells[2,10]:='10 в степени -12';
end else
begin
dannie.Visible:=false;
N12.Checked:=false;
end;
end;
procedure TForm1.N13Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Константы';
N13.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=14;
StringGrid1.DefaultColWidth:=216;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Число Пи';
StringGrid1.Cells[0,1]:='Ускорение свободного падения';
StringGrid1.Cells[0,2]:='Гравитационная постоянная';
StringGrid1.Cells[0,3]:='Газовая постоянная';
StringGrid1.Cells[0,4]:='Постоянная Больцмана';
StringGrid1.Cells[0,5]:='Постоянная Авагадро';
StringGrid1.Cells[0,6]:='Скорость света в вакууме';
StringGrid1.Cells[0,7]:='Коэффициент пропорциональности Кулона';
StringGrid1.Cells[0,8]:='Заряд электрона';
StringGrid1.Cells[0,9]:='Постоянная Планка';
StringGrid1.Cells[0,10]:='Масса Земли';
StringGrid1.Cells[0,11]:='Масса Солнца';
StringGrid1.Cells[0,12]:='Расстояние между Землей и Солнцем';
StringGrid1.Cells[0,13]:='Примерное число секунд в году';
StringGrid1.Cells[1,0]:='Пи = 3,14';
StringGrid1.Cells[1,1]:='g = 10 (м/с^2)';
StringGrid1.Cells[1,2]:='G = 6,7*10^-11 (Н*м^2/кг^2)';
StringGrid1.Cells[1,3]:='R = 8,31 (Дж/(моль*К))';
StringGrid1.Cells[1,4]:='k = 1,38*10^-23 (Дж/К)';
StringGrid1.Cells[1,5]:='N(Авагадро) = 6*10^23 (моль^-1)';
StringGrid1.Cells[1,6]:='с = 3*10^8 (м/с)';
StringGrid1.Cells[1,7]:='k = 1/(4*Пи*E) = 9*10^8 (Н*м^2/Кл^2)';
StringGrid1.Cells[1,8]:='e = -1,6*10^-19 (Кл)';
StringGrid1.Cells[1,9]:='h = 6,6*10^-34 (Дж*с)';
StringGrid1.Cells[1,10]:='6*10^24 (кг)';
StringGrid1.Cells[1,11]:='2*10^30 (кг)';
StringGrid1.Cells[1,12]:='1 а.е. = 1,5*10^11 (м)';
StringGrid1.Cells[1,13]:='3*10^7 (с)';
end else
begin
dannie.Visible:=false;
N13.Checked:=false;
end;
end;
procedure TForm1.N14Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Соотношения между единицами';
N14.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=4;
StringGrid1.DefaultColWidth:=140;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Температура';
StringGrid1.Cells[0,1]:='Атомная единица массы';
StringGrid1.Cells[0,2]:='1 а.е. массы равна';
StringGrid1.Cells[0,3]:='1 электронвольт';
StringGrid1.Cells[1,0]:='0 Кулон = -273,15 Цельсия';
StringGrid1.Cells[1,1]:='1 а.е.м. = 1,66*10^27 кг';
StringGrid1.Cells[1,2]:='931,5 МэВ';
StringGrid1.Cells[1,3]:='1 эВ = 1,6*10^-19 Дж';
end else
begin
dannie.Visible:=false;
N14.Checked:=false;
end;
end;
procedure TForm1.N15Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Масса частиц';
N15.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=3;
StringGrid1.DefaultColWidth:=160;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Электрона';
StringGrid1.Cells[0,1]:='Протона';
StringGrid1.Cells[0,2]:='Нейтрона';
StringGrid1.Cells[1,0]:='9,1*10^-31 кг = 5,5*10^-4 а.е.м.';
StringGrid1.Cells[1,1]:='1,673*10^-27 кг = 1,007 а.е.м.';
StringGrid1.Cells[1,2]:='1,675*10^-27 кг = 1,008 а.е.м.';
end else
begin
dannie.Visible:=false;
N15.Checked:=false;
end;
end;
procedure TForm1.N16Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Плотности веществ';
N16.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=8;
StringGrid1.DefaultColWidth:=80;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Воды';
StringGrid1.Cells[0,1]:='Пробки';
StringGrid1.Cells[0,2]:='Древесины';
StringGrid1.Cells[0,3]:='Керосина';
StringGrid1.Cells[0,4]:='Парафина';
StringGrid1.Cells[0,5]:='Алюминия';
StringGrid1.Cells[0,6]:='Железа';
StringGrid1.Cells[0,7]:='Ртути';
StringGrid1.Cells[1,0]:='1000 (кг/м^3)';
StringGrid1.Cells[1,1]:='250 (кг/м^3)';
StringGrid1.Cells[1,2]:='400 (кг/м^3)';
StringGrid1.Cells[1,3]:='800 (кг/м^3)';
StringGrid1.Cells[1,4]:='900 (кг/м^3)';
StringGrid1.Cells[1,5]:='2700 (кг/м^3)';
StringGrid1.Cells[1,6]:='7870 (кг/м^3)';
StringGrid1.Cells[1,7]:='13600 (кг/м^3)';
end else
begin
dannie.Visible:=false;
N16.Checked:=false;
end;
end;
procedure TForm1.N17Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Удельные величины';
N17.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=8;
StringGrid1.DefaultColWidth:=160;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Теплоемкость воды';
StringGrid1.Cells[0,1]:='Теплоемкость свинца';
StringGrid1.Cells[0,2]:='Теплоемкость меди';
StringGrid1.Cells[0,3]:='Теплоемкость чугуна';
StringGrid1.Cells[0,4]:='Теплоемкость железа';
StringGrid1.Cells[0,5]:='т-та парообразования воды';
StringGrid1.Cells[0,6]:='т-та парообразования свинца';
StringGrid1.Cells[0,7]:='т-та парообразования льда';
StringGrid1.Cells[1,0]:='4,2*10^3 Дж/(кг*К)';
StringGrid1.Cells[1,1]:='130 Дж/(кг*К)';
StringGrid1.Cells[1,2]:='390 Дж/(кг*К)';
StringGrid1.Cells[1,3]:='500 Дж/(кг*К)';
StringGrid1.Cells[1,4]:='640 Дж/(кг*К)';
StringGrid1.Cells[1,5]:='2,3*10^6 Дж/(кг*К)';
StringGrid1.Cells[1,6]:='2,5 Дж/(кг*К)';
StringGrid1.Cells[1,7]:='3,3*10^5 Дж/(кг*К)';
end else
begin
dannie.Visible:=false;
N17.Checked:=false;
end;
end;
procedure TForm1.N18Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Молярные массы';
N18.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=12;
StringGrid1.DefaultColWidth:=120;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Азот';
StringGrid1.Cells[0,1]:='Аргон';
StringGrid1.Cells[0,2]:='Водород';
StringGrid1.Cells[0,3]:='Водяные пары';
StringGrid1.Cells[0,4]:='Гелий';
StringGrid1.Cells[0,5]:='Воздух';
StringGrid1.Cells[0,6]:='Кислород';
StringGrid1.Cells[0,7]:='Литий';
StringGrid1.Cells[0,8]:='Неон';
StringGrid1.Cells[0,9]:='Серебро';
StringGrid1.Cells[0,10]:='Молибден';
StringGrid1.Cells[0,11]:='Углекислый газ';
StringGrid1.Cells[1,0]:='28*10^-3 (кг/моль)';
StringGrid1.Cells[1,1]:='40*10^-3 (кг/моль)';
StringGrid1.Cells[1,2]:='2*10^-3 (кг/моль)';
StringGrid1.Cells[1,3]:='18*10^-3 (кг/моль)';
StringGrid1.Cells[1,4]:='4*10^-3 (кг/моль)';
StringGrid1.Cells[1,5]:='29*10^-3 (кг/моль)';
StringGrid1.Cells[1,6]:='32*10^-3 (кг/моль)';
StringGrid1.Cells[1,7]:='6*10^-3 (кг/моль)';
StringGrid1.Cells[1,8]:='20*10^-3 (кг/моль)';
StringGrid1.Cells[1,9]:='108*10^-3 (кг/моль)';
StringGrid1.Cells[1,10]:='96*10^-3 (кг/моль)';
StringGrid1.Cells[1,11]:='44*10^-3 (кг/моль)';
end else
begin
dannie.Visible:=false;
N18.Checked:=false;
end;
end;
procedure TForm1.N19Click(Sender: TObject);
begin
CleanItemsCheck;
if not Dannie.Visible then
begin
Dannie.Visible:=true;
Label1.Caption:='Энергии покоя';
N19.Checked:=true;
StringGrid1.ColCount:=2;
StringGrid1.RowCount:=15;
StringGrid1.DefaultColWidth:=140;
StringGrid1.DefaultRowHeight:=20;
StringGrid1.Cells[0,0]:='Электрон';
StringGrid1.Cells[0,1]:='Нейтрон';
StringGrid1.Cells[0,2]:='Протон';
StringGrid1.Cells[0,3]:='Ядро водорода (H 1,1)';
StringGrid1.Cells[0,4]:='Ядро дейтерия (H 2,1)';
StringGrid1.Cells[0,5]:='Ядро трития (H 3,1)';
StringGrid1.Cells[0,6]:='Ядро гелия (He 4,2)';
StringGrid1.Cells[0,7]:='Ядро лития (Li 6,3)';
StringGrid1.Cells[0,8]:='Ядро лития (Li 7,3)';
StringGrid1.Cells[0,9]:='Ядро берилия (Be 9,4)';
StringGrid1.Cells[0,10]:='Ядро бора (B 10,5)';
StringGrid1.Cells[0,11]:='Ядро азота (N 14,7)';
StringGrid1.Cells[0,12]:='Ядро кислорода (0 15,8)';
StringGrid1.Cells[0,13]:='Ядро кислорода (0 17,8)';
StringGrid1.Cells[0,14]:='Ядро фосфора (P 30,15)';
StringGrid1.Cells[1,0]:='0,5 МэВ';
StringGrid1.Cells[1,1]:='939,6 МэВ';
StringGrid1.Cells[1,2]:='938,3 МэВ';
StringGrid1.Cells[1,3]:='938,3 МэВ';
StringGrid1.Cells[1,4]:='1875,6 МэВ';
StringGrid1.Cells[1,5]:='2809,4 МэВ';
StringGrid1.Cells[1,6]:='3727,4 МэВ';
StringGrid1.Cells[1,7]:='5601,5 МэВ';
StringGrid1.Cells[1,8]:='6533,8 МэВ';
StringGrid1.Cells[1,9]:='8392,8 МэВ';
StringGrid1.Cells[1,10]:='9324,4 МэВ';
StringGrid1.Cells[1,11]:='13040,3 МэВ';
StringGrid1.Cells[1,12]:='13971,3 МэВ';
StringGrid1.Cells[1,13]:='15830,6 МэВ';
StringGrid1.Cells[1,14]:='27917,1 МэВ';
end else
begin
dannie.Visible:=false;
N19.Checked:=false;
end;
end;
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
if TreeView1.SelectionCount<>0 then
if length(TreeView1.Selected.Text)<4 then
begin
TreeSelected:=TreeView1.Selected.AbsoluteIndex;
curquest:=TreeView1.Selected.Text;
LoadQuest(TreeView1.Selected.Text);
ZadaniePanel.Visible:=true;
AnswerPanel.Visible:=true;
AnswerImage.Visible:=true;
end;
end;
procedure TForm1.ZadaniePanelRightButtonClick(Sender: TObject);
begin
ZadaniePanel.Visible:=false;
AnswerPanel.Visible:=false;
AnswerImage.Visible:=false;
end;
procedure TForm1.AnswerYESClick(Sender: TObject);
var test:boolean;
begin
TreeView1.Items[TreeSelected].ImageIndex:=1;
TreeView1.Items[TreeSelected].SelectedIndex:=1;
TreeView1.Items[TreeSelected].StateIndex:=1;
if EGEsize>1 then
begin
case strtoint(EGEright) of
1 : test:=RadAnsw1.Checked;
2 : test:=RadAnsw2.Checked;
3 : test:=RadAnsw3.Checked;
4 : test:=RadAnsw4.Checked;
end;
end else
if acEdit1.text=EGEright then test:=true;
if test=true then
begin
if curquest[1]='A' then
begin
rightA[strtoint(copy(curquest,2,length(curquest)-1))]:=true;
inc(Aright);
end else
if curquest[1]='B' then
begin
rightB[strtoint(copy(curquest,2,length(curquest)-1))]:=true;
inc(Bright);
end else
if curquest[1]='C' then
begin
rightC[strtoint(copy(curquest,2,length(curquest)-1))]:=true;
inc(Cright);
end;
takedBals:=takedBals+CurQuestBals;
end else
begin
if curquest[1]='A' then
begin
if rightA[strtoint(copy(curquest,2,length(curquest)-1))] then
begin
rightA[strtoint(copy(curquest,2,length(curquest)-1))]:=false;
dec(Aright);
end;
end else
if curquest[1]='B' then
begin
if rightB[strtoint(copy(curquest,2,length(curquest)-1))] then
begin
rightB[strtoint(copy(curquest,2,length(curquest)-1))]:=false;
dec(Bright);
end;
end else
if curquest[1]='C' then
begin
if rightC[strtoint(copy(curquest,2,length(curquest)-1))] then
begin
rightC[strtoint(copy(curquest,2,length(curquest)-1))]:=false;
dec(Cright);
end;
end;
end;
end;
procedure TForm1.N20Click(Sender: TObject);
begin
CleanArrays;
MarkPanel.Visible:=false;
MarkResult.Visible:=false;
N20.Enabled:=false;
N9.Enabled:=false;
N22.Enabled:=false;
N21.Enabled:=true;
N5.Enabled:=false;
Form1.Enabled:=false;
new.nm_form.Show;
new.nm_form.name_bar.Text:='';
new.nm_form.class_bar.Text:='11';
new.nm_form.char_bar.Text:='А';
takedBals:=0;
Aright:=0;
Bright:=0;
Cright:=0;
end;
procedure TForm1.N21Click(Sender: TObject);
var pup:pip;
begin
AssignFile(fp,'data/pupils.dat');
if FileExists('data/pupils.dat') then
reset(fp) else rewrite(fp);
Seek(fp,filesize(fp));
pup.name:=nm_form.name_bar.text;
pup.clas:=nm_form.class_bar.text+' класс '+nm_form.char_bar.text;
pup.mark:=CalculateMark;
write(fp,pup);
CloseFile(fp);
tm_clock.Visible:=false;
tm_clock.Stop;
tm_clock.Reset;
N20.Enabled:=true;
N21.enabled:=false;
AnswerPanel.Visible:=false;
ZadaniePanel.Visible:=false;
AnswerImage.Visible:=false;
acDragPanel1.Visible:=false;
TreeView1.FullCollapse;
RadAnsw1.Checked:=false;
RadAnsw2.Checked:=false;
RadAnsw3.Checked:=false;
RadAnsw4.Checked:=false;
acEdit1.Text:='';
CleanTree;
MarkIMG2.Visible:=false;
MarkIMG3.Visible:=false;
MarkIMG4.Visible:=false;
MarkIMG5.Visible:=false;
case pup.mark of
2:markIMG2.Visible:=true;
3:markIMG3.Visible:=true;
4:markIMG4.Visible:=true;
5:markIMG5.Visible:=true;
end;
ArightLab.Caption:='Часть - А: верных '+inttostr(Aright)+' из 30';
BrightLab.Caption:='Часть - B: верных '+inttostr(Bright)+' из 4';
CrightLab.Caption:='Часть - C: верных '+inttostr(Cright)+' из 6';
MarkPanel.Visible:=true;
MarkResult.Visible:=true;
N9.Enabled:=true;
N5.Enabled:=true;
N22.Enabled:=true;
end;
procedure TForm1.tm_clockEndOfTime(Sender: TdxfTimer);
begin
Form1.N21Click(Sender);
end;
procedure TForm1.MarkPanelRightButtonClick(Sender: TObject);
begin
MarkPanel.Visible:=false;
MarkResult.Visible:=false;
end;
procedure TForm1.N9Click(Sender: TObject);
var i:longint;
tpup:pip;
temptr,clptr:TTreeNode;
begin
if not MarksStat.Visible then
BEGIN
CleanMarksTree;
if FileExists('data/pupils.dat') then
begin
AssignFile(fp,'data/pupils.dat');
Reset(fp);
for i:=0 to FileSize(fp)-1 do
begin
Seek(fp,i);
read(fp,tpup);
clptr:=findClass(tpup.clas);
if clptr=nil then
begin
classNodes[classNodesCount]:=MarksTree.Items.Add(TreeView1.TopItem,tpup.clas);
temptr:=MarksTree.Items.AddChild(classNodes[classNodesCount],tpup.name);
inc(classNodesCount);
end else
temptr:=MarksTree.Items.AddChild(clptr,tpup.name);
MarksTree.Items.AddChild(temptr,'Оценка: '+inttostr(tpup.mark));
end;
MarksStat.Visible:=true;
CloseFile(fp);
end;
END else MarksStat.Visible:=false;
end;
procedure TForm1.acBitBtn2Click(Sender: TObject);
begin
MarksStat.Visible:=false;
end;
procedure TForm1.acBitBtn1Click(Sender: TObject);
begin
Panel1.Visible:=true;
end;
procedure TForm1.acBitBtn4Click(Sender: TObject);
begin
Panel1.Visible:=false;
acEdit2.Text:='';
end;
procedure TForm1.acBitBtn3Click(Sender: TObject);
begin
if acEdit2.Text=EGEpass then
begin
AssignFile(fp,'data/pupils.dat');
Erase(fp);
CleanMarksTree;
Panel1.Visible:=false;
acEdit2.Text:='';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
classNodesCount:=0;
tempo:=0;
trNodeNum := 0;
LoadEGETable;
LoadTheoryList;
end;
procedure TForm1.acBitBtn5Click(Sender: TObject);
var pather:string;
i:byte;
begin
AssignFile(f,'data\temp.txt');
Rewrite(f);
writeln(f,'ФИО: '+nm_form.name_bar.text);
writeln(f,'Класс: '+nm_form.class_bar.text+nm_form.char_bar.text);
writeln(f,'Вариант: '+variantSTR);
writeln(f,'Статистика части A:');
writeln(f,'====================');
writeln(f,'Правильно отвеченные:');
for i:=1 to 30 do
if rightA[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'Не правильно отвеченные:');
for i:=1 to 30 do
if not rightA[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'====================');
writeln(f,'Статистика части B:');
writeln(f,'====================');
writeln(f,'Правильно отвеченные:');
for i:=1 to 4 do
if rightB[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'Не правильно отвеченные:');
for i:=1 to 4 do
if not rightB[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'====================');
writeln(f,'Статистика части C:');
writeln(f,'====================');
writeln(f,'Правильно отвеченные:');
for i:=1 to 6 do
if rightC[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'Не правильно отвеченные:');
for i:=1 to 6 do
if not rightC[i] then write(f,inttostr(i)+'_');
writeln(f);
writeln(f,'====================');
if markIMG2.Visible then writeln(f,'Оценка: 2') else
if markIMG3.Visible then writeln(f,'Оценка: 3') else
if markIMG4.Visible then writeln(f,'Оценка: 4') else
if markIMG5.Visible then writeln(f,'Оценка: 5');
CloseFile(f);
pather:=GetMyPath+'data\temp.txt';
ShellExecute(0,'open',PChar(pather),nil,nil,SW_NORMAL);
end;
procedure TForm1.N5Click(Sender: TObject);
begin
if not LabsScreen.Visible then
begin
DXDraw.Surface.Canvas.Draw(0,0,DXImageList1.Items.Items[1].Picture.Graphic);
LabsScreen.Visible:=true;
Lab1_link.Visible:=true;
Lab2_link.Visible:=true;
Lab3_link.Visible:=true;
N20.Enabled:=false;
N22.Enabled:=false;
end else
begin
LabsScreen.Visible:=false;
CleanLabWindow;
N20.Enabled:=true;
N22.Enabled:=true;
end;
end;
procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);
var ttempo:integer;
begin
if LabsScreen.Visible then
if DXDraw.CanDraw then
begin
if form1.Timer1.Enabled then
begin
tempo:=tempo+0.365;
ttempo:=round(220-tempo);
form1.DXDraw.Surface.Canvas.Pen.Color:=$008F672C;
form1.DXDraw.Surface.Canvas.Brush.Color:=$00C07520;
form1.DXDraw.Surface.Canvas.Rectangle(202,220,232,ttempo);
if form1.timer2.Enabled then
form1.DXDraw.Surface.Canvas.Rectangle(142,220,172,ttempo);
end;
DXDraw.Surface.Canvas.Release;
DXDraw.Flip;
end;
end;
procedure TForm1.lab1_linkMouseEnter(Sender: TObject);
begin
lab1_link.font.Color:=$00E0F2DF;
end;
procedure TForm1.lab1_linkMouseLeave(Sender: TObject);
begin
lab1_link.font.Color:=clBlack;
end;
procedure TForm1.lab2_linkMouseEnter(Sender: TObject);
begin
lab2_link.font.Color:=$00E0F2DF;
end;
procedure TForm1.lab2_linkMouseLeave(Sender: TObject);
begin
lab2_link.font.Color:=clBlack;
end;
procedure TForm1.lab3_linkMouseLeave(Sender: TObject);
begin
lab3_link.font.Color:=clBlack;
end;
procedure TForm1.lab3_linkMouseEnter(Sender: TObject);
begin
lab3_link.font.Color:=$00E0F2DF;
end;
procedure TForm1.lab1_linkClick(Sender: TObject);
begin
Lab1_frame1.Visible:=true;
lab1_link.visible:=false;
lab2_link.visible:=false;
lab3_link.visible:=false;
DXDraw.Surface.Canvas.Draw(0,0,DXImageList1.Items.Items[0].Picture.Graphic);
//сразу заполняем ожидаемые переменные для лаб.работы №1
labvars[0]:=2.28;//h1 - высота бумаги
labvars[1]:=4.7;//h2 - высота ткани
labvars[2]:=0.28;//+- это число к labvars[0] - h1
labvars[3]:=0.58;//+- это число к labvars[1] - h2
end;
procedure TForm1.LabsScreenRightButtonClick(Sender: TObject);
begin
LabsScreen.Visible:=false;
CleanLabWindow;
N20.Enabled:=true;
N22.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Timer1.Enabled:=false;
tempo:=0;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Timer2.Enabled:=false;
end;
procedure TForm1.Label5MouseEnter(Sender: TObject);
begin
label5.Font.Color:=clYellow;
end;
procedure TForm1.Label5MouseLeave(Sender: TObject);
begin
label5.Font.Color:=clWhite;
end;
procedure TForm1.Label5Click(Sender: TObject);
begin
LabErrorPan.Visible:=false;
end;
procedure TForm1.Label6MouseEnter(Sender: TObject);
begin
label6.Font.Color:=clYellow;
end;
procedure TForm1.Label6MouseLeave(Sender: TObject);
begin
label6.Font.Color:=clWhite;
end;
procedure TForm1.Label6Click(Sender: TObject);
begin
Panel2.Visible:=false;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
AboutPanel.Visible:= not AboutPanel.Visible;
end;
procedure TForm1.acBitBtn6Click(Sender: TObject);
begin
AboutPanel.Visible:=false;
end;
procedure TForm1.theor_treeDblClick(Sender: TObject);
begin
if theor_tree.SelectionCount<>0 then
begin
BrowseNavigate(theor_tree.Selected.text);
trNodeNum:= theor_tree.Selected.Index;
end;
end;
procedure TForm1.acBitBtn7Click(Sender: TObject);
begin
if trNodeNum>0 then
begin
BrowseNavigate(theor_tree.Items[trNodeNum-1].text);
dec(trNodeNum);
end;
end;
procedure TForm1.acBitBtn8Click(Sender: TObject);
begin
if trNodeNum
begin
BrowseNavigate(theor_tree.Items[trNodeNum+1].text);
inc(trNodeNum);
end;
end;
procedure TForm1.N22Click(Sender: TObject);
begin
if not Theor.visible then
begin
N20.Enabled:=false;
N5.Enabled:=false;
end else
begin
N20.Enabled:=true;
N5.Enabled:=true;
end;
Theor.Visible := not Theor.visible;
Theor_TPan.Visible := not Theor_TPan.visible;
end;
procedure TForm1.TheorRightButtonClick(Sender: TObject);
begin
Theor.Visible := false;
Theor_TPan.Visible := false;
N20.Enabled:=true;
N5.Enabled:=true;
end;
procedure TForm1.Label12MouseEnter(Sender: TObject);
begin
label12.font.Color:=$00E0F2DF;
end;
procedure TForm1.Label12MouseLeave(Sender: TObject);
begin
label12.font.Color:=clBlack;
end;
procedure TForm1.Label13MouseEnter(Sender: TObject);
begin
label13.font.Color:=$00E0F2DF;
end;
procedure TForm1.Label13MouseLeave(Sender: TObject);
begin
label13.font.Color:=clBlack;
end;
end.
unit new;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, acEdit, ExtCtrls, Buttons, dxfColorButton,
acLabeledComboBox, acButtons;
type
Tnm_form = class(TForm)
f_panel: TPanel;
name_bar: TEdit;
Label1: TLabel;
class_bar: TacNumberEdit;
char_bar: TacEdit;
VariantsBox: TacLabeledComboBox;
SpeedButton1: TacBitBtn;
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
nm_form: Tnm_form;
implementation
{$R *.dfm}
uses main;
procedure Tnm_form.SpeedButton1Click(Sender: TObject);
begin
Form1.Enabled:=true;
Form1.acDragPanel1.Visible:=true;
Form1.tm_clock.EndHour:=3;
Form1.tm_clock.EndMin:=30;
variantSTR:=VariantsBox.Text;
Form1.tm_clock.visible:=true;
Form1.tm_clock.Start;
nm_form.Hide;
end;
procedure Tnm_form.FormCreate(Sender: TObject);
begin
LoadVariants;
VariantsBox.Text:=VariantsBox.Items[0];
end;
end.
unit lab1frm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, acPanel, acSplitterPanel, acEdit, acButtons;
type
TLab1_frame = class(TFrame)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
acEdit1: TacEdit;
acEdit2: TacEdit;
Label8: TLabel;
acEdit3: TacEdit;
acEdit4: TacEdit;
Label9: TLabel;
acBitBtn1: TacBitBtn;
Label10: TLabel;
procedure Label6MouseEnter(Sender: TObject);
procedure Label6MouseLeave(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure acBitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
uses main;
{$R *.dfm}
procedure TLab1_frame.Label6MouseEnter(Sender: TObject);
begin
label6.font.Color:=clBlue;
end;
procedure TLab1_frame.Label6MouseLeave(Sender: TObject);
begin
label6.font.Color:=clBlack;
end;
procedure TLab1_frame.Label6Click(Sender: TObject);
begin
//включаем заполнение полосок жидкостью.
form1.Timer1.Interval:=round(labvars[1]*1000);
form1.Timer2.Interval:=round(labvars[0]*1000);
form1.Timer1.Enabled:=true;
form1.Timer2.Enabled:=true;
end;
procedure TLab1_frame.acBitBtn1Click(Sender: TObject);
var vltemp:real;
vltemp2:integer;
reslt:boolean;
hght1,hght2,D1,D2:real;
begin
acEdit1.Color:=clWhite; acEdit1.Font.Color:=clBlack;
acEdit2.Color:=clWhite; acEdit2.Font.Color:=clBlack;
acEdit3.Color:=clWhite; acEdit3.Font.Color:=clBlack;
acEdit4.Color:=clWhite; acEdit4.Font.Color:=clBlack;
hght1:=0;
hght2:=0;
reslt:=false;
val(acEdit1.text,vltemp,vltemp2);
if (vltemp<(labvars[0]+labvars[2])/100)AND
(vltemp>(labvars[0]-labvars[2])/100) then
begin
hght1:=vltemp;
end else
begin reslt:=true; acEdit1.Color:=clRed; acEdit1.Font.Color:=clwhite; end;
val(acEdit2.text,vltemp,vltemp2);
if (vltemp<(labvars[1]+labvars[3])/100)AND
(vltemp>(labvars[1]-labvars[3])/100) then
begin
hght2:=vltemp;
end else begin reslt:=true; acEdit2.Color:=clRed; acEdit2.Font.Color:=clwhite; end;
if hght1<>0 then
begin
val(acEdit3.text,vltemp,vltemp2);
D1:=0.292/(10000*hght1);
if (round(D1)<>round(vltemp))OR(vltemp>0.002) then
begin
D1:=0.292/(9800*hght1);
if (round(D1)<>round(vltemp))OR(vltemp>0.002) then
begin
reslt:=true; acEdit3.Color:=clRed; acEdit3.Font.Color:=clwhite;
end;
end;
end;
if hght2<>0 then
begin
val(acEdit4.text,vltemp,vltemp2);
D2:=0.292/(10000*hght2);
if (round(D2)<>round(vltemp))OR(vltemp>0.001) then
begin
D2:=0.292/(9800*hght2);
if (round(D2)<>round(vltemp))OR(vltemp>0.001) then
begin
reslt:=true; acEdit4.Color:=clRed; acEdit4.Font.Color:=clwhite;
end;
end;
end;
if (length(acEdit4.text)=0) then
begin
acEdit4.Color:=clRed; acEdit4.Font.Color:=clwhite;
reslt:=true;
end;
if (length(acEdit3.text)=0) then
begin
acEdit3.Color:=clRed; acEdit3.Font.Color:=clwhite;
reslt:=true;
end;
if reslt then form1.LabErrorPan.Visible:=true else
begin
form1.LabErrorPan.Visible:=false;
form1.Panel2.Visible:=true;
end;
end;
end.
2. Примеры Работы программы.
Задание №1 части А
Задание №1 части В
Задание №2 части С
Пример очистки списка оценок Учителем.
Начало лабораторной работы №1
Шаг 1 лабораторной работы №1.
Меню Помощь и его подменю.
Меню Тесты и теория.
Сладость для сердца
Голубая лягушка
Сказка об одной Тайне
Ледяная внучка
Н. Гумилёв. Жираф