📄 fm_rss.~pas
字号:
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');
j:=0;
k:=0;
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]:='已读';
// TempHTML(XMLtoHTML,Item.SubItems.Strings[0],XMLDoc1);
RzStatusPane1.Caption:='频道:'+ChannelNames+' 总共有:'+inttostr(RzListView1.Items.Count)+'条新闻'+' 其中:'+inttostr(j)+'条已读 '+inttostr(k)+'条未读';
RzStatusPane2.Caption:='地址:'+Item.SubItems.Strings[3];
UrlList.Add(Item.SubItems.Strings[3]);
A:=TRzTabsheet.Create(PageControl2);
A.Caption:='正在打开网页...';
A.ImageIndex:=11;
A.ShowHint:=true;
A.PopupMenu:=PopupMenu3;
//A.Hint:=Item.SubItems.Strings[0];
A.PageControl:=PageControl2;
PageControl2.ActivePage:=A;
wb:=TWEBBROWSER.Create(A);
Twincontrol(wb).Parent := A;
wb.Align:=alclient;
wb.Navigate(Item.SubItems.Strings[3]);
wb.OnDocumentComplete:=AOnDocumentComplete;
wb.OnProgressChange:=BOnProgressChange;
XMLDoc1.Free;
end;
except
//
end;
end;
procedure TFMRSS.AOnDocumentComplete(Sender: TObject; const pDisp: IDispatch;
var URL: OleVariant);
var
docX : Variant;
titleX : Variant;
begin
try
docX := wb.Document;
a.Caption:=CutString(docx.title)+'...';
a.Hint:=docx.title;
RzToolButton10.Enabled:=True;
except
end;
end;
procedure TFMRSS.BOnProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
begin
try
ProgressBar1.Max:=ProgressMax;
ProgressBar1.Position:=Progress;
except
end;
end;
procedure TFMRSS.TempHTML(XMLFile: string;Title:string;XMLDoc1:TXMLDocument);
VAR
i,j,k:integer;
XMLNode:IXMLNode;
begin
k:=0;
TitleName1:=TStringList.Create;
TitleName2:=TStringList.Create;
TitleName3:=TStringList.Create;
TitleName4:=TStringList.Create;
TitleName1.Clear;
TitleName2.Clear;
TitleName3.Clear;
TitleName4.Clear;
for j:=0 to XMLDoc1.Node.ChildNodes.Count-1 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];
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
if lowercase(XMLNode.ChildNodes.Nodes[i].ChildNodes.Nodes[j].NodeName)='title' then
if XMLNode.ChildNodes.Nodes[i].ChildNodes.Nodes[j].ChildNodes.Nodes[0].NodeValue=title then
k:=i;
end;
for i:=0 to XMLNode.ChildNodes.Nodes[K].ChildNodes.Count-1 do
begin
RStringList1(XMLNode,K,i,TitleName1);
RStringList2(XMLNode,K,i,TitleName2);
RStringList3(XMLNode,K,i,TitleName3);
RStringList4(XMLNode,K,i,TitleName4);
end;
Cou:=TitleName1.Count;
T_Name:='';
CSSMenu();
end;
procedure TFMRSS.WebBrowser1ProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
begin
ProgressBar1.Max:=ProgressMax;
ProgressBar1.Position:=Progress;
end;
procedure TFMRSS.dxBarButton8Click(Sender: TObject);
var
FMRAbout:TFMAbout;
begin
FMRAbout:=TFMAbout.Create(self);
FMRABOUT.ShowModal;
end;
procedure TFMRSS.N11Click(Sender: TObject);
begin
SaveTempHTML(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N11.Checked:=True;
end;
procedure TFMRSS.N12Click(Sender: TObject);
begin
SaveTempHTML2(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N12.Checked:=True;
end;
procedure TFMRSS.N13Click(Sender: TObject);
begin
SaveTempHTML3(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N13.Checked:=True;
end;
procedure TFMRSS.N14Click(Sender: TObject);
begin
SaveTempHTML4(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N14.Checked:=True;
end;
procedure TFMRSS.N15Click(Sender: TObject);
begin
SaveTempHTML5(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N15.Checked:=True;
end;
procedure TFMRSS.N16Click(Sender: TObject);
begin
SaveTempHTML6(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N16.Checked:=True;
end;
procedure TFMRSS.N18Click(Sender: TObject);
begin
SaveTempHTML8(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N17.Checked:=True;
end;
procedure TFMRSS.N17Click(Sender: TObject);
begin
SaveTempHTML7(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N18.Checked:=True;
end;
procedure TFMRSS.N19Click(Sender: TObject);
begin
SaveTempHTML9(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N19.Checked:=True;
end;
procedure TFMRSS.N20Click(Sender: TObject);
begin
SaveTempHTML10(TitleName1,TitleName2,TitleName4,TitleName3,T_Name,Cou);
N20.Checked:=True;
end;
procedure TFMRSS.dxBarButton29Click(Sender: TObject);
begin
RzTreeView1.FullExpand;
end;
procedure TFMRSS.dxBarButton30Click(Sender: TObject);
begin
RzTreeView1.FullCollapse;
end;
procedure TFMRSS.dxBarButton5Click(Sender: TObject);
var
FOuptRss:TFMOuptRss;
begin
FOuptRss:=TFMOuptRss.Create(self);
FOuptRss.ShowModal;
end;
procedure TFMRSS.dxBarButton15Click(Sender: TObject);
VAR
FInPutRss:TFMInPutRss;
begin
FInPutRss:=TFMInPutRss.Create(self);
FInPutRss.ShowModal;
end;
procedure TFMRSS.dxBarButton23Click(Sender: TObject);
var
ItemsParent,Item,Items:TTreeNode;
XMLNode:IXMLNode;
j,I,k:integer;
SList:TStringList;
Mark,XMLFileName:String;
XMLDocu1:TXMLDocument;
begin
if (RzTreeView1.Selected<>nil)and(RzTreeView1.Selected<>RzTreeView1.Items[0]) then
begin
i:=0;
Item:=RzTreeView1.Selected;
XML3.FileName:=ExtractFilePath(Application.ExeName)+'RSSChannel.xml';
XML3.Active:=True;
XMLNames:=XML3.Node.ChildNodes.Nodes[0];
while Item<>nil do
begin
Item:=Item.GetNext;
i:=i+1;
try
if Item.Parent=RzTreeView1.Selected.Parent then
Break;
except
end;
end;
UpItem:=i;
ItemCount:=RzTreeView1.Selected.AbsoluteIndex+i;
for i:=0 to UpItem-1 do
if LeftStr(RzTreeView1.Items[RzTreeView1.Selected.AbsoluteIndex+i].Text,1)=' ' then
RzTreeView1.Items[RzTreeView1.Selected.AbsoluteIndex+i].Text:=MidStr(RzTreeView1.Items[RzTreeView1.Selected.AbsoluteIndex+i].Text,2,Length(RzTreeView1.Items[RzTreeView1.Selected.AbsoluteIndex+i].Text));
for i:=0 to 3 do
begin
Thread1[i]:=TUpXMLChannel.Create(RzTreeView1.Selected.AbsoluteIndex+i);
end;
{ 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;
// SList.Free;
// showmessage(inttostr(i));
// application.MessageBox(pchar(inttostr(RzTreeView1.Selected.AbsoluteIndex)),'',mb_ok);
try
XMLDocu1:=TXMLDocument.Create(self);
XMLDocu1.FileName:=ChannelNamesList;
XMLDocu1.Active:=True;
for j:=0 to XMLDocu1.Node.ChildNodes.Count-1 do
if LowerCase(XMLDocu1.Node.ChildNodes.Nodes[j].NodeName)='rss' then
Break;
XMLNode:=XMLDocu1.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
XMLNode.ChildNodes.Nodes[i].AddChild('read').NodeValue:='N';
XMLtoHTML:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
RzListView1.Items.Clear;
ListViewLoadXML(XMLNode);
XMLDocu1.SaveToFile(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml');
except
Application.MessageBox('数据读取错误','错误',MB_ok OR MB_ICONWARNING);
end; }
XMLDocu1.Free;
end;
end;
procedure TFMRSS.dxBarButton22Click(Sender: TObject);
var
ItemsParent:TTreeNode;
XMLNode:IXMLNode;
j,I:integer;
SList:TStringList;
XMLDocu1:TXMLDocument;
begin
If RzTreeview1.Selected<>nil then
begin
j:=0;
I:=0;
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);
XMLDocu1:=TXMLDocument.Create(self);
XMLDocu1.FileName:=ExtractFilePath(Application.ExeName)+'RSSChannel.xml';
XMLDocu1.Active:=True;
XMLNode:=XMLDocu1.Node.ChildNodes.Nodes[0];
if SList.Text<>'' then
while SList.Text <>'' do
begin
XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(SList.Strings[SList.Count-1])];
SList.Delete(SList.Count-1);
end;
if Application.MessageBox(PChar('确实要删除'''+RzTreeView1.Selected.text+''''+'以及它以下的节点吗?'),'删除',MB_YesNo OR MB_ICONQUESTION)=IDYes then
begin
XMLNode.ChildNodes.Delete(j);
RzTreeVieW1.Selected.Delete;
end;
XMLDocu1.SaveToFile(ExtractFilePath(Application.ExeName)+'RSSChannel.xml');
XMLDocu1.Free ;
end;
end;
procedure TFMRSS.dxBarButton27Click(Sender: TObject);
var
ItemsParent:TTreeNode;
XMLNode:IXMLNode;
j,I,k:integer;
SList:TStringList;
Mark,XMLFileName:String;
XMLDoc1:TXMLDocument;
begin
if (RzTreeView1.Selected.Text<>'')and(RzTreeView1.Selected.ImageIndex=3) then
begin
j:=0;
I:=0;
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;
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.Free;
try
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
for j:=0 to XMLNode.ChildNodes.Nodes[i].ChildNodes.Count-1 do
if XMLNode.ChildNodes.Nodes[i].ChildNodes.Nodes[j].NodeName='read' then
XMLNode.ChildNodes.Nodes[i].ChildNodes.Nodes[j].NodeValue:='Y';
XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml');
RzListView1.Clear;
XMLtoHtml:=ExtractFilePath(Application.ExeName)+'Feed\'+XMLFileName+'.xml';
ListViewLoadXML(XMLNode);
except
Application.MessageBox('数据读取错误','错误',MB_ok OR MB_ICONWARNING);
end;
XMLDoc1.Free;
end;
end;
procedure TFMRSS.dxBarButton28Click(Sender: TObject);
var
ItemsParent:TTreeNode;
XMLNode:IXMLNode;
j,I,k:integer;
SList:TStringList;
Mark,XMLFileName:String;
XMLDoc1:TXMLDocument;
begin
if (RzTreeView1.Selected.Text<>'')and(RzTreeView1.Selected.ImageIndex=3) then
begin
j:=0;
I:=0;
SList:=TStringList.Create;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -