📄 search_frm.pas
字号:
unit search_Frm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,
JvExComCtrls, JvComCtrls, JvCheckTreeView,cxTL,uOpml,uFeed,MProperties;
type
TfmSearch = class(TForm)
Label1: TLabel;
Button1: TButton;
AutoCloseBox: TCheckBox;
Button4: TButton;
CheckTreeView1: TJvCheckTreeView;
Edit1: TEdit;
procedure FormShow(Sender: TObject);
procedure CheckTreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure AutoCloseBoxClick(Sender: TObject);
private
root:TTreeNode;
procedure LoadToTree(rNode:TTreeNode;sNode:TcxTreeListNode);
procedure Search(cnode:TTreeNode);
procedure SearchFeedItem(FeedItem:TFeedItem);
{ Private declarations }
public
{ Public declarations }
end;
var
fmSearch: TfmSearch;
implementation
uses
uMain,uHTMLMessage,FastStrings,FastStringFuncs,uConstants,uLocalRSS;
{$R *.dfm}
procedure TfmSearch.LoadToTree(rNode:TTreeNode;sNode:TcxTreeListNode);
var i:Integer;
cnode:TTreeNode;
begin
for i := 0 to sNode.Count - 1 do // Iterate
begin
cnode := CheckTreeView1.Items.AddChildObject(rNode,sNode.Items[i].Texts[0],TFeedItem(sNode.Items[i].Data));
if sNode.Items[i].HasChildren then
LoadToTree(cnode,sNode.Items[i]);
end; // for
end;
procedure TfmSearch.FormShow(Sender: TObject);
var i:Integer;
cnode:TTreeNode;
begin
CheckTreeView1.Items.Clear;
with MainWindow do
begin
root := CheckTreeView1.Items.AddObject(nil,ChannelNode.Texts[0],ChannelNode);
for i := 0 to ChannelNode.Count - 1 do // Iterate
begin
cnode := CheckTreeView1.Items.AddChildObject(root,ChannelNode.Items[i].Texts[0],TFeedItem(ChannelNode.Items[i].Data));
if ChannelNode.Items[i].HasChildren then
Self.LoadToTree(cnode,ChannelNode.Items[i]);
end; // for
end;
CheckTreeView1.SetChecked(root,true);
root.Expand(false);
AutoCloseBox.Checked := gProperties.AutoCloseSearchWin;
end;
procedure TfmSearch.CheckTreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var i:Integer;
begin
if Node.HasChildren then
begin
for i := 0 to Node.Count - 1 do // Iterate
CheckTreeView1.SetChecked(Node.Item[i],CheckTreeView1.GetChecked(Node));
end;
end;
procedure TfmSearch.Button1Click(Sender: TObject);
var
tnode:TcxTreeListNode;
otl:TOutlineType;
FileName:string;
begin
if Edit1.Text = '' then
begin
HTMLMessage('Information','Please type the words that you want to search .',false);
Exit;
end;
MainWindow.cxTreeList1.Clear;
Search(root);
MainWindow.Caption := 'RssNavigator - Search result ['+Edit1.Text+']';
if MainWindow.cxTreeList1.Count=0 then
HTMLMessage('Information','No matchs found for Search string :"<b>'+Edit1.Text+'</b>" ! '
+ 'Please type other string and try again !',false)
else
if AutoCloseBox.Checked then
Close;
end;
procedure TfmSearch.Search(cnode:TTreeNode);
var i:Integer;
begin
for i := 0 to cnode.Count - 1 do // Iterate
begin
if (CheckTreeView1.GetChecked(cnode.Item[i]))and(TFeedItem(cnode.Item[i].Data).Outline.Type_<>'folder') then
SearchFeedItem(TFeedItem(cnode.Item[i].Data));
if cnode.Item[i].HasChildren then
Search(cnode.Item[i]);
end; // for
end;
procedure TfmSearch.SearchFeedItem(FeedItem:TFeedItem);
var
node:TcxTreeListNode;
item:TLocalRssItem;
i,j:Integer;
HTML:WideString;
begin
for i := 0 to FeedItem.Rss.Items.Count - 1 do // Iterate
with MainWindow do
begin
item:= FeedItem.Rss.Items.Item[i];
if (Pos(Edit1.Text,item.Title)>0) or (Pos(Edit1.Text,item.Description)>0) then
begin
if not item.Delete then
with cxTreeList1.Add do
begin
Data:=TLocalRssItem(item);
Values[0]:=item.Readed;
Values[1]:=item.Flag;
Texts[2]:=item.Title;
Texts[3]:=item.Author;
Texts[4]:=item.PubDate.ToString;
Texts[5]:=item.Category;
Texts[6]:=item.ReceivedDate.ToString;
Texts[7]:=ExtractNonHTML(item.Description);
end;
end;
end; // for
end;
procedure TfmSearch.Button4Click(Sender: TObject);
begin
Close;
end;
procedure TfmSearch.AutoCloseBoxClick(Sender: TObject);
begin
gProperties.AutoCloseSearchWin := AutoCloseBox.Checked;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -