📄 fm_rss.~pas
字号:
TitleName1.Clear;
TitleName2.Clear;
TitleName3.Clear;
TitleName4.Clear;
TitleName5.Clear;
l:=0;
k:=0;
for i:=0 to XMLNode.ChildNodes.Count-1 do
begin
if LowerCase(XMLNode.ChildNodes.Nodes[i].NodeName)='item' then
for j:=0 to XMLNode.ChildNodes.Nodes[i].ChildNodes.Count-1 do
begin
RStringList1(XMLNode,i,j,TitleName1);
RStringList2(XMLNode,i,j,TitleName2);
RStringList3(XMLNode,i,j,TitleName3);
RStringList4(XMLNode,i,j,TitleName4);
RStringList5(XMLNode,i,j,TitleName5);
end;
end;
AddList:=TAddListXMLChannel.Create(RzListView1);
end;
procedure TFMRSS.ListView1DblClick(Sender: TObject);
var
Item:TListItem;
i,j,k:integer;
XMLFileName,Mark:string;
XMLNode:IXMLNode;
XMLDoc1:TXMLDocument;
begin
k:=0;
if RzListView1.ItemIndex<>-1 then
begin
RzListView1.Selected.ImageIndex:=1;
Item:=RzListView1.Selected;
for i:=1 to Length(ChannelNamesList) do
begin
Mark:=MidStr(ChannelNamesList,i,1);
if (Mark<>'=')and(Mark<>'/')and(Mark<>'\')and(Mark<>':')and(Mark<>'?')and(Mark<>'*')and(Mark<>'&')and(Mark<>'%') then
XMLFileName:=XMLFileName+Mark;
end;
XMLDoc1:=TXMLDocument.Create(self);
XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
XMLDoc1.Active:=true;
for j:=0 to XMLDoc1.Node.ChildNodes.Count do
if LowerCase(XMLDoc1.Node.ChildNodes.Nodes[j].NodeName)='rss' then
Break;
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[j];
for k:=0 to XMLNode.ChildNodes.Count-1 do
if LowerCase(XMLNode.ChildNodes.Nodes[k].NodeName)='channel' then
break;
XMLNode:=XMLNode.ChildNodes.Nodes[k];
for i:=0 to XMLNode.ChildNodes.Count-1 do
if LowerCase(XMLNode.ChildNodes.Nodes[i].NodeName)='item' then
break;
XMLNode:=XMLNode.ChildNodes.Nodes[i+RzListView1.Selected.Index];
for i:=0 to XMLnode.ChildNodes.Count-1 do
if XMLNode.ChildNodes.Nodes[i].NodeName='Read' then
XMLNode.ChildNodes.Nodes[i].NodeValue:='Y';
XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml');
XMLDoc1.Free;
for i:=0 to RzListView1.Items.Count-1 do
if RzListView1.Items.Item[i].ImageIndex=1 then
j:=j+1
else
k:=k+1;
Item.SubItems.Strings[1]:='已读';
RzStatusPane1.Caption:='频道:'+ChannelNames+' 总共有:'+inttostr(RzListView1.Items.Count)+'条新闻'+' 其中:'+inttostr(j)+'条已读 '+inttostr(k)+'条未读';
WebBrowser1.Navigate(Item.SubItems.Strings[2]);
end;
end;
procedure TFMRSS.TreeView1DblClick(Sender: TObject);
var
ItemsParent:TTreeNode;
XMLNode,XMLNode1:IXMLNode;
i,j,k:integer;
SList:TStringList;
Mark,XMLFileName:String;
XMLSearch:TSearchRec;
TORF,TOrf1:Boolean;
begin
try
if (RzTreeView1.Selected.Text<>'')and(RzTreeView1.Selected.ImageIndex=3) then
begin
TORF:=True;
TORF1:=True;
XMLFileName:='';
Mark:='';
SList:=TStringList.Create;
SList.Clear;
ItemsParent:=RzTreeView1.Selected.Parent;
j:=RzTreeView1.Selected.Index;
while ItemsParent<>nil do
begin
SList.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
end;
SList.Delete(SList.Count-1);
XML1:=TXMLDocument.Create(Self);
XML1.FileName:=ExtractFilePath(Application.ExeName)+'RSSChannel.xml';
XML1.Active:=True;
XMLNode:=XML1.ChildNodes.Nodes[0];
SearchXML(XMLNode,SList,j);
SList.Free;
for i:=1 to Length(ChannelNamesList) do
begin
Mark:=MidStr(ChannelNamesList,i,1);
if (Mark<>'=')and(Mark<>'/')and(Mark<>'\')and(Mark<>':')and(Mark<>'?')and(Mark<>'*')and(Mark<>'&')and(Mark<>'%') then
XMLFileName:=XMLFileName+Mark;
end;
if FileExists(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml') then
begin
XML1.Active:=False;
XML1.FileName:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
XMLtoHTML:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
XML1.Active:=True;
RzListView1.Items.Clear;
for j:=0 to XML1.Node.ChildNodes.Count do
if LowerCase(XML1.Node.ChildNodes.Nodes[j].NodeName)='rss' then
Break;
XMLNode:=XML1.Node.ChildNodes.Nodes[j];
if XMLNode.HasAttribute('New') then
begin
XMLNode.Attributes['New']:='Old';
for k:=0 to XMLNode.ChildNodes.Count-1 do
if LowerCase(XMLNode.ChildNodes.Nodes[k].NodeName)='channel' then
Break;
XMLNode:=XML1.Node.ChildNodes.Nodes[j].ChildNodes.Nodes[k];
end
else
begin
XMLNode.Attributes['New']:='New';
for k:=0 to XMLNode.ChildNodes.Count-1 do
if LowerCase(XMLNode.ChildNodes.Nodes[k].NodeName)='channel' then
Break;
XMLNode:=XML1.Node.ChildNodes.Nodes[j].ChildNodes.Nodes[k];
for i:=0 to XMLNode.ChildNodes.Count-1 do
if LowerCase(XMLNode.ChildNodes.Nodes[i].NodeName)='item' then
XMLNode.ChildNodes.Nodes[i].AddChild('read').NodeValue:='N';
end;
ListViewLoadXML(XMLNode);
XML1.SaveToFile(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml');
end
else
RzTreeView1.Selected.Text:=ChannelNames;
end;
except
RzTreeView1.Selected.Text:=ChannelNames;
end;
//until FindNext(XMLSearch) <> 0;
// FindClose(XMLSearch);
{ if Torf=True then
if Application.MessageBox('没有该频道的缓存文件是否更新','错误',MB_YESNO OR MB_ICONINFORMATION)=IDYes then
begin
While TORF1 do
begin
try
XML2.Active:=False;
XML2.FileName:=ChannelNamesList;
XML2.Active:=True;
for j:=0 to XML2.Node.ChildNodes.Count-1 do
if LowerCase(XML2.Node.ChildNodes.Nodes[j].NodeName)='rss' then
Break;
XMLNode1:=XML2.Node.ChildNodes.Nodes[j];
for k:=0 to XMLNode1.ChildNodes.Count-1 do
if LowerCase(XMLNode1.ChildNodes.Nodes[k].NodeName)='channel' then
break;
XMLNode1:=XMLNode1.ChildNodes.Nodes[k];
for i:=0 to XMLNode1.ChildNodes.Count-1 do
if LowerCase(XMLNode1.ChildNodes.Nodes[i].NodeName)='item' then
XMLNode1.ChildNodes.Nodes[i].AddChild('read').NodeValue:='N';
TORF1:=false;
XMLtoHTML:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
RzListView1.Items.Clear;
ListViewLoadXML(XMLNode1);
XML2.SaveToFile(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml');
except
if Application.MessageBox('数据读取错误','错误',MB_RETRYCANCEL OR MB_ICONWARNING)=IDCANCEL then
Torf1:=false;
end;
end;
end;}
end;
procedure TFMRSS.SearchXML(XMLNode: IXMLNode; SList1: TStringList;ij:integer);
begin
while SList1.Text <>'' do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(SList1.Strings[SList1.Count-1])];
SList1.Delete(SList1.Count-1);
end;
ChannelNames:=xmlnode.ChildNodes.Nodes[ij].Attributes['Name'];
ChannelNamesList:=xmlnode.ChildNodes.Nodes[ij].NodeValue;
ChannelNodeItem:=xmlnode.ChildNodes.Nodes[ij];
end;
procedure TFMRSS.dxBarButton33Click(Sender: TObject);
var
ItemsParent:TTreeNode;
XMLNode:IXMLNode;
j:integer;
SList:TStringList;
FM_Channel:TFMChanP;
XMLDoc1:TXMLDocument;
begin
RzTreeView1.SetFocus;
if (RzTreeView1.Selected.Text<>'')and(RzTreeView1.Selected.ImageIndex=3)and(RzTreeView1.Selected<>nil) then
begin
SList:=TStringList.Create;
SList.Clear;
ItemsParent:=RzTreeView1.Selected.Parent;
j:=RzTreeView1.Selected.Index;
while ItemsParent<>nil do
begin
SList.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
end;
SList.Delete(SList.Count-1);
XMLDoc1:=TXMLDocument.Create(Self);
XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'RSSChannel.xml';
XMLDoc1.Active:=True;
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
SearchXML(XMLNode,SList,j);
SList.Free;
FM_Channel:=TFMChanP.Create(Self);
FM_Channel.ShowModal;
XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'RSSChannel.xml');
XMLDoc1.Free;
end;
end;
procedure TFMRSS.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
TargetNode, SourceNode,ItemsParent: TTreeNode;
SList:TStringList;
S_List:TStringList;
XMLNode,XMLNode1:IXMLNode;
i,j,k:integer;
XMLDoc1:TXMLDocument;
begin
i:=0;
XMLDoc1:=TXMLDocument.Create(Self);
XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'RSSChannel.xml';
XMLDoc1.Active:=True;
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
TargetNode := RzTreeView1.GetNodeAt (X, Y);
if (TargetNode <> nil) and (TargetNode.ImageIndex<>3) then
begin
SList:=TStringList.Create;
SList.Clear;
S_List:=TStringList.Create;
S_List.Clear;
SourceNode:=RzTreeView1.Selected;
ItemsParent:=RzTreeView1.Selected.Parent;
k:=RzTreeView1.Selected.Index;
while ItemsParent<>nil do
begin
SList.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
i:=i+1;
end;
SList.Delete(SList.Count-1);
SourceNode.MoveTo (TargetNode, naAddChild);
TargetNode.Expand (False);
RzTreeView1.Selected := TargetNode;
i:=0;
ItemsParent:=RzTreeView1.Selected;
j:=RzTreeView1.Selected.Index;
while ItemsParent<>nil do
begin
S_List.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
end;
S_List.Delete(S_List.Count-1);
while SList.Text <>'' do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(SList.Strings[SList.Count-1])];
SList.Delete(SList.Count-1);
end;
XMLNode1:=XMLNode.ChildNodes.Nodes[k];
XMLNode.ChildNodes.Delete(k);
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
while S_List.Text<>''do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(S_List.Strings[S_List.Count-1])];
S_List.Delete(S_List.Count-1);
end;
XMLNode.ChildNodes.Add(XMLNode1);
XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'RSSChannel.xml');
XMLDoc1.Free;
end;
end;
procedure TFMRSS.RzTreeView2DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
TargetNode, SourceNode,ItemsParent: TTreeNode;
SList:TStringList;
S_List:TStringList;
XMLNode,XMLNode1:IXMLNode;
i,j,k:integer;
XMLDoc1:TXMLDocument;
begin
i:=0;
XMLDoc1:=TXMLDocument.Create(Self);
XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Favorite.xml';
XMLDoc1.Active:=True;
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
TargetNode := RzTreeView2.GetNodeAt (X, Y);
if (TargetNode <> nil) and (TargetNode.ImageIndex<>11) then
begin
SList:=TStringList.Create;
SList.Clear;
S_List:=TStringList.Create;
S_List.Clear;
SourceNode:=RzTreeView2.Selected;
ItemsParent:=RzTreeView2.Selected.Parent;
k:=RzTreeView2.Selected.Index;
while ItemsParent<>nil do
begin
SList.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
i:=i+1;
end;
SList.Delete(SList.Count-1);
SourceNode.MoveTo (TargetNode, naAddChild);
TargetNode.Expand (False);
RzTreeView2.Selected := TargetNode;
i:=0;
ItemsParent:=RzTreeView2.Selected;
j:=RzTreeView2.Selected.Index;
while ItemsParent<>nil do
begin
S_List.Add(inttostr(ItemsParent.index));
ItemsParent:=ItemsParent.Parent;
end;
S_List.Delete(S_List.Count-1);
while SList.Text <>'' do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(SList.Strings[SList.Count-1])];
SList.Delete(SList.Count-1);
end;
XMLNode1:=XMLNode.ChildNodes.Nodes[k];
XMLNode.ChildNodes.Delete(k);
XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
while S_List.Text<>''do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(S_List.Strings[S_List.Count-1])];
S_List.Delete(S_List.Count-1);
end;
XMLNode.ChildNodes.Add(XMLNode1);
XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.xml');
XMLDoc1.Free;
end;
end;
procedure TFMRSS.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode: TTreeNode;
begin
TargetNode := (Sender as TRzTreeView).GetNodeAt (X, Y);
if (Source = Sender) and (TargetNode <> nil) then
begin
Accept := True;
SourceNode := (Sender as TRzTreeView).Selected;
while (TargetNode.Parent <> nil) and (TargetNode <> SourceNode) do
TargetNode := TargetNode.Parent;
if TargetNode = SourceNode then
Accept := False;
end
else
Accept := False;
end;
procedure TFMRSS.ListView1Click(Sender: TObject);
var
Item:TListItem;
i,j,k:integer;
XMLFileName,Mark:string;
XMLNODE:IXMLNode;
XMLDoc1:TXMLDocument;
begin
try
j:=0;
k:=0;
if RzListView1.ItemIndex<>-1 then
begin
RzListView1.Selected.ImageIndex:=1;
Item:=RzListView1.Selected;
Item:=RzListView1.Selected;
for i:=1 to Length(ChannelNamesList) do
begin
Mark:=MidStr(ChannelNamesList,i,1);
if (Mark<>'=')and(Mark<>'/')and(Mark<>'\')and(Mark<>':')and(Mark<>'?')and(Mark<>'*')and(Mark<>'&')and(Mark<>'%') then
XMLFileName:=XMLFileName+Mark;
end;
XMLDoc1:=TXMLDocument.Create(Self);
XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
XMLDoc1.Active:=true;
for j:=0 to XMLDoc1.Node.ChildNodes.Count do
if LowerCase(XMLDoc1.Node.ChildNodes.Nodes[j].NodeName)='rss' then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -