⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.~pas

📁 一个很好的例子
💻 ~PAS
字号:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls,xpman, Buttons,shellapi, ExtCtrls, ToolWin,
  ComCtrls, jpeg;

type
  TF_main = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    SpeedButton7: TSpeedButton;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    SpeedButton8: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton1: TSpeedButton;
    Panel7: TPanel;
    Image1: TImage;
    StatusBar1: TStatusBar;
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure SpeedButton11MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton12MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton13MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure SpeedButton10MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton14MouseMove(Sender: TObject; Shift: TShiftState;
      X, Y: Integer);
    procedure SpeedButton9MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure SpeedButton13Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  F_main: TF_main;
  Count:integer;//考题记录号
implementation
  uses fdbc,fawe,fpar,fdata,fkao,ffan;
{$R *.dfm}

procedure TF_main.SpeedButton7Click(Sender: TObject);
begin
  Panel4.Align:=alnone;
  Panel4.Top:=panel4.Height+panel4.Top-panel5.Height;
  speedbutton7.Enabled:=False;
  speedbutton8.Enabled:=True;
end;

procedure TF_main.SpeedButton8Click(Sender: TObject);
begin
  Panel4.Align:=alclient;
  speedbutton8.Enabled:=False;
  speedbutton7.Enabled:=True;
end;

procedure TF_main.SpeedButton12Click(Sender: TObject);
begin
  Application.CreateForm(TF_awe,F_awe);
  F_awe.i:=0;
  F_awe.Timer1.Enabled:=true;
  F_awe.ShowModal;
  F_awe.Free;
end;

procedure TF_main.SpeedButton11Click(Sender: TObject);
var
  sj,i,rcount,prcount:integer;
begin
randomize;  
if application.MessageBox('是否恢复上一次的考题?','提示!',mb_yesno)=7 then//7为按下NO 按钮
begin
//删除考试数据库-------------------------------
  with  datamodule3.xkaoqy do
  begin
    close;
    sql.clear;
    sql.add('delete from xka_bio');
    execsql;
  end;
  with datamodule3.xkaoqy do
    begin
      close;
      with sql do
      begin
        clear;
        add('select*from xka_bio');
      end;
      open;
    end;
  with  datamodule3.pkaoqy do
  begin
    close;
    sql.clear;
    sql.add('delete from pka_bio');
    execsql;
  end;
  with datamodule3.pkaoqy do
    begin
      close;
      with sql do
      begin
        clear;
        add('select*from pka_bio');
      end;
      open;
    end;
//删除考试数据库-------------------------------
//*****************************************
//           选择题
//******************************************
  sj:=random(5);//sj为一个不大于5随机值
  i:=0;
  count:=0;
  rcount:=0;
  prcount:=0;
  with datamodule3 do
  begin
    treese.DataSet.First;
    while (datamodule3.treeqy.eof=false) do //查找要考的表
    begin

      if rcount=strtoint(trim(datamodule3.parse.DataSet.Fields[5].AsString)) then
          break; //showmessage();
      if (trim(treese.DataSet.Fields[2].asstring)='1')   then//值为1是在考试范围内的表
      begin//找到表打开表
        carqy.Close;
        carqy.sql.clear;
        carqy.SQL.Add('select*from'+' '+trim(treese.DataSet.Fields[3].asstring));
        carqy.Open;
        //查找合适的记录
        while (datamodule3.carqy.eof=false) do
        begin
          count:=count+1;
          if rcount=strtoint(trim(datamodule3.parse.DataSet.Fields[5].AsString)) then
            break;
          if (trim(carse.DataSet.Fields[8].AsString)<>'1') and ((trim(carse.DataSet.Fields[7].AsString)<>'是') and (trim(carse.DataSet.Fields[7].AsString)<>'否'))  then
          begin// 形成新表
            with  xkaoqy do
            begin
              close;
              sql.clear;
              sql.add('insert into xka_bio values(:p0,:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8,:p9)');
              parameters[0].Value:=inttostr(rcount+1);
              parameters[1].Value:=carse.DataSet.Fields[1].AsString;
              parameters[2].Value:=carse.DataSet.Fields[2].AsString;
              parameters[3].Value:=carse.DataSet.Fields[3].AsString;
              parameters[4].Value:=carse.DataSet.Fields[4].AsString;
              parameters[5].Value:=carse.DataSet.Fields[5].AsString;
              if trim(carse.DataSet.Fields[6].asstring)<>'' then
              parameters[6].Assign(carse.DataSet.Fields[6]);
              parameters[7].Value:=carse.DataSet.Fields[7].AsString;
              execsql;
              carqy.Edit;
              carse.DataSet.Fields[8].AsString:='1';//查找过的记录用1标记
              carqy.Post;
            end;
             with xkaoqy do
               begin
                close;
                with sql do
                begin
                clear;
                add('select*from xka_bio');
                end;
                open;
               end;
          end;
          if trim(datamodule3.parse.DataSet.Fields[1].AsString)='1' then//1为在参数表中设置的随机出题
            for i:=0 to sj do//随机查找记录
            datamodule3.carqy.Next
           else
            datamodule3.carqy.Next;
          rcount:=datamodule3.xkaose.DataSet.RecordCount;
        end;
      end;
     datamodule3.treeqy.Next;
    end;
    if datamodule3.xkaose.DataSet.RecordCount<strtoint(trim(datamodule3.parse.DataSet.Fields[5].AsString)) then
      application.MessageBox('选择题库题不够。','提示',mb_ok);
  end;
  //*****************************************
  //            判断题
  //******************************************
  with datamodule3 do
  begin
  count:=0;
    treese.DataSet.First;
    while (datamodule3.treeqy.eof=false) do //查找要考的表
    begin
      if prcount=strtoint(trim(datamodule3.parse.DataSet.Fields[4].AsString)) then
          break;
      if (trim(treese.DataSet.Fields[2].asstring)='1')   then//值为1是在考试范围内的表
      begin//找到表打开表
        carqy.Close;
        carqy.sql.clear;
        carqy.SQL.Add('select*from'+' '+trim(treese.DataSet.Fields[3].asstring));
        carqy.Open;
        //查找合适的记录
        while (datamodule3.carqy.eof=false) do
        begin
        count:=count+1;
           if prcount=strtoint(trim(datamodule3.parse.DataSet.Fields[4].AsString)) then
          break;
          if (trim(carse.DataSet.Fields[8].AsString)<>'1') and ((trim(carse.DataSet.Fields[7].AsString)='是') or (trim(carse.DataSet.Fields[7].AsString)='否')) then
          begin// 形成新表
            with  pkaoqy do
            begin
              close;
              sql.clear;
              sql.add('insert into pka_bio values(:p0,:p1,:p2,:p3,:p4,:p5)');
              parameters[0].Value:=inttostr(prcount+1);
              parameters[1].Value:=carse.DataSet.Fields[1].AsString;
              if trim(carse.DataSet.Fields[6].asstring)<>'' then
              parameters[2].Assign(carse.DataSet.Fields[6]);
              parameters[3].Value:=carse.DataSet.Fields[7].AsString;
              parameters[4].Value:=carse.DataSet.Fields[8].AsString;
              execsql;
              carqy.Edit;
              carse.DataSet.Fields[8].AsString:='1';//查找过的记录用1标记
              carqy.Post;
            end;
            with pkaoqy do
               begin
                close;
                with sql do
                begin
                clear;
                add('select*from pka_bio');
                end;
                open;
               end;
          end;
          if trim(datamodule3.parse.DataSet.Fields[1].AsString)='1' then//1为在参数表中设置的随机出题
            for i:=0 to sj do//随机查找记录
              datamodule3.carqy.Next
            else
              datamodule3.carqy.Next;
          prcount:=datamodule3.pkaose.DataSet.RecordCount;
        end;
      end;
     datamodule3.treeqy.Next;
    end;
    if datamodule3.pkaose.DataSet.RecordCount<strtoint(trim(datamodule3.parse.DataSet.Fields[4].AsString)) then
      application.MessageBox('判断题库题不够。','提示',mb_ok);
  end;
end;
   Application.CreateForm(TF_kao,F_kao);
   F_kao.ShowModal;
   F_kao.Free;
end;

procedure TF_main.SpeedButton9Click(Sender: TObject);
begin
  Application.CreateForm(TF_dbc,f_dbc);
  F_dbc.ShowModal;
  F_dbc.Free;
end;

procedure TF_main.SpeedButton10Click(Sender: TObject);
begin
  Application.CreateForm(TF_fan,F_fan);
  F_fan.ShowModal;
  F_fan.Free;
end;

procedure TF_main.SpeedButton14Click(Sender: TObject);
begin
  Application.CreateForm(TF_par,F_par);
  if  trim(datamodule3.parse.DataSet.Fields[1].AsString)='0' then
    F_par.RadioButton1.Checked:=true;
  if  trim(datamodule3.parse.DataSet.Fields[1].AsString)='1' then
    F_par.RadioButton2.Checked:=true;
    F_par.ShowModal;
  F_par.Free;
end;

procedure TF_main.SpeedButton1Click(Sender: TObject);
begin
  close;
end;

procedure TF_main.FormShow(Sender: TObject);
begin
  statusbar1.Panels[1].Text:='今天日期:'+datetostr(date());
  speedbutton8.Enabled:=false;
end;

procedure TF_main.SpeedButton11MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton11.Font.Color:=clred
  else
    Speedbutton11.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton12MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton12.Font.Color:=clred
  else
    Speedbutton12.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton13MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton13.Font.Color:=clred
  else
    Speedbutton13.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton1MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton1.Font.Color:=clred
  else
    Speedbutton1.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton10MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton10.Font.Color:=clred
  else
    Speedbutton10.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton14MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton14.Font.Color:=clred
  else
    Speedbutton14.Font.Color:= clblack;
end;

procedure TF_main.SpeedButton9MouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if  (60<x) and (x<140) and (20<y) and (y< 30) then
    Speedbutton9.Font.Color:=clred
  else
    Speedbutton9.Font.Color:= clblack;
end;

procedure TF_main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if application.MessageBox('是否退出?','提示!',mb_yesno)=7 then
    canclose:=false;
end;

procedure TF_main.SpeedButton13Click(Sender: TObject);
begin
  Application.HelpFile:='help.hlp';
  Application.HelpCommand(help_finder,0);
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -