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

📄 sitesearchfrm.pas

📁 《Delphi实例开发教程》源代码包说明
💻 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 + -