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

📄 bjst_p.pas

📁 毕业设计!!!! 本人喜欢共享东西,希望大家能够喜欢啊,希望对你们有用的,也希望下载些对自己有用的东西.
💻 PAS
字号:
unit bjst_p;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Buttons, StdCtrls, Spin, DBCtrls, DB, DBClient, hwkdbtree,
  ComCtrls, RVScroll, RichView, RVEdit, ADODB, DBTables;

type
  Tf_bjst = class(TForm)
    Panel1: TPanel;
    bt1: TSpeedButton;
    bt2: TSpeedButton;
    bt4: TSpeedButton;
    bt3: TSpeedButton;
    bt6: TSpeedButton;
    bt5: TSpeedButton;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    df1: TSpinEdit;
    df2: TSpinEdit;
    df3: TSpinEdit;
    df4: TSpinEdit;
    cds: TClientDataSet;
    dbng: TDBNavigator;
    DataSource1: TDataSource;
    chk1: TRadioButton;
    chk2: TRadioButton;
    chk3: TRadioButton;
    Label5: TLabel;
    Label6: TLabel;
    tv: Thwkdbtree;
    cds1: TClientDataSet;
    rve: TRichViewEdit;
    Label7: TLabel;
    procedure readdata(kcfw:string);
    procedure ftree;
    procedure enedit;
    procedure unedit;
    procedure bt6Click(Sender: TObject);
    procedure bt1Click(Sender: TObject);
    procedure bt2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure tvClick(Sender: TObject);
    procedure bt4Click(Sender: TObject);
    procedure bt5Click(Sender: TObject);
    procedure cdsAfterScroll(DataSet: TDataSet);
    procedure bt3Click(Sender: TObject);
    procedure cdsAfterOpen(DataSet: TDataSet);
  private
    sSql:string;
    stbh:integer;
    sts,stnd:smallint;
    vrt,vrt1:olevariant;
    inrtm,outrtm:tmemorystream;
//    Strm:TadoblobStream;
  public
    { Public declarations }
  end;

var
  f_bjst: Tf_bjst;

implementation

{$R *.dfm}

uses main_p, dm_p;

procedure Tf_bjst.readdata(kcfw:string);
begin
   sSql:='select stbh,kcfw,stnd from k_stb where tkbh='+inttostr(f_main.tkbh)+' and kcfw like '''+kcfw+'%'' order by kcfw,stbh';
   dm.skc.AppServer.getdata(sSql,vrt);
   cds.close;
   cds.Data:=vrt;
   if cds.IsEmpty then
   begin
      stbh:=-2;
      rve.Clear;
      rve.Format;
   end;
//   cds.AfterScroll(cds);
end;

procedure Tf_bjst.ftree;
begin
    tv.FillTree(nil,'',f_main.tkmc);
    tv.Update;
    sSql:='select kcfw,fwmc from k_stfwb where tkbh='+inttostr(f_main.tkbh)+' order by kcfw';
    dm.skc.AppServer.getdata(sSql,vrt);
    sts:=3;
    cds1.DisableControls;
    cds1.close;
    cds1.Data:=vrt;
    tv.Active:=false;
//    tv.AutoClear:=true;
    tv.DataSet:=cds1;
    tv.Active:=true;
    tv.DataSet:=nil;
    cds1.Close;
    sts:=0;
end;

procedure Tf_bjst.enedit;
begin
   bt1.Enabled:=false;
   bt2.Enabled:=false;
   bt3.Enabled:=false;
   bt4.Enabled:=true;
   bt5.Enabled:=true;
   dbng.Enabled:=false;
   rve.ReadOnly:=false;
   chk1.Enabled:=true;
   chk2.Enabled:=true;
   chk3.Enabled:=true;
   df1.Enabled:=true;
   df2.Enabled:=true;
   df3.Enabled:=true;
   df4.Enabled:=true;
   rve.SetFocus;
end;

procedure Tf_bjst.unedit;
begin
   bt1.Enabled:=true;
   bt2.Enabled:=true;
   bt3.Enabled:=true;
   bt4.Enabled:=false;
   bt5.Enabled:=false;
   dbng.Enabled:=true;
   rve.ReadOnly:=true;
   chk1.Enabled:=false;
   chk2.Enabled:=false;
   chk3.Enabled:=false;
   df1.Enabled:=false;
   df2.Enabled:=false;
   df3.Enabled:=false;
   df4.Enabled:=false;
   sts:=0;
end;

procedure Tf_bjst.bt6Click(Sender: TObject);
begin
   close;
end;

procedure Tf_bjst.bt1Click(Sender: TObject);
begin
//添加试题
   if tv.Selected=nil then
   begin
      application.MessageBox('请选择所属章节、知识点!','提示信息',48);
      exit;
   end;
   sts:=1;
   enedit;
end;

procedure Tf_bjst.bt2Click(Sender: TObject);
begin
//修改
   if cds.IsEmpty then exit;
   if tv.Selected=nil then
   begin
      application.MessageBox('请选择所属章节、知识点!','提示信息',48);
      exit;
   end;
   sts:=2;
   enedit;
end;

procedure Tf_bjst.FormShow(Sender: TObject);
begin
    inrtm:=tmemorystream.Create;
    outrtm:=tmemorystream.Create;
    unedit;
    ftree;
    if tv.Items.Count>0 then
    begin
       tv.Selected:=tv.Items[0];
       tv.OnClick(self);
    end;
//    readdata('');
end;

procedure Tf_bjst.FormDestroy(Sender: TObject);
begin
   cds.Close;
   cds1.Close;
   inrtm.Free;
   outrtm.Free;
end;

procedure Tf_bjst.tvClick(Sender: TObject);
begin
   if sts>0 then exit;
   if tv.Items.Count>0 then
   begin
      readdata(tv.KeyString);
   end;
end;

procedure Tf_bjst.bt4Click(Sender: TObject);
var s:string;
    stbh:integer;
begin
//保存
  if (tv.Selected=nil) or (tv.Selected.Level=0) then
  begin
      application.MessageBox('请选择该试题所属的章节、知识点!','提示信息',48);
      exit;
  end;
  if chk1.Checked then stnd:=2 else if chk2.Checked then stnd:=1 else stnd:=0;
  rve.SaveRTFToStream(inrtm,false);
  try
     if cds1.Active=false then
     begin
        sSql:='select * from k_stb where tkbh='+inttostr(f_main.tkbh)+' and stbh=-1';
        dm.skc.AppServer.getdata(sSql,vrt1);
        cds1.close;
        cds1.Data:=vrt1;
     end;
     if sts=1 then  //添加试题
     begin
        stbh:=0;   //设为0,由后台程序进行处理
        while not cds1.IsEmpty do cds1.Delete;
        cds1.Append;
     end
     else      //修改试题
     begin
        cds1.Edit;
        stbh:=cds.fieldbyname('stbh').AsInteger;
     end;
     inrtm.Position:=0;
     cds1.FieldByName('tkbh').AsInteger:=f_main.tkbh;
     cds1.FieldByName('stbh').AsInteger:=stbh;
     cds1.FieldByName('stnd').AsInteger:=stnd;
     cds1.FieldByName('kcfw').Asstring:=tv.KeyString;
     f_main.CompressStream(inrtm,outrtm);
     outrtm.Position:=0;
     (cds1.FieldByName('stnr') as tblobfield).LoadFromStream(outrtm);
     cds1.Post;
     inrtm.Clear;
     outrtm.Clear;
     vrt:=cds1.Data;
  except
     on e:exception do
     begin
         application.MessageBox(pchar('数据处理失败!'+#13+#13+e.Message),'错误信息',16);
         exit;
     end;
  end;
  dm.skc.AppServer.addst(df1.Value,df2.Value,df3.Value,df4.Value,vrt,vrt1);
  s:=vrt1;
  if copy(s,1,1)='-' then
  begin
      cds1.Delete;
      application.MessageBox(pchar(s),'错误信息',16);
      exit;
  end;
  if sts=1 then
  begin
     cds.Append;
     cds.FieldByName('stbh').AsInteger:=strtoint(s);
     cds.FieldByName('stnd').AsInteger:=stnd;
     cds.FieldByName('kcfw').AsString:=tv.KeyString;
  end
  else
  begin
     cds.Edit;
     cds.FieldByName('stbh').AsInteger:=strtoint(s);
  end;
  cds.Post;
  unedit;
end;

procedure Tf_bjst.bt5Click(Sender: TObject);
begin
   unedit;
end;

procedure Tf_bjst.cdsAfterScroll(DataSet: TDataSet);
var strm:TStream;
begin
    if sts>0 then exit;
    if stbh=cds.FieldByName('stbh').AsInteger then exit;
    stbh:=cds.FieldByName('stbh').AsInteger;
    if cds.IsEmpty then  stbh:=-1 else stbh:=cds.fieldbyname('stbh').AsInteger;
    sSql:='select * from k_stb where tkbh='+inttostr(f_main.tkbh)+' and stbh='+inttostr(stbh);
    dm.skc.AppServer.getdata(sSql,vrt);
    cds1.Close;
    cds1.Data:=vrt;
    rve.Clear;
    rve.Format;
    if cds1.IsEmpty then
    begin
       exit;
    end;
{    if not cds.IsEmpty then
    begin
         label7.Caption:='试题数目:'+inttostr(cds.RecordCount);
    end else label7.Caption:='试题数目:0';}
    strm:=cds1.CreateBlobStream(cds1.FieldByName('stnr'),bmRead);
    strm.Position:=0;
    inrtm.LoadFromStream(strm);
//    strm.SaveToStream(inrtm);
    inrtm.Position:=0;
    f_main.DecompressStream(inrtm,outrtm);
    outrtm.Position:=0;
//    rve.LoadRTFFromStream(strm);
    rve.LoadrtfFromStream(outrtm);
    rve.Format;
    strm.Free;
    inrtm.Clear;
    outrtm.Clear;
//    rve.Format;
end;

procedure Tf_bjst.bt3Click(Sender: TObject);
var s:string;
begin
//删除试题
   if cds.IsEmpty then exit;
   if application.MessageBox('您确定要删除该试题吗?','确认信息',4+32)<>6 then exit;
   dm.skc.AppServer.scst(f_main.tkbh,cds.FieldByName('stbh').AsInteger,vrt1);
   s:=vrt1;
   if s='0' then cds.Delete
   else application.MessageBox(pchar(s),'错误信息',16);
end;

procedure Tf_bjst.cdsAfterOpen(DataSet: TDataSet);
begin
    if not cds.IsEmpty then
    begin
         label7.Caption:='试题数目:'+inttostr(cds.RecordCount);
    end else label7.Caption:='试题数目:0';
end;

end.

⌨️ 快捷键说明

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