Разработка системы компьютерного контроля знаний по дисциплинам кафедры
Интерфейс серверной части программного комплекса и его настройка. Приложение - посредник между базой данных вопросов и ответов и клиентским приложением, предназначено для предоставления доступа зарегистрированным клиентам (авторизованным пользователям).
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 24.10.2010 |
Размер файла | 6,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1,IniFiles, Find_Komp;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
var Ini:TiniFile;
begin
Label3.Caption:=Form1.DCOMConnection1.ServerGUID;
Label5.Caption:=Form1.DCOMConnection1.ServerName;
if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Ini.WriteString('CONNECT', 'PCName','PC');
Ini.WriteBool('CONNECT', 'TYPE',false);
Edit1.Text:='PC';
RadioGroup1.ItemIndex:=0;
finally
Ini.Free
end;
end else
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Edit1.Text:=Ini.ReadString('CONNECT', 'PCName','PC');
if Ini.ReadBool('CONNECT', 'TYPE',false)
then RadioGroup1.ItemIndex:=1
else RadioGroup1.ItemIndex:=0;
finally
Ini.Free
end;
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var Ini:TiniFile;
begin
if Edit1.Text='' then exit;
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Ini.WriteString('CONNECT', 'PCName',Edit1.Text);
Form1.DCOMConnection1.ComputerName:=Edit1.Text;
Form1.SocketConnection1.Host:=Edit1.Text;
if RadioGroup1.ItemIndex=1 then
begin
Ini.WriteBool('CONNECT', 'TYPE',True);
Form1.ConnectionBroker1.Connection:=Form1.SocketConnection1;
end
else begin
Ini.WriteBool('CONNECT', 'TYPE',False);
Form1.ConnectionBroker1.Connection:=Form1.DCOMConnection1;
end;
finally
Ini.Free
end;
close
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close
end;
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
FindKompFrm:=TFindKompFrm.Create(Self);
FindKompFrm.ShowModal;
if FindKompFrm.ModalResult=mrOK then
Edit1.Text:=FindKompFrm.ShellTreeView1.Path;
FindKompFrm.Free
end;
end.
Вспомогательный модуль Find_Komp. Поиск компьютеров в локальной сети, для настройки соединения с сервером.
unit Find_Komp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ShellCtrls, StdCtrls;
type
TFindKompFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
ShellTreeView1: TShellTreeView;
private
{ Private declarations }
public
{ Public declarations }
end;
var
FindKompFrm: TFindKompFrm;
implementation
{$R *.dfm}
end.
Модуль FrmAbout. Выводит сообщение «О программе».
unit FrmAbout;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzLabel, StdCtrls;
type
TAboutFrm = class(TForm)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
RzURLLabel1: TRzURLLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AboutFrm: TAboutFrm;
implementation
{$R *.dfm}
procedure TAboutFrm.Button1Click(Sender: TObject);
begin
Close
end;
end.
Модули AddNewPredmet, DlgPredmet. Добавление и редактирование предметов и тем.
unit AddNewPredmet;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, RzDBGrid, RzDBNav;
type
TAddPredmetFrm = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
Button1: TButton;
Button2: TButton;
RzDBGrid1: TRzDBGrid;
RzDBGrid2: TRzDBGrid;
RzDBNavigator1: TRzDBNavigator;
RzDBNavigator2: TRzDBNavigator;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AddPredmetFrm: TAddPredmetFrm;
implementation
uses Unit1;
{$R *.dfm}
procedure TAddPredmetFrm.Button1Click(Sender: TObject);
begin
with Form1 do
begin
if ClientDataSetPredmet.ApplyUpdates(-1)=0 then
ClientDataSetPredmet.refresh;
if ClientDataSetTema.ApplyUpdates(-1)=0 then
ClientDataSetTema.refresh;
end;
Close;
end;
procedure TAddPredmetFrm.Button2Click(Sender: TObject);
begin
with Form1 do
begin
if ClientDataSetPredmet.ApplyUpdates(-1)=0 then
ClientDataSetPredmet.refresh;
if ClientDataSetTema.ApplyUpdates(-1)=0 then
ClientDataSetTema.refresh;
end;
end;
end.
unit DlgPredmet;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TPredmetAdd = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Edit2: TEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
PredmetAdd: TPredmetAdd;
implementation
{$R *.dfm}
end.
Модули AddNewVopros, NewVopros, DldVoprosAdd. Добавление, редактирование просмотр вопросов и вариантов ответов на них.
unit AddNewVopros;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, Mask, RzDBGrid,
RzDBNav;
type
TVoprosOtvetListFrm = class(TForm)
GroupBox1: TGroupBox;
DBLookupComboBox1: TDBLookupComboBox;
GroupBox2: TGroupBox;
DBLookupComboBox2: TDBLookupComboBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
DBMemo1: TDBMemo;
DBEdit1: TDBEdit;
Button1: TButton;
Label1: TLabel;
GroupBox5: TGroupBox;
RzDBGrid1: TRzDBGrid;
RzDBNavigator1: TRzDBNavigator;
Label2: TLabel;
Button2: TButton;
procedure FormShow(Sender: TObject);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RzDBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
procedure Button2Click(Sender: TObject);
procedure RzDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
VoprosOtvetListFrm: TVoprosOtvetListFrm;
implementation
uses Unit1,DldVoprosAdd,NewVopros;
{$R *.dfm}
procedure TVoprosOtvetListFrm.FormShow(Sender: TObject);
begin
DBLookupComboBox1.KeyValue:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];
DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];
end;
procedure TVoprosOtvetListFrm.DBLookupComboBox1Click(Sender: TObject);
begin
DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];
end;
procedure TVoprosOtvetListFrm.Button1Click(Sender: TObject);
begin
Close
end;
procedure TVoprosOtvetListFrm.RzDBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
if Button=nbInsert then
begin
NewVoprosFrm:=TNewVoprosFrm.Create(self);
NewVoprosFrm.ShowModal;
if NewVoprosFrm.ModalResult<>idCancel then
begin
DlgFrmAddVopros:=TDlgFrmAddVopros.Create(self);
DlgFrmAddVopros.ShowModal;
DlgFrmAddVopros.Free;
end;
NewVoprosFrm.Free;
Abort;
end;
end;
procedure TVoprosOtvetListFrm.Button2Click(Sender: TObject);
var IdP,IdT:Longint;
begin
IdP:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];
IdT:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];
Form1.ClientDataSetPredmet.Close;
Form1.ClientDataSetTema.Close;
Form1.ClientDataSetVopros.Close;
Form1.ClientDataSetVariant.Close;
Form1.ClientDataSetPredmet.Open;
Form1.ClientDataSetTema.Open;
Form1.ClientDataSetVopros.Open;
Form1.ClientDataSetVariant.Open;
Form1.ClientDataSetPredmet.Locate('PREDMET_ID',IdP,[]);
Form1.ClientDataSetTema.Locate('TEMA_ID',IdT,[]);
DBLookupComboBox1.KeyValue:=Form1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];
DBLookupComboBox2.KeyValue:=Form1.ClientDataSetTema.FieldValues['TEMA_ID'];
end;
procedure TVoprosOtvetListFrm.RzDBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if DataCol=1 then
begin
if (Sender as TDBGrid).Fields[DataCol].AsBoolean then
begin
(Sender as TDBGrid).Canvas.Brush.Color:=clLime;
(Sender as TDBGrid).Canvas.FillRect(Rect);
(Sender As TDBGrid).Canvas.TextOut(Rect.Left+5, Rect.Top,'Да');
end else
begin
(Sender as TDBGrid).Canvas.Brush.Color:=clWindow;
(Sender as TDBGrid).Canvas.FillRect(Rect);
(Sender As TDBGrid).Canvas.TextOut(Rect.Left+5, Rect.Top,'Нет');
end;
end;
end;
end.
unit NewVopros;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TNewVoprosFrm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
NewVoprosFrm: TNewVoprosFrm;
implementation
uses Unit1;
{$R *.dfm}
procedure TNewVoprosFrm.Button1Click(Sender: TObject);
var Sql,Sql1:String;
Predmet_ID:Integer;
Tema_ID:Integer;
begin
Predmet_ID:=Form1.ClientDataSetPredmet['PREDMET_ID'];
Tema_ID:=Form1.ClientDataSetTema['TEMA_ID'];
Sql:='INSERT INTO VOPROS (PREDMET_ID,TEMA_ID,VOPROS,TIME_OUT) ';
Sql1:=' VALUES( '+IntToStr(Predmet_ID)+','+
IntToStr(Tema_ID)+','
+''''+ Edit1.Text+''','
+Edit2.Text+ ' )';
Form1.ClientDataSetQuery.CommandText:=sql+sql1;
Form1.ClientDataSetQuery.Execute;
Form1.ClientDataSetVopros.Refresh;
end;
end.
unit DldVoprosAdd;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, RzDBGrid, RzGrids;
type
TDlgFrmAddVopros = class(TForm)
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Button1: TButton;
Button2: TButton;
RzStringGrid1: TRzStringGrid;
CheckBox1: TCheckBox;
procedure RzStringGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure RzStringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure RzStringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DlgFrmAddVopros: TDlgFrmAddVopros;
Col,Row:Integer;
Vopros_ID:Integer;
RowVerno:Integer;
implementation
uses Unit1, AddNewVopros;
{$R *.dfm}
procedure TDlgFrmAddVopros.RzStringGrid1KeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key=VK_DOWN then
begin
if (RzStringGrid1.Cells[Col,Row]<>'')and
(Row+1=RzStringGrid1.RowCount) then
RzStringGrid1.RowCount:=RzStringGrid1.RowCount+1;
end;
if key=VK_UP then
begin
if (RzStringGrid1.Cells[Col,Row+1]='') And (RzStringGrid1.RowCount>2) then
RzStringGrid1.RowCount:=RzStringGrid1.RowCount-1;
end;
CheckBox1.OnClick:=Nil;
if RowVerno=Row then CheckBox1.Checked:=True
else CheckBox1.Checked:=False;
CheckBox1.OnClick:=CheckBox1Click;
end;
procedure TDlgFrmAddVopros.RzStringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
Col:=ACol;Row:=ARow;
end;
procedure TDlgFrmAddVopros.FormCreate(Sender: TObject);
begin
RzStringGrid1.Cells[0,0]:='Вариант ответа';
Col:=0; Row:=1; RowVerno:=0;
Form1.ClientDataSetVopros.Last;
// Vopros_ID:=Form1.ClientDataSetVopros['VOPROS_ID'];
Form1.ClientDataSetVopros.Insert;
end;
procedure TDlgFrmAddVopros.CheckBox1Click(Sender: TObject);
begin
if RzStringGrid1.Cells[Col,Row]<>'' then
begin
if CheckBox1.Checked then RowVerno:=Row else RowVerno:=0;
end else
begin
CheckBox1.OnClick:=Nil;
CheckBox1.Checked:=not CheckBox1.Checked;
CheckBox1.OnClick:=CheckBox1Click;
end;
end;
procedure TDlgFrmAddVopros.RzStringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
RzStringGrid1.MouseToCell(X,Y,Col,Row);
if Row=0 then exit;
CheckBox1.OnClick:=Nil;
if RowVerno=Row then CheckBox1.Checked:=True
else CheckBox1.Checked:=False;
CheckBox1.OnClick:=CheckBox1Click;
end;
procedure TDlgFrmAddVopros.Button1Click(Sender: TObject);
var //Vopros_ID:Integer;
Predmet_ID:Integer;
Tema_ID:Integer;
i,RowCount:Integer;
Sql,Sql1,Sql2:String;
begin
if RowVerno=0 then
begin
ShowMessage('Не задано ни одного верного ответа');
Exit;
end;
Form1.ClientDataSetQuery.CommandText:='SELECT * FROM VOPROS';
Form1.ClientDataSetQuery.Open;
Form1.ClientDataSetQuery.Last;
{ Form1.ClientDataSetVopros.Last;
Vopros_ID:=Form1.ClientDataSetVopros['VOPROS_ID'];}
Vopros_ID:=Form1.ClientDataSetQuery['VOPROS_ID'];
Form1.ClientDataSetQuery.Close;
Predmet_ID:=Form1.ClientDataSetPredmet['PREDMET_ID'];
Tema_ID:=Form1.ClientDataSetTema['TEMA_ID'];
if RzStringGrid1.RowCount>=1 then
begin
Sql:='INSERT INTO VARIANT (VOPROS_ID,PREDMET_ID,TEMA_ID,OTVET,VERNO) ';
if RzStringGrid1.RowCount=1 then RowCount:=1
else RowCount:=RzStringGrid1.RowCount-1;
for i:=1 to RowCount do
begin
Sql1:=' VALUES( '+IntToStr(Vopros_ID)+','+
IntToStr(Predmet_ID)+','+
IntToStr(Tema_ID)+','+''''+
RzStringGrid1.Cells[0,i]+''',';
if RowVerno=i then Sql2:='true)'
else Sql2:='false)';
Form1.ClientDataSetQuery.CommandText:=sql+sql1+Sql2;
Form1.ClientDataSetQuery.Execute;
Form1.ClientDataSetVariant.Refresh;
end;
end;
if Form1.ClientDataSetVariant.ApplyUpdates(-1)<>0 then
Form1.ClientDataSetVariant.Refresh;
Close
end;
procedure TDlgFrmAddVopros.Button2Click(Sender: TObject);
begin
Close
end;
end.
Модуль Excel. Предназначен для вывода результатов тестирования студентов в формате MS Excel.
unit Excel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,Forms, Controls,Dialogs,Variants;
Type
TSetBordertype=(btMedium,btThin);
type
TSetTypeCell =(tcGeneral,tcNum,tcCurrency,tcFinans,tcData,tcTime,
tcProc,tcExpo,tcText);
type
TSetExcelAlign=(exCenter,exLeft,exRight,exBottom,exTop,exGeneral,exJustify);
//xlGeneral xlJustify xlTop
procedure NewWorkShet(aVisible:Boolean);
procedure CloseWorkShet;
// function GetCellValue(Vr,Hr:OleVariant):OleVariant;
procedure SetCellValue(Vi,Hi,Value:OleVariant);
procedure SetCellRangeValue(Vr,Hr,Value:OleVariant);
procedure VisibleWorkShet(aVisible:Boolean);
procedure OpenWorkShet;
procedure FormatCell(Vr,Hr:OleVariant;HorAlign,VerAlign:TSetExcelAlign;
Wrap,Merg,Boldd,NamFont,SizeFont:OleVariant);
procedure TypeCell(Vr,Hr:OleVariant;typ:TSetTypeCell);
procedure BorderCell(Vr,Hr:OleVariant;Typ:OleVariant);
procedure SetCellRangeWidth(Vr,Hr,Value:OleVariant);
procedure SetCellWidth(Vi,Hi,Value:OleVariant);
procedure SetCellRangeHeight(Vr,Hr,Value:OleVariant);
procedure SetCellHeight(Vi,Hi,Value:OleVariant);
procedure SaveAsWorkShet;
procedure Save(FileName:String);
procedure PrintWorkShet(PrinterName,PageNumer:OleVariant);
procedure Preview;
procedure CloseExcel;
procedure RunExcel;
var Visible:Boolean;
FileName:String;
AppProgID:String;
ServerIsRunning:Boolean;
ExcelApp:Variant;
Result:HResult;
Unknown:IUnknown;
implementation
uses ExcelXP,Printers,ComObj,ActiveX;
procedure Preview;
begin
ExcelApp.ActiveWorkbook.PrintPreview(True,0);
end;
procedure PrintWorkShet(PrinterName,PageNumer:OleVariant);
begin
ExcelApp.ActiveWorkbook.PrintOut(NULL,NULL,PageNumer,False,PrinterName,False,NULL,NULL,0);
end;
procedure Save(FileName:String);
begin
ExcelApp.ActiveWorkbook.SaveAs(FileName);
end;
procedure SaveAsWorkShet;
var FSave:TSaveDialog;
begin
//if Not NewOrOpen then Exit;
try
FSave:=TSaveDialog.Create(Nil);
FSave.Title:='Сохранить файл Microsoft Excel';
FSave.DefaultExt:='xls';
FSave.Filter:='Excel files|*.XLS';
if FSave.Execute then
begin
ExcelApp.ActiveWorkbook.SaveAs(FSave.FileName,xlNormal,Null,Null,False,False,
XlNoChange,XlUserResolution,False,False,False,False,0);
end;
finally
FSave.Free;
FSave:=Nil;
end;
end;
procedure SetCellRangeWidth(Vr,Hr,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].
Range[Vr+':'+Hr].ColumnWidth:=Value;
end;//new
procedure SetCellWidth(Vi,Hi,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].
Cells[Vi,Hi].ColumnWidth:=Value;
end;
procedure SetCellRangeHeight(Vr,Hr,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].
Range[Vr+':'+Hr].RowHeight:=Value;
end;
procedure SetCellHeight(Vi,Hi,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].
Cells[Vi,Hi].RowHeight:=Value;
end;
procedure TypeCell(Vr,Hr:OleVariant;typ:TSetTypeCell);
begin
case Typ of
tcGeneral :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='General';
tcNum :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='0,00';
tcCurrency:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
// NumberFormat:='#,##0,00$';
NumberFormat:='0,00руб.';
tcFinans :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='_($* 0,00_);_($* (0,00);_($* ""-""??_);_(@_)';
tcData :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='dd/mm/yyyy';
tcTime :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='[$-F400]h:mm:ss AM/PM';
tcProc :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='0,00%';
tcExpo :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='0,00E+00';
tcText :
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
NumberFormat:='@';
end;
end;
procedure FormatCell(Vr,Hr:OleVariant;HorAlign,VerAlign:TSetExcelAlign;
Wrap,Merg,Boldd,NamFont,SizeFont:OleVariant);
begin
Case HorAlign of
exCenter:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
HorizontalAlignment:=xlCenter;
exLeft:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
HorizontalAlignment:=xlLeft;
exRight:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
HorizontalAlignment:=xlRight;
exJustify:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
HorizontalAlignment:=xlJustify;
exGeneral:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
HorizontalAlignment:=xlGeneral;
end;
Case VerAlign of
exCenter:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
VerticalAlignment:=xlCenter;
exBottom:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
VerticalAlignment:=xlBottom;
exTop:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
VerticalAlignment:=xlTop;
exJustify:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
VerticalAlignment:=xlJustify;
exGeneral:
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].
VerticalAlignment:=xlGeneral;
end;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].WrapText:=Wrap;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Orientation:=0;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].AddIndent:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].IndentLevel:=0;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].ShrinkToFit:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].ReadingOrder:=xlContext;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].MergeCells:=Merg;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Name:=NamFont;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Size:=SizeFont;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Bold:=Boldd;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Strikethrough:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Superscript:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Subscript:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.OutlineFont:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Shadow:=False;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.Underline:=xlUnderlineStyleNone;
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Font.ColorIndex:= xlAutomatic;
end;
procedure OpenWorkShet;
var FileOpen:TOpenDialog;
begin
try
FileOpen:=TOpenDialog.Create(Nil);
FileOpen.Title:='Открыть файл Microsoft Excel';
FileOpen.Filter:='Excel files|*.XLS';
if FileOpen.Execute then
begin
FileName:=FileOpen.FileName;
ExcelApp.WorkBooks.Open(FileName,False,False,Null,Null,Null,False,Null,
Null,Null,Null,Null,Null,Null,Null,0);
// NewOrOpen:=True;
end;
finally
FileOpen.Free;
FileOpen:=nil
end
end;
procedure BorderCell(Vr,Hr:OleVariant;Typ:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Select;
ExcelApp.Selection.Borders[xlDiagonalDown].LineStyle:=xlNone;
ExcelApp.Selection.Borders[xlDiagonalUp].LineStyle:=xlNone;
ExcelApp.Selection.Borders.LineStyle:=xlContinuous;
ExcelApp.Selection.Borders.Weight:=xlMedium;
ExcelApp.Selection.Borders.ColorIndex:=xlAutomatic;
ExcelApp.Selection.Borders[xlInsideVertical].LineStyle:=xlNone;
ExcelApp.Selection.Borders[xlInsideHorizontal].LineStyle:=xlNone;
end;//new
procedure VisibleWorkShet(aVisible:Boolean);
begin
if Visible and not aVisible then
begin
ExcelApp.Visible:=false;
visible:=False
end;
if Not Visible and aVisible then
begin
ExcelApp.Visible:=True;
Visible:=True;
end;
end;//new
procedure NewWorkShet(aVisible:Boolean);
begin
ExcelApp.workbooks.Add;
if aVisible then
begin
ExcelApp.Visible:=aVisible;
Visible:=aVisible;
end;
end;
procedure CloseWorkShet;
begin
VisibleWorkShet(False);
ExcelApp.Workbooks.Close;
end;
procedure SetCellRangeValue(Vr,Hr,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].Range[Vr+':'+Hr].Value:=Value;
end;
procedure SetCellValue(Vi,Hi,Value:OleVariant);
begin
ExcelApp.Workbooks[1].WorkSheets[1].Cells[Vi,Hi].Value:=Value;
end;
function GetCellValue(Vr,Hr:OleVariant):OleVariant;
begin
// RangeE:=FExcelApp.Range[Vr,Hr];
// RangeE:=RangeE.Range[Vr,Hr];
// result:=RangeE.Value[RangeE];
end;
procedure CloseExcel;
begin
if not ServerIsRunning then ExcelApp.Quit;
ExcelApp:=Unassigned;
// ExcelApp.Quit;
end;
procedure RunExcel;
begin
AppProgID:='Excel.Application';
ServerIsRunning:=False;
ExcelApp:=CreateOleObject(AppProgID);
ExcelApp.Visible:=False;
ExcelApp.DisplayAlerts:=False;
end;
end.
Исходный код клиентской части программного комплекса.
program Ekzamen;
uses
Forms,
main in 'main.pas' {Form1},
DataMod in 'DataMod.pas' {DM1: TDataModule},
Nastr_Connect in 'Nastr_Connect.pas' {Form2},
Find_Komp in 'Find_Komp.pas' {Form7},
UserLogin in 'UserLogin.pas' {Form3},
Vibor_testa in 'Vibor_testa.pas' {Form4},
Otvet_test in 'Otvet_test.pas' {Form5};
{$R *.res}
begin
Application.Initialize;
Application.Title := 'Тестирование';
Application.CreateForm(TDM1, DM1);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Главный модуль клиентской части программного комплекса.
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, ComCtrls, Menus, Sockets, jpeg, ExtCtrls, RzGroupBar,
RzPanel, RzStatus, ImgList, XPMan, RzBHints, RzButton;
type
TForm1 = class(TForm)
TcpServer1: TTcpServer;
RzGroupBar1: TRzGroupBar;
RzGroup1: TRzGroup;
RzGroup2: TRzGroup;
RzStatusBar1: TRzStatusBar;
RzToolbar1: TRzToolbar;
ImageList1: TImageList;
RzBalloonHints1: TRzBalloonHints;
Image1: TImage;
RzToolButton1: TRzToolButton;
RzStatusPane1: TRzStatusPane;
RzClockStatus1: TRzClockStatus;
RzToolButton2: TRzToolButton;
RzSpacer1: TRzSpacer;
RzToolButton3: TRzToolButton;
procedure FormCreate(Sender: TObject);
procedure Nasr_PodklClick(Sender: TObject);
procedure PodklClick(Sender: TObject);
procedure Test_VoprosClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DataMod,IniFiles, Nastr_Connect, UserLogin, Vibor_testa;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var Ini:TiniFile;
PC:String;
begin
if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Ini.WriteString('CONNECT', 'PCName','PC');
Ini.WriteInteger('CONNECT', 'TYPE',0);
ShowMessage('Не найден файл настроек. Необходимо заново настроить поключение');
finally
Ini.Free
end;
end else
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
PC:=Ini.ReadString('CONNECT', 'PCName','PC');
DM1.DCOMConnection1.ComputerName:=PC;
DM1.SocketConnection1.Host:=PC;
case Ini.ReadInteger('CONNECT','TYPE',0) of
0: DM1.ConnectionBroker1.Connection:=DM1.DCOMConnection1;
1: DM1.ConnectionBroker1.Connection:=DM1.SocketConnection1;
2: DM1.ConnectionBroker1.Connection:=DM1.WebConnection1;
end;
finally
Ini.Free
end;
end;
end;
procedure TForm1.Nasr_PodklClick(Sender: TObject);
begin
Form2:=TForm2.Create(self);
Form2.ShowModal;
Form2.Free;
end;
procedure TForm1.PodklClick(Sender: TObject);
var S1,S2,S3:string;
procedure MenuEnable;
begin
RzGroup1.Items.Items[0].Enabled:=not RzGroup1.Items.Items[0].Enabled;
RzGroup2.Items.Items[1].Enabled:=not RzGroup2.Items.Items[1].Enabled;
RzToolButton3.Enabled:=not RzToolButton3.Enabled;
RzToolButton2.Enabled:=not RzToolButton2.Enabled;
end;
begin
//подключение\отключение к серверу
if DM1.ConnectionBroker1.Connected then
begin
DM1.ConnectionBroker1.Connected:=False;
RzGroup2.Items.Items[0].Caption:='Подключение';
RzStatusPane1.Caption:='Статус: Отключен от сервера';
MenuEnable;
TcpServer1.Close;
end else
begin
Form3:=TForm3.Create(Self);
Form3.ShowModal;
if Form3.ModalResult=mrOK then
begin
try
DM1.ConnectionBroker1.Connected:=True;
except
on E:Exception do
begin
MessageDLG(Format('Ошибка подключения к серверу: %S',[E.Message]),
mtError,[mbOK],0);
exit;
end;
end;//except
if DM1.ConnectionBroker1.AppServer.Login(Form3.Edit1.Text,Form3.Edit2.Text) then
begin
RzGroup2.Items.Items[0].Caption:='Отключение';
RzStatusPane1.Caption:='Статус: Подключен к серверу';
MenuEnable;
TcpServer1.Open;
S1:=TcpServer1.LookupHostAddr(TcpServer1.LookupHostName(''));
S2:=TcpServer1.LocalHostAddr;
S3:=TcpServer1.LocalHostName;
DM1.ConnectionBroker1.AppServer.IPAdress(S1,S2,S3);
end else
begin
DM1.ConnectionBroker1.Connected:=False;
ShowMessage('Имя пользователя или пароль не опознаны сервером');
end;
end;
form3.Free
end;
end;
procedure TForm1.Test_VoprosClick(Sender: TObject);
begin
DM1.ClientDataSetPredmet.Open;
DM1.ClientDataSetTema.Open;
Form4:=TForm4.Create(Self);
Form4.ShowModal;
Form4.Free;
DM1.ClientDataSetTema.Close;
DM1.ClientDataSetPredmet.Close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if DM1.ConnectionBroker1.Connected then DM1.ConnectionBroker1.Connected:=False;
if TcpServer1.Active then TcpServer1.Close;
DM1.ConnectionBroker1.Connection:=nil;
Action:=caFree;
end;
end.
Модуль DataMod. Модуль данных.
unit DataMod;
interface
uses
SysUtils, Classes, SConnect, DB, DBClient, MConnect;
type
TDM1 = class(TDataModule)
DCOMConnection1: TDCOMConnection;
SocketConnection1: TSocketConnection;
ConnectionBroker1: TConnectionBroker;
ClientDataSetCommand: TClientDataSet;
ClientDataSetPredmet: TClientDataSet;
ClientDataSetTema: TClientDataSet;
DataSource1: TDataSource;
DataSource2: TDataSource;
ClientDataSetVopros: TClientDataSet;
ClientDataSetVariant: TClientDataSet;
DataSource3: TDataSource;
DataSource4: TDataSource;
WebConnection1: TWebConnection;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM1: TDM1;
ID_PREDMET:LongInt;
ID_TEMA:LongInt;
Vopros_Count,KolvoVopros:Integer;
VernoOtv,NeVernoOtv:Integer;
RecNom : Array of integer;
implementation
{$R *.dfm}
end.
Модуль Nastr_Connect. Настройки содинения с серверной частью.
unit Nastr_Connect;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
RadioGroup1: TRadioGroup;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure RadioGroup1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses IniFiles, Find_Komp, DataMod;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
var Ini:TiniFile;
begin
if not FileExists(ChangeFileExt( Application.ExeName, '.INI')) then
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Ini.WriteString('CONNECT', 'PCName','PC');
Ini.WriteInteger('CONNECT', 'TYPE',0);
Edit1.Text:='PC';
RadioGroup1.ItemIndex:=0;
finally
Ini.Free
end;
end else
begin
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Edit1.Text:=Ini.ReadString('CONNECT', 'PCName','PC');
RadioGroup1.ItemIndex:=Ini.ReadInteger('CONNECT', 'TYPE',0);
RadioGroup1Click(Sender);
finally
Ini.Free
end;
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
var Ini:TiniFile;
begin
if Edit1.Text='' then exit;
try
ini:=TiniFile.Create(ChangeFileExt( Application.ExeName, '.INI'));
Ini.WriteString('CONNECT', 'PCName',Edit1.Text);
DM1.DCOMConnection1.ComputerName:=Edit1.Text;
DM1.SocketConnection1.Host:=Edit1.Text;
Ini.WriteInteger('CONNECT', 'TYPE',RadioGroup1.ItemIndex);
case RadioGroup1.ItemIndex of
0: DM1.ConnectionBroker1.Connection:=DM1.DCOMConnection1;
1: DM1.ConnectionBroker1.Connection:=DM1.SocketConnection1;
2: DM1.ConnectionBroker1.Connection:=DM1.WebConnection1;
end
finally
Ini.Free
end;
close
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close
end;
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
Form7:=TForm7.Create(Self);
Form7.ShowModal;
if Form7.ModalResult=mrOK then
Edit1.Text:=Form7.ShellTreeView1.Path;
Form7.Free
end;
procedure TForm2.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=2 then
begin
Label1.Caption:='URL адрес';
SpeedButton1.Enabled:=False;
Edit1.Text:='http://PC/';//Scripts/
end
else begin
Label1.Caption:='Имя компьютера';
SpeedButton1.Enabled:=True;
end;
end;
end.
Вспомогательный модуль Find_Komp. Поиск компьютеров в локальной сети, для настройки соединения с сервером.
unit Find_Komp;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ShellCtrls, StdCtrls;
type
TForm7 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
ShellTreeView1: TShellTreeView;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
{$R *.dfm}
end.
Модуль Vibor_testa. Диалоговое окно, в котором студент выбирает предмет и тему по которым он хочет проверить свои знания.
unit Vibor_testa;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls;
type
TForm4 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBLookupComboBox1: TDBLookupComboBox;
DBLookupComboBox2: TDBLookupComboBox;
GroupBox3: TGroupBox;
Button1: TButton;
Button2: TButton;
procedure DBLookupComboBox1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses DataMod, Otvet_test;
{$R *.dfm}
procedure TForm4.DBLookupComboBox1Click(Sender: TObject);
begin
if DBLookupComboBox2.text<>'' then
begin
DBLookupComboBox2.ListField:='';
DBLookupComboBox2.ListField:='TEMA';
end;
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Close
end;
procedure TForm4.Button1Click(Sender: TObject);
{ Procedure Podgotovka;
var I:Integer;
begin
Randomize;
For i:=1 to Vopros_Count do
begin
Random
end;
end;}
begin
if (DBLookupComboBox1.text='')or
(DBLookupComboBox2.text='') then exit;
ID_PREDMET:=DM1.ClientDataSetPredmet.FieldValues['PREDMET_ID'];
ID_TEMA:=DM1.ClientDataSetTema.FieldValues['TEMA_ID'];
Vopros_Count:=DM1.ClientDataSetTema.FieldValues['VOPROS_COUNT'];
DM1.ClientDataSetVopros.Open;
DM1.ClientDataSetVariant.Open;
DM1.ClientDataSetVopros.Filter:='PREDMET_ID='+IntToStr(ID_PREDMET)+
' AND TEMA_ID='+IntToStr(ID_TEMA);
DM1.ClientDataSetVopros.Filtered:=True;
DM1.ClientDataSetVopros.First;
if DM1.ClientDataSetVopros.RecordCount<Vopros_Count then
Vopros_Count:=DM1.ClientDataSetVopros.RecordCount;
SetLength(RecNom,DM1.ClientDataSetVopros.RecordCount+1);
Form5:=TForm5.Create(self);
Form5.ShowModal;
Form5.Free;
DM1.ClientDataSetVopros.Filter:='';
DM1.ClientDataSetVopros.Filtered:=False;
DM1.ClientDataSetVariant.Close;
DM1.ClientDataSetVopros.Close;
DM1.ClientDataSetTema.Close;
DM1.ClientDataSetPredmet.Close;
close;
end;
end.
Модуль Otvet_test. Диалоговое окно в котором студент отвечает на предложенные ему вопросы.
unit Otvet_test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, CheckLst, DBCtrls, ExtCtrls;
type
TForm5 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
CheckListBox1: TCheckListBox;
GroupBox3: TGroupBox;
Button1: TButton;
DBMemo1: TDBMemo;
Label1: TLabel;
Label2: TLabel;
Timer1: TTimer;
Timer2: TTimer;
Label3: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
Procedure NewVopros;
Procedure RandomVopros;
Procedure Time_Out;
{ Public declarations }
end;
var
Form5: TForm5;
times:LongInt;
implementation
uses DataMod;
{$R *.dfm}
procedure TForm5.NewVopros;
begin
CheckListBox1.Items.Clear;
DM1.ClientDataSetVariant.First;
While Not DM1.ClientDataSetVariant.Eof do
begin
CheckListBox1.Items.Add(DM1.ClientDataSetVariant.FieldValues['OTVET']);
DM1.ClientDataSetVariant.Next;
end;
inc(KolvoVopros);
end;
Procedure TForm5.Time_Out;
begin
if DM1.ClientDataSetVopros.FieldValues['TIME_OUT']<>0 then
begin
Times:=60*DM1.ClientDataSetVopros.FieldValues['TIME_OUT'];
Timer1.Interval:=60*DM1.ClientDataSetVopros.FieldValues['TIME_OUT']*1000;
Timer2.Interval:=1000;
Label3.Caption:='Осталось времени: '
+IntToStr(Times)
+' секунд';
Timer1.Enabled:=True;
Timer2.Enabled:=True;
end else
begin
Timer1.Interval:=0;
Timer2.Interval:=0;
end;
end;
Procedure TForm5.RandomVopros;
var NomVopros:Integer;
begin
Randomize;
repeat
NomVopros:=Random(DM1.ClientDataSetVopros.RecordCount)+1;
DM1.ClientDataSetVopros.RecNo:=NomVopros;
until RecNom[DM1.ClientDataSetVopros.RecNo]=0;
RecNom[DM1.ClientDataSetVopros.RecNo]:=DM1.ClientDataSetVopros.RecNo;
end;
procedure TForm5.FormCreate(Sender: TObject);
begin
RandomVopros;
NewVopros;
Time_Out;
NeVernoOtv:=0;
VernoOtv:=0;
end;
procedure TForm5.Button1Click(Sender: TObject);
var i:integer;
Est:Integer;
begin
Timer1.Enabled:=False;
Timer2.Enabled:=False;
for i:=0 to CheckListBox1.Items.Count-1 do
begin
if CheckListBox1.Checked[i] then
begin
DM1.ClientDataSetVariant.RecNo:=i+1;
if Boolean(DM1.ClientDataSetVariant.FieldValues['VERNO']) then inc(VernoOtv)
else inc(NeVernoOtv);
end;
Label1.Caption:=IntToStr(VernoOtv)+'\'+IntToStr(NeVernoOtv);
end;
if KolvoVopros<>Vopros_Count then
begin
RandomVopros;
NewVopros;
Time_Out;
end
else begin
try
DM1.ConnectionBroker1.AppServer.Ocenka(ID_PREDMET,
ID_TEMA,Vopros_Count,VernoOtv,NeVernoOtv,Est);
except
on E:Exception do
begin
MessageDLG(Format('Ошибка, нет связи с сервером: %S',[E.Message]),
mtError,[mbOK],0);
exit;
end;
end;
ShowMessage('Вопросов больше нет! Ваша оценка '+IntToStr(Est));
Close;
end;
end;
procedure TForm5.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if KolvoVopros<>Vopros_Count then Action:=caNone
else Action:=caFree;
end;
procedure TForm5.Timer1Timer(Sender: TObject);
begin
ShowMessage('Время истекло');
if KolvoVopros<>Vopros_Count then
begin
RandomVopros;
NewVopros;
Time_Out;
end
end;
procedure TForm5.Timer2Timer(Sender: TObject);
begin
dec(Times);
Label3.Caption:='Осталось времени: '
+IntToStr(Times)
+' секунд';
if (Times>0) AND (Times<=10) then MessageBeep(MB_ICONHAND);
end;
end.
Список литературы
1. «Delphi и технология COM». Н. Елманова, С. Трепалин, А. Тенцер. «Питер», 2003 год.
2. «Язык SQL: учебный курс». Л. Шкарина. «Питер», 2001 год.
3. «Телекоммуникационные системы и вычислительные сети». Б.В. Костров. «Десс», 2005 год.
4. «Delphi 5 Руководство разработчика». Том 1. С. Тейксейра, К. Пачеко. «Вильямс», 2001 год.
5. «Delphi 5 Руководство разработчика». Том 2. С. Тейксейра, К. Пачеко. «Вильямс», 2001 год.
6. «Delphi Разработка баз данных». А. Сорокин. «Питер», 2005 год.
7. «Internet information Services 5.0. Справочник администратора». У. Станек. «Русская редакция», 2002 год.
8. «Windows Server 2003. Практическое руководство по настройке сети». П. Шетка. «Наука и техника», 2006 год.
9. «Безопасность Windows Server 2003». Д. Скембрей, С. Мак-Клар. «Вильямс», 2004 год.
10. Электронная справочная система «Delphi Word» Версия 6.0.
11. Электронный справочник по функциям Windows API.
12. «COM и ActiveX в Delphi». Пономарев В. «BHV-Петербург», 2001 год.
13. «Microsoft SQL Server 2000». Е. Мамаев. «BHV-Петербург», 2004 год.
14. Технологии распределенных баз данных http://ami.nstu.ru/~vms/lecture/ lecture10/ lecture10.html.
15. InterBase 6 Embedded SQLGuide, Borland.
16. «Компьютерные сети, принципы, технологии, протоколы». В. Г. Олифер, Н.А. Олифер. «Питер», 2001 год.
17. «Протоколы Internet». С. Золотов. «BHV-Петербург», 1998 год.
18. «Основы построения сетей. Учебное руководство для специалистов MCSE». Д. Челлис, Ч. Перкинс, М. Стриб. «Лори», 1997 год.
Подобные документы
Проект реляционной базы данных "Спортивные соревнования": oпиcaние предметнoй oблacти. Организация выборки информации из БД, механизмы управления, обмен данными между серверной частью и клиентским приложением. Экономическое обосновaние внедрения проекта.
курсовая работа [5,3 M], добавлен 21.06.2011Структура данных в динамической памяти, однонаправленные списки. Разработка программного комплекса, предназначенной для хранения и предоставления пользователям данных об улицах города. Реализация данной программы при помощи метода расширения ядра.
курсовая работа [438,3 K], добавлен 11.01.2016Автоматизация процессов трудоустройства безработных; разработка приложения "DBcontrolle" для государственного учреждения "Ставропольская трудовая биржа". Управление данными в базе, триггеры. Обмен данными между серверной частью и клиентским приложением.
курсовая работа [1004,9 K], добавлен 03.07.2011Анализ методов и средств контроля доступа к файлам. Проблемы безопасности работы с файлами, средства контроля доступа ним. Идеология построения интерфейса, требования к архитектуре. Работа классов системы. Оценка себестоимости программного продукта.
дипломная работа [2,5 M], добавлен 21.12.2012Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.
курсовая работа [1,6 M], добавлен 29.05.2013Операционная система Windows фирмы Microsoft во всех ее проявлениях. Ее интерфейс как универсальный механизм управления любым приложением ОС. Свойства анимационного пользовательского интерфейса. Настройка программного продукта, его адаптация к технике ПК.
контрольная работа [50,5 K], добавлен 03.05.2009Разработка программного приложения WindowsForms для работы с базой данных на языке высокого уровня C# в автономном режиме с использованием ADO.NET. Проектирование реляционной модели базы данных, интерфейса приложения, основных функций и возможностей.
курсовая работа [4,3 M], добавлен 30.06.2015Системный анализ предметной области. Выбор инструментальных средств для создания программного обеспечения. Программирование на стороне SQL-сервера. Создание клиентского Win-приложения, пользовательский интерфейс. Физическое проектирование базы данных.
курсовая работа [3,7 M], добавлен 20.11.2013Проектирование базы данных "Менеджер". Выбор системы проектирования и реализации. Задачи, выполняемые приложением. Технические требования, предъявляемые к базе данных. Ее информационно-логическая структура. Основные принципы работы с приложением.
дипломная работа [2,5 M], добавлен 20.05.2013Проектирование серверного компонента, исполняющегося на узле кластера EMC Centera. Протокол взаимодействия компонентов, способный восстанавливаться после разрыва соединения между компонентами. Графический интерфейс пользователя для программного комплекса.
дипломная работа [1,1 M], добавлен 18.07.2014