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

📄 maintainfrm.pas

📁 《Delphi实例开发教程》源代码包说明
💻 PAS
字号:
unit MaintainFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, Mask, ExtCtrls, ComCtrls,
  CheckLst, Buttons;

type
  TfrmMaintain = class(TForm)
    cbID: TComboBox;
    cbTimelimit: TComboBox;
    clbWebtype: TCheckListBox;
    clbEngine: TCheckListBox;
    bbtnOK: TBitBtn;
    bbtnDelete: TBitBtn;
    bbtnModify: TBitBtn;
    lblEngine: TLabel;
    lblTimelimit: TLabel;
    lblID: TLabel;
    bbtnCancel: TBitBtn;
    lblKeyword: TLabel;
    edtKeyword1: TEdit;
    edtKeyword2: TEdit;
    edtKeyword3: TEdit;
    procedure ClearKeyword;
    procedure RestoreKeyword;
    procedure GetKeyword;
    procedure CustomChange;
    procedure UndoCustomChange;
    procedure FormShow(Sender: TObject);
    procedure cbIDChange(Sender: TObject);
    procedure GetCustom;
    procedure FormCreate(Sender: TObject);
    procedure bbtnOKClick(Sender: TObject);
    procedure leKeywordKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure clbWebtypeClickCheck(Sender: TObject);
    procedure cbTimelimitEnter(Sender: TObject);
    procedure clbEngineClickCheck(Sender: TObject);
    procedure leSystimeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure leMaxamountKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RefreshtvIDList;
    procedure bbtnModifyClick(Sender: TObject);
    procedure bbtnDeleteClick(Sender: TObject);
    procedure bbtnCancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure edtKeyword1Change(Sender: TObject);
    procedure edtKeyword2Change(Sender: TObject);
    procedure edtKeyword3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMaintain: TfrmMaintain;
  Modify: Boolean;
  Keyword: string;
  
implementation

uses MainFrm, CustomSearchFrm, InputFra;

{$R *.dfm}

//清空关键字
procedure TfrmMaintain.ClearKeyword;
begin
  edtKeyword1.Text:='';
  edtKeyword2.Text:='';
  edtKeyword3.Text:='';
end;

//还原关键字
procedure TfrmMaintain.RestoreKeyword;
var
  Temp:string;
begin
  Temp:=Keyword;

  //如果不止一个关键字,则还原第一个关键字并继续
  if Pos('%2B',Temp)<>0 then
    edtKeyword1.Text:=Copy(Temp,1,Pos('%2B',Temp)-1)
  //否则还原后退出
  else
  begin
    edtKeyword1.Text:=Temp;
    Exit;
  end;

  //截取第二个关键字后面的字符串
  Temp:=Copy(Temp,Pos('%2B',Temp)+3,Length(Temp));
  //如果不止两个关键字,则还原第二个关键字并继续
  if Pos('%2B',Temp)<>0 then
    edtKeyword2.Text:=Copy(Temp,1,Pos('%2B',Temp)-1)
  //否则还原后退出
  else
  begin
    edtKeyword2.Text:=Temp;
    Exit;
  end;

  //截取第三个关键字后面的字符串
  Temp:=Copy(Temp,Pos('%2B',Temp)+3,Length(Temp));
  //还原第三个关键字
  edtKeyword3.Text:=Temp;
end;

//获取关键字
procedure TfrmMaintain.GetKeyword;
begin
  //获取第一个关键字
  Keyword:=edtKeyword1.Text;
  //获取第二个关键字
  if edtKeyword2.Text<>'' then
  begin
    //Keyword不为空则加上%2B
    if Keyword<>'' then
      Keyword:=Keyword+'%2B';
    Keyword:=Keyword+edtKeyword2.Text;
  end;
  //获取第三个关键字
  if edtKeyword3.Text<>'' then
  begin
    //Keyword不为空则加上%2B
    if Keyword<>'' then
      Keyword:=Keyword+'%2B';
    Keyword:=Keyword+edtKeyword3.Text;
  end;
end;

//定制为修改状态
procedure TfrmMaintain.CustomChange;
begin
  Modify:=true;
  bbtnModify.Enabled:=true;
end;

//定制为非修改状态
procedure TfrmMaintain.UndoCustomChange;
begin
  Modify:=false;
  bbtnModify.Enabled:=false;
end;

procedure TfrmMaintain.GetCustom;
begin          
  //清空列表
  cbID.Clear;
  //读取所有ID,并按系统时间排序
  with frmMain do
    with frmMain.AdoqCustom do
    begin
      //MyExecSQL(qryCustom,'select * from Custom order by Systime Desc');
      MyExecSQL(AdoqCustom,'select * from Custom order by Systime Desc');
      First;
      cbID.Clear;
      while not Eof do
      begin
        cbID.Items.Add(Fieldbyname('ID').AsString);
        next;
      end;
      cbID.ItemIndex:=FrmCustomSearch.fraInput.tvIDList.Selected.Index;

      //如果没有记录则禁用修改和删除按钮
      if RecordCount=0 then
      begin
        bbtnModify.Enabled:=False;
        bbtnDelete.Enabled:=False;
      end
      //否则禁用修改和启用删除按钮
      else
      begin
        bbtnModify.Enabled:=False;
        bbtnDelete.Enabled:=True;
      end
    end;
end;

procedure TfrmMaintain.FormShow(Sender: TObject);
begin
  //获取用户定制数据
  GetCustom;
  cbIDChange(nil);
end;

procedure TfrmMaintain.cbIDChange(Sender: TObject);
begin

  with frmMain do
    //查找ID信息
 //   with qryCustom do
    with frmMain.AdoqCustom do
    begin
      //MyExecSQL(frmMain.qryCustom,'select * from custom where ID='''+cbID.Text+'''');
      MyExecSQL(frmMain.AdoqCustom,'select * from custom where ID='''+cbID.Text+'''');

      //显示关键字
      ClearKeyword;
      Keyword:=Fieldbyname('Keyword').AsString;
      RestoreKeyword;

      //显示网站类型
      RestoreList(clbWebtype,Fieldbyname('Webtype').AsInteger);

      //显示超时限制
      cbTimelimit.ItemIndex:=fieldbyname('TimeLimit').AsInteger-TimeLimitMin;

      //显示搜索引擎
      RestoreList(clbEngine,Fieldbyname('Engine').AsInteger);

    end;

  UndoCustomChange;
end;

procedure TfrmMaintain.FormCreate(Sender: TObject);
var
  i:integer;
begin
  //对超时限制编辑框设定范围
  for i:=TimeLimitMin to TimeLimitMax do
    cbTimelimit.Items.Add(inttostr(i));
end;

procedure TfrmMaintain.bbtnOKClick(Sender: TObject);
var
  Msg:string;
begin
  //曾经修改过
  if Modify then
  begin
    //提示是否要保存
    Msg:='您修改过定制信息'+#13+#13+'要保存修改吗?';
    if MessageDlg(Msg,mtWarning,[mbYes,mbNo],0)=mrYes then
      bbtnModifyClick(nil);
  end;

  //修改未成功
  if not(Modify) then
  begin
    UndoCustomChange;
    frmMaintain.Close;
    frmCustomSearch.fraInput.tvIDList.FullExpand;
  end;
end;

procedure TfrmMaintain.leKeywordKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  CustomChange;
end;

procedure TfrmMaintain.clbWebtypeClickCheck(Sender: TObject);
begin
  CustomChange;
end;

procedure TfrmMaintain.cbTimelimitEnter(Sender: TObject);
begin
  CustomChange;
end;

procedure TfrmMaintain.clbEngineClickCheck(Sender: TObject);
begin
  CustomChange;
end;

procedure TfrmMaintain.leSystimeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  CustomChange;
end;

procedure TfrmMaintain.leMaxamountKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  CustomChange;
end;

//刷新列表树
procedure TfrmMaintain.RefreshtvIDList;
begin
  frmCustomSearch.fraInput.tvIDList.AutoExpand:=False;
  frmCustomSearch.fraInput.tvIDList.AutoExpand:=True;
end;

//修改定制
procedure TfrmMaintain.bbtnModifyClick(Sender: TObject);
var
  Msg,SQLString:string;
  num:Integer;
  RecCnt:Integer;
begin

  //判断用户输入是否正确

  //检查关键字
  if (edtKeyWord1.Text='') and (edtKeyWord2.Text='') and (edtKeyWord3.Text='') then
  begin
    ShowMessage('关键字不能为空!');
    edtKeyWord1.SetFocus;
    Exit;
  end;

  //检查网站类型
  frmMain.GetList(clbWebtype,num);
  if num=0 then
  begin
    ShowMessage('请选择至少一个网站类型!');
    clbWebtype.SetFocus;
    Exit;
  end;

  //检查搜索引擎
  frmMain.GetList(clbEngine,num);
  if num=0 then
  begin
    ShowMessage('请选择至少一个搜索引擎!');
    clbEngine.SetFocus;
    Exit;
  end;

  with frmMain do
   // with qryCustom do
    with frmMain.AdoqCustom do
    begin

      //查询定制有无相应搜索记录
      SQLString:='select * from info where ID='+quotedstr(cbID.Text);
      // MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      RecCnt:=RecordCount;
      SQLString:='select * from temp where ID='+quotedstr(cbID.Text);
      // MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      RecCnt:=RecCnt+RecordCount;

      if RecCnt>0 then
        Msg:='将删除数据库中对应的搜速结果信息'+#13+#13+'确定要继续吗?'
      else
        Msg:='确定要继续吗?';
      if MessageDlg(Msg,mtWarning,[mbYes,mbNo],0)=mrNo then
        Exit;

      //如果定制有相应搜索记录,则删除记录
      if RecCnt>0 then
      begin
        SQLString:='select * from info where ID='+quotedstr(cbID.Text);
        // MyExecSQL(qryCustom,SQLString);
        MyExecSQL(AdoqCustom,SQLString);
        First;
        while not(Eof) do
          Delete;
        SQLString:='select * from temp where ID='+quotedstr(cbID.Text);
        // MyExecSQL(qryCustom,SQLString);
        MyExecSQL(AdoqCustom,SQLString);
        First;
        while not(Eof) do
          Delete;
      end;

      //修改定制
      SQLString:='select * from custom where ID='+quotedstr(cbID.Text);
     //  MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      Edit;
      GetKeyword;
      FieldByName('KeyWord').AsString:=KeyWord;
      FieldByName('TimeLimit').AsInteger:=StrToInt(cbTimelimit.Text);
      GetList(clbEngine,num);
      FieldByName('Engine').AsInteger:=num;
      Getlist(clbWebType,num);
      FieldByName('WebType').AsInteger:=num;
      Post;
    end;
  ShowMessage('修改成功!');
  RefreshtvIDList;
  UndoCustomChange;
end;

//删除定制
procedure TfrmMaintain.bbtnDeleteClick(Sender: TObject);
var
  Msg,SQLString:string;
  RecCnt:Integer;
begin    
  with frmMain do
   // with qryCustom do
    with frmMain.AdoqCustom do
    begin

      //查询定制有无相应搜索记录
      SQLString:='select * from info where ID='+quotedstr(cbID.Text);
      // MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      RecCnt:=RecordCount;
      SQLString:='select * from temp where ID='+quotedstr(cbID.Text);
      // MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      RecCnt:=RecCnt+RecordCount;

      if RecCnt>0 then
        Msg:='将删除数据库中对应的搜速结果信息'+#13+#13+'确定要继续吗?'
      else
        Msg:='确定要继续吗?';
      if MessageDlg(Msg,mtWarning,[mbYes,mbNo],0)=mrNo then
        Exit;

      //如果定制有相应搜索记录,则删除记录
      if RecCnt>0 then
      begin
        SQLString:='select * from info where ID='+quotedstr(cbID.Text);
        // MyExecSQL(qryCustom,SQLString);
        MyExecSQL(AdoqCustom,SQLString);
        First;
        while not(Eof) do
          Delete;
        SQLString:='select * from temp where ID='+quotedstr(cbID.Text);
        // MyExecSQL(qryCustom,SQLString);
        MyExecSQL(AdoqCustom,SQLString);
        First;
        while not(Eof) do
          Delete;
      end;

      //删除定制
      SQLString:='select * from Custom where ID='+quotedstr(cbID.Text);
     //  MyExecSQL(qryCustom,SQLString);
      MyExecSQL(AdoqCustom,SQLString);
      Delete;
    end;
  Showmessage('删除成功!');
  RefreshtvIDList;
  FormShow(nil);
  //获取用户定制数据
  GetCustom;
  cbIDChange(nil);
end;

procedure TfrmMaintain.bbtnCancelClick(Sender: TObject);
begin
  frmMaintain.Close;
end;

procedure TfrmMaintain.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  frmCustomSearch.rbSelectClick(nil);
end;

procedure TfrmMaintain.edtKeyword1Change(Sender: TObject);
begin
  CustomChange;
end;

procedure TfrmMaintain.edtKeyword2Change(Sender: TObject);
begin
  CustomChange;
end;

procedure TfrmMaintain.edtKeyword3Change(Sender: TObject);
begin
  CustomChange;
end;

end.

⌨️ 快捷键说明

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