📄 choosefolder_frm.pas
字号:
unit ChooseFolder_Frm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,cxtl, ImgList;
type
TFmChooseFolder = class(TForm)
Label1: TLabel;
TreeView1: TTreeView;
BtnOK: TButton;
BtnCannel: TButton;
Button3: TButton;
ImageList1: TImageList;
procedure BtnCannelClick(Sender: TObject);
procedure BtnOKClick(Sender: TObject);
procedure TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
procedure TreeView1Expanded(Sender: TObject; Node: TTreeNode);
procedure Button3Click(Sender: TObject);
procedure TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage;
var PaintImages, DefaultDraw: Boolean);
private
ResultVaule:Boolean;
MainRoot,CParentNode,CurNode:TcxTreeListNode;
procedure Show(Sender:TObject);
procedure Show2(Sender:TObject);
procedure Show3(Sender:TObject);
procedure LoadFromTree(snode:TcxTreeListNode;node:TTreeNode);
procedure LoadFromTree2(snode:TcxTreeListNode;node:TTreeNode);
procedure LoadFromTree3(snode:TcxTreeListNode;node:TTreeNode);
procedure TreeViewChange2(Sender: TObject;
Node: TTreeNode);
procedure TreeViewChange3(Sender: TObject;
Node: TTreeNode);
{ Private declarations }
public
ResultNode:TcxTreeListNode;
{ Public declarations }
end;
var
FmChooseFolder: TFmChooseFolder;
function ExecChooseFolder(RootNode,CurrentNode:TcxTreeListNode):Boolean;
function ExecChooseFolder2:Boolean;
function ExecChooseFav:Boolean;
implementation
{$R *.dfm}
uses uMain,uFeed,newFolder_Frm,uFavorite;
function ExecChooseFolder(RootNode,CurrentNode:TcxTreeListNode):Boolean;
begin
with FmChooseFolder do
begin
OnShow := Show;
Button3.Visible := True ;
TreeView1.OnChange :=TreeViewChange2;
MainRoot := RootNode;
CParentNode := CurrentNode.Parent;
CurNode := CurrentNode;
ShowModal;
end; // with
Result:=FmChooseFolder.ResultVaule;
end;
function ExecChooseFolder2:Boolean;
begin
with FmChooseFolder do
begin
OnShow := Show2;
Button3.Visible := True ;
TreeView1.OnChange :=TreeViewChange2;
ShowModal;
end; // with
Result:=FmChooseFolder.ResultVaule;
end;
function ExecChooseFav:Boolean;
begin
with FmChooseFolder do
begin
OnShow := Show3;
Button3.Visible := False ;
TreeView1.OnChange :=TreeViewChange3;
ShowModal;
end; // with
Result:=FmChooseFolder.ResultVaule;
end;
procedure TFmChooseFolder.LoadFromTree(snode:TcxTreeListNode;node:TTreeNode);
var i:Integer;
cnode:TTreeNode;
begin
for i:= 0 to snode.Count - 1 do // Iterate
if (TFeedItem(snode.Items[i].Data).Outline.Type_='folder')and (snode.Items[i]<>CurNode) then
begin
cnode := TreeView1.Items.AddChildObject(node,snode.Items[i].Texts[0],snode.Items[i]);
if snode.Items[i]=CParentNode then
begin
cnode.ImageIndex :=2;
cnode.SelectedIndex := 2;
end;
if snode.HasChildren then
LoadFromTree(snode.Items[i],cnode);
end; // for
end;
procedure TFmChooseFolder.LoadFromTree2(snode:TcxTreeListNode;node:TTreeNode);
var i:Integer;
cnode:TTreeNode;
begin
for i:= 0 to snode.Count - 1 do // Iterate
if (TFeedItem(snode.Items[i].Data).Outline.Type_='folder')then
begin
cnode := TreeView1.Items.AddChildObject(node,snode.Items[i].Texts[0],snode.Items[i]);
if snode.HasChildren then
LoadFromTree2(snode.Items[i],cnode);
end; // for
end;
procedure TFmChooseFolder.LoadFromTree3(snode:TcxTreeListNode;node:TTreeNode);
var i:Integer;
cnode:TTreeNode;
begin
for i:= 0 to snode.Count - 1 do
begin
cnode := TreeView1.Items.AddChildObject(node,snode.Items[i].Texts[0],snode.Items[i]);
if TFavItem(snode.Items[i].Data).Outline.Type_<>'folder' then
begin
cnode.ImageIndex :=6;
cnode.SelectedIndex := 6;
end
else
begin
cnode.ImageIndex :=4;
cnode.SelectedIndex := 5;
end;
if snode.HasChildren then
LoadFromTree3(snode.Items[i],cnode);
end;
end;
procedure TFmChooseFolder.Show(Sender:TObject);
var i:Integer;
snode:TcxTreeListNode;
root,cnode:TTreeNode;
begin
TreeView1.Items.Clear;
ResultVaule:=False;
snode := MainRoot;
root:=TreeView1.Items.AddObject(nil,snode.Texts[0],snode);
if CParentNode.Level=0 then
begin
root.ImageIndex :=2;
root.SelectedIndex :=2;
end;
for i:= 0 to snode.Count - 1 do // Iterate
begin
if (TFeedItem(snode.Items[i].Data).Outline.Type_='folder') and (snode.Items[i]<>CurNode)then
begin
cnode := TreeView1.Items.AddChildObject(root,snode.Items[i].Texts[0],snode.Items[i]);
if snode.Items[i]=CParentNode then
begin
cnode.ImageIndex :=2;
cnode.SelectedIndex := 2;
end;
if snode.HasChildren then
LoadFromTree(snode.Items[i],cnode);
end;
end; // for
root.Expand(false);
end;
procedure TFmChooseFolder.Show2(Sender: TObject);
var i:Integer;
snode:TcxTreeListNode;
root,cnode:TTreeNode;
begin
TreeView1.Items.Clear;
ResultVaule:=False;
snode := MainWindow.ChannelNode;
root:=TreeView1.Items.AddObject(nil,snode.Texts[0],snode);
for i:= 0 to snode.Count - 1 do // Iterate
begin
if (TFeedItem(snode.Items[i].Data).Outline.Type_='folder') then
begin
cnode := TreeView1.Items.AddChildObject(root,snode.Items[i].Texts[0],snode.Items[i]);
if snode.HasChildren then
LoadFromTree2(snode.Items[i],cnode);
end;
end; // for
root.Expand(false);
end;
procedure TFmChooseFolder.Show3(Sender: TObject);
var i:Integer;
snode:TcxTreeListNode;
root,cnode:TTreeNode;
begin
TreeView1.Items.Clear;
ResultVaule:=False;
snode := MainWindow.FavoritesNode;
root:=TreeView1.Items.AddObject(nil,snode.Texts[0],snode);
for i:= 0 to snode.Count - 1 do // Iterate
begin
cnode := TreeView1.Items.AddChildObject(root,snode.Items[i].Texts[0],snode.Items[i]);
if TFavItem(snode.Items[i].Data).Outline.Type_<>'folder' then
begin
cnode.ImageIndex :=6;
cnode.SelectedIndex := 6;
end
else
begin
cnode.ImageIndex :=4;
cnode.SelectedIndex := 4;
end;
if snode.HasChildren then
LoadFromTree3(snode.Items[i],cnode);
end; // for
root.Expand(false);
end;
procedure TFmChooseFolder.BtnCannelClick(Sender: TObject);
begin
ResultVaule:=False;
ResultNode := nil;
Close;
end;
procedure TFmChooseFolder.BtnOKClick(Sender: TObject);
begin
ResultVaule:=True;
ResultNode := TcxTreeListNode(TreeView1.Selected.Data);
Close;
end;
procedure TFmChooseFolder.TreeView1Collapsed(Sender: TObject;
Node: TTreeNode);
begin
Node.ImageIndex:=Node.ImageIndex -1;
Node.SelectedIndex:=Node.SelectedIndex -1;
end;
procedure TFmChooseFolder.TreeView1Expanded(Sender: TObject;
Node: TTreeNode);
begin
Node.ImageIndex:=Node.ImageIndex + 1;
Node.SelectedIndex:=Node.SelectedIndex + 1;
end;
procedure TFmChooseFolder.TreeViewChange2(Sender: TObject;
Node: TTreeNode);
begin
if Node=nil then
Exit;
if Node.ImageIndex in [2,3] then
BtnOK.Enabled:=False
else
BtnOK.Enabled:=True;
end;
procedure TFmChooseFolder.TreeViewChange3(Sender: TObject;
Node: TTreeNode);
begin
if Node=nil then
Exit;
BtnOK.Enabled := Node.ImageIndex = 6;
end;
procedure TFmChooseFolder.Button3Click(Sender: TObject);
var
Text:string;
NewNode:TcxTreeListNode;
NewTreeViewNode:TTreeNode;
begin
if fmNewFolder.Execute('New folder','Type the new folder name:','New Folder') then
begin
Text := fmNewFolder.FolderName;
NewNode:=MainWindow.NewFolder(TcxTreeListNode(TreeView1.Selected.Data),Text);
NewTreeViewNode:=TreeView1.Items.AddChildObject(TreeView1.Selected,Text,NewNode);
NewTreeViewNode.Selected := True;
end;
end;
procedure TFmChooseFolder.TreeView1AdvancedCustomDrawItem(
Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState;
Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);
begin
if Node.Selected then
begin
Sender.Canvas.Brush.Color := clHighlight;
Sender.Canvas.Font.Color := clHighlightText;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -