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

📄 fm_rss.~pas

📁 realworld source code
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
  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 + -