Разработка технологии создания дистанционных курсов на примере курса "Администрирование DB2", страница 52

  if (slaidid<>sldcnt) then MessageBox(Handle, 'У вас не осталось больше попыток. Переходите к следующему слайду','Внимание',MB_OK or MB_ICONINFORMATION)

  else begin

   cnt:=0;

   for i:=0 to sldcnt-1 do

    if results[i] then inc(cnt);

   Gauge1.Progress:=round(cnt*100/sldcnt);

   if Gauge1.Progress>60 then label9.Caption:='Поздравляем!!!! Вы успешно прошли тест!'#13#10'Кодовая фраза: I know SQL'

    else label9.Caption:='К сожалению ваш процент правильных ответов слишком низок.'#13#10'Вы не сдали тест. Нажмите кнопку меню.';

   Panel1.Show;

  end;

 end;

 if (Memo2.Text='') then begin

  MessageBox(Handle, 'Введите запрос и нажмите на кнопку с колесиком или на вкладку результат','Внимание',MB_OK);

  inproc:=false;

  exit;

 end;

 DataSource1.Enabled:=false;

 ClientDataSet1.Close;

 ClientDataSet1.CommandText:='SELECT * FROM KOSTIK.TDATA WHERE ID='+IntToStr(slaidid);

 ClientDataSet1.Open;

 DeleteBadCharacters;

 if SQLTypeTest<>-1 then begin

  ClientDataSet1.Close;

  ClientDataSet1.CommandText:=Memo2.Text;

  try

   ClientDataSet1.Open;

   DataSource1.Enabled:=true;

   except on e:exception do begin

    Memo1.Text:='При обработке запроса в СУБД DB2 возникла ошибка:'#13#10#13#10+

                e.message;

    Memo1.Visible:=true;

    DBGrid1.Visible:=false;

    if needpageChange then PageControl1.ActivePageIndex:=1;

    if tries<>0 then tries:=tries-1;

    inproc:=false;

    exit;

   end;

  end;

  Memo1.Visible:=false;

  DBGrid1.Visible:=true;

  results[slaidid-1]:=true;

 end

 else begin

  if tries<>0 then tries:=tries-1;

  Memo1.Visible:=true;

  DBGrid1.Visible:=false;

 end;

  if needpageChange then PageControl1.ActivePageIndex:=1;

 inproc:=false;

end;

procedure TSQLFormX.SpeedButton2Click(Sender: TObject);

begin

 inc(slaidid);

 if slaidid=sldcnt then SpeedButton2.Enabled:=false;

 tries:=3;

 Label2.Caption:=IntToStr(slaidid)+' из ' + IntToStr(sldcnt);

 ClientDataSet1.Close;

 ClientDataSet1.CommandText:='SELECT TASK from KOSTIK.TDATA where ID='+IntToStr(slaidid);

 ClientDataSet1.Open;

 RichEdit1.Lines.Clear;

 try

  RichEdit1.Lines.Add(ClientDataSet1.Fields[0].AsString);

 except on e:Exception do;

 end;

 ClientDataSet1.Close;

end;

procedure TSQLFormX.TabSheet2Show(Sender: TObject);

begin

 needpageChange:=false;

 SpeedButton1Click(Sender);

 needpageChange:=true;

end;

initialization

  TActiveFormFactory.Create(

    ComServer,

    TActiveFormControl,

    TSQLFormX,

    Class_SQLFormX,

    1,

    '',

    OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,

    tmApartment);

end.

Сервернаячасть

unit main;

interface

uses

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

  Dialogs, StdCtrls, Grids, ExtCtrls, Buttons, Registry, AppEvnts;

type

  TMainForm = class(TForm)

    StringGrid1: TStringGrid;

    Timer1: TTimer;

    Panel1: TPanel;

    Label1: TLabel;

    Panel2: TPanel;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    SpeedButton1: TSpeedButton;

    procedure FormShow(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure Panel1Resize(Sender: TObject);

    procedure Panel2Resize(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure SpeedButton1Click(Sender: TObject);

  private

    { Private declarations }

    FConnectionCount: LongWord;

    procedure SetConnectionCount(ConCnt:LongWord);

  public

    MyRegFile: TRegIniFile;

  protected

    procedure WndProc(Var Msg:TMessage); Override;

  published

    property ConnectionCount:LongWord read FConnectionCount write SetConnectionCount;

  end;

var

  MainForm: TMainForm;

const

 DefConStr          = 'Provider=IBMDADB2.1;Data Source=ASULR;Persist Security Info=False';

 strRegFolder       = 'MainForm';

 strRegCon          = 'Connection String';

 strRegIni          = 'DB2TestServerApp';

implementation

uses ConStrUnit, tray;

{$R *.dfm}

procedure TMainForm.SetConnectionCount(ConCnt:LongWord);

begin