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

📄 uiqstk.~pas

📁 Delphi编写的启光短信试题编辑平台源码
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
unit UIQSTK;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, DBCtrls, StdCtrls, Grids, DBGrids, ExtCtrls, ComObj,
  DBTables, DB, MemDS, DBAccess, Ora, Gauges, ComCtrls, ADODB;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    DBGrid2: TDBGrid;
    OraSession1: TOraSession;
    DataSource2: TDataSource;
    OQueryST: TOraQuery;
    ListBox1: TListBox;
    OQuerySTLX: TOraQuery;
    Splitter1: TSplitter;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Label1: TLabel;
    Edit5: TEdit;
    Label2: TLabel;
    Memo2: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button8: TButton;
    Label3: TLabel;
    DBNavigator1: TDBNavigator;
    Edit6: TEdit;
    ComboBox1: TComboBox;
    Label8: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Label7: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    BtnCancel: TButton;
    BtnDelet: TButton;
    BtnEdit: TButton;
    BtnInsert: TButton;
    OpenDialog1: TOpenDialog;
    DataSource1: TDataSource;
    TabSheet2: TTabSheet;
    Label9: TLabel;
    Gauge1: TGauge;
    Button4: TButton;
    Button5: TButton;
    DBGrid1: TDBGrid;
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    ComboBox2: TComboBox;
    Label10: TLabel;
    Splitter2: TSplitter;
    OQuerySTF_STXH: TIntegerField;
    OQuerySTF_LXBH: TStringField;
    OQuerySTF_LXMC: TStringField;
    OQuerySTF_STNR: TStringField;
    OQuerySTF_STDAA: TStringField;
    OQuerySTF_STDAB: TStringField;
    OQuerySTF_STDAC: TStringField;
    OQuerySTF_STDAD: TStringField;
    OQuerySTF_STDAZ: TStringField;
    Button3: TButton;
    procedure FormShow(Sender: TObject);
    procedure BtnInsertClick(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    function CutString(cha: char;Str: String;leftorright: Integer; PushNull: Boolean):string;
    procedure STEditClear;
    procedure STLXEditClear;
    procedure STEditReadOnly(readOnly: Boolean);
    procedure STLXEditReadOnly(readOnly: Boolean);
    procedure STKRefeshData;
    procedure STLXRefeshData;
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit3KeyPress(Sender: TObject; var Key: Char);
    procedure OQuerySTAfterScroll(DataSet: TDataSet);
    procedure BtnEditClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure BtnDeletClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    F_KLXBH: string;
    F_STXH: Integer;
    F_STNR: string;
    F_STDAA: string;
    F_STDAB: string;
    F_STDAC: string;
    F_STDAD: string;
    F_STDAZ: string;
    F_LLXBH: string;
    F_LXMC: string;
    F_BZ: string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
    STKRefeshData;
    STLXRefeshData;
end;

procedure TForm1.BtnInsertClick(Sender: TObject);
var
    Sql:String;
    strtemp: String;
begin
    if Edit6.Text = '' then
    begin
        Application.MessageBox('试题内容不能为空','注意',MB_OK or MB_ICONINFORMATION);
        exit;
    end;
    if ComboBox1.Text = '' then
    begin
        Application.MessageBox('试题类型不能为空','注意',MB_OK or MB_ICONINFORMATION);
        exit;
    end;
    if Edit1.Text = '' then
    begin
        Application.MessageBox('答案A不能为空','注意',MB_OK or MB_ICONINFORMATION);
        exit;
    end;
    if Edit2.Text = '' then
    begin
        Application.MessageBox('答案B不能为空','注意',MB_OK or MB_ICONINFORMATION);
        exit;
    end;
    if not(RadioButton1.Checked or RadioButton2.Checked or RadioButton3.Checked or RadioButton4.Checked) then
    begin
        Application.MessageBox('正确答案不能为空','注意',MB_OK or MB_ICONINFORMATION);
        exit;
    end;
    with OQuerySTLX do
    begin
        strtemp:=CutString('(',ComboBox1.Text,1,true);
        Close;
        SQL.Text:='select F_STXH from SMTEST.D_IQSTK where (F_STNR = '''+Edit6.Text+''') and (F_LXBH = '''+strtemp+''')';
        ExecSQL;
        if OQuerySTLX.RecNo <> 0 then
        begin
            Application.MessageBox('试题内容重复,请重新输入题目','提示',MB_OK or MB_ICONINFORMATION);
            Exit;
        end;
    end;
    with OQuerySTLX do
    begin
        Close;
        SQL.Text:='select * from SMTEST.D_IQSTK';
        ExecSQL;
        if RecNo <> 0 then
        begin
            Close;
            SQL.Text:='select max(F_STXH) as STNo from SMTEST.D_IQSTK';
            ExecSQL;
            if OQuerySTLX.RecNo <> 0 then
                F_STXH:=Fieldbyname('STNo').asinteger+1
            else
                F_STXH:=1;
        end
        else
        begin
             F_STXH:=1;
        end;
    end;
    F_STNR:=Edit6.Text;
    F_KLXBH:=CutString('(',ComboBox1.Text,1,true);
    F_STDAA:=Edit1.Text;
    F_STDAB:=Edit2.Text;
    F_STDAC:=Edit3.Text;
    F_STDAD:=Edit4.Text;
    if RadioButton1.Checked then
        F_STDAZ:='A'
    else if RadioButton2.Checked then
        F_STDAZ:='B'
    else if RadioButton3.Checked then
        F_STDAZ:='C'
    else if RadioButton4.Checked then
        F_STDAZ:='D';
    with OQueryST do
    begin
        try
            Close;
            SQL.Text:='insert into SMTEST.D_IQSTK (F_LXBH,F_STXH,F_STNR,F_STDAA,F_STDAB,F_STDAC,F_STDAD,F_STDAZ) values '+
             '('''+F_KLXBH+''','+IntToStr(F_STXH)+','''+F_STNR+''','''+
             F_STDAA+''','''+F_STDAB+''','''+F_STDAC+''','''+F_STDAD+''','''+F_STDAZ+''')';
            ExecSQL;
        except
            Application.MessageBox('新增失败','注意',MB_OK or MB_ICONINFORMATION);
            exit;
        end;
        Application.MessageBox('保存成功','注意',MB_OK or MB_ICONINFORMATION);
        STKRefeshData;
        STEditClear;
    end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
    StrLXBH: String;
begin
    if ListBox1.SelCount<>0 then
    begin
        if ListBox1.Items.Strings[ListBox1.ItemIndex]='显示全部试题记录' then
        begin
            STKRefeshData;
        end
        else
        begin
            StrLXBH:=CutString('(',ListBox1.Items.Strings[ListBox1.ItemIndex],1,true);
            if not OraSession1.Connected then
                OraSession1.Connected:=true;
            with OQuerySTLX do
            begin
                Close;
                SQL.Text:='select F_LXMC,F_BZ from SMTEST.D_IQSTLX where (F_LXBH = '''+StrLXBH+''')';
                Open;
                Edit5.Text:=Fieldbyname('F_LXMC').AsString;
                Memo2.Lines.Text:=Fieldbyname('F_BZ').AsString;
            end;
            with OQueryST do
            begin
                Close;
                SQL.Text:='select ST.F_STXH,STLX.F_LXBH,STLX.F_LXMC,ST.F_STNR,'+
                        'ST.F_STDAA,ST.F_STDAB,ST.F_STDAC,ST.F_STDAD,ST.F_STDAZ '+
                        'from SMTEST.D_IQSTK ST,SMTEST.D_IQSTLX STLX where '+
                        '(ST.F_LXBH = STLX.F_LXBH)and(ST.F_LXBH = '+StrLXBH+')'+
                        'order by ST.F_STXH';
                Open;
            end;

        end;
    end;
end;

function TForm1.CutString(cha: char; Str: String; leftorright: Integer;
  PushNull: Boolean): string;
var
    i: Integer;
    text: WideString;
begin
    Result:=Str;
    text:=Str;
    case leftorright of
    1:  begin           //取分割符之前
            for i := 0 to length(text) do
            begin
                if char(text[i])= cha then
                begin
                    text:=copy(text,0,i-1);
                    if PushNull then
                    begin
                        text:= Trim(text);
                    end;
                    Result:=text;
                    Break;
                end;
            end;
        end;
    2:  begin           //取分割符之后
            for i := 0 to length(text) do
            begin
                if char(text[i]) = cha then
                begin
                    text:=copy(text,i+1,length(text));
                    if PushNull then
                    begin
                        text:= Trim(text);
                    end;
                    Result:=text;
                    Break;
                end;
            end;
        end;
    end;
end;

procedure TForm1.STEditClear;
begin
    Edit1.Clear;
    Edit2.Clear;
    Edit3.Clear;
    Edit4.Clear;
    Edit6.Clear;
    ComboBox1.Text:='';
end;

procedure TForm1.STLXEditClear;
begin
    Edit5.Clear;
    Memo2.Clear;
end;

procedure TForm1.STKRefeshData;
begin
    if not OraSession1.Connected then
        OraSession1.Connected:=true;
    with OQueryST do
    begin
        Close;
        SQL.Text:='select ST.F_STXH,STLX.F_LXBH,STLX.F_LXMC,ST.F_STNR,ST.F_STDAA,ST.F_STDAB,ST.F_STDAC,ST.F_STDAD,ST.F_STDAZ from SMTEST.D_IQSTK ST,SMTEST.D_IQSTLX STLX where ST.F_LXBH = STLX.F_LXBH order by ST.F_STXH';
        Open;
    end;
end;

procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
    if Key =#13 then
    begin
        Edit1.SetFocus;
    end;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

⌨️ 快捷键说明

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