Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/FavoriteArrange.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3.2.2 - (show annotations) (download) (as text)
Thu Sep 9 16:20:30 2004 UTC (19 years, 7 months ago) by yoffy
Branch: stable
Changes since 1.3.2.1: +8 -6 lines
File MIME type: text/x-pascal
・ミ・ソ48、ヒ・゙。シ・ク。」

1 unit FavoriteArrange;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
8 GikoSystem, GikoUtil;
9
10 type
11 TFavoriteArrangeDialog = class(TForm)
12 Panel1: TPanel;
13 Panel2: TPanel;
14 Panel3: TPanel;
15 Label1: TLabel;
16 DeleteButton: TButton;
17 RenameButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
20 Panel4: TPanel;
21 CloseButton: TButton;
22 procedure CloseButtonClick(Sender: TObject);
23 procedure FormCreate(Sender: TObject);
24 procedure NewFolderButtonClick(Sender: TObject);
25 procedure RenameButtonClick(Sender: TObject);
26 procedure DeleteButtonClick(Sender: TObject);
27 procedure FolderTreeViewEdited(Sender: TObject; Node: TTreeNode;
28 var S: String);
29 procedure FolderTreeViewDragOver(Sender, Source: TObject; X,
30 Y: Integer; State: TDragState; var Accept: Boolean);
31 procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
32 Y: Integer);
33 procedure FormDestroy(Sender: TObject);
34 private
35 { Private ?ス?ス?ス?ス }
36 // FDragNode: TTreeNode;
37 FDeleteList: TList;
38 // procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
39 procedure SetDeleteItemList(Node: TTreeNode);
40 public
41 { Public ?ス?ス?ス?ス }
42 end;
43
44 var
45 FavoriteArrangeDialog: TFavoriteArrangeDialog;
46
47 implementation
48
49 uses Giko;
50
51 {$R *.dfm}
52
53 procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
54 begin
55 Close;
56 end;
57
58 procedure TFavoriteArrangeDialog.FormCreate(Sender: TObject);
59 begin
60 FDeleteList := TList.Create;
61 FolderTreeView.Items := FavoriteDM.TreeView.Items;
62
63 if FolderTreeView.Items.GetFirstNode <> nil then begin
64 FolderTreeView.Items.GetFirstNode.Expanded := True;
65 FolderTreeView.Items.GetFirstNode.Selected := True;
66 end;
67
68
69 { Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
70 Node.ImageIndex := 0;
71 Node.Data := GikoForm.Favorite.Root;
72 PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
73 Node.Expanded := True;
74 Node.Selected := True;}
75 end;
76
77 {procedure TFavoriteArrangeDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
78 var
79 i: Integer;
80 ChildFavo: TFavoriteItem;
81 ChildNode: TTreeNode;
82 begin
83 { for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
84
85 ChildFavo := TFavoriteFolder(Favo).Items[i];
86 if ChildFavo is TFavoriteFolder then begin
87 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
88 ChildNode.ImageIndex := 0;
89 ChildNode.SelectedIndex := 0;
90 ChildNode.Data := ChildFavo;
91 PrepareFavoriteTree(ChildFavo, ChildNode);
92 end else if ChildFavo is TFavoriteBoardItem then begin
93 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
94 ChildNode.ImageIndex := 1;
95 ChildNode.SelectedIndex := 1;
96 ChildNode.Data := ChildFavo;
97 end else if ChildFavo is TFavoriteThreadItem then begin
98 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
99 ChildNode.ImageIndex := 2;
100 ChildNode.SelectedIndex := 2;
101 ChildNode.Data := ChildFavo;
102 end;
103 end;
104 end; }
105
106 procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
107 var
108 Dlg: TNewFavoriteFolderDialog;
109 NewFavFolder: TFavoriteFolder;
110 Node: TTreeNode;
111 begin
112 if FolderTreeView.Selected = nil then
113 Exit;
114 Dlg := TNewFavoriteFolderDialog.Create(Self);
115 try
116 Dlg.ShowModal;
117 if Dlg.ModalResult = mrOK then begin
118 if Length(Dlg.FolderEdit.Text) = 0 then
119 Exit;
120 if not (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then
121 FolderTreeView.Selected := FolderTreeView.Selected.Parent;
122
123 NewFavFolder := TFavoriteFolder.Create;
124 Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, NewFavFolder);
125 Node.ImageIndex := 14;
126 Node.SelectedIndex := 14;
127 // FolderTreeView.Selected.Expanded := True;
128 FolderTreeView.Selected := Node;
129 end;
130 finally
131 Dlg.Release;
132 end;
133 end;
134
135 procedure TFavoriteArrangeDialog.RenameButtonClick(Sender: TObject);
136 begin
137 if FolderTreeView.Selected = nil then
138 Exit;
139 if FolderTreeView.Selected.IsFirstNode then
140 Exit;
141 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then
142 Exit;
143 FolderTreeView.ReadOnly := False;
144 FolderTreeView.Selected.EditText;
145 end;
146
147 procedure TFavoriteArrangeDialog.DeleteButtonClick(Sender: TObject);
148 const
149 DEL_LINK_MSG = '?スg?ス?ス?ス?ス?スN?スh?ス?ス?ス?ス?ス?ス?スN?スo?ス[?スp?スt?スH?ス?ス?ス_?ス?ス?ス?ス?スB?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH';
150 DEL_MSG = '?スg^0?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH';
151 DEL_TITLE = '?ス?ス?ス?ス?スm?スF';
152 begin
153 if FolderTreeView.Selected = nil then
154 Exit;
155 if FolderTreeView.Selected.IsFirstNode then
156 Exit;
157 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
158 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then begin
159 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
160 Exit;
161 end else begin
162 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FolderTreeView.Selected.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
163 Exit;
164 end;
165 end;
166
167 FDeleteList.Add(FolderTreeView.Selected.Data);
168 SetDeleteItemList(FolderTreeView.Selected);
169
170 FolderTreeView.Selected.Delete;
171 end;
172
173 procedure TFavoriteArrangeDialog.FolderTreeViewEdited(Sender: TObject;
174 Node: TTreeNode; var S: String);
175 begin
176 FolderTreeView.ReadOnly := True;
177 end;
178
179 procedure TFavoriteArrangeDialog.FolderTreeViewDragOver(Sender,
180 Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
181 begin
182 if Source = FolderTreeView then begin
183 if FolderTreeView.Selected = FolderTreeView.Items.GetFirstNode then begin
184 Accept := False;
185 Exit;
186 end;
187 Accept := True;
188 end else
189 Accept := False;
190 end;
191
192 procedure TFavoriteArrangeDialog.FolderTreeViewDragDrop(Sender,
193 Source: TObject; X, Y: Integer);
194 begin
195 if FolderTreeView.GetNodeAt(X, Y) = nil then
196 Exit;
197 if Source <> FolderTreeView then
198 Exit;
199 if FolderTreeView.Selected = FolderTreeView.GetNodeAt(X, Y) then
200 Exit;
201
202 if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteFolder then
203 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naAddChild)
204 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteBoardItem then
205 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert)
206 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteThreadItem then
207 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert);
208 end;
209
210 procedure TFavoriteArrangeDialog.FormDestroy(Sender: TObject);
211 var
212 i: Integer;
213 begin
214 FavoriteDM.TreeView.Items := FolderTreeView.Items;
215
216 for i := FDeleteList.Count - 1 downto 0 do
217 TObject(FDeleteList[i]).Free;
218 FDeleteList.Free;
219 FavoriteDM.WriteFavorite;
220 end;
221
222 procedure TFavoriteArrangeDialog.SetDeleteItemList(Node: TTreeNode);
223 var
224 i: Integer;
225 begin
226 for i := 0 to Node.Count - 1 do begin
227 FDeleteList.Add(Node.Item[i].Data);
228 if Node.Item[i].Count > 0 then
229 SetDeleteItemList(Node.item[i]);
230 end;
231 end;
232
233 end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26