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

📄 fm_favorite.~pas

📁 realworld source code
💻 ~PAS
字号:
unit FM_Favorite;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, RzTreeVw, xmldom, XMLIntf, msxmldom, XMLDoc;

type
  TFMFavorite = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    RzTreeView1: TRzTreeView;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit2: TEdit;
    XMLDocument1: TXMLDocument;
    procedure FormCreate(Sender: TObject);
    procedure TreeViewLoadXML(XMLNode: IXMLNode; TreeNode: TTreeNode);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FMFavorite: TFMFavorite;
  FavoriteName:String;
implementation
Uses
 FM_RSS,FM_NewFolder;
{$R *.dfm}

procedure TFMFavorite.FormCreate(Sender: TObject);
var
  XMLNode:IXMLNode;
begin
 XMLDocument1.FileName:=ExtractFilePath(Application.ExeName)+'Favorite.xml';
 XMLDocument1.Active:=true;
 RzTreeView1.Items.Clear;
 XMLNode:=XMLDocument1.Node.ChildNodes.Nodes[0];
 RzTreeView1.Items.Add(nil,'我的收藏夹');
 Application.ProcessMessages;
 try
  TreeViewLoadXML(XMLNode,RzTreeView1.Items[0]);
 except
 end;
 RzTreeView1.Items[0].Expanded:=True;
 XMLDocument1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
  { end
 else
   begin
    XMLDocument1.Active:=True;
    RzTreeView1.Items.Add(nil,'我的收藏夹');
    XMLDocument1.AddChild('tree');
    XMLDocument1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.xml');
    XMLDocument1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
   end; }
end;

procedure TFMFavorite.Button3Click(Sender: TObject);
var
 Folder:TFMNFolder;
 Item,ItemsParent:TTreeNode;
 XMLDoc1:TXMLDocument;
 XMLNode:IXMLNode;
 SList:TStringList;
 k:integer;
begin
if (RzTreeView1.Selected<>nil)and(RzTreeView1.Selected.ImageIndex<>11) then
 begin
  ShowForm:=False;
  Folder:=TFMNFolder.Create(Self);
  Folder.ShowModal;
  XMLDoc1:=TXMLDocument.Create(Self);
  XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Favorite.tmp';
  XMLDoc1.Active:=True;
  XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
  if RzTreeView1.Selected.Parent<>NIL THEN
    BEGIN
     SList:=TStringList.Create;
     SList.Clear;
     ItemsParent:=RzTreeView1.Selected.Parent;
     k:=RzTreeView1.Selected.Index;
     while ItemsParent<>nil do
      begin
       SList.Add(inttostr(ItemsParent.index));
       ItemsParent:=ItemsParent.Parent;
      end;
     SList.Delete(SList.Count-1);
     while SList.Text <>'' do
      begin
       XMLNode:=XMLNode.ChildNodes.Nodes[strtoint(SList.Strings[SList.Count-1])];
       SList.Delete(SList.Count-1);
      end;
     XMLNode.ChildNodes.Nodes[k].AddChild('folder').Attributes['name']:=FavoriteName;
     Item:=RzTreeView1.Items.AddChild(RzTreeView1.Selected,FavoriteName);
     Item.SelectedIndex:=0;
     Item.ImageIndex:=0;
   end
    else
     begin
      Item:=RzTreeView1.Items.AddChild(RzTreeView1.Selected,FavoriteName);
      Item.SelectedIndex:=0;
      Item.ImageIndex:=0;
      XMLDoc1.Node.ChildNodes.Nodes[0].AddChild('folder').Attributes['name']:=FavoriteName;
     end;
  XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
  XMLDoc1.Free;
 end
else
 Application.MessageBox('请选择添加节点','选择',MB_OK or MB_ICONWARNING)
end;

procedure TFMFavorite.TreeViewLoadXML(XMLNode: IXMLNode;
  TreeNode: TTreeNode);
var
 Item:TTreeNode;
 i:integer;
 XMLNode1:IXMLNode;
begin
  for i:=0 to XMLNode.ChildNodes.Count-1 do
  begin
   if lowercase(XMLNode.ChildNodes.Nodes[i].NodeName)='folder' then
     begin
      Item:=RzTreeView1.Items.Addchild(TreeNode,XMLNode.ChildNodes.Nodes[i].Attributes['name']);
      Item.SelectedIndex:=0;
      Item.ImageIndex:=0;
      TreeViewLoadXML(XMLNode.ChildNodes.Nodes[i],Item);
     end;
   if lowercase(XMLNode.ChildNodes.Nodes[i].NodeName)='favorite' then
     begin
      XMLNode1:=XMLNode.ChildNodes.Nodes[i];
      XMLNode1:=XMLNode1.ChildNodes.Nodes[0];
      Item:=RzTreeView1.Items.Addchild(TreeNode,XMLNode1.NodeValue);
      Item.SelectedIndex:=11;
      Item.ImageIndex:=11;
     end;
    end;
end;

procedure TFMFavorite.Button2Click(Sender: TObject);
begin
 DeleteFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
 Close;
end;

procedure TFMFavorite.Button1Click(Sender: TObject);
var
 ItemsParent:TTreeNode;
 XMLDoc1:TXMLDocument;
 XMLNode,XMLNode1:IXMLNode;
 SList:TStringList;
 k:integer;
begin
if (RzTreeView1.Selected<>nil)and(RzTreeView1.Selected.ImageIndex<>11)and
   (Edit1.Text<>'')and(Edit2.Text<>'') then
 begin
  XMLDoc1:=TXMLDocument.Create(Self);
  XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Favorite.tmp';
  XMLDoc1.Active:=True;
  XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
  if RzTreeView1.Selected.Parent<>NIL THEN
    BEGIN
     SList:=TStringList.Create;
     SList.Clear;
     ItemsParent:=RzTreeView1.Selected.Parent;
     k:=RzTreeView1.Selected.Index;
     while ItemsParent<>nil do
      begin
       SList.Add(inttostr(ItemsParent.index));
       ItemsParent:=ItemsParent.Parent;
      end;
     SList.Delete(SList.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].AddChild('favorite');
     XMLNode1.AddChild('name').NodeValue:=Edit1.Text;
     XMLNode1.AddChild('link').NodeValue:=Edit2.Text;
   end
    else
     begin
      XMLNode1:=XMLDoc1.Node.ChildNodes.Nodes[0].AddChild('favorite');
      XMLNode1.AddChild('name').NodeValue:=Edit1.Text;
      XMLNode1.AddChild('link').NodeValue:=Edit2.Text;
     end;
  XMLDoc1.SaveToFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
  XMLDoc1.Free;
  CopyFile(Pchar(ExtractFilePath(Application.ExeName)+'Favorite.tmp'),
           pchar(ExtractFilePath(Application.ExeName)+'Favorite.xml'),false);
  DeleteFile(ExtractFilePath(Application.ExeName)+'Favorite.tmp');
  FMRSS.RzTreeView2.Items[0].DeleteChildren;
  XMLDoc1:=TXMLDocument.Create(Self);
  XMLDoc1.FileName:=ExtractFilePath(Application.ExeName)+'Favorite.xml';
  XMLDoc1.Active:=True;
  XMLNode:=XMLDoc1.Node.ChildNodes.Nodes[0];
  FMrss.TreeView2LoadXML(XMLNode,FMRSS.RzTreeView2.Items[0]);
  Close;
 end
else
 Application.MessageBox('请选择节点或填写名称','选择',MB_OK or MB_ICONWARNING)
end;
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -