📄 sitesearchfrm.pas
字号:
unit SiteSearchFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus, StdCtrls, Buttons, unitSiteSearch,
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP;
type
TfrmSiteSearch = class(TForm)
pnlControl: TPanel;
pnlDisplay: TPanel;
mSite: TMainMenu;
mmimanager: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
mmiSiteSelect: TMenuItem;
lblKeyWord: TLabel;
edtKeyWord: TEdit;
edtSite: TEdit;
lblSite: TLabel;
bbtnOK: TBitBtn;
tmRefresh: TTimer;
sbClose: TSpeedButton;
lblState: TLabel;
pnlState: TPanel;
lblTime: TLabel;
lblNum: TLabel;
pnlState3: TPanel;
pnlState2: TPanel;
pnlState1: TPanel;
idhttpSite: TIdHTTP;
procedure FormShow(Sender: TObject); //初始化(添加站点列表)
procedure N2Click(Sender: TObject); //添加站点
procedure N3Click(Sender: TObject); //整理站点
procedure N5Click(Sender: TObject); //退出
procedure bbtnOKClick(Sender: TObject);
procedure tmRefreshTimer(Sender: TObject);
procedure sbCloseClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtKeyWordKeyPress(Sender: TObject; var Key: Char);//站内搜索
private
{ Private declarations }
procedure AddSite();//添加站点列表
procedure SiteClick(Sender: TObject); //选择搜索站点
procedure Refresh;//刷新显示表
public
{ Public declarations }
end;
var
frmSiteSearch: TfrmSiteSearch;BaiduSite:TBaiduSite;
domain:string;
PastTime:integer;
Page: Integer;
implementation
uses CustomSearchFrm,MainFrm, SiteArrangementFrm, DisplayFrm, DBTables;
{$R *.dfm}
//选择搜索站点
procedure TfrmSiteSearch.SiteClick(Sender: TObject);
var Site: TMenuItem;
begin
Site:=(sender as TMenuItem);
edtSite.Text:=Site.Caption;
domain:=Site.Hint;
edtKeyWord.SetFocus;
end;
//添加站点列表
procedure TfrmSiteSearch.AddSite();
var Site: TMenuItem;
begin
mmiSiteSelect.Clear;
// with frmMain.qrySitesearch do
with frmMain.AdoqSitesearch do
begin
close;
sql.Clear;
sql.Add('select * from sitesearch order by name');
open;
while not eof do
begin
Site:= TMenuItem.Create(nil); //动态创建站点列表(子菜单)
Site.Caption:=fieldbyname('Name').AsString;
Site.Hint:=fieldbyname('domain').AsString;
Site.OnClick:=SiteClick;
mmiSiteSelect.Insert(0,Site);
next;
end;
end;
end;
//初始化(添加站点列表)
procedure TfrmSiteSearch.FormShow(Sender: TObject);
begin
//还原页数
DisplayFrm.Page:=Page;
DisplayFrm.page:=1;
lblTime.Caption:='';
lblNum.Caption:='';
lblState.Caption:='';
tmRefresh.Enabled:=false;
frmDisplay.pnlDisplay.Parent:=pnlDisplay; //页面初始化
frmDisplay.Clear;//清除显示页面(外部调用)
addsite;
if frmSiteSearch.bbtnOK.Caption='停止' then
tmRefresh.Enabled:=true;
end;
// 添加站点
procedure TfrmSiteSearch.N2Click(Sender: TObject);
var domain,SiteName,msg:string;
begin
domain:='';name:='';
while domain='' do
if inputQuery('输入域名(网址):','域名:(如http://www.sina.com.cn/) ',
domain)=false then exit;
domain:=DelSubStr(' ',domain);
while SiteName='' do
if inputQuery('输入站点名:','站点名: ',SiteName)=false then exit;
SiteName:=DelSubStr(' ',SiteName);
msg:='找不到域名链接,域名输入错误或没有连接网络,要保存吗?'+#13+'站点名:'
+sitename+#13+'域 名:'+domain+#13;
try
idhttpSite.Trace(domain);
except
if messageDlg(msg,mtConfirmation,mbOKCancel,0)=2 then exit;
end;
// with frmMain.qrySiteSearch do //添加站点入库
with frmMain.AdoqSitesearch do
begin
close;
sql.Clear;
sql.Add('select * from sitesearch ');
open;
insert;
fieldbyname('domain').AsString:=domain;
fieldbyname('name').AsString:=SiteName;
post;
end;
showmessage('站点已添加!');
AddSite(); //添加站点列表
edtKeyWord.Text:='';
edtSite.Text:='';
end;
//添加站点
procedure TfrmSiteSearch.N3Click(Sender: TObject);
begin
edtKeyWord.Text:='';
edtSite.Text:='';
frmSiteArrangement.showmodal;
AddSite(); //添加站点列表
end;
//退出
procedure TfrmSiteSearch.N5Click(Sender: TObject);
begin
// if tmRefresh.Enabled=true then bbtnOK.Click;
// edtKeyWord.Text:='';
// edtSite.Text:='';
frmSiteSearch.Close;
end;
//站内搜索
procedure TfrmSiteSearch.bbtnOKClick(Sender: TObject);
begin
if tmRefresh.Enabled=false then
begin
if edtKeyWord.Text='' then
begin
showmessage('关键字不能空');
exit;
end;
if edtSite.Text='' then
begin
showmessage('请先选择一个站点');
exit;
end;
BaiduSite:=TBaiduSite.Create;
PastTime:=0;
tmRefresh.Enabled:=true;
lblState.Caption:='正在搜索...';
lblNum.Caption:='';
lblTime.Caption:='';
frmDisplay.Clear;//清楚显示页面(外部调用)
// with frmMain.qryTemp do
with frmMain.AdoqTemp do
begin
close;
sql.Clear;
sql.Add('delete from temp where ID='+quotedstr(chr(6)));
ExecSQL;
end;
bbtnOK.Caption:='停止';
end
else
begin
lblState.Caption:='搜索被中止!';
bbtnOK.Caption:='搜索';
tmRefresh.Enabled:=false;
BaiduSite.Suspend;
BaiduSite.Terminate;
Refresh;
end;
end;
procedure TfrmSiteSearch.tmRefreshTimer(Sender: TObject);
begin
if (tag mod 3)=0 then
begin
Refresh;
end;
tag:=tag+1;
PastTime:=PastTime+1;;
lblTime.Caption:='已用时 '+inttostr(PastTime div 3600)+' 小时 '
+inttostr((PastTime mod 3600)div 60)+' 分 '
+inttostr(PastTime mod 60)+' 秒';
end;
procedure TfrmSiteSearch.Refresh;
begin
frmDisplay.Clear;
//with frmMain.qryDisplay do
with frmMain.AdoqDisplay do
begin
close;
sql.Clear;
sql.Add('select * from temp where ID='+quotedstr(chr(6)));
open;
lblNum.Caption:='已为您搜到 '+inttostr(recordcount)+' 条信息';
end;
frmDisplay.Display;
end;
procedure TfrmSiteSearch.sbCloseClick(Sender: TObject);
begin
N5Click(nil);
end;
procedure TfrmSiteSearch.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if tmRefresh.Enabled=false then
begin
edtKeyWord.Text:='';
edtSite.Text:='';
end;
tmRefresh.Enabled:=false;
//记录页数
Page:=DisplayFrm.Page;
end;
procedure TfrmSiteSearch.edtKeyWordKeyPress(Sender: TObject;
var Key: Char);
begin
if key=#13 then bbtnOKClick(nil);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -