📄 maintainfrm.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 + -