Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/GikoDataModule.pas

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


Revision 1.12 - (hide annotations) (download) (as text)
Wed Nov 23 05:56:19 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
CVS Tags: v1_51_0_620, v1_51_0_619, v1_51_0_621
Changes since 1.11: +14 -15 lines
File MIME type: text/x-pascal
GikoDMの内部から呼び出すフォームの親をGikoFormに戻した。
(Selfのままだったので、これだとGikoDMが親になっていた)

1 h677 1.1 unit GikoDataModule;
2    
3     interface
4    
5     uses
6 h677 1.2 SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 h677 1.6 {$IF Defined(DELPRO) }
8     SHDocVw,
9     MSHTML,
10     {$ELSE}
11     SHDocVw_TLB,
12     MSHTML_TLB,
13     {$IFEND}
14 h677 1.2 ComCtrls;
15 h677 1.1
16 h677 1.11
17 h677 1.1 type
18     TGikoDM = class(TDataModule)
19 h677 1.6 GikoFormActionList: TActionList;
20     OnlyAHundredResAction: TAction;
21     OnlyKokoResAction: TAction;
22     LoginAction: TAction;
23     NewBoardAction: TAction;
24     LogDeleteAction: TAction;
25     KidokuAction: TAction;
26     StdToolBarVisibleAction: TAction;
27     AddressBarVisibleAction: TAction;
28     LinkBarVisibleAction: TAction;
29 h677 1.4 ListToolBarVisibleAction: TAction;
30 h677 1.6 SearchAction: TAction;
31     GikoNaviWebPageAction: TAction;
32     MonazillaWebPageAction: TAction;
33     BBS2chWebPageAction: TAction;
34     GikoFolderOpenAction: TAction;
35     AboutAction: TAction;
36     SelectTextClearAction: TAction;
37     NameTextClearAction: TAction;
38     MailTextClearAction: TAction;
39     ExitAction: TAction;
40     ListNameBarVisibleAction: TAction;
41     BrowserToolBarVisibleAction: TAction;
42     BrowserNameBarVisibleAction: TAction;
43     MsgBarVisibleAction: TAction;
44     MsgBarCloseAction: TAction;
45     StatusBarVisibleAction: TAction;
46     CabinetBBSAction: TAction;
47     CabinetHistoryAction: TAction;
48     OnlyNewResAction: TAction;
49 h677 1.4 CabinetFavoriteAction: TAction;
50 h677 1.6 CabinetVisibleAction: TAction;
51     ListNumberVisibleAction: TAction;
52     UpFolderAction: TAction;
53     CabinetCloseAction: TAction;
54     IconStyle: TAction;
55     LargeIconAction: TAction;
56     SmallIconAction: TAction;
57     ListIconAction: TAction;
58     DetailIconAction: TAction;
59     MidokuAction: TAction;
60     AllSelectAction: TAction;
61     AllItemAction: TAction;
62     LogItemAction: TAction;
63     NewItemAction: TAction;
64     ThreadRangeAction: TAction;
65     SelectItemAction: TAction;
66     StopAction: TAction;
67     OptionAction: TAction;
68     RoundAction: TAction;
69 h677 1.4 BrowserMaxAction: TAction;
70 h677 1.6 BrowserMinAction: TAction;
71     ScrollTopAction: TAction;
72     ScrollLastAction: TAction;
73     ScrollNewAction: TAction;
74     ScrollKokoAction: TAction;
75     EditorAction: TAction;
76     IEAction: TAction;
77     ShowThreadAction: TAction;
78     ShowBoardAction: TAction;
79     URLCopyAction: TAction;
80     NameCopyAction: TAction;
81     NameURLCopyAction: TAction;
82     ItemReloadAction: TAction;
83     ThreadEditorAction: TAction;
84     BoardIEAction: TAction;
85     SelectItemURLCopyAction: TAction;
86     SelectItemNameCopyAction: TAction;
87     SelectItemNameURLCopyAction: TAction;
88     SelectListReloadAction: TAction;
89 h677 1.4 SelectThreadReloadAction: TAction;
90 h677 1.6 BrowserTabCloseAction: TAction;
91     NotSelectTabCloseAction: TAction;
92     AllTabCloseAction: TAction;
93     KokomadeAction: TAction;
94     ZenbuAction: TAction;
95     KokoResAction: TAction;
96     TreeSelectBoradReload: TAction;
97     TreeSelectThreadReload: TAction;
98     TreeSelectURLCopy: TAction;
99     SelectReservAction: TAction;
100     SelectNewRoundName: TAction;
101     SelectDeleteRound: TAction;
102     KeySettingAction: TAction;
103     ArrangeAction: TAction;
104     ActiveLogDeleteAction: TAction;
105     TreeSelectNameURLCopy: TAction;
106     PaneInitAction: TAction;
107     LeftmostTabSelectAction: TAction;
108     LeftTabSelectAction: TAction;
109 h677 1.4 RightTabSelectAction: TAction;
110 h677 1.6 RightmostTabSelectAction: TAction;
111     FavoriteAddAction: TAction;
112     BoardFavoriteAddAction: TAction;
113     ThreadFavoriteAddAction: TAction;
114     TreeSelectFavoriteAddAction: TAction;
115     FavoriteArrangeAction: TAction;
116     MoveToAction: TAction;
117     BrowserTabVisibleAction: TAction;
118     BrowserTabTopAction: TAction;
119     BrowserTabBottomAction: TAction;
120     BrowserTabTabStyleAction: TAction;
121     BrowserTabButtonStyleAction: TAction;
122     BrowserTabFlatStyleAction: TAction;
123     GikoHelpAction: TAction;
124     KotehanAction: TAction;
125     ToolBarSettingAction: TAction;
126     SelectResAction: TAction;
127     AllResAction: TAction;
128     EditNGAction: TAction;
129 h677 1.4 ReloadAction: TAction;
130 h677 1.6 GoFowardAction: TAction;
131     GoBackAction: TAction;
132     TreeSelectSearchBoardName: TAction;
133     FavoriteTreeViewRenameAction: TAction;
134     FavoriteTreeViewNewFolderAction: TAction;
135     FavoriteTreeViewDeleteAction: TAction;
136     FavoriteTreeViewBrowseFolderAction: TAction;
137     FavoriteTreeViewReloadAction: TAction;
138     FavoriteTreeViewURLCopyAction: TAction;
139     FavoriteTreeViewNameCopyAction: TAction;
140     FavoriteTreeViewNameURLCopyAction: TAction;
141     FavoriteTreeViewLogDeleteAction: TAction;
142     ResRangeAction: TAction;
143     ExportFavoriteFile: TFileSaveAs;
144     FavoriteTreeViewBrowseBoardAction: TAction;
145     FavoriteTreeViewBrowseThreadAction: TAction;
146     UpBoardAction: TAction;
147     KoreCopy: TAction;
148     TreeSelectNameCopy: TAction;
149 h677 1.4 SetFocusForBrowserAction: TAction;
150 h677 1.6 SetFocusForThreadListAction: TAction;
151     SetFocusForCabinetAction: TAction;
152     FileRun1: TFileRun;
153     ThreadlistMaxAndFocusAction: TAction;
154     BrowserMaxAndFocusAction: TAction;
155     SelectItemSaveForHTML: TAction;
156     SelectItemSaveForDat: TAction;
157     FileSaveAs1: TFileSaveAs;
158     LogFolderOpenAction: TAction;
159     TabsSaveAction: TAction;
160     TabsOpenAction: TAction;
161     BrowsBoradHeadAction: TAction;
162     TabAutoSaveAction: TAction;
163     TabAutoLoadAction: TAction;
164     JumpToNumOfResAction: TAction;
165     FavoriteTreeViewCollapseAction: TAction;
166     RightTabCloseAction: TAction;
167     LeftTabCloseAction: TAction;
168     SameIDResAnchorAction: TAction;
169 h677 1.4 IndividualAbon1Action: TAction;
170 h677 1.6 IndividualAbon0Action: TAction;
171     AntiIndividualAbonAction: TAction;
172     AntiIndividualAbonDlgAction: TAction;
173     IndividualAbonID1Action: TAction;
174     IndividualAbonID0Action: TAction;
175     MuteAction: TAction;
176     SortActiveColumnAction: TAction;
177     SortNextColumnAction: TAction;
178     SortPrevColumnAction: TAction;
179     BeLogInOutAction: TAction;
180     UnSelectedListViewAction: TAction;
181     WikiFAQWebPageAction: TAction;
182     ToobarImageList: TImageList;
183     procedure EditNGActionExecute(Sender: TObject);
184     procedure ReloadActionExecute(Sender: TObject);
185     procedure GoFowardActionExecute(Sender: TObject);
186     procedure GoBackActionExecute(Sender: TObject);
187     procedure MoveToActionExecute(Sender: TObject);
188     procedure FavoriteAddActionExecute(Sender: TObject);
189 h677 1.4 procedure FavoriteArrangeActionExecute(Sender: TObject);
190 h677 1.6 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
191     procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
192     procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
193     procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
194     procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
195     procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
196     procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
197     procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
198     procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
199     procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
200     procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
201     procedure OnlyAHundredResActionExecute(Sender: TObject);
202     procedure OnlyKokoResActionExecute(Sender: TObject);
203     procedure OnlyNewResActionExecute(Sender: TObject);
204     procedure BrowserMaxActionExecute(Sender: TObject);
205     procedure BrowserMinActionExecute(Sender: TObject);
206     procedure ScrollTopActionExecute(Sender: TObject);
207     procedure ScrollLastActionExecute(Sender: TObject);
208     procedure ScrollNewActionExecute(Sender: TObject);
209 h677 1.4 procedure ScrollKokoActionExecute(Sender: TObject);
210 h677 1.6 procedure ScrollKokoActionUpdate(Sender: TObject);
211     procedure EditorActionExecute(Sender: TObject);
212     procedure IEActionExecute(Sender: TObject);
213     procedure ShowThreadActionExecute(Sender: TObject);
214     procedure ShowBoardActionExecute(Sender: TObject);
215     procedure URLCopyActionExecute(Sender: TObject);
216     procedure NameCopyActionExecute(Sender: TObject);
217     procedure NameURLCopyActionExecute(Sender: TObject);
218     procedure ItemReloadActionExecute(Sender: TObject);
219     procedure BrowserTabCloseActionExecute(Sender: TObject);
220     procedure BrowserTabCloseActionUpdate(Sender: TObject);
221     procedure NotSelectTabCloseActionExecute(Sender: TObject);
222     procedure NotSelectTabCloseActionUpdate(Sender: TObject);
223     procedure AllTabCloseActionExecute(Sender: TObject);
224     procedure ActiveLogDeleteActionExecute(Sender: TObject);
225     procedure LeftmostTabSelectActionExecute(Sender: TObject);
226     procedure LeftmostTabSelectActionUpdate(Sender: TObject);
227     procedure LeftTabSelectActionExecute(Sender: TObject);
228     procedure RightTabSelectActionExecute(Sender: TObject);
229 h677 1.4 procedure RightTabSelectActionUpdate(Sender: TObject);
230 h677 1.6 procedure RightmostTabSelectActionExecute(Sender: TObject);
231     procedure ThreadFavoriteAddActionExecute(Sender: TObject);
232     procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
233     procedure SelectResActionExecute(Sender: TObject);
234     procedure AllResActionExecute(Sender: TObject);
235     procedure ResRangeActionExecute(Sender: TObject);
236     procedure UpBoardActionExecute(Sender: TObject);
237     procedure JumpToNumOfResActionExecute(Sender: TObject);
238     procedure RightTabCloseActionExecute(Sender: TObject);
239     procedure RightTabCloseActionUpdate(Sender: TObject);
240     procedure LeftTabCloseActionExecute(Sender: TObject);
241     procedure DataModuleCreate(Sender: TObject);
242     procedure SearchActionExecute(Sender: TObject);
243     procedure OptionActionExecute(Sender: TObject);
244     procedure RoundActionExecute(Sender: TObject);
245     procedure KeySettingActionExecute(Sender: TObject);
246     procedure KotehanActionExecute(Sender: TObject);
247     procedure ToolBarSettingActionExecute(Sender: TObject);
248     procedure MuteActionExecute(Sender: TObject);
249     procedure TreeSelectBoradReloadExecute(Sender: TObject);
250     procedure TreeSelectThreadReloadExecute(Sender: TObject);
251     procedure TreeSelectURLCopyExecute(Sender: TObject);
252     procedure TreeSelectNameURLCopyExecute(Sender: TObject);
253     procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
254     procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
255     procedure TreeSelectNameCopyExecute(Sender: TObject);
256     procedure LoginActionExecute(Sender: TObject);
257     procedure NewBoardActionExecute(Sender: TObject);
258     procedure LogDeleteActionExecute(Sender: TObject);
259     procedure LogDeleteActionUpdate(Sender: TObject);
260     procedure SelectTextClearActionExecute(Sender: TObject);
261     procedure NameTextClearActionExecute(Sender: TObject);
262     procedure MailTextClearActionExecute(Sender: TObject);
263     procedure ExitActionExecute(Sender: TObject);
264     procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
265     procedure ExportFavoriteFileAccept(Sender: TObject);
266     procedure SelectItemSaveForHTMLExecute(Sender: TObject);
267     procedure SelectItemSaveForDatExecute(Sender: TObject);
268     procedure TabsSaveActionExecute(Sender: TObject);
269     procedure TabsOpenActionExecute(Sender: TObject);
270     procedure TabAutoSaveActionExecute(Sender: TObject);
271     procedure TabAutoLoadActionExecute(Sender: TObject);
272     procedure BeLogInOutActionExecute(Sender: TObject);
273     procedure BeLogInOutActionUpdate(Sender: TObject);
274     procedure KokomadeActionExecute(Sender: TObject);
275     procedure ZenbuActionExecute(Sender: TObject);
276     procedure KokoResActionExecute(Sender: TObject);
277     procedure KoreCopyExecute(Sender: TObject);
278     procedure SameIDResAnchorActionExecute(Sender: TObject);
279     procedure IndividualAbon1ActionExecute(Sender: TObject);
280     procedure IndividualAbon0ActionExecute(Sender: TObject);
281     procedure AntiIndividualAbonActionExecute(Sender: TObject);
282     procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
283     procedure IndividualAbonID1ActionExecute(Sender: TObject);
284     procedure IndividualAbonID0ActionExecute(Sender: TObject);
285     procedure GikoNaviWebPageActionExecute(Sender: TObject);
286 h677 1.7 procedure MonazillaWebPageActionExecute(Sender: TObject);
287     procedure BBS2chWebPageActionExecute(Sender: TObject);
288     procedure GikoFolderOpenActionExecute(Sender: TObject);
289     procedure AboutActionExecute(Sender: TObject);
290     procedure GikoHelpActionExecute(Sender: TObject);
291     procedure WikiFAQWebPageActionExecute(Sender: TObject);
292     procedure ListNumberVisibleActionExecute(Sender: TObject);
293     procedure UpFolderActionExecute(Sender: TObject);
294     procedure UpFolderActionUpdate(Sender: TObject);
295     procedure IconStyleExecute(Sender: TObject);
296     procedure AllItemActionExecute(Sender: TObject);
297     procedure LogItemActionExecute(Sender: TObject);
298     procedure NewItemActionExecute(Sender: TObject);
299     procedure ThreadRangeActionExecute(Sender: TObject);
300     procedure SelectItemActionExecute(Sender: TObject);
301     procedure ThreadEditorActionExecute(Sender: TObject);
302     procedure BoardIEActionExecute(Sender: TObject);
303     procedure SelectItemURLCopyActionExecute(Sender: TObject);
304     procedure SelectItemURLCopyActionUpdate(Sender: TObject);
305     procedure SelectItemNameCopyActionExecute(Sender: TObject);
306     procedure SelectItemNameCopyActionUpdate(Sender: TObject);
307     procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
308     procedure SelectListReloadActionExecute(Sender: TObject);
309     procedure SelectListReloadActionUpdate(Sender: TObject);
310     procedure SelectThreadReloadActionExecute(Sender: TObject);
311     procedure SelectThreadReloadActionUpdate(Sender: TObject);
312     procedure SelectReservActionExecute(Sender: TObject);
313     procedure SelectReservActionUpdate(Sender: TObject);
314     procedure SelectNewRoundNameExecute(Sender: TObject);
315     procedure SelectDeleteRoundExecute(Sender: TObject);
316     procedure BoardFavoriteAddActionExecute(Sender: TObject);
317     procedure BoardFavoriteAddActionUpdate(Sender: TObject);
318     procedure LogFolderOpenActionExecute(Sender: TObject);
319     procedure LogFolderOpenActionUpdate(Sender: TObject);
320     procedure BrowsBoradHeadActionExecute(Sender: TObject);
321     procedure SortActiveColumnActionExecute(Sender: TObject);
322 h677 1.11 procedure SortNextColumnActionExecute(Sender: TObject);
323     procedure SortPrevColumnActionExecute(Sender: TObject);
324     procedure StdToolBarVisibleActionExecute(Sender: TObject);
325     procedure AddressBarVisibleActionExecute(Sender: TObject);
326     procedure LinkBarVisibleActionExecute(Sender: TObject);
327     procedure ListToolBarVisibleActionExecute(Sender: TObject);
328     procedure ListNameBarVisibleActionExecute(Sender: TObject);
329     procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
330     procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
331     procedure MsgBarVisibleActionExecute(Sender: TObject);
332     procedure MsgBarCloseActionExecute(Sender: TObject);
333     procedure StatusBarVisibleActionExecute(Sender: TObject);
334     procedure CabinetBBSActionExecute(Sender: TObject);
335     procedure CabinetHistoryActionExecute(Sender: TObject);
336     procedure CabinetFavoriteActionExecute(Sender: TObject);
337     procedure CabinetVisibleActionExecute(Sender: TObject);
338     procedure CabinetCloseActionExecute(Sender: TObject);
339     procedure LargeIconActionExecute(Sender: TObject);
340     procedure SmallIconActionExecute(Sender: TObject);
341     procedure ListIconActionExecute(Sender: TObject);
342     procedure DetailIconActionExecute(Sender: TObject);
343     procedure StopActionExecute(Sender: TObject);
344     procedure ArrangeActionExecute(Sender: TObject);
345     procedure PaneInitActionExecute(Sender: TObject);
346     procedure BrowserTabVisibleActionExecute(Sender: TObject);
347     procedure BrowserTabTopActionExecute(Sender: TObject);
348     procedure BrowserTabBottomActionExecute(Sender: TObject);
349     procedure BrowserTabTabStyleActionExecute(Sender: TObject);
350     procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
351     procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
352     procedure SetFocusForBrowserActionExecute(Sender: TObject);
353     procedure SetFocusForBrowserActionUpdate(Sender: TObject);
354     procedure SetFocusForThreadListActionExecute(Sender: TObject);
355     procedure SetFocusForCabinetActionExecute(Sender: TObject);
356     procedure SetFocusForCabinetActionUpdate(Sender: TObject);
357     procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
358     procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
359     procedure UnSelectedListViewActionExecute(Sender: TObject);
360     procedure KidokuActionExecute(Sender: TObject);
361     procedure MidokuActionExecute(Sender: TObject);
362     procedure AllSelectActionExecute(Sender: TObject);
363     procedure AllSelectActionUpdate(Sender: TObject);
364 h677 1.1 private
365     { Private 鐃緒申鐃緒申 }
366     public
367     { Public 鐃緒申鐃緒申 }
368     published
369     { Published 鐃緒申鐃緒申 }
370 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
371 h677 1.1 procedure DependActiveCntentActionUpdate(Sender: TObject);
372 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
373 h677 1.2 procedure DependActiveCntentLogActionUpdate(Sender: TObject);
374 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
375 h677 1.2 procedure DependActiveListTBoardActionUpdate(Sender: TObject);
376 h677 1.1 end;
377    
378     var
379     GikoDM: TGikoDM;
380    
381 h677 1.11
382 h677 1.1 implementation
383    
384     uses
385 h677 1.6 Windows, Math, Messages, Dialogs, Clipbrd,
386 h677 1.3 Giko, GikoSystem, GikoUtil, BoardGroup,
387     FavoriteArrange, Favorite, Setting, MojuUtils,
388 h677 1.4 Editor, ListSelect, Search, Option, Round,
389     KeySetting, Gesture, Kotehan, ToolBarSetting,
390 h677 1.6 ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
391 h677 1.7 GikoBayesian, About, ShellAPI, Graphics,
392 h677 1.8 RoundName, RoundData, Menus, ListViewUtils,
393     ThreadControl;
394 h677 1.1
395     const
396 h677 1.3 CAPTION_NAME: string = '鐃?鐃?鐃?鐃?';
397 h677 1.1 USER_SETLINKBAR = WM_USER + 2003;
398 h677 1.7
399 yoffy 1.9 ITEM_ICON_SORT1 = 12; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
400     ITEM_ICON_SORT2 = 13; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
401 h677 1.7
402 h677 1.3 //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
403 yoffy 1.9 TOOL_ICON_HEIGHT_MAX = 16; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
404     TOOL_ICON_HEIGHT_MIN = 17; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
405     TOOL_ICON_HEIGHT_NORMAL = 18; //!< 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
406     TOOL_ICON_WIDTH_MAX = 19; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
407     TOOL_ICON_WIDTH_MIN = 20; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
408     TOOL_ICON_WIDTH_NORMAL = 21; //!< 鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
409    
410     TOOL_ICON_FAV_FOLDER = 30; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申
411     TOOL_ICON_FAV_BOARD = 31; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
412     TOOL_ICON_FAV_THREAD = 32; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
413 h677 1.3
414 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申URL
415 h677 1.6 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
416 yoffy 1.9 //! Monazilla鐃?鐃?鐃?鐃緒申URL
417 h677 1.6 URL_MONAZILLA: string = 'http://www.monazilla.org/';
418 yoffy 1.9 //! 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL
419 h677 1.6 URL_2ch: string = 'http://www.2ch.net/';
420 yoffy 1.9 //! 鐃?鐃?鐃?鐃?Wiki鐃緒申URL
421 h677 1.6 URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ';
422    
423 h677 1.7 SELECTCOMBOBOX_NAME: string = ''; // '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申';
424     SELECTCOMBOBOX_COLOR: TColor = clWindow;
425    
426 h677 1.1 {$R *.dfm}
427     // *************************************************************************
428 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
429 h677 1.2 // *************************************************************************
430     procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
431     begin
432     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
433     end;
434     // *************************************************************************
435 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
436 h677 1.2 // *************************************************************************
437     procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
438     begin
439     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
440     and (GikoForm.GetActiveContent.IsLogFile);
441     end;
442     // *************************************************************************
443 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
444 h677 1.2 // *************************************************************************
445     procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
446     begin
447     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
448     end;
449     // *************************************************************************
450 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃?
451 h677 1.1 // *************************************************************************
452     procedure TGikoDM.EditNGActionExecute(Sender: TObject);
453     begin
454     //鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
455     GikoSys.FAbon.EditNGwords;
456     end;
457     // *************************************************************************
458 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
459 h677 1.1 // *************************************************************************
460     procedure TGikoDM.ReloadActionExecute(Sender: TObject);
461     begin
462     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
463     if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
464     MsgBox(GikoForm.Handle, 'NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
465     end else begin
466     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
467     GikoForm.RepaintAllTabsBrowser();
468     end;
469     end;
470     // *************************************************************************
471 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
472 h677 1.1 // *************************************************************************
473     procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
474     var
475     s: string;
476     begin
477     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
478     if GikoSys.FAbon.GoBack =false then begin
479     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
480     end else begin
481     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
482     s := GikoSys.FAbon.NGwordname;
483     GikoForm.StatusBar.Panels.Items[2].Text := s;
484     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
485     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
486     GikoForm.StatusBarResize(Sender);
487     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
488     GikoForm.RepaintAllTabsBrowser();
489     end;
490     end;
491     // *************************************************************************
492 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
493 h677 1.1 // *************************************************************************
494     procedure TGikoDM.GoBackActionExecute(Sender: TObject);
495     var
496     s: string;
497     begin
498     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
499     if GikoSys.FAbon.GoForward =false then begin
500     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃?鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
501     end else begin
502     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
503     s := GikoSys.FAbon.NGwordname;
504     GikoForm.StatusBar.Panels.Items[2].Text := s;
505     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
506     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
507     GikoForm.StatusBarResize(Sender);
508     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
509     GikoForm.RepaintAllTabsBrowser();
510     end;
511     end;
512     // *************************************************************************
513 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
514 h677 1.1 // *************************************************************************
515     procedure TGikoDM.MoveToActionExecute(Sender: TObject);
516     var
517     URL: string;
518     idx: Integer;
519     begin
520     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃緒申鐃緒申
521     URL := Trim(GikoForm.AddressComboBox.Text);
522     //URL鐃緒申鐃緒申鐃緒申
523     GikoForm.MoveToURL(URL);
524     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
525     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
526     if idx = -1 then begin
527     GikoForm.AddressComboBox.Items.Insert(0, URL);
528     if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
529     GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
530     end else begin
531     GikoForm.AddressComboBox.Items.Delete(idx);
532     GikoForm.AddressComboBox.Items.Insert(0, URL);
533     end;
534     end;
535     // *************************************************************************
536 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
537 h677 1.1 // *************************************************************************
538     procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
539     begin
540     GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
541     end;
542     // *************************************************************************
543 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
544 h677 1.1 // *************************************************************************
545     procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
546     var
547     Dlg: TFavoriteArrangeDialog;
548     begin
549 h677 1.12 Dlg := TFavoriteArrangeDialog.Create(GikoForm);
550 h677 1.1 try
551     Dlg.ShowModal;
552     finally
553     Dlg.Release;
554     end;
555     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
556     PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
557     end;
558     // *************************************************************************
559 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
560 h677 1.1 // *************************************************************************
561     procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
562     var
563     node : TTreeNode;
564     begin
565     node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
566     try
567     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
568     while node <> nil do begin
569     if node.HasChildren then
570     node.Expanded := False;
571     node := node.GetNext;
572     end;
573     except
574     end;
575     end;
576 h677 1.2 // *************************************************************************
577 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
578 h677 1.2 // *************************************************************************
579     procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
580     var
581     node : TTreeNode;
582     begin
583    
584     if GikoForm.ClickNode = nil then
585     Exit;
586     if GikoForm.ClickNode.IsFirstNode then
587     Exit;
588     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
589     Exit;
590     GikoForm.FavoriteTreeView.ReadOnly := False;
591     if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
592     node := GikoForm.ClickNode.Parent;
593     while node <> nil do begin
594     node.Expanded := True;
595     node := node.Parent;
596     end;
597     GikoForm.ClickNode.EditText;
598     end else begin
599     GikoForm.ClickNode.Text := InputBox( '鐃緒申鐃?鐃緒申鐃緒申鐃?', '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', GikoForm.ClickNode.Text );
600     end;
601    
602     GikoForm.SetLinkBar;
603     end;
604     // *************************************************************************
605 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
606 h677 1.2 // *************************************************************************
607     procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
608     var
609     NewFavFolder: TFavoriteFolder;
610     Node: TTreeNode;
611     begin
612    
613     if GikoForm.ClickNode = nil then
614     Exit;
615    
616     try
617     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
618     GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
619     GikoForm.ClickNode := GikoForm.ClickNode.Parent;
620     end;
621    
622     NewFavFolder := TFavoriteFolder.Create;
623     Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?', NewFavFolder);
624     Node.ImageIndex := 14;
625     Node.SelectedIndex := 14;
626     // FClickNode.Selected.Expanded := True;
627     GikoForm.FavoriteTreeView.Selected := Node;
628     GikoForm.ClickNode := Node;
629     FavoriteTreeViewRenameAction.Execute;
630     finally
631     end;
632    
633     end;
634     // *************************************************************************
635 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
636 h677 1.2 // *************************************************************************
637     procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
638     const
639     DEL_LINK_MSG = '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
640     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
641     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
642     begin
643    
644     if GikoForm.ClickNode = nil then
645     Exit;
646     if GikoForm.ClickNode.IsFirstNode then
647     Exit;
648     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
649     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
650     if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
651     Exit;
652     end else begin
653     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', GikoForm.ClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
654     Exit;
655     end;
656     end;
657    
658     GikoForm.ClickNode.Delete;
659    
660     GikoForm.SetLinkBar;
661    
662     end;
663     // *************************************************************************
664 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
665 h677 1.2 // *************************************************************************
666     procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
667     Sender: TObject);
668     begin
669     GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
670     end;
671     // *************************************************************************
672 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
673 h677 1.2 // *************************************************************************
674     procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
675     var
676     ThreadItem: TThreadItem;
677     FavThread: TFavoriteThreadItem;
678     Board: TBoard;
679     FavBoard: TFavoriteBoardItem;
680     shiftDown: Boolean;
681     begin
682    
683     if GikoForm.ClickNode = nil then Exit;
684    
685     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
686    
687     if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
688     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
689     ThreadItem := FavThread.Item;
690     if ThreadItem <> nil then
691     GikoForm.DownloadContent(ThreadItem, shiftDown);
692     end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
693     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
694     Board := FavBoard.Item;
695     GikoForm.DownloadList(Board, shiftDown);
696     end;
697    
698     end;
699     // *************************************************************************
700 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
701 h677 1.2 // *************************************************************************
702     procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
703     var
704     FavThread : TFavoriteThreadItem;
705     FavBoard : TFavoriteBoardItem;
706     s : string;
707     begin
708    
709     if GikoForm.ClickNode = nil then Exit;
710    
711     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
712    
713     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
714     s := FavThread.URL + #13#10;
715     if s <> '' then
716     Clipboard.AsText := s;
717    
718     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
719    
720     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
721     s := FavBoard.URL + #13#10;
722     if s <> '' then
723     Clipboard.AsText := s;
724    
725     end;
726     end;
727     // *************************************************************************
728 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
729 h677 1.2 // *************************************************************************
730     procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
731     var
732     ThreadItem: TThreadItem;
733     FavThread: TFavoriteThreadItem;
734     Board: TBoard;
735     FavBoard: TFavoriteBoardItem;
736     s: string;
737     begin
738    
739     if GikoForm.ClickNode = nil then Exit;
740    
741     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
742    
743     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
744     ThreadItem := FavThread.Item;
745    
746     try
747     s := ThreadItem.Title + #13#10;
748     if s <> '' then
749     Clipboard.AsText := s;
750     finally
751     end;
752    
753     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
754    
755     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
756     Board := FavBoard.Item;
757     if Board <> nil then
758     if not Board.IsThreadDatRead then
759     GikoSys.ReadSubjectFile(Board);
760    
761     try
762     s := Board.Title + #13#10;
763     if s <> '' then
764     Clipboard.AsText := s;
765     finally
766     end;
767    
768     end;
769    
770     end;
771     // *************************************************************************
772 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
773 h677 1.2 // *************************************************************************
774     procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
775     Sender: TObject);
776     var
777     ThreadItem: TThreadItem;
778     FavThread: TFavoriteThreadItem;
779     Board: TBoard;
780     FavBoard: TFavoriteBoardItem;
781     s: string;
782     begin
783    
784     if GikoForm.ClickNode = nil then Exit;
785    
786     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
787    
788     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
789     ThreadItem := FavThread.Item;
790    
791     try
792     s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
793     if s <> '' then
794     Clipboard.AsText := s;
795     finally
796     end;
797    
798     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
799    
800     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
801     Board := FavBoard.Item;
802     if Board <> nil then
803     if not Board.IsThreadDatRead then
804     GikoSys.ReadSubjectFile(Board);
805    
806     try
807     s := Board.Title + #13#10 + Board.URL + #13#10;
808     if s <> '' then
809     Clipboard.AsText := s;
810     finally
811     end;
812    
813     end;
814    
815     end;
816     // *************************************************************************
817 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
818 h677 1.2 // *************************************************************************
819     procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
820     const
821     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
822     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
823     var
824     ThreadItem: TThreadItem;
825     FavThread: TFavoriteThreadItem;
826     begin
827    
828     if GikoForm.ClickNode = nil then Exit;
829     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
830    
831     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
832     ThreadItem := FavThread.Item;
833    
834     try
835     if GikoSys.Setting.DeleteMsg then begin
836     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
837     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', GikoForm.ClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
838     Exit;
839     end;
840    
841     GikoForm.DeleteHistory(ThreadItem);
842     GikoForm.DeleteTab(ThreadItem);
843     ThreadItem.DeleteLogFile;
844    
845     GikoForm.ListView.Refresh;
846     finally
847     end;
848    
849     end;
850     // *************************************************************************
851 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
852 h677 1.2 // *************************************************************************
853     procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
854     Sender: TObject);
855     var
856     threadItem : TThreadItem;
857     begin
858    
859     if GikoForm.ClickNode = nil then Exit;
860    
861     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
862    
863     threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
864     if threadItem = nil then
865     Exit;
866     GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
867    
868     end;
869     end;
870 h677 1.3 // *************************************************************************
871 yoffy 1.9 //! 鐃緒申鐃?100鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
872 h677 1.3 // *************************************************************************
873     procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
874     var
875     FilterList : TStringList;
876     begin
877     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
878     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
879    
880     GikoForm.ResRangeMenuSelect := 100;
881     OnlyAHundredResAction.Checked := True;
882    
883     if GikoSys.ResRange <> 100 then begin
884     GikoSys.ResRange := 100;
885    
886     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
887     FilterList := TStringList.Create;
888     try
889     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
890     GikoSys.FSelectResFilter.Reverse := False;
891     finally
892     FilterList.Free;
893     end;
894    
895     GikoForm.SelectResWord := '';
896     GikoForm.RepaintAllTabsBrowser();
897     end;
898     end;
899     // *************************************************************************
900 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
901 h677 1.3 // *************************************************************************
902     procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
903     var
904     FilterList : TStringList;
905     begin
906     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
907     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
908    
909     GikoForm.ResRangeMenuSelect := Ord( grrKoko );
910     OnlyKokoResAction.Checked := True;
911    
912     if GikoSys.ResRange <> Ord( grrKoko ) then begin
913     GikoSys.ResRange := Ord( grrKoko );
914    
915     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
916     FilterList := TStringList.Create;
917     try
918     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
919     GikoSys.FSelectResFilter.Reverse := False;
920     finally
921     FilterList.Free;
922     end;
923    
924     GikoForm.SelectResWord := '';
925     GikoForm.RepaintAllTabsBrowser();
926     end;
927     end;
928     // *************************************************************************
929 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
930 h677 1.3 // *************************************************************************
931     procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
932     var
933     FilterList : TStringList;
934     begin
935     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
936     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
937    
938     GikoForm.ResRangeMenuSelect := Ord( grrNew );
939     OnlyNewResAction.Checked := True;
940    
941     if GikoSys.ResRange <> Ord( grrNew ) then begin
942     GikoSys.ResRange := Ord( grrNew );
943 h677 1.1
944 h677 1.3 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
945     FilterList := TStringList.Create;
946     try
947     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
948     GikoSys.FSelectResFilter.Reverse := False;
949     finally
950     FilterList.Free;
951     end;
952    
953     GikoForm.SelectResWord := '';
954     GikoForm.RepaintAllTabsBrowser();
955     end;
956     end;
957     // *************************************************************************
958 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
959 h677 1.3 // *************************************************************************
960     procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
961     begin
962     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
963     case GikoSys.Setting.ListWidthState of
964     glsMax: begin
965     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
966     if GikoForm.ActiveContent <> nil then
967     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
968     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
969     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
970     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
971     GikoSys.Setting.ListWidthState := glsNormal;
972     if GikoForm.ActiveContent <> nil then
973     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
974     end;
975     glsMin, glsNormal: begin
976     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
977     if GikoForm.ActiveContent <> nil then
978     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
979     if GikoSys.Setting.ListWidthState = glsNormal then
980     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
981     if GikoForm.ActiveContent <> nil then
982     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
983     GikoForm.ViewPanel.Width := 1;
984     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
985     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
986     GikoSys.Setting.ListWidthState := glsMax;
987     end;
988     end;
989     end else begin
990     case GikoSys.Setting.ListHeightState of
991     glsMax: begin
992     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
993     if GikoForm.ActiveContent <> nil then
994     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
995     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
996     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
997     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
998     GikoSys.Setting.ListHeightState := glsNormal;
999     if GikoForm.ActiveContent <> nil then
1000     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1001     end;
1002     glsMin, glsNormal: begin
1003     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1004     if GikoForm.ActiveContent <> nil then
1005     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1006     if GikoSys.Setting.ListHeightState = glsNormal then
1007     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1008     if GikoForm.ActiveContent <> nil then
1009     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1010     GikoForm.ViewPanel.Height := 1;
1011     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1012     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1013     GikoSys.Setting.ListHeightState := glsMax;
1014     end;
1015     end;
1016     end;
1017     end;
1018     // *************************************************************************
1019 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1020 h677 1.3 // *************************************************************************
1021     procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1022     begin
1023     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1024     case GikoSys.Setting.ListWidthState of
1025     glsMax, glsNormal: begin
1026     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1027     if GikoForm.ActiveContent <> nil then
1028     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1029     if GikoSys.Setting.ListWidthState = glsNormal then
1030     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
1031     if GikoForm.ActiveContent <> nil then
1032     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1033     GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
1034     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1035     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1036     GikoSys.Setting.ListWidthState := glsMin;
1037     end;
1038     glsMin: begin
1039     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1040     if GikoForm.ActiveContent <> nil then
1041     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1042     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
1043     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1044     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1045     GikoSys.Setting.ListWidthState := glsNormal;
1046     if GikoForm.ActiveContent <> nil then
1047     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1048     end;
1049     end;
1050     end else begin
1051     case GikoSys.Setting.ListHeightState of
1052     glsMax, glsNormal: begin
1053     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1054     if GikoForm.ActiveContent <> nil then
1055     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1056     if GikoSys.Setting.ListHeightState = glsNormal then
1057     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1058     GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1059     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1060     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1061     GikoSys.Setting.ListHeightState := glsMin;
1062     if GikoForm.ActiveContent <> nil then
1063     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1064     end;
1065     glsMin: begin
1066     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1067     if GikoForm.ActiveContent <> nil then
1068     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1069     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1070     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1071     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1072     GikoSys.Setting.ListHeightState := glsNormal;
1073     if GikoForm.ActiveContent <> nil then
1074     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1075     end;
1076     end;
1077     end;
1078     end;
1079     // *************************************************************************
1080 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1081 h677 1.3 // *************************************************************************
1082     procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1083     begin
1084     GikoForm.BrowserMovement('top');
1085     end;
1086     // *************************************************************************
1087 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1088 h677 1.3 // *************************************************************************
1089     procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1090     begin
1091     GikoForm.BrowserMovement('bottom');
1092     end;
1093     // *************************************************************************
1094 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1095 h677 1.3 // *************************************************************************
1096     procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1097     begin
1098     GikoForm.BrowserMovement('new');
1099     end;
1100     // *************************************************************************
1101 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1102 h677 1.3 // *************************************************************************
1103     procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1104     begin
1105     GikoForm.BrowserMovement('koko');
1106     end;
1107     // *************************************************************************
1108 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1109 h677 1.3 // *************************************************************************
1110     procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1111     begin
1112     ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1113     and (GikoForm.GetActiveContent.IsLogFile)
1114     and (GikoForm.GetActiveContent.Kokomade <> -1);
1115     end;
1116     // *************************************************************************
1117 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1118 h677 1.3 // *************************************************************************
1119     procedure TGikoDM.EditorActionExecute(Sender: TObject);
1120     var
1121     Editor: TEditorForm;
1122     Item: TThreadItem;
1123     begin
1124     Item := GikoForm.GetActiveContent;
1125     if Item = nil then Exit;
1126     Editor := TEditorForm.Create(GikoForm.GetMainForm);
1127     Editor.SetThreadItem(Item);
1128     GikoSys.LoadEditorKeySetting(Editor.ActionList);
1129     Editor.Show;
1130     Editor.BodyEdit.SetFocus;
1131     end;
1132     // *************************************************************************
1133 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1134 h677 1.3 // *************************************************************************
1135     procedure TGikoDM.IEActionExecute(Sender: TObject);
1136     begin
1137     ShowThreadAction.Execute;
1138     end;
1139     // *************************************************************************
1140 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1141 h677 1.3 // *************************************************************************
1142     procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1143     var
1144     ThreadItem: TThreadItem;
1145     begin
1146     ThreadItem := GikoForm.GetActiveContent;
1147     if ThreadItem = nil then Exit;
1148     GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1149     end;
1150     // *************************************************************************
1151 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1152 h677 1.3 // *************************************************************************
1153     procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1154     var
1155     ThreadItem: TThreadItem;
1156     begin
1157     ThreadItem := GikoForm.GetActiveContent;
1158     if ThreadItem = nil then Exit;
1159     GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1160     end;
1161     // *************************************************************************
1162 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1163 h677 1.3 // *************************************************************************
1164     procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1165     var
1166     s: string;
1167     begin
1168     s := '';
1169     if TObject(GikoForm.GetActiveContent) is TBoard then
1170     s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1171     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1172     s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1173     if s <> '' then
1174     Clipboard.AsText := s;
1175     end;
1176     // *************************************************************************
1177 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1178 h677 1.3 // *************************************************************************
1179     procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1180     var
1181     s: string;
1182     begin
1183     s := '';
1184     if TObject(GikoForm.GetActiveContent) is TBoard then
1185     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1186     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1187     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1188     if s <> '' then
1189     Clipboard.AsText := s;
1190     end;
1191     // *************************************************************************
1192 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1193 h677 1.3 // *************************************************************************
1194     procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1195     var
1196     s: string;
1197     begin
1198     s := '';
1199     if TObject(GikoForm.GetActiveContent) is TBoard then
1200     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1201     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1202     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1203     if s <> '' then
1204     Clipboard.AsText := s;
1205     end;
1206     // *************************************************************************
1207 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1208 h677 1.3 // *************************************************************************
1209     procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1210     var
1211     ThreadItem: TThreadItem;
1212     shiftDown: Boolean;
1213     begin
1214     ThreadItem := GikoForm.GetActiveContent;
1215     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1216     if ThreadItem <> nil then
1217     GikoForm.DownloadContent(ThreadItem, shiftDown);
1218     end;
1219     // *************************************************************************
1220 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1221 h677 1.3 // *************************************************************************
1222     procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1223     var
1224     idx: Integer;
1225     begin
1226     idx := GikoForm.BrowserTab.TabIndex;
1227     if idx <> -1 then begin
1228     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1229     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1230     end;
1231     end;
1232     end;
1233     // *************************************************************************
1234 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1235 h677 1.3 // *************************************************************************
1236     procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1237     begin
1238     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1239     end;
1240     // *************************************************************************
1241 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1242 h677 1.3 // *************************************************************************
1243     procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1244     var
1245     i: Integer;
1246     idx: Integer;
1247     begin
1248     idx := GikoForm.BrowserTab.TabIndex;
1249     if idx = -1 then Exit;
1250     GikoForm.BrowserTab.Tabs.BeginUpdate;
1251     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1252     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1253     GikoForm.BrowserTab.Tabs.Delete(i);
1254     end;
1255     if idx > 0 then begin
1256     for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1257     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1258     GikoForm.BrowserTab.Tabs.Delete(i);
1259     end;
1260     end;
1261     GikoForm.BrowserTab.Tabs.EndUpdate;
1262     end;
1263     // *************************************************************************
1264 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1265 h677 1.3 // *************************************************************************
1266     procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1267     begin
1268     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1269     end;
1270     // *************************************************************************
1271 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1272 h677 1.3 // *************************************************************************
1273     procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1274     var
1275     i: Integer;
1276     begin
1277     if GikoSys.Setting.ShowDialogForAllTabClose then
1278     if(MessageDlg('鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1279     Exit;
1280    
1281     GikoForm.ActiveContent := nil;
1282     GikoForm.BrowserNullTab.Thread := nil;
1283     GikoForm.BrowserTab.OnChange := nil;
1284     GikoForm.BrowserTab.Tabs.BeginUpdate;
1285     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1286     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1287     end;
1288     GikoForm.BrowserTab.Tabs.Clear;
1289     GikoForm.BrowserTab.Tabs.EndUpdate;
1290     GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1291     GikoForm.SetContent(GikoForm.BrowserNullTab);
1292     GikoForm.Caption := CAPTION_NAME ;
1293     end;
1294     // *************************************************************************
1295 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1296 h677 1.3 // *************************************************************************
1297     procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1298     const
1299     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1300     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
1301     var
1302     idx: Integer;
1303     ThreadItem: TThreadItem;
1304     begin
1305     idx := GikoForm.BrowserTab.TabIndex;
1306     if idx <> -1 then begin
1307     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1308     ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1309     if GikoSys.Setting.DeleteMsg then
1310     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1311     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1312     Exit;
1313     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1314     ThreadItem.DeleteLogFile;
1315     if ThreadItem.ParentBoard = GikoForm.ActiveList then
1316     GikoForm.ListView.Refresh;
1317     end;
1318     end;
1319     end;
1320     // *************************************************************************
1321 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1322 h677 1.3 // *************************************************************************
1323     procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1324     begin
1325     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1326     GikoForm.BrowserTab.TabIndex := 0;
1327     GikoForm.BrowserTab.OnChange(nil);
1328     end;
1329     end;
1330     // *************************************************************************
1331 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1332 h677 1.3 // *************************************************************************
1333     procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1334     begin
1335     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1336     and (GikoForm.BrowserTab.TabIndex <> 0);
1337     end;
1338     // *************************************************************************
1339 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1340 h677 1.3 // *************************************************************************
1341     procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1342     begin
1343     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1344     if GikoForm.BrowserTab.TabIndex = -1 then begin
1345     GikoForm.BrowserTab.TabIndex := 0;
1346     GikoForm.BrowserTab.OnChange(nil);
1347     end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1348     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1349     GikoForm.BrowserTab.OnChange(nil);
1350     end;
1351     end;
1352     end;
1353     // *************************************************************************
1354 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1355 h677 1.3 // *************************************************************************
1356     procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1357     begin
1358     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1359     if GikoForm.BrowserTab.TabIndex = -1 then begin
1360     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1361     GikoForm.BrowserTab.OnChange(nil);
1362     end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1363     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1364     GikoForm.BrowserTab.OnChange(nil);
1365     end;
1366     end;
1367     end;
1368     // *************************************************************************
1369 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1370 h677 1.3 // *************************************************************************
1371     procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1372     begin
1373     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1374     and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1375     end;
1376     // *************************************************************************
1377 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1378 h677 1.3 // *************************************************************************
1379     procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1380     begin
1381     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1382     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1383     GikoForm.BrowserTab.OnChange(nil);
1384     end;
1385     end;
1386     // *************************************************************************
1387 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1388 h677 1.3 // *************************************************************************
1389     procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1390     begin
1391     if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1392     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1393     end;
1394     // *************************************************************************
1395 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1396 h677 1.3 // *************************************************************************
1397     procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1398     begin
1399     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1400     and (GikoForm.ListView.SelCount > 0);
1401     end;
1402     // *************************************************************************
1403 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1404 h677 1.3 // *************************************************************************
1405     procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1406     var
1407     Dlg: TListSelectDialog;
1408     FilterList : TStringList;
1409     idx : Integer;
1410     begin
1411 h677 1.12 Dlg := TListSelectDialog.Create(GikoForm);
1412 h677 1.3 try
1413     Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1414     Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1415     Dlg.ShowModal;
1416     if Dlg.ModalResult = mrOK then begin
1417     SelectResAction.Checked := True;
1418     if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1419     // 鐃緒申鐃緒申鐃緒申鐃緒申 OK 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1420     ResRangeAction.Execute;
1421     end else begin
1422     GikoSys.ResRange := Ord( grrSelect );
1423    
1424     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1425     GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1426    
1427     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
1428     idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1429     if idx <> -1 then
1430     GikoSys.Setting.SelectTextList.Delete(idx);
1431     GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1432     while Dlg.SelectComboBox.Items.Count > 100 do begin
1433     Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1434     end;
1435    
1436     try
1437     if GikoForm.SelectComboBoxPanel.Visible then
1438     GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1439     except
1440     end;
1441    
1442     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1443     FilterList := TStringList.Create;
1444     try
1445     GikoSys.FSelectResFilter.Reverse := True;
1446     FilterList.Delimiter := ' '; //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1447     FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1448    
1449     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1450     finally
1451     FilterList.Free;
1452     end;
1453     GikoForm.RepaintAllTabsBrowser();
1454     end;
1455     end else begin
1456     // 鐃?鐃緒申鐃緒申鐃?鐃緒申
1457     if GikoSys.ResRange <> Ord( grrSelect ) then
1458     ResRangeAction.Execute;
1459     end;
1460     finally
1461     Dlg.Release;
1462     end;
1463    
1464     end;
1465     // *************************************************************************
1466 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1467 h677 1.3 // *************************************************************************
1468     procedure TGikoDM.AllResActionExecute(Sender: TObject);
1469     var
1470     FilterList : TStringList;
1471     begin
1472     if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1473     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1474    
1475     GikoForm.ResRangeMenuSelect := Ord( grrAll );
1476     AllResAction.Checked := True;
1477    
1478     if GikoSys.ResRange <> Ord( grrAll ) then begin
1479     GikoSys.ResRange := Ord( grrAll );
1480    
1481     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1482     FilterList := TStringList.Create;
1483     try
1484     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1485     GikoSys.FSelectResFilter.Reverse := False;
1486     finally
1487     FilterList.Free;
1488     end;
1489    
1490     GikoForm.SelectResWord := '';
1491    
1492     GikoForm.RepaintAllTabsBrowser();
1493     end;
1494     end;
1495     // *************************************************************************
1496 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1497 h677 1.3 // *************************************************************************
1498     procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1499     begin
1500     case GikoForm.ResRangeMenuSelect of
1501     Ord( grrAll ): AllResAction.Execute;
1502     Ord( grrKoko ): OnlyKokoResAction.Execute;
1503     Ord( grrNew ): OnlyNewResAction.Execute;
1504     100: OnlyAHundredResAction.Execute;
1505     end;
1506    
1507     end;
1508     // *************************************************************************
1509 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1510 h677 1.3 // *************************************************************************
1511     procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1512     begin
1513     GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1514     end;
1515     // *************************************************************************
1516 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1517 h677 1.3 // *************************************************************************
1518     procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1519     var
1520     str: string;
1521     res: integer;
1522     begin
1523     str := '1';
1524     if( InputQuery('鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申', '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', str) ) then begin
1525     str := ZenToHan(str);
1526     res := StrToIntDef(str, -1);
1527     if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1528     GikoForm.BrowserMovement(IntToStr(res), GikoForm.ActiveContent);
1529     SetFocusForBrowserAction.Execute;
1530     end else if res > GikoForm.GetActiveContent.Count then begin
1531     GikoForm.BrowserMovement(IntToStr(GikoForm.GetActiveContent.Count), GikoForm.ActiveContent);
1532     SetFocusForBrowserAction.Execute;
1533     end;
1534     end;
1535     end;
1536     // *************************************************************************
1537 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1538 h677 1.3 // *************************************************************************
1539     procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1540     var
1541     i: Integer;
1542     idx: Integer;
1543     begin
1544     idx := GikoForm.BrowserTab.TabIndex;
1545     if idx = -1 then Exit;
1546     GikoForm.BrowserTab.Tabs.BeginUpdate;
1547     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1548     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1549     GikoForm.BrowserTab.Tabs.Delete(i);
1550     end;
1551     GikoForm.BrowserTab.Tabs.EndUpdate;
1552     end;
1553     // *************************************************************************
1554 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1555 h677 1.3 // *************************************************************************
1556     procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1557     begin
1558     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1559     end;
1560     // *************************************************************************
1561 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1562 h677 1.3 // *************************************************************************
1563     procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1564     var
1565     i: Integer;
1566     idx: Integer;
1567     begin
1568     idx := GikoForm.BrowserTab.TabIndex;
1569     if idx = -1 then Exit;
1570     GikoForm.BrowserTab.Tabs.BeginUpdate;
1571     if idx > 0 then begin
1572     for i := idx - 1 downto 0 do begin
1573     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1574     GikoForm.BrowserTab.Tabs.Delete(i);
1575     end;
1576     end;
1577     GikoForm.BrowserTab.Tabs.EndUpdate;
1578     end;
1579     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1580 h677 1.4 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1581     begin
1582     end;
1583     // *************************************************************************
1584 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1585 h677 1.4 // *************************************************************************
1586     procedure TGikoDM.SearchActionExecute(Sender: TObject);
1587     var
1588     chk: TObject;
1589     begin
1590    
1591     if GikoForm.SearchDialog = nil then begin
1592     if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1593     chk := GikoForm.GetActiveList
1594     else
1595     chk := nil;
1596    
1597 h677 1.12 GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk);
1598 h677 1.4 GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1599     end;
1600    
1601     try
1602     GikoForm.SearchDialog.Show;
1603     except
1604     end;
1605     end;
1606     // *************************************************************************
1607 yoffy 1.9 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1608 h677 1.4 // *************************************************************************
1609     procedure TGikoDM.OptionActionExecute(Sender: TObject);
1610     var
1611     Dlg: TOptionDialog;
1612     begin
1613 h677 1.12 Dlg := TOptionDialog.Create(GikoForm);
1614 h677 1.4 try
1615     Dlg.ShowModal;
1616     finally
1617     Dlg.Release;
1618     end;
1619     end;
1620     // *************************************************************************
1621 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1622 h677 1.4 // *************************************************************************
1623     procedure TGikoDM.RoundActionExecute(Sender: TObject);
1624     var
1625     Dlg: TRoundDialog;
1626     begin
1627 h677 1.12 Dlg := TRoundDialog.Create(GikoForm);
1628 h677 1.4 try
1629     Dlg.ShowModal;
1630     finally
1631     Dlg.Release;
1632     end;
1633     end;
1634     // *************************************************************************
1635 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1636 h677 1.4 // *************************************************************************
1637     procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1638     var
1639     Dlg: TKeySettingForm;
1640     begin
1641 h677 1.12 Dlg := TKeySettingForm.Create(GikoForm);
1642 h677 1.4 try
1643     if Dlg.ShowModal = mrOk then begin
1644     GikoSys.SaveKeySetting(GikoFormActionList);
1645     GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
1646     GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1647     end;
1648    
1649     finally
1650     Dlg.Release;
1651     MouseGesture.UnHook;
1652     MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1653     MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1654     MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1655     if GikoSys.Setting.GestureEnabled then begin
1656     GikoSys.Setting.Gestures.ClearGesture;
1657     GikoSys.Setting.Gestures.LoadGesture(
1658     GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1659     MouseGesture.SetHook( GikoForm.Handle );
1660     end;
1661     end;
1662     end;
1663     // *************************************************************************
1664 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1665 h677 1.4 // *************************************************************************
1666     procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1667     var
1668     Dlg: TKotehanDialog;
1669     begin
1670 h677 1.12 Dlg := TKotehanDialog.Create(GikoForm);
1671 h677 1.4 try
1672     Dlg.ShowModal;
1673     finally
1674     Dlg.Release;
1675     end;
1676     end;
1677     // *************************************************************************
1678 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1679 h677 1.4 // *************************************************************************
1680     procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1681     var
1682     Dlg: TToolBarSettingDialog;
1683     i: Integer;
1684     //Component: TComponent;
1685     ToolButton : TToolButton;
1686     begin
1687     Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1688     try
1689     Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1690     Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1691     Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1692     case GikoForm.ToolBarSettingSender of
1693     tssMain: Dlg.ToolBarIndex := 0;
1694     tssList: Dlg.ToolBarIndex := 1;
1695     tssBrowser: Dlg.ToolBarIndex := 2;
1696     end;
1697     if Dlg.ShowModal = mrOK then begin
1698     GikoForm.SetToolBarPopup;
1699    
1700     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1701     for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1702     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1703     GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1704     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1705     GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1706     end;
1707     for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1708     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1709     GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1710     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1711     GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1712     end;
1713     for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1714     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1715     GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1716     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1717     GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1718     end;
1719    
1720     SaveToolBarSetting(GikoForm.StdToolBar);
1721     SaveToolBarSetting(GikoForm.ListToolBar);
1722     //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1723     GikoForm.SelectComboBoxPanel.Visible := False;
1724     try
1725     for i := GikoForm.ListToolBar.ControlCount - 1 downto 0 do
1726     begin
1727     if GikoForm.ListToolBar.Controls[ i ].Action = SelectItemAction then
1728     begin
1729     GikoForm.SelectComboBoxPanel.Left :=
1730     GikoForm.ListToolBar.Controls[ i ].Left;
1731     GikoForm.SelectComboBoxPanel.Width :=
1732     GikoSys.Setting.SelectComboBoxWidth;
1733     GikoForm.SelectComboBoxPanel.Parent :=
1734     GikoForm.ListToolBar;
1735     GikoForm.SelectComboBoxPanel.Visible := True;
1736    
1737     GikoForm.SelectComboBox.Left := 0;
1738     GikoForm.SelectComboBox.Top := 0;
1739     GikoForm.SelectComboBox.Height :=
1740     GikoForm.SelectComboBoxPanel.ClientHeight;
1741     GikoForm.SelectComboBox.Width :=
1742     GikoForm.SelectComboBoxPanel.Width -
1743     GikoForm.SelectComboBoxSplitter.Width;
1744    
1745    
1746     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1747     ToolButton := TToolButton(GikoForm.ListToolBar.FindComponent('SelectComboBoxDummy'));
1748     if ToolButton <> nil then begin
1749     ToolButton.Parent := nil;
1750     end else begin
1751     ToolButton := TToolButton.Create(GikoForm.ListToolBar);
1752     ToolButton.Name := 'SelectComboBoxDummy';
1753     end;
1754    
1755     ToolButton.Style := tbsSeparator;
1756     ToolButton.Width := 0;
1757     ToolButton.Left := GikoForm.ListToolBar.Controls[ i ].Left;
1758     GikoForm.ListToolBar.InsertControl(ToolButton);
1759     ToolButton.Visible := False;
1760    
1761     // 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1762     if (i + 1) < GikoForm.ListToolBar.ControlCount then
1763     if GikoForm.ListToolBar.Controls[ i + 1 ] is TToolButton then
1764     if TToolButton( GikoForm.ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1765     GikoForm.ListToolBar.Controls[ i + 1 ].Visible := False;
1766    
1767    
1768     // 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申
1769     GikoForm.ListToolBar.Controls[ i ].Visible := False;
1770    
1771     break;
1772     end;
1773     end;
1774     except
1775     end;
1776     GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1777     SaveToolBarSetting(GikoForm.BrowserToolBar);
1778     end;
1779     finally
1780     Dlg.Release;
1781     GikoForm.ToolBarSettingSender := tssNone;
1782     end;
1783     end;
1784     // *************************************************************************
1785 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?
1786 h677 1.4 // *************************************************************************
1787     procedure TGikoDM.MuteActionExecute(Sender: TObject);
1788     begin
1789     GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1790     end;
1791     ////////////////////////////////鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1792     // *************************************************************************
1793 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1794 h677 1.4 // *************************************************************************
1795     procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1796     var
1797     Board: TBoard;
1798     TmpTreeNode: TTreeNode;
1799     begin
1800     TmpTreeNode := GikoForm.ClickNode;
1801     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1802     Board := nil;
1803    
1804     if TObject(TmpTreeNode.Data) is TBoard then
1805     Board := TBoard(TmpTreeNode.Data)
1806     else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1807     Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1808    
1809     if Board <> nil then
1810     GikoForm.DownloadList(Board);
1811     end;
1812     // *************************************************************************
1813 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1814 h677 1.4 // *************************************************************************
1815     procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1816     var
1817     ThreadItem: TThreadItem;
1818     TmpTreeNode: TTreeNode;
1819     begin
1820     TmpTreeNode := GikoForm.ClickNode;
1821     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1822     ThreadItem := nil;
1823    
1824     if TObject(TmpTreeNode.Data) is TThreadItem then
1825     ThreadItem := TThreadItem(TmpTreeNode.Data)
1826     else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1827     ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1828    
1829     if ThreadItem <> nil then
1830     GikoForm.DownloadContent(ThreadItem);
1831     end;
1832     // *************************************************************************
1833 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1834 h677 1.4 // *************************************************************************
1835     procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1836     var
1837     TmpTreeNode: TTreeNode;
1838     s: string;
1839     begin
1840     TmpTreeNode := GikoForm.ClickNode;
1841     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1842     if TObject(TmpTreeNode.Data) is TBoard then begin
1843     s := TBoard(TmpTreeNode.Data).URL + #13#10;
1844     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1845     s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1846     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1847     s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1848     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1849     s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1850     end;
1851     Clipboard.AsText := s;
1852     end;
1853     // *************************************************************************
1854 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1855 h677 1.4 // *************************************************************************
1856     procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1857     var
1858     TmpTreeNode: TTreeNode;
1859     s: string;
1860     begin
1861     TmpTreeNode := GikoForm.ClickNode;
1862     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1863     if TObject(TmpTreeNode.Data) is TBoard then begin
1864     s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1865     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1866     s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1867     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1868     s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1869     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1870     s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1871     end;
1872     Clipboard.AsText := s;
1873     end;
1874     // *************************************************************************
1875 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1876 h677 1.4 // *************************************************************************
1877     procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1878     begin
1879     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1880     end;
1881     // *************************************************************************
1882 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申
1883 h677 1.4 // *************************************************************************
1884     procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1885     var
1886     s : String;
1887     msg : String;
1888     CurItem : TTreeNode;
1889     next : boolean;
1890     begin
1891     if InputQuery('鐃緒申鐃緒申鐃緒申鐃緒申','鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申',s) then begin
1892     next := true;
1893     while next do begin
1894     if GikoForm.TreeView.Selected = nil then
1895     CurItem := GikoForm.TreeView.Items.GetFirstNode
1896     else begin
1897     CurItem := GikoForm.TreeView.Selected.GetNext;
1898     if CurItem = nil then
1899     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1900     end;
1901     while CurItem <> nil do begin
1902     if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1903     break;
1904     end;
1905     CurItem := CurItem.GetNext;
1906     end;
1907     try
1908     if CurItem = nil then begin
1909     msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1910     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1911     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1912     end else begin
1913     Exit;
1914     end;
1915     GikoForm.TreeView.Select(CurItem);
1916     GikoForm.TreeView.SetFocus;
1917     end else begin
1918     GikoForm.TreeView.Select(CurItem);
1919     GikoForm.TreeView.SetFocus;
1920     msg := '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1921     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1922     next := true;
1923     end else begin
1924     next := false;
1925     end;
1926     end;
1927    
1928     except
1929     Exit;
1930     end;
1931     end;
1932     end;
1933     end;
1934     // *************************************************************************
1935 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1936 h677 1.4 // *************************************************************************
1937     procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1938     var
1939     s: string;
1940     begin
1941     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1942     s := GikoForm.ClickNode.Text;
1943     Clipboard.AsText := s;
1944     end;
1945     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1946 h677 1.5 // *************************************************************************
1947 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1948 h677 1.5 // *************************************************************************
1949     procedure TGikoDM.LoginActionExecute(Sender: TObject);
1950     var
1951     TmpCursor: TCursor;
1952     msg : String;
1953     begin
1954     if GikoSys.Dolib.Connected then begin
1955     //鐃緒申鐃?鐃?鐃?鐃?
1956     GikoSys.Dolib.Disconnect;
1957     LoginAction.Checked := False;
1958     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK);
1959     LoginAction.Caption := '鐃緒申鐃?鐃?鐃緒申(&L)';
1960     end else begin
1961     TmpCursor := GikoForm.ScreenCursor;
1962     GikoForm.ScreenCursor := crHourGlass;
1963     try
1964     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1965     if not GikoSys.Setting.ForcedLogin then begin
1966     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1967     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1968     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1969     if GikoSys.Setting.ReadProxy then begin
1970     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1971     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1972     end else begin
1973     GikoSys.Dolib.ProxyAddress := '';
1974     GikoSys.Dolib.ProxyPort := 0;
1975     end;
1976     if GikoSys.Dolib.Connect then begin
1977     LoginAction.Checked := True;
1978     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1979     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1980     //LoginToolButton.Style := tbsCheck;
1981     end else begin
1982     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1983     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1984     GikoForm.PlaySound('Error');
1985     LoginAction.Checked := False;
1986     //LoginToolButton.Down := False;
1987     ///LoginToolButton.Style := tbsButton;
1988     end;
1989     end else begin
1990     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1991     + '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1992     + '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10;
1993     if MsgBox(GikoForm.Handle, msg, '鐃?鐃緒申', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
1994     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1995     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1996     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1997     if GikoSys.Setting.ReadProxy then begin
1998     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1999     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
2000     end else begin
2001     GikoSys.Dolib.ProxyAddress := '';
2002     GikoSys.Dolib.ProxyPort := 0;
2003     end;
2004     //SSL鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
2005     GikoSys.Dolib.ForcedConnect;
2006     if GikoSys.Dolib.Connect then begin
2007     LoginAction.Checked := True;
2008     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
2009     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
2010     //LoginToolButton.Style := tbsCheck;
2011     end else begin
2012     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
2013     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
2014     GikoForm.PlaySound('Error');
2015     LoginAction.Checked := False;
2016     //LoginToolButton.Down := False;
2017     //LoginToolButton.Style := tbsButton;
2018     end;
2019     end else begin
2020     LoginAction.Checked := False;
2021     //LoginToolButton.Down := False;
2022     //LoginToolButton.Style := tbsButton;
2023     end;
2024     end;
2025     finally
2026     GikoForm.ScreenCursor := TmpCursor;
2027     end;
2028     end;
2029     end;
2030     // *************************************************************************
2031 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2032 h677 1.5 // *************************************************************************
2033     procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
2034     var
2035     Dlg: TNewBoardDialog;
2036     Msg: string;
2037     begin
2038     if GikoForm.EditorFormExists then begin
2039     Msg := '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2040     MsgBox(GikoForm.Handle, Msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
2041     Exit;
2042     end;
2043 h677 1.12 Dlg := TNewBoardDialog.Create(GikoForm);
2044 h677 1.5 try
2045     Dlg.ShowModal;
2046     finally
2047     Dlg.Release;
2048     end;
2049     end;
2050     // *************************************************************************
2051 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2052 h677 1.5 // *************************************************************************
2053     procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2054     const
2055     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2056     DEL_SAME_MSG = '鐃緒申鐃緒申鐃緒申 ^0 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2057     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2058     var
2059     ThreadItem: TThreadItem;
2060     TmpListItem: TListItem;
2061     List: TList;
2062     i: Integer;
2063     begin
2064     List := TList.Create;
2065     try
2066     TmpListItem := GikoForm.ListView.Selected;
2067     while TmpListItem <> nil do begin
2068     if TObject(TmpListItem.Data) is TThreadItem then begin
2069     ThreadItem := TThreadItem(TmpListItem.Data);
2070     if ThreadItem.IsLogFile then
2071     List.Add(ThreadItem);
2072     end;
2073     TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2074     end;
2075    
2076     if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2077     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2078     if List.Count = 1 then begin
2079     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', TThreadItem( List[ 0 ] ).Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2080     Exit;
2081     end else begin
2082     if MsgBox(GikoForm.Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
2083     Exit;
2084     end;
2085     end;
2086     end;
2087    
2088     for i := 0 to List.Count - 1 do begin
2089     ThreadItem := TThreadItem(List[i]);
2090     GikoForm.DeleteHistory(ThreadItem);
2091     GikoForm.DeleteTab(ThreadItem);
2092     ThreadItem.DeleteLogFile;
2093    
2094     GikoForm.TreeView.Refresh; // UnRead 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
2095     end;
2096     GikoForm.ListView.Refresh;
2097     finally
2098     List.Free;
2099     end;
2100     end;
2101     // *************************************************************************
2102 yoffy 1.9 //! ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Action鐃緒申鐃緒申鐃緒申
2103 h677 1.5 // *************************************************************************
2104     procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2105     begin
2106     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2107     and (GikoForm.ListView.SelCount > 0);
2108     end;
2109     // *************************************************************************
2110 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2111 h677 1.5 // *************************************************************************
2112     procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2113     const
2114     DEL_MSG = '鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2115     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2116     begin
2117     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2118     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2119     Exit;
2120     GikoSys.Setting.SelectTextList.Clear;
2121     GikoForm.SelectComboBox.Items.Clear;
2122     GikoForm.SelectComboBox.Text := '';
2123     GikoForm.SetListViewType( gvtAll );
2124     end;
2125     // *************************************************************************
2126 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2127 h677 1.5 // *************************************************************************
2128     procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2129     const
2130     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2131     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2132     begin
2133     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2134     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2135     Exit;
2136     GikoSys.Setting.NameList.Clear;
2137     GikoForm.AllEditroFormNameTextClearClear;
2138     end;
2139     // *************************************************************************
2140 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2141 h677 1.5 // *************************************************************************
2142     procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2143     const
2144     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2145     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2146     begin
2147     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2148     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2149     Exit;
2150     GikoSys.Setting.MailList.Clear;
2151     GikoForm.AllEditroFormMailTextClearClear;
2152     end;
2153     // *************************************************************************
2154 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2155 h677 1.5 // *************************************************************************
2156     procedure TGikoDM.ExitActionExecute(Sender: TObject);
2157     begin
2158     GikoForm.Close;
2159     end;
2160     // *************************************************************************
2161 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
2162 h677 1.5 // *************************************************************************
2163     procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2164     begin
2165     ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2166     end;
2167     // *************************************************************************
2168 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
2169 h677 1.5 // *************************************************************************
2170     procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2171     begin
2172     if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2173     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
2174     end else begin
2175     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申');
2176     end;
2177     end;
2178     // *************************************************************************
2179 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2180 h677 1.5 // *************************************************************************
2181     procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2182     var
2183     List: TList;
2184     i: Integer;
2185     html: TStringList;
2186     title: string;
2187     begin
2188     List := TList.Create;
2189     try
2190     GikoForm.ScreenCursor := crHourGlass;
2191     GikoForm.SelectListItem(List);
2192     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2193     (GikoSys.Setting.ListHeightState = glsMax)) or
2194     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2195     (GikoSys.Setting.ListWidthState = glsMax)) then
2196     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2197     else if(List.Count = 0) then
2198     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2199     else begin
2200     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2201     FileSaveAs1.Dialog.Filter := 'HTML鐃?鐃?鐃?鐃緒申(*.html)|*.html';
2202     for i := 0 to List.Count - 1 do begin
2203     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2204     FileSaveAs1.Dialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2205     if FileSaveAs1.Dialog.Execute then begin
2206     html := TStringList.Create;
2207     title := TThreadItem(List[i]).Title;
2208     try
2209     HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2210     html.SaveToFile(FileSaveAs1.Dialog.FileName);
2211     THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
2212     finally
2213     html.Free;
2214     end;
2215     end;
2216     end;
2217     end;
2218     end;
2219     finally
2220     GikoForm.ScreenCursor := crDefault;
2221     List.Free;
2222     end;
2223     end;
2224     // *************************************************************************
2225 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申DAT鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2226 h677 1.5 // *************************************************************************
2227     procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2228     var
2229     List: TList;
2230     i: Integer;
2231     begin
2232     List := TList.Create;
2233     try
2234     GikoForm.ScreenCursor := crHourGlass;
2235     GikoForm.SelectListItem(List);
2236     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2237     (GikoSys.Setting.ListHeightState = glsMax)) or
2238     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2239     (GikoSys.Setting.ListWidthState = glsMax)) then
2240     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2241     else if(List.Count = 0) then
2242     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2243     else begin
2244     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申dat鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2245     FileSaveAs1.Dialog.Filter := 'DAT鐃?鐃?鐃?鐃緒申(*.dat)|*.dat';
2246     for i := 0 to List.Count - 1 do begin
2247     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2248     FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
2249     if FileSaveAs1.Dialog.Execute then begin
2250     CopyFile(PChar(TThreadItem(List[i]).FilePath),
2251