OSDN Git Service

464417e59c03548d44902ea8e45fcc48053e5f7f
[gikonavigoeson/gikonavi.git] / GikoDataModule.pas
1 unit GikoDataModule;
2
3 interface
4
5 uses
6   SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 {$IF Defined(DELPRO) }
8         SHDocVw,
9         MSHTML,
10 {$ELSE}
11         SHDocVw_TLB,
12         MSHTML_TLB,
13 {$IFEND}
14   ComCtrls, BrowserRecord, Graphics, Messages, Setting, Dialogs,
15   ActiveX, GikoSystem, MoveHistoryItem, HistoryList;
16
17 const
18         CAPTION_NAME: string = '\83M\83R\83i\83r';
19         USER_SETLINKBAR                                 = WM_USER + 2003;
20
21         ITEM_ICON_SORT1                                 = 12;           //!< \83\\81[\83g\83A\83C\83R\83\93
22         ITEM_ICON_SORT2                                 = 13;           //!< \83\\81[\83g\83A\83C\83R\83\93
23
24         //\83c\81[\83\8b\83o\81[\83A\83C\83R\83\93
25         TOOL_ICON_HEIGHT_MAX            = 16;           //!< \8d\82\82³\8dÅ\91å\83A\83C\83R\83\93
26         TOOL_ICON_HEIGHT_MIN            = 17;           //!< \8d\82\82³\8dÅ\8f¬\83A\83C\83R\83\93
27         TOOL_ICON_HEIGHT_NORMAL = 18;           //!< \8d\82\82³\95W\8f\80\83A\83C\83R\83\93
28         TOOL_ICON_WIDTH_MAX             = 19;           //!< \95\9d\8dÅ\91å\83A\83C\83R\83\93
29         TOOL_ICON_WIDTH_MIN             = 20;           //!< \95\9d\8dÅ\8f¬\83A\83C\83R\83\93
30         TOOL_ICON_WIDTH_NORMAL  = 21;           //!< \95\9d\95W\8f\80\83A\83C\83R\83\93
31
32         TOOL_ICON_FAV_FOLDER            = 30;           //!< \82¨\8bC\82É\93ü\82è\83t\83H\83\8b\83_\83A\83C\83R\83\93
33         TOOL_ICON_FAV_BOARD                     = 31;           //!< \82¨\8bC\82É\93ü\82è\94Â\83A\83C\83R\83\93
34         TOOL_ICON_FAV_THREAD            = 32;           //!< \82¨\8bC\82É\93ü\82è\83X\83\8c\83A\83C\83R\83\93
35
36         //! HTTP
37         PROTOCOL_HTTP : string = 'http://';
38         //! \83M\83R\83i\83r\83T\83C\83g\82ÌURL
39         URL_GIKONAVI: string = 'gikonavi.sourceforge.jp/';
40         //! \83M\83R\83i\83r(\94ð\93ï\8f\8a\94Å)\83T\83C\83g\82ÌURL
41         URL_GIKONAVIGO: string = 'gikonavigoeson.sourceforge.jp/';
42         //! Monazilla\83T\83C\83g\82ÌURL
43         URL_MONAZILLA: string = 'www.monazilla.org/';
44         //! 2\82¿\82á\82ñ\82Ë\82é\82ÌURL
45         URL_2ch: string = 'www.2ch.net/';
46         //! \83M\83R\83i\83rWiki\82ÌURL
47         URL_Wiki: string = 'sourceforge.jp/projects/gikonavi/wiki/FAQ';
48         //! \83M\83R\83i\83r(\94ð\93ï\8f\8a\94Å)Wiki\82ÌURL
49         URL_GoWiki: string = 'sourceforge.jp/projects/gikonavigoeson/wiki/FAQ';
50
51         SELECTCOMBOBOX_NAME: string = ''; // '\83X\83\8c\83b\83h\8di\8d\9e\8c\9f\8dõ';
52         SELECTCOMBOBOX_COLOR: TColor = clWindow;
53
54
55 type
56
57   TGikoDM = class(TDataModule)
58         GikoFormActionList: TActionList;
59         OnlyAHundredResAction: TAction;
60         OnlyKokoResAction: TAction;
61         LoginAction: TAction;
62         NewBoardAction: TAction;
63         LogDeleteAction: TAction;
64         KidokuAction: TAction;
65         StdToolBarVisibleAction: TAction;
66         AddressBarVisibleAction: TAction;
67         LinkBarVisibleAction: TAction;
68         ListToolBarVisibleAction: TAction;
69         SearchAction: TAction;
70         GikoNaviWebPageAction: TAction;
71         MonazillaWebPageAction: TAction;
72         BBS2chWebPageAction: TAction;
73         GikoFolderOpenAction: TAction;
74         AboutAction: TAction;
75         SelectTextClearAction: TAction;
76         NameTextClearAction: TAction;
77         MailTextClearAction: TAction;
78         ExitAction: TAction;
79         ListNameBarVisibleAction: TAction;
80         BrowserToolBarVisibleAction: TAction;
81         BrowserNameBarVisibleAction: TAction;
82         MsgBarVisibleAction: TAction;
83         MsgBarCloseAction: TAction;
84         StatusBarVisibleAction: TAction;
85         CabinetBBSAction: TAction;
86         CabinetHistoryAction: TAction;
87         OnlyNewResAction: TAction;
88         CabinetFavoriteAction: TAction;
89         CabinetVisibleAction: TAction;
90         ListNumberVisibleAction: TAction;
91         UpFolderAction: TAction;
92         CabinetCloseAction: TAction;
93         IconStyle: TAction;
94         LargeIconAction: TAction;
95         SmallIconAction: TAction;
96         ListIconAction: TAction;
97         DetailIconAction: TAction;
98         MidokuAction: TAction;
99         AllSelectAction: TAction;
100         AllItemAction: TAction;
101         LogItemAction: TAction;
102         NewItemAction: TAction;
103         ThreadRangeAction: TAction;
104         SelectItemAction: TAction;
105         StopAction: TAction;
106         OptionAction: TAction;
107         RoundAction: TAction;
108         BrowserMaxAction: TAction;
109         BrowserMinAction: TAction;
110         ScrollTopAction: TAction;
111         ScrollLastAction: TAction;
112         ScrollNewAction: TAction;
113         ScrollKokoAction: TAction;
114         EditorAction: TAction;
115         IEAction: TAction;
116         ShowThreadAction: TAction;
117         ShowBoardAction: TAction;
118         URLCopyAction: TAction;
119         NameCopyAction: TAction;
120         NameURLCopyAction: TAction;
121         ItemReloadAction: TAction;
122         ThreadEditorAction: TAction;
123         BoardIEAction: TAction;
124         SelectItemURLCopyAction: TAction;
125         SelectItemNameCopyAction: TAction;
126         SelectItemNameURLCopyAction: TAction;
127         SelectListReloadAction: TAction;
128         SelectThreadReloadAction: TAction;
129         BrowserTabCloseAction: TAction;
130         NotSelectTabCloseAction: TAction;
131         AllTabCloseAction: TAction;
132         KokomadeAction: TAction;
133         ZenbuAction: TAction;
134         KokoResAction: TAction;
135         TreeSelectBoradReload: TAction;
136         TreeSelectThreadReload: TAction;
137         TreeSelectURLCopy: TAction;
138         SelectReservAction: TAction;
139         SelectNewRoundName: TAction;
140         SelectDeleteRound: TAction;
141         KeySettingAction: TAction;
142         ArrangeAction: TAction;
143         ActiveLogDeleteAction: TAction;
144         TreeSelectNameURLCopy: TAction;
145         PaneInitAction: TAction;
146         LeftmostTabSelectAction: TAction;
147         LeftTabSelectAction: TAction;
148         RightTabSelectAction: TAction;
149         RightmostTabSelectAction: TAction;
150         FavoriteAddAction: TAction;
151         BoardFavoriteAddAction: TAction;
152         ThreadFavoriteAddAction: TAction;
153         TreeSelectFavoriteAddAction: TAction;
154         FavoriteArrangeAction: TAction;
155         MoveToAction: TAction;
156         BrowserTabVisibleAction: TAction;
157         BrowserTabTopAction: TAction;
158         BrowserTabBottomAction: TAction;
159         BrowserTabTabStyleAction: TAction;
160         BrowserTabButtonStyleAction: TAction;
161         BrowserTabFlatStyleAction: TAction;
162         GikoHelpAction: TAction;
163         KotehanAction: TAction;
164         ToolBarSettingAction: TAction;
165         SelectResAction: TAction;
166         AllResAction: TAction;
167         EditNGAction: TAction;
168         ReloadAction: TAction;
169         GoFowardAction: TAction;
170         GoBackAction: TAction;
171         TreeSelectSearchBoardName: TAction;
172         FavoriteTreeViewRenameAction: TAction;
173         FavoriteTreeViewNewFolderAction: TAction;
174         FavoriteTreeViewDeleteAction: TAction;
175         FavoriteTreeViewBrowseFolderAction: TAction;
176         FavoriteTreeViewReloadAction: TAction;
177         FavoriteTreeViewURLCopyAction: TAction;
178         FavoriteTreeViewNameCopyAction: TAction;
179         FavoriteTreeViewNameURLCopyAction: TAction;
180         FavoriteTreeViewLogDeleteAction: TAction;
181         ResRangeAction: TAction;
182         ExportFavoriteFile: TFileSaveAs;
183         FavoriteTreeViewBrowseBoardAction: TAction;
184         FavoriteTreeViewBrowseThreadAction: TAction;
185         UpBoardAction: TAction;
186         KoreCopy: TAction;
187         TreeSelectNameCopy: TAction;
188         SetFocusForBrowserAction: TAction;
189         SetFocusForThreadListAction: TAction;
190         SetFocusForCabinetAction: TAction;
191         FileRun1: TFileRun;
192         ThreadlistMaxAndFocusAction: TAction;
193         BrowserMaxAndFocusAction: TAction;
194         SelectItemSaveForHTML: TAction;
195         SelectItemSaveForDat: TAction;
196         LogFolderOpenAction: TAction;
197         TabsSaveAction: TAction;
198         TabsOpenAction: TAction;
199         BrowsBoradHeadAction: TAction;
200         JumpToNumOfResAction: TAction;
201         FavoriteTreeViewCollapseAction: TAction;
202         RightTabCloseAction: TAction;
203         LeftTabCloseAction: TAction;
204         SameIDResAnchorAction: TAction;
205         IndividualAbon1Action: TAction;
206         IndividualAbon0Action: TAction;
207         AntiIndividualAbonAction: TAction;
208         AntiIndividualAbonDlgAction: TAction;
209         IndividualAbonID1Action: TAction;
210         IndividualAbonID0Action: TAction;
211         MuteAction: TAction;
212         SortActiveColumnAction: TAction;
213         SortNextColumnAction: TAction;
214         SortPrevColumnAction: TAction;
215         BeLogInOutAction: TAction;
216         UnSelectedListViewAction: TAction;
217         WikiFAQWebPageAction: TAction;
218         ToobarImageList: TImageList;
219     SaveDialog: TSaveDialog;
220     ThreadSizeCalcForFileAction: TAction;
221     SetInputAssistAction: TAction;
222     OpenFindDialogAction: TAction;
223     ArchiveItemAction: TAction;
224     LiveItemAction: TAction;
225     FavoriteTreeViewItemNameCopyAction: TAction;
226     CloseAllEditorAction: TAction;
227     PrevMoveHistory: TAction;
228     NextMoveHistory: TAction;
229     ClickActiveElementAction: TAction;
230     VKDownAction: TAction;
231     VKUpAction: TAction;
232     VKRightAction: TAction;
233     VKLeftAction: TAction;
234     StoredTaskTrayAction: TAction;
235     AllImageLinkToClipbordAction: TAction;
236     NewImageLinkToClipBoardAction: TAction;
237     SetForcusForAddresBarAction: TAction;
238     NewBoardSearchAction: TAction;
239     NGWordEditFormAction: TAction;
240     ScrollPageDownAction: TAction;
241     ScrollPageUpAction: TAction;
242     AllLinkToClipboardAction: TAction;
243     NewLinkToClipboardAction: TAction;
244     AddIDtoNGWord0Action: TAction;
245     AddIDtoNGWord1Action: TAction;
246     ExtractSameIDAction: TAction;
247     ShowTabListAction: TAction;
248     DereferenceResAction: TAction;
249     UpdateGikonaviAction: TAction;
250     konoURLPATHAction: TAction;
251     konoURLQueryAction: TAction;
252     PopupMenuSettingAction: TAction;
253     GikoNaviGoesonWebPageAction: TAction;
254     GoWikiFAQWebPageAction: TAction;
255     ThreadSearchAction: TAction;
256     ThreadNgEditAction: TAction;
257         procedure EditNGActionExecute(Sender: TObject);
258         procedure ReloadActionExecute(Sender: TObject);
259         procedure GoFowardActionExecute(Sender: TObject);
260         procedure GoBackActionExecute(Sender: TObject);
261         procedure MoveToActionExecute(Sender: TObject);
262         procedure FavoriteAddActionExecute(Sender: TObject);
263         procedure FavoriteArrangeActionExecute(Sender: TObject);
264         procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
265         procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
266         procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
267         procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
268         procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
269         procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
270         procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
271         procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
272         procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
273         procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
274         procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
275         procedure OnlyAHundredResActionExecute(Sender: TObject);
276         procedure OnlyKokoResActionExecute(Sender: TObject);
277         procedure OnlyNewResActionExecute(Sender: TObject);
278         procedure BrowserMaxActionExecute(Sender: TObject);
279         procedure BrowserMinActionExecute(Sender: TObject);
280         procedure ScrollTopActionExecute(Sender: TObject);
281         procedure ScrollLastActionExecute(Sender: TObject);
282         procedure ScrollNewActionExecute(Sender: TObject);
283         procedure ScrollKokoActionExecute(Sender: TObject);
284         procedure ScrollKokoActionUpdate(Sender: TObject);
285         procedure EditorActionExecute(Sender: TObject);
286         procedure IEActionExecute(Sender: TObject);
287         procedure ShowThreadActionExecute(Sender: TObject);
288         procedure ShowBoardActionExecute(Sender: TObject);
289         procedure URLCopyActionExecute(Sender: TObject);
290         procedure NameCopyActionExecute(Sender: TObject);
291         procedure NameURLCopyActionExecute(Sender: TObject);
292         procedure ItemReloadActionExecute(Sender: TObject);
293         procedure BrowserTabCloseActionExecute(Sender: TObject);
294         procedure BrowserTabCloseActionUpdate(Sender: TObject);
295         procedure NotSelectTabCloseActionExecute(Sender: TObject);
296         procedure NotSelectTabCloseActionUpdate(Sender: TObject);
297         procedure AllTabCloseActionExecute(Sender: TObject);
298         procedure ActiveLogDeleteActionExecute(Sender: TObject);
299         procedure LeftmostTabSelectActionExecute(Sender: TObject);
300         procedure LeftmostTabSelectActionUpdate(Sender: TObject);
301         procedure LeftTabSelectActionExecute(Sender: TObject);
302         procedure RightTabSelectActionExecute(Sender: TObject);
303         procedure RightTabSelectActionUpdate(Sender: TObject);
304         procedure RightmostTabSelectActionExecute(Sender: TObject);
305         procedure ThreadFavoriteAddActionExecute(Sender: TObject);
306         procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
307         procedure SelectResActionExecute(Sender: TObject);
308         procedure AllResActionExecute(Sender: TObject);
309         procedure ResRangeActionExecute(Sender: TObject);
310         procedure UpBoardActionExecute(Sender: TObject);
311         procedure JumpToNumOfResActionExecute(Sender: TObject);
312         procedure RightTabCloseActionExecute(Sender: TObject);
313         procedure RightTabCloseActionUpdate(Sender: TObject);
314         procedure LeftTabCloseActionExecute(Sender: TObject);
315         procedure DataModuleCreate(Sender: TObject);
316         procedure SearchActionExecute(Sender: TObject);
317         procedure OptionActionExecute(Sender: TObject);
318         procedure RoundActionExecute(Sender: TObject);
319         procedure KeySettingActionExecute(Sender: TObject);
320         procedure KotehanActionExecute(Sender: TObject);
321         procedure ToolBarSettingActionExecute(Sender: TObject);
322         procedure MuteActionExecute(Sender: TObject);
323         procedure TreeSelectBoradReloadExecute(Sender: TObject);
324         procedure TreeSelectThreadReloadExecute(Sender: TObject);
325         procedure TreeSelectURLCopyExecute(Sender: TObject);
326         procedure TreeSelectNameURLCopyExecute(Sender: TObject);
327         procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
328         procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
329         procedure TreeSelectNameCopyExecute(Sender: TObject);
330         procedure LoginActionExecute(Sender: TObject);
331         procedure NewBoardActionExecute(Sender: TObject);
332         procedure LogDeleteActionExecute(Sender: TObject);
333         procedure LogDeleteActionUpdate(Sender: TObject);
334         procedure SelectTextClearActionExecute(Sender: TObject);
335         procedure NameTextClearActionExecute(Sender: TObject);
336         procedure MailTextClearActionExecute(Sender: TObject);
337         procedure ExitActionExecute(Sender: TObject);
338         procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
339         procedure ExportFavoriteFileAccept(Sender: TObject);
340         procedure SelectItemSaveForHTMLExecute(Sender: TObject);
341         procedure SelectItemSaveForDatExecute(Sender: TObject);
342         procedure TabsSaveActionExecute(Sender: TObject);
343         procedure TabsOpenActionExecute(Sender: TObject);
344         procedure BeLogInOutActionExecute(Sender: TObject);
345         procedure KokomadeActionExecute(Sender: TObject);
346         procedure ZenbuActionExecute(Sender: TObject);
347         procedure KokoResActionExecute(Sender: TObject);
348         procedure KoreCopyExecute(Sender: TObject);
349         procedure SameIDResAnchorActionExecute(Sender: TObject);
350         procedure IndividualAbon1ActionExecute(Sender: TObject);
351         procedure IndividualAbon0ActionExecute(Sender: TObject);
352         procedure AntiIndividualAbonActionExecute(Sender: TObject);
353         procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
354         procedure IndividualAbonID1ActionExecute(Sender: TObject);
355         procedure IndividualAbonID0ActionExecute(Sender: TObject);
356         procedure GikoNaviWebPageActionExecute(Sender: TObject);
357         procedure MonazillaWebPageActionExecute(Sender: TObject);
358         procedure BBS2chWebPageActionExecute(Sender: TObject);
359         procedure GikoFolderOpenActionExecute(Sender: TObject);
360         procedure AboutActionExecute(Sender: TObject);
361         procedure GikoHelpActionExecute(Sender: TObject);
362         procedure WikiFAQWebPageActionExecute(Sender: TObject);
363         procedure ListNumberVisibleActionExecute(Sender: TObject);
364         procedure UpFolderActionExecute(Sender: TObject);
365         procedure UpFolderActionUpdate(Sender: TObject);
366         procedure IconStyleExecute(Sender: TObject);
367         procedure AllItemActionExecute(Sender: TObject);
368         procedure LogItemActionExecute(Sender: TObject);
369         procedure NewItemActionExecute(Sender: TObject);
370         procedure ThreadRangeActionExecute(Sender: TObject);
371         procedure SelectItemActionExecute(Sender: TObject);
372         procedure ThreadEditorActionExecute(Sender: TObject);
373         procedure BoardIEActionExecute(Sender: TObject);
374         procedure SelectItemURLCopyActionExecute(Sender: TObject);
375         procedure SelectItemURLCopyActionUpdate(Sender: TObject);
376         procedure SelectItemNameCopyActionExecute(Sender: TObject);
377         procedure SelectItemNameCopyActionUpdate(Sender: TObject);
378         procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
379         procedure SelectListReloadActionExecute(Sender: TObject);
380         procedure SelectListReloadActionUpdate(Sender: TObject);
381         procedure SelectThreadReloadActionExecute(Sender: TObject);
382         procedure SelectThreadReloadActionUpdate(Sender: TObject);
383         procedure SelectReservActionExecute(Sender: TObject);
384         procedure SelectReservActionUpdate(Sender: TObject);
385         procedure SelectNewRoundNameExecute(Sender: TObject);
386         procedure SelectDeleteRoundExecute(Sender: TObject);
387         procedure BoardFavoriteAddActionExecute(Sender: TObject);
388         procedure BoardFavoriteAddActionUpdate(Sender: TObject);
389         procedure LogFolderOpenActionExecute(Sender: TObject);
390         procedure LogFolderOpenActionUpdate(Sender: TObject);
391         procedure BrowsBoradHeadActionExecute(Sender: TObject);
392         procedure SortActiveColumnActionExecute(Sender: TObject);
393         procedure SortNextColumnActionExecute(Sender: TObject);
394         procedure SortPrevColumnActionExecute(Sender: TObject);
395         procedure StdToolBarVisibleActionExecute(Sender: TObject);
396         procedure AddressBarVisibleActionExecute(Sender: TObject);
397         procedure LinkBarVisibleActionExecute(Sender: TObject);
398         procedure ListToolBarVisibleActionExecute(Sender: TObject);
399         procedure ListNameBarVisibleActionExecute(Sender: TObject);
400         procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
401         procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
402         procedure MsgBarVisibleActionExecute(Sender: TObject);
403         procedure MsgBarCloseActionExecute(Sender: TObject);
404         procedure StatusBarVisibleActionExecute(Sender: TObject);
405         procedure CabinetBBSActionExecute(Sender: TObject);
406         procedure CabinetHistoryActionExecute(Sender: TObject);
407         procedure CabinetFavoriteActionExecute(Sender: TObject);
408         procedure CabinetVisibleActionExecute(Sender: TObject);
409         procedure CabinetCloseActionExecute(Sender: TObject);
410         procedure LargeIconActionExecute(Sender: TObject);
411         procedure SmallIconActionExecute(Sender: TObject);
412         procedure ListIconActionExecute(Sender: TObject);
413         procedure DetailIconActionExecute(Sender: TObject);
414         procedure StopActionExecute(Sender: TObject);
415         procedure ArrangeActionExecute(Sender: TObject);
416         procedure PaneInitActionExecute(Sender: TObject);
417         procedure BrowserTabVisibleActionExecute(Sender: TObject);
418         procedure BrowserTabTopActionExecute(Sender: TObject);
419         procedure BrowserTabBottomActionExecute(Sender: TObject);
420         procedure BrowserTabTabStyleActionExecute(Sender: TObject);
421         procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
422         procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
423         procedure SetFocusForBrowserActionExecute(Sender: TObject);
424         procedure SetFocusForBrowserActionUpdate(Sender: TObject);
425         procedure SetFocusForThreadListActionExecute(Sender: TObject);
426         procedure SetFocusForCabinetActionExecute(Sender: TObject);
427         procedure SetFocusForCabinetActionUpdate(Sender: TObject);
428         procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
429         procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
430         procedure UnSelectedListViewActionExecute(Sender: TObject);
431         procedure KidokuActionExecute(Sender: TObject);
432         procedure MidokuActionExecute(Sender: TObject);
433         procedure AllSelectActionExecute(Sender: TObject);
434         procedure AllSelectActionUpdate(Sender: TObject);
435     procedure ThreadSizeCalcForFileActionExecute(Sender: TObject);
436     procedure SetInputAssistActionExecute(Sender: TObject);
437     procedure OpenFindDialogActionExecute(Sender: TObject);
438     procedure ArchiveItemActionExecute(Sender: TObject);
439     procedure LiveItemActionExecute(Sender: TObject);
440     procedure FavoriteTreeViewItemNameCopyActionExecute(Sender: TObject);
441     procedure CloseAllEditorActionExecute(Sender: TObject);
442     procedure CloseAllEditorActionUpdate(Sender: TObject);
443     procedure PrevMoveHistoryUpdate(Sender: TObject);
444     procedure PrevMoveHistoryExecute(Sender: TObject);
445     procedure NextMoveHistoryUpdate(Sender: TObject);
446     procedure NextMoveHistoryExecute(Sender: TObject);
447     procedure ClickActiveElementActionExecute(Sender: TObject);
448     procedure VKDownActionExecute(Sender: TObject);
449     procedure VKUpActionExecute(Sender: TObject);
450     procedure VKRightActionExecute(Sender: TObject);
451     procedure VKLeftActionExecute(Sender: TObject);
452     procedure StoredTaskTrayActionExecute(Sender: TObject);
453     procedure LeftTabSelectActionUpdate(Sender: TObject);
454     procedure RightmostTabSelectActionUpdate(Sender: TObject);
455     procedure NewImageLinkToClipBoardActionExecute(Sender: TObject);
456     procedure AllImageLinkToClipbordActionExecute(Sender: TObject);
457     procedure SetForcusForAddresBarActionExecute(Sender: TObject);
458     procedure NewBoardSearchActionExecute(Sender: TObject);
459     procedure ScrollPageDownActionExecute(Sender: TObject);
460     procedure ScrollPageUpActionExecute(Sender: TObject);
461     procedure AllLinkToClipboardActionExecute(Sender: TObject);
462     procedure NewLinkToClipboardActionExecute(Sender: TObject);
463     procedure AddIDtoNGWord0ActionExecute(Sender: TObject);
464     procedure AddIDtoNGWord1ActionExecute(Sender: TObject);
465     procedure ExtractSameIDActionExecute(Sender: TObject);
466     procedure ShowTabListActionExecute(Sender: TObject);
467     procedure DereferenceResActionExecute(Sender: TObject);
468     procedure UpdateGikonaviActionExecute(Sender: TObject);
469     procedure konoURLPATHActionExecute(Sender: TObject);
470     procedure konoURLQueryActionExecute(Sender: TObject);
471     procedure konoURLQueryActionUpdate(Sender: TObject);
472     procedure PopupMenuSettingActionExecute(Sender: TObject);
473     procedure GikoNaviGoesonWebPageActionExecute(Sender: TObject);
474     procedure GoWikiFAQWebPageActionExecute(Sender: TObject);
475     procedure ThreadSearchActionExecute(Sender: TObject);
476     procedure ThreadNgEditActionExecute(Sender: TObject);
477   private
478         { Private \90é\8c¾ }
479         procedure ClearResFilter;
480         procedure SetResRange(range: Integer);
481         procedure SetThreadAreaHorNormal;
482         procedure SetThreadAreaHorizontal(gls : TGikoListState);
483         procedure SetThreadAreaVerNormal;
484         procedure SetThreadAreaVertical(gls : TGikoListState);
485         procedure SetThreadReadProperty(read: Boolean);
486         procedure SelectThreadSaveToFile(dat: Boolean);
487         function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;
488         procedure RecalcThreadSize(limit : Integer);
489         procedure ClearSelectComboBox;
490     procedure ClearMailAllEditor();
491     procedure ClearNameTextAllEditor();
492 //    procedure MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
493     procedure BackToHistory(item: TMoveHistoryItem);
494     function GetActiveThreadLinks : IHTMLElementCollection;
495     procedure GetLinkURLs(links : IHTMLElementCollection;
496         URLs : TStringList; const Start: Integer; Exts : TStringList);
497   public
498         { Public \90é\8c¾ }
499         procedure RepaintStatusBar;
500     function EditorFormExists(): boolean;
501     procedure GetTabURLs(AStringList: TStringList);
502     procedure OpenURLs(AStringList: TStringList);
503     procedure MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
504     procedure SaveThreadSearchSetting;
505   published
506         { Published \90é\8c¾ }
507         //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
508         procedure DependActiveCntentActionUpdate(Sender: TObject);
509         //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82©\82Â\83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82é
510         procedure DependActiveCntentLogActionUpdate(Sender: TObject);
511         //! TAction\82ÅActiveList\82ªTBoard(\94ñ\93Á\8eê\94Â)\82Å\97L\8cø\82É\82È\82é
512         procedure DependActiveListTBoardActionUpdate(Sender: TObject);
513         //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
514         procedure DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
515   end;
516
517 var
518   GikoDM: TGikoDM;
519
520
521 implementation
522
523 uses
524         Windows, Math, Clipbrd,
525         Giko, GikoUtil, BoardGroup,
526         FavoriteArrange, Favorite, MojuUtils,
527         Editor, ListSelect, Search, Option, Round,
528         KeySetting, Gesture, Kotehan, ToolBarSetting,
529         ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
530         GikoBayesian, About, ShellAPI,
531         RoundName, RoundData, Menus, ListViewUtils,
532         ThreadControl, GikoMessage, InputAssist,
533     DefaultFileManager, Forms, NewBoardURL, UpdateCheck,
534     PopupMenuSetting, ThreadSearch, ThreadNGEdt;
535
536 const
537         MSG_ERROR : string = '\83G\83\89\81[';
538
539 {$R *.dfm}
540 // *************************************************************************
541 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
542 // *************************************************************************
543 procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
544 begin
545         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
546 end;
547 // *************************************************************************
548 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82©\82Â\83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82é
549 // *************************************************************************
550 procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
551 begin
552         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
553                                                                         and (GikoForm.GetActiveContent.IsLogFile);
554 end;
555 // *************************************************************************
556 //! TAction\82ÅActiveList\82ªTBoard(\94ñ\93Á\8eê\94Â)\82Å\97L\8cø\82É\82È\82é
557 // *************************************************************************
558 procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
559 begin
560         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard) and
561         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
562 end;
563 // *************************************************************************
564 //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
565 // *************************************************************************
566 procedure TGikoDM.DependActiveListTBoardWithSpeciapActionUpdate(Sender: TObject);
567 begin
568         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
569 end;
570 // *************************************************************************
571 //! NG\83\8f\81[\83h\95Ò\8fW
572 // *************************************************************************
573 procedure TGikoDM.EditNGActionExecute(Sender: TObject);
574 begin
575         //\83e\83L\83X\83g\82É\8aÖ\98A\95t\82¯\82ç\82ê\82½\83A\83v\83\8a\82ÅNG\83\8f\81[\83h\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93
576         GikoSys.FAbon.EditNGwords;
577 end;
578 // *************************************************************************
579 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\8dÄ\93Ç\82Ý\8d\9e\82Ý\81j
580 // *************************************************************************
581 procedure TGikoDM.ReloadActionExecute(Sender: TObject);
582 begin
583         //\83\8a\83\8d\81[\83h\82ð\8eÀ\8ds\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
584         if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
585                 MsgBox(GikoForm.Handle, 'NG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\8dÄ\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
586                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
587         end else begin
588                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
589                 GikoForm.RepaintAllTabsBrowser();
590         end;
591 end;
592 // *************************************************************************
593 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\8cã\82ë\81j
594 // *************************************************************************
595 procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
596 begin
597         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
598         if GikoSys.FAbon.GoBack =false then begin
599                 MsgBox(GikoForm.Handle, '\88ê\82Â\8cã\82ë\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
600                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
601         end else begin
602                 //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
603                 RepaintStatusBar;
604                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
605                 GikoForm.RepaintAllTabsBrowser();
606         end;
607 end;
608 // *************************************************************************
609 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\91O\81j
610 // *************************************************************************
611 procedure TGikoDM.GoBackActionExecute(Sender: TObject);
612 begin
613         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
614         if GikoSys.FAbon.GoForward =false then begin
615                 MsgBox(GikoForm.Handle, '\88ê\82Â\91O\82ÌNG\83\8f\81[\83h\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\82É\8e¸\94s\82µ\82Ü\82µ\82½',
616                         MSG_ERROR, MB_OK or MB_ICONEXCLAMATION);
617         end else begin
618                 //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
619                 RepaintStatusBar;
620                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
621                 GikoForm.RepaintAllTabsBrowser();
622         end;
623 end;
624 // *************************************************************************
625 //! NG\83\8f\81[\83h\82ð\95Ï\8dX\82µ\82½\8cã\82Ì\83X\83e\81[\83^\83X\83o\81[\82Ì\8dX\90V\8f\88\97\9d
626 // *************************************************************************
627 procedure TGikoDM.RepaintStatusBar;
628 var
629         s : String;
630 begin
631         //\83X\83e\81[\83^\83X\82É\95\\8e¦\82³\82ê\82éNG\83\8f\81[\83h\83t\83@\83C\83\8b\96¼\82ð\8dX\90V
632         s := GikoSys.FAbon.NGwordname;
633         GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s;
634         //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
635         GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width
636                 := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
637         GikoForm.StatusBarResize(nil);
638 end;
639 // *************************************************************************
640 //! \83A\83h\83\8c\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83A\83h\83\8c\83X\82Ö\88Ú\93®\82·\82é
641 // *************************************************************************
642 procedure TGikoDM.MoveToActionExecute(Sender: TObject);
643 begin
644         //\83A\83h\83\8c\83X\83R\83\93\83{\83{\83b\83N\83X\82©\82çURL\82ð\8eæ\93¾
645         //URL\82É\88Ú\93®
646     MoveURLWithHistory( Trim(GikoForm.AddressComboBox.Text) );
647 end;
648 // *************************************************************************
649 //! \82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
650 // *************************************************************************
651 procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
652 begin
653         GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
654 end;
655 // *************************************************************************
656 //! \82¨\8bC\82É\93ü\82è\82Ì\90®\97\9d\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
657 // *************************************************************************
658 procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
659 var
660         Dlg: TFavoriteArrangeDialog;
661 begin
662         Dlg := TFavoriteArrangeDialog.Create(GikoForm);
663         try
664                 Dlg.ShowModal;
665         finally
666                 Dlg.Release;
667         end;
668         //\83\8a\83\93\83N\83o\81[\82É\8dX\90V\82ð\93`\82¦\82é
669         PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
670 end;
671 // *************************************************************************
672 //! \83c\83\8a\81[\82ð\91S\82Ä\95Â\82\82é
673 // *************************************************************************
674 procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
675 var
676         node    : TTreeNode;
677 begin
678         node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
679         try
680                 //\83m\81[\83h\82ª\91±\82­\8cÀ\82è\81@\83m\81[\83h\82ð\8fk\8f¬\82³\82¹\82é
681                 while node <> nil do begin
682                         if node.HasChildren then
683                                 node.Expanded := False;
684                         node := node.GetNext;
685                 end;
686         except
687         end;
688 end;
689 // *************************************************************************
690 //! \82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ð\95Ò\8fW\82·\82é
691 // *************************************************************************
692 procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
693 var
694         node : TTreeNode;
695 begin
696
697         if GikoForm.ClickNode = nil then
698                 Exit;
699         if GikoForm.ClickNode.IsFirstNode then
700                 Exit;
701         if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
702                 Exit;
703         GikoForm.FavoriteTreeView.ReadOnly := False;
704         if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
705                 node := GikoForm.ClickNode.Parent;
706                 while node <> nil do begin
707                         node.Expanded   := True;
708                         node                                    := node.Parent;
709                 end;
710                 GikoForm.ClickNode.EditText;
711         end else begin
712                 GikoForm.ClickNode.Text := InputBox( '\96¼\91O\82Ì\95Ï\8dX', '\82¨\8bC\82É\93ü\82è\82Ì\90V\82µ\82¢\96¼\91O\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢', GikoForm.ClickNode.Text );
713         end;
714         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
715         FavoriteDM.Modified := true;
716         GikoForm.SetLinkBar;
717 end;
718 // *************************************************************************
719 //! \90V\82µ\82­\82¨\8bC\82É\93ü\82è\82É\83t\83H\83\8b\83_\82ð\8dì\90¬\82·\82é
720 // *************************************************************************
721 procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
722 var
723         NewFavFolder: TFavoriteFolder;
724         Node: TTreeNode;
725 begin
726
727         if GikoForm.ClickNode = nil then
728                 Exit;
729
730         try
731                 if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
732                         GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
733                         GikoForm.ClickNode := GikoForm.ClickNode.Parent;
734                 end;
735
736                 NewFavFolder := TFavoriteFolder.Create;
737                 Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '\90V\82µ\82¢\83t\83H\83\8b\83_', NewFavFolder);
738                 Node.ImageIndex := 14;
739                 Node.SelectedIndex := 14;
740         //                      FClickNode.Selected.Expanded := True;
741                 GikoForm.FavoriteTreeView.Selected := Node;
742                 GikoForm.ClickNode := Node;
743                 //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
744                 FavoriteDM.Modified := true;
745                 FavoriteTreeViewRenameAction.Execute;
746         finally
747         end;
748
749 end;
750 // *************************************************************************
751 //! \82±\82Ì\82¨\8bC\82É\93ü\82è\82ð\8dí\8f\9c\82·\82é
752 // *************************************************************************
753 procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
754 const
755         DEL_LINK_MSG = '\81g\83\8a\83\93\83N\81h\82Í\83\8a\83\93\83N\83o\81[\97p\83t\83H\83\8b\83_\82Å\82·\81B\8dí\8f\9c\82µ\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
756         DEL_MSG = '\81g^0\81h\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
757         DEL_TITLE = '\8dí\8f\9c\8am\94F';
758 begin
759
760         if GikoForm.ClickNode = nil then
761                 Exit;
762         if GikoForm.ClickNode.IsFirstNode then
763                 Exit;
764         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
765                 if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
766                         if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
767                                 Exit;
768                 end else begin
769                         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
770                                 Exit;
771                 end;
772         end;
773
774         GikoForm.ClickNode.Delete;
775         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
776         FavoriteDM.Modified := true;
777
778         GikoForm.SetLinkBar;
779
780 end;
781 // *************************************************************************
782 //! \82±\82Ì\83t\83H\83\8b\83_\82É\93ü\82Á\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\91S\82Ä\8aJ\82­
783 // *************************************************************************
784 procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
785   Sender: TObject);
786 begin
787         GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
788 end;
789 // *************************************************************************
790 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
791 // *************************************************************************
792 procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
793 var
794         FavThread: TFavoriteThreadItem;
795         FavBoard: TFavoriteBoardItem;
796         shiftDown: Boolean;
797 begin
798         if (GikoForm.ClickNode = nil) then Exit;
799
800         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
801
802         if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
803                 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
804                 if FavThread.Item <> nil then
805                         GikoForm.DownloadContent(FavThread.Item, shiftDown);
806         end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
807                 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
808                 GikoForm.DownloadList(FavBoard.Item, shiftDown);
809         end;
810
811 end;
812 // *************************************************************************
813 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ÌURL\82ð\83R\83s\81[\82·\82é
814 // *************************************************************************
815 procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
816 begin
817
818         if GikoForm.ClickNode = nil then Exit;
819
820         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
821                 Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10;
822         end;
823 end;
824 // *************************************************************************
825 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
826 // *************************************************************************
827 procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
828 begin
829
830         if GikoForm.ClickNode = nil then Exit;
831
832         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
833                 Clipboard.AsText :=
834                         TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10;
835         end else begin
836                 Clipboard.AsText :=
837                         GikoForm.ClickNode.Text + #13#10;
838
839         end;
840 end;
841 // *************************************************************************
842 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
843 // *************************************************************************
844 procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
845   Sender: TObject);
846 var
847         favItem : TFavoriteItem;
848 begin
849
850         if GikoForm.ClickNode = nil then Exit;
851
852         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
853                 favItem := TFavoriteItem(GikoForm.ClickNode.Data);
854                 Clipboard.AsText := favItem.GetItemTitle  + #13#10 +
855                                                         favItem.URL + #13#10;
856         end;
857
858 end;
859 // *************************************************************************
860 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
861 // *************************************************************************
862 procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
863 const
864         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
865         DEL_TITLE = '\8dí\8f\9c\8am\94F';
866 var
867         ThreadItem: TThreadItem;
868         FavThread: TFavoriteThreadItem;
869 begin
870
871         if GikoForm.ClickNode = nil then Exit;
872         if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
873
874         FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
875         ThreadItem := FavThread.Item;
876
877         try
878                 if GikoSys.Setting.DeleteMsg then begin
879                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
880                                 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
881                                         Exit;
882                 end;
883
884                 GikoForm.DeleteHistory(ThreadItem);
885                 GikoForm.DeleteTab(ThreadItem);
886                 ThreadItem.DeleteLogFile;
887
888                 GikoForm.ListView.Refresh;
889         finally
890         end;
891
892 end;
893 // *************************************************************************
894 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
895 // *************************************************************************
896 procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
897   Sender: TObject);
898 var
899         threadItem      : TThreadItem;
900 begin
901
902         if GikoForm.ClickNode = nil then Exit;
903
904         if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
905
906                 threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
907                 if threadItem = nil then
908                         Exit;
909                 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
910
911         end;
912 end;
913 //! \83\8c\83X\82Ì\8di\8d\9e\82Ý\83t\83B\83\8b\83^\81[\82ð\8bó\82É\82·\82é
914 procedure TGikoDM.ClearResFilter;
915 var
916         FilterList : TStringList;
917 begin
918         // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
919         FilterList := TStringList.Create;
920         try
921                 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
922                 GikoSys.FSelectResFilter.Reverse := False;
923         finally
924                 FilterList.Free;
925         end;
926         GikoForm.SelectResWord := '';
927 end;
928 // *************************************************************************
929 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
930 // *************************************************************************
931 procedure TGikoDM.SetResRange(range: Integer);
932 begin
933         if GikoSys.ResRange <> range then begin
934                 GikoSys.ResRange        := range;
935                 // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
936                 ClearResFilter;
937                 GikoForm.RepaintAllTabsBrowser();
938         end;
939 end;
940 // *************************************************************************
941 //! \8dÅ\90V100\83\8c\83X\82Ì\82Ý\95\\8e¦
942 // *************************************************************************
943 procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
944 begin
945         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
946                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
947
948         GikoForm.ResRangeMenuSelect     := 100;
949         OnlyAHundredResAction.Checked   := True;
950         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é\81B\90Ý\92è\92l\82©\82ç\82Æ\82Á\82Ä\82­\82é\81B
951     SetResRange(GikoSys.Setting.ResRangeExCount);
952 end;
953 // *************************************************************************
954 //! \96¢\93Ç\83\8c\83X\82Ì\82Ý\95\\8e¦
955 // *************************************************************************
956 procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
957 begin
958         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
959                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
960
961         GikoForm.ResRangeMenuSelect     := Ord( grrKoko );
962         OnlyKokoResAction.Checked       := True;
963
964         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
965         SetResRange(Ord( grrKoko ));
966 end;
967 // *************************************************************************
968 //! \90V\92\85\83\8c\83X\82Ì\82Ý\95\\8e¦
969 // *************************************************************************
970 procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
971 begin
972         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
973                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
974
975         GikoForm.ResRangeMenuSelect     := Ord( grrNew );
976         OnlyNewResAction.Checked        := True;
977
978         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
979         SetResRange(Ord( grrNew ));
980 end;
981 // *************************************************************************
982 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloHorizontal\81@
983 // *************************************************************************
984 procedure TGikoDM.SetThreadAreaHorNormal;
985 begin
986         //\92Ê\8fí\95\\8e¦\82É\82·\82é
987         GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
988         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
989         BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
990         GikoSys.Setting.ListWidthState := glsNormal;
991 end;
992 // *************************************************************************
993 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\8dÅ\91å/\8dÅ\8f¬\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloHorizontal\81@
994 // *************************************************************************
995 procedure TGikoDM.SetThreadAreaHorizontal(gls : TGikoListState);
996 begin
997         if GikoSys.Setting.ListWidthState = glsNormal then
998                 GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
999         //\8dÅ\91å\95\\8e¦
1000         if (gls = glsMax) then begin
1001                 GikoForm.ViewPanel.Width := 1;
1002                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1003                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1004                 GikoSys.Setting.ListWidthState := glsMax;
1005         end else if (gls = glsMin) then begin
1006                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
1007                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1008                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1009                 GikoSys.Setting.ListWidthState := glsMin;
1010         end;
1011 end;
1012 // *************************************************************************
1013 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
1014 // *************************************************************************
1015 procedure TGikoDM.SetThreadAreaVerNormal;
1016 begin
1017         //\92Ê\8fí\95\\8e¦\82É\82·\82é
1018         GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1019         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1020         BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1021         GikoSys.Setting.ListHeightState := glsNormal;
1022 end;
1023 // *************************************************************************
1024 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\8dÅ\91å/\8dÅ\8f¬\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
1025 // *************************************************************************
1026 procedure TGikoDM.SetThreadAreaVertical(gls : TGikoListState);
1027 begin
1028         if GikoSys.Setting.ListHeightState = glsNormal then
1029                 GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1030         if (gls = glsMin) then begin
1031                 GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1032                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1033                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1034                 GikoSys.Setting.ListHeightState := glsMin;
1035         end else if (gls = glsMax) then begin
1036                 GikoForm.ViewPanel.Height := 1;
1037                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1038                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1039                 GikoSys.Setting.ListHeightState := glsMax;
1040         end;
1041 end;
1042 // *************************************************************************
1043 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\91å\82«\82­\95\\8e¦\82·\82é
1044 // *************************************************************************
1045 procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
1046 begin
1047         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1048                 case GikoSys.Setting.ListWidthState of
1049                         glsMax: begin
1050                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1051                                 SetThreadAreaHorNormal;
1052                         end;
1053                         glsMin, glsNormal: begin
1054                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
1055                                 SetThreadAreaHorizontal(glsMax);
1056                         end;
1057                 end;
1058         end else begin
1059                 case GikoSys.Setting.ListHeightState of
1060                         glsMax: begin
1061                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1062                                 SetThreadAreaVerNormal;
1063                         end;
1064                         glsMin, glsNormal: begin
1065                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
1066                                 SetThreadAreaVertical(glsMax);
1067                         end;
1068                 end;
1069         end;
1070 end;
1071 // *************************************************************************
1072 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\8f¬\82³\82­\95\\8e¦\82·\82é
1073 // *************************************************************************
1074 procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1075 begin
1076         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1077                 case GikoSys.Setting.ListWidthState of
1078                         glsMax, glsNormal: begin
1079                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
1080                                 SetThreadAreaHorizontal(glsMin);
1081                         end;
1082                         glsMin: begin
1083                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1084                                 SetThreadAreaHorNormal;
1085                         end;
1086                 end;
1087         end else begin
1088                 case GikoSys.Setting.ListHeightState of
1089                         glsMax, glsNormal: begin
1090                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
1091                                 SetThreadAreaVertical(glsMin);
1092                         end;
1093                         glsMin: begin
1094                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1095                                 SetThreadAreaVerNormal;
1096                         end;
1097                 end;
1098         end;
1099 end;
1100 // *************************************************************************
1101 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90æ\93ª\82Ö\88Ú\93®\82·\82é
1102 // *************************************************************************
1103 procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1104 begin
1105         GikoForm.BrowserMovement('top');
1106 end;
1107 // *************************************************************************
1108 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\8dÅ\8cã\82Ö\88Ú\93®\82·\82é
1109 // *************************************************************************
1110 procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1111 begin
1112         GikoForm.BrowserMovement('bottom');
1113 end;
1114 // *************************************************************************
1115 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90V\92\85\82Ö\88Ú\93®\82·\82é
1116 // *************************************************************************
1117 procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1118 begin
1119         GikoForm.BrowserMovement('new');
1120 end;
1121 // *************************************************************************
1122 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\83R\83R\82Ü\82Å\93Ç\82ñ\82¾\82Ö\88Ú\93®\82·\82é
1123 // *************************************************************************
1124 procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1125 begin
1126         GikoForm.BrowserMovement('koko');
1127 end;
1128 // *************************************************************************
1129 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\83R\83R\82Ü\82Å\93Ç\82ñ\82¾\82Ö\88Ú\93®\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1130 // *************************************************************************
1131 procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1132 begin
1133         ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1134                                                                 and (GikoForm.GetActiveContent.IsLogFile)
1135                                                                 and (GikoForm.GetActiveContent.Kokomade <> -1);
1136 end;
1137 // *************************************************************************
1138 //! \83\8c\83X\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
1139 // *************************************************************************
1140 procedure TGikoDM.EditorActionExecute(Sender: TObject);
1141 var
1142         Editor: TEditorForm;
1143         Item: TThreadItem;
1144 begin
1145         Item := GikoForm.GetActiveContent;
1146         if Item = nil then Exit;
1147         Editor := TEditorForm.Create(GikoForm.GetMainForm);
1148         Editor.SetThreadItem(Item);
1149         Editor.Show;
1150     Editor.SetFocusEdit;
1151 end;
1152 // *************************************************************************
1153 //! \83X\83\8c\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1154 // *************************************************************************
1155 procedure TGikoDM.IEActionExecute(Sender: TObject);
1156 begin
1157         ShowThreadAction.Execute;
1158 end;
1159 // *************************************************************************
1160 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1161 // *************************************************************************
1162 procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1163 var
1164         ThreadItem: TThreadItem;
1165 begin
1166         ThreadItem := GikoForm.GetActiveContent;
1167         if ThreadItem = nil then Exit;
1168         GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1169 end;
1170 // *************************************************************************
1171 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1172 // *************************************************************************
1173 procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1174 var
1175         ThreadItem: TThreadItem;
1176 begin
1177         ThreadItem := GikoForm.GetActiveContent;
1178         if ThreadItem = nil then Exit;
1179         GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1180 end;
1181 // *************************************************************************
1182 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
1183 // *************************************************************************
1184 procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1185 var
1186         s: string;
1187 begin
1188         s := '';
1189         if TObject(GikoForm.GetActiveContent) is TBoard then
1190                 s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1191         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1192                 s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1193         if s <> '' then
1194                 Clipboard.AsText := s;
1195 end;
1196 // *************************************************************************
1197 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ð\83R\83s\81[\82·\82é
1198 // *************************************************************************
1199 procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1200 var
1201         s: string;
1202 begin
1203         s := '';
1204         if TObject(GikoForm.GetActiveContent) is TBoard then
1205                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1206         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1207                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1208         if s <> '' then
1209                 Clipboard.AsText := s;
1210 end;
1211 // *************************************************************************
1212 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ÆURL\82ð\83R\83s\81[\82·\82é
1213 // *************************************************************************
1214 procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1215 var
1216         s: string;
1217 begin
1218         s := '';
1219         if TObject(GikoForm.GetActiveContent) is TBoard then
1220                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1221         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1222                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1223         if s <> '' then
1224                 Clipboard.AsText := s;
1225 end;
1226 // *************************************************************************
1227 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1228 // *************************************************************************
1229 procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1230 var
1231         ThreadItem: TThreadItem;
1232         shiftDown: Boolean;
1233 begin
1234         ThreadItem := GikoForm.GetActiveContent;
1235         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1236         if ThreadItem <> nil then
1237                 GikoForm.DownloadContent(ThreadItem, shiftDown);
1238 end;
1239 // *************************************************************************
1240 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82ð\95Â\82\82é
1241 // *************************************************************************
1242 procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1243 var
1244         idx: Integer;
1245 begin
1246         idx := GikoForm.BrowserTab.TabIndex;
1247         if idx <> -1 then begin
1248                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1249                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1250                 end;
1251         end;
1252 end;
1253 // *************************************************************************
1254 //! \83^\83u\82ª\82P\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1255 // *************************************************************************
1256 procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1257 begin
1258         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1259 end;
1260 // *************************************************************************
1261 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\88È\8aO\82ð\95Â\82\82é
1262 // *************************************************************************
1263 procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1264 var
1265         i: Integer;
1266         idx: Integer;
1267 begin
1268         idx := GikoForm.BrowserTab.TabIndex;
1269         if idx = -1 then Exit;
1270         GikoForm.BrowserTab.Tabs.BeginUpdate;
1271         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1272                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1273                 GikoForm.BrowserTab.Tabs.Delete(i);
1274         end;
1275         if idx > 0 then begin
1276                 for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1277                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1278                         GikoForm.BrowserTab.Tabs.Delete(i);
1279                 end;
1280         end;
1281         GikoForm.BrowserTab.Tabs.EndUpdate;
1282 end;
1283 // *************************************************************************
1284 //! \83^\83u\82ª\82Q\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1285 // *************************************************************************
1286 procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1287 begin
1288         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1289 end;
1290 // *************************************************************************
1291 //! \91S\82Ä\82Ì\83^\83u\82ð\95Â\82\82é
1292 // *************************************************************************
1293 procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1294 var
1295         i: Integer;
1296 begin
1297         if GikoSys.Setting.ShowDialogForAllTabClose then
1298                 if(MessageDlg('\91S\82Ä\82Ì\83^\83u\82ð\95Â\82\82Ä\82æ\82ë\82µ\82¢\82Å\82·\82©\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1299                         Exit;
1300
1301         GikoForm.ActiveContent := nil;
1302         GikoForm.BrowserNullTab.Thread := nil;
1303         GikoForm.BrowserTab.OnChange := nil;
1304         GikoForm.BrowserTab.Tabs.BeginUpdate;
1305         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1306                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1307         end;
1308         GikoForm.BrowserTab.Tabs.Clear;
1309         GikoForm.BrowserTab.Tabs.EndUpdate;
1310         GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1311         GikoForm.SetContent(GikoForm.BrowserNullTab);
1312         GikoForm.Caption := CAPTION_NAME ;
1313 end;
1314 // *************************************************************************
1315 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82Ì\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
1316 // *************************************************************************
1317 procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1318 const
1319         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
1320         DEL_TITLE = '\8dí\8f\9c\8am\94F';
1321 var
1322         idx: Integer;
1323         ThreadItem: TThreadItem;
1324 begin
1325         idx := GikoForm.BrowserTab.TabIndex;
1326         if idx <> -1 then begin
1327                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1328                         ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1329                         if GikoSys.Setting.DeleteMsg then
1330                                 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1331                                         if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1332                                                 Exit;
1333                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1334             GikoForm.DeleteHistory(ThreadItem);
1335                         ThreadItem.DeleteLogFile;
1336                         if ThreadItem.ParentBoard = GikoForm.ActiveList then
1337                                 GikoForm.ListView.Refresh;
1338                 end;
1339         end;
1340 end;
1341 // *************************************************************************
1342 //! \88ê\94Ô\8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1343 // *************************************************************************
1344 procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1345 begin
1346         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1347                 GikoForm.BrowserTab.TabIndex := 0;
1348                 GikoForm.BrowserTab.OnChange(nil);
1349         end;
1350 end;
1351 // *************************************************************************
1352 //! \8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1353 // *************************************************************************
1354 procedure TGikoDM.LeftTabSelectActionUpdate(Sender: TObject);
1355 begin
1356     if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1357         LeftmostTabSelectActionUpdate(Sender);
1358     end else begin
1359         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1360     end;
1361 end;
1362
1363 // *************************************************************************
1364 //! \83^\83u\82Ì\90\94\82ª\82P\88È\8fã\82Å\81A\83^\83u\82Ì\83C\83\93\83f\83b\83N\83X\82ª\82O\88È\8aO\82Å\97L\8cø\82É\82È\82éUpdate\83C\83x\83\93\83g
1365 // *************************************************************************
1366 procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1367 begin
1368         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1369                                                                 and (GikoForm.BrowserTab.TabIndex <> 0);
1370 end;
1371 // *************************************************************************
1372 //! \8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1373 // *************************************************************************
1374 procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1375 begin
1376         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1377                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1378                         GikoForm.BrowserTab.TabIndex := 0;
1379                         GikoForm.BrowserTab.OnChange(nil);
1380                 end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1381                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1382                         GikoForm.BrowserTab.OnChange(nil);
1383                 end else begin
1384             if (GikoSys.Setting.LoopBrowserTabs) and
1385                 (GikoForm.BrowserTab.TabIndex = 0) then begin
1386                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1387                         GikoForm.BrowserTab.OnChange(nil);
1388             end;
1389         end;
1390         end;
1391 end;
1392 // *************************************************************************
1393 //! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1394 // *************************************************************************
1395 procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1396 begin
1397         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1398                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1399                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1400                         GikoForm.BrowserTab.OnChange(nil);
1401                 end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1402                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1403                         GikoForm.BrowserTab.OnChange(nil);
1404                 end else begin
1405             if (GikoSys.Setting.LoopBrowserTabs) and
1406                 (GikoForm.BrowserTab.TabIndex = (GikoForm.BrowserTab.Tabs.Count - 1)) then begin
1407                         GikoForm.BrowserTab.TabIndex := 0;
1408                         GikoForm.BrowserTab.OnChange(nil);
1409             end;
1410         end;
1411         end;
1412 end;
1413 // *************************************************************************
1414 //! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
1415 // *************************************************************************
1416 procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1417 begin
1418     if ( not GikoSys.Setting.LoopBrowserTabs ) then begin
1419         RightmostTabSelectActionUpdate(Sender);
1420     end else begin
1421         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1422     end;
1423 end;
1424
1425 // *************************************************************************
1426 //! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1427 // *************************************************************************
1428 procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1429 begin
1430         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1431                 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1432                 GikoForm.BrowserTab.OnChange(nil);
1433         end;
1434 end;
1435 // *************************************************************************
1436 //! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é\82ÌUpdate\83C\83x\83\93\83g
1437 // *************************************************************************
1438 procedure TGikoDM.RightmostTabSelectActionUpdate(Sender: TObject);
1439 begin
1440         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1441                                                                 and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1442
1443 end;
1444 // *************************************************************************
1445 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á
1446 // *************************************************************************
1447 procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1448 begin
1449         if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1450                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1451 end;
1452 // *************************************************************************
1453 //! \83X\83\8c\83b\83h\88ê\97\97\82Å\81A\83X\83\8c\82ª\82P\82Â\88È\8fã\91I\91ð\82³\82ê\82Ä\82¢\82é\97L\8cø\82É\82È\82éUpdate\83C\83x\83\93\83g
1454 // *************************************************************************
1455 procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1456 begin
1457         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1458                                                                         and (GikoForm.ListView.SelCount > 0);
1459 end;
1460 // *************************************************************************
1461 //! \83\8c\83X\82Ì\93à\97e\82ð\8di\82è\8d\9e\82Þ
1462 // *************************************************************************
1463 procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1464 var
1465         Dlg: TListSelectDialog;
1466         FilterList : TStringList;
1467         idx : Integer;
1468 begin
1469         Dlg := TListSelectDialog.Create(GikoForm);
1470         try
1471                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1472                 Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1473                 Dlg.ShowModal;
1474                 if Dlg.ModalResult = mrOK then begin
1475                         SelectResAction.Checked := True;
1476                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1477                                 // \8bó\93ü\97Í\82Å OK \82Í\8di\82è\8d\9e\82Ý\89ð\8f\9c\82Æ\93¯\88Ó\8b`
1478                                 ResRangeAction.Execute;
1479                         end else begin
1480                                 GikoSys.ResRange := Ord( grrSelect );
1481
1482                                 // \8dÅ\8cã\82É\90Ý\92è\82µ\82½\82à\82Ì\82ð\8ao\82¦\82Ä\82¨\82­
1483                                 GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1484
1485                                 // \8c\9f\8dõ\97\9a\97ð\82Ì\8dX\90V
1486                                 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1487                                 if idx <> -1 then
1488                                         GikoSys.Setting.SelectTextList.Delete(idx);
1489                                 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1490                                 while Dlg.SelectComboBox.Items.Count > 100 do begin
1491                                         Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1492                                 end;
1493
1494                                 try
1495                                         if GikoForm.SelectComboBoxPanel.Visible then
1496                                                 GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1497                                 except
1498                                 end;
1499
1500                                 // \83t\83B\83\8b\83^\82Ì\90Ý\92è
1501                                 FilterList := TStringList.Create;
1502                                 try
1503                                         GikoSys.FSelectResFilter.Reverse := True;
1504                                         FilterList.Delimiter := ' '; //\8bæ\90Ø\82è\8eq\82ð\94¼\8ap\83X\83y\81[\83X\82É\90Ý\92è
1505                                         FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1506
1507                                         GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1508                                 finally
1509                                         FilterList.Free;
1510                                 end;
1511                                 GikoForm.RepaintAllTabsBrowser();
1512                         end;
1513                 end else begin
1514                         // \83L\83\83\83\93\83Z\83\8b
1515                         if GikoSys.ResRange <> Ord( grrSelect ) then
1516                                 ResRangeAction.Execute;
1517                 end;
1518         finally
1519                 Dlg.Release;
1520         end;
1521
1522 end;
1523 // *************************************************************************
1524 //! \91S\82Ä\82Ì\83\8c\83X\82ð\95\\8e¦\82·\82é
1525 // *************************************************************************
1526 procedure TGikoDM.AllResActionExecute(Sender: TObject);
1527 begin
1528         if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1529                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1530
1531         GikoForm.ResRangeMenuSelect     := Ord( grrAll );
1532         AllResAction.Checked            := True;
1533
1534         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
1535         SetResRange(Ord( grrAll ));
1536 end;
1537 // *************************************************************************
1538 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
1539 // *************************************************************************
1540 procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1541 begin
1542         case GikoForm.ResRangeMenuSelect of
1543         Ord( grrAll ):  AllResAction.Execute;
1544         Ord( grrKoko ): OnlyKokoResAction.Execute;
1545         Ord( grrNew ):  OnlyNewResAction.Execute;
1546         100:                    OnlyAHundredResAction.Execute;
1547         end;
1548
1549 end;
1550 // *************************************************************************
1551 //! \82±\82Ì\83X\83\8c\83b\83h\82ð\8aÜ\82Þ\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦
1552 // *************************************************************************
1553 procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1554 begin
1555         GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1556 end;
1557 // *************************************************************************
1558 //! \8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82É\94ò\82Ô
1559 // *************************************************************************
1560 procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1561 var
1562         str: string;
1563         res: integer;
1564 begin
1565         str := '1';
1566         if( InputQuery('\8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82É\94ò\82Ô', '\94Ô\8d\86\82ð\93ü\97Í\82µ\82Ä\82­\82¾\82³\82¢', str) ) then begin
1567                 str := ZenToHan(str);
1568                 res := StrToIntDef(str, -1);
1569                 if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1570                         GikoForm.ActiveContent.Move(IntToStr(res));
1571                         SetFocusForBrowserAction.Execute;
1572                 end else if res > GikoForm.GetActiveContent.Count then begin
1573                         GikoForm.ActiveContent.Move(IntToStr(GikoForm.GetActiveContent.Count));
1574                         SetFocusForBrowserAction.Execute;
1575                 end;
1576         end;
1577 end;
1578 // *************************************************************************
1579 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\89E\82ð\95Â\82\82é
1580 // *************************************************************************
1581 procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1582 var
1583         i: Integer;
1584         idx: Integer;
1585 begin
1586         idx := GikoForm.BrowserTab.TabIndex;
1587         if idx = -1 then Exit;
1588         GikoForm.BrowserTab.Tabs.BeginUpdate;
1589         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1590                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1591                 GikoForm.BrowserTab.Tabs.Delete(i);
1592         end;
1593         GikoForm.BrowserTab.Tabs.EndUpdate;
1594 end;
1595 // *************************************************************************
1596 //! \83^\83u\82Ì\90\94\82ª\82Q\88È\8fã\82Å\97L\8cø\82ÈUpdate\83C\83x\83\93\83g
1597 // *************************************************************************
1598 procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1599 begin
1600         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1601 end;
1602 // *************************************************************************
1603 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\8d\82ð\95Â\82\82é
1604 // *************************************************************************
1605 procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1606 var
1607         i: Integer;
1608         idx: Integer;
1609 begin
1610         idx := GikoForm.BrowserTab.TabIndex;
1611         if idx = -1 then Exit;
1612         GikoForm.BrowserTab.Tabs.BeginUpdate;
1613         if idx > 0 then begin
1614                 for i := idx - 1 downto 0 do begin
1615                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1616                         GikoForm.BrowserTab.Tabs.Delete(i);
1617                 end;
1618         end;
1619         GikoForm.BrowserTab.Tabs.EndUpdate;
1620 end;
1621 ////////////////////////////////\83X\83\8c\83b\83h\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1622 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1623 begin
1624     // GikoDM\82æ\82è\82à\91\81\82­\8f\89\8aú\89»\82³\82ê\82é\95K\97v\82ª\82 \82é\83t\83@\83C\83\8b\82ª\82¢\82é\82Æ\82±\82¯\82é\81I\81I
1625     // \8f\89\8aú\89»\8f\87\94Ô\82É\92\8d\88Ó\82·\82é\82±\82Æ\81I\81I
1626     //\8f\89\89ñ\8bN\93®\8e\9e\82Ì\8f\89\8aú\89»\83t\83@\83C\83\8b\90Ý\92è
1627     TDefaultFileManager.CopyDefaultFiles(GikoSys.Setting.GetDefaultFilesFileName);
1628 end;
1629 // *************************************************************************
1630 //! \83\8d\83O\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1631 // *************************************************************************
1632 procedure TGikoDM.SearchActionExecute(Sender: TObject);
1633 var
1634         chk: TObject;
1635 begin
1636
1637         if GikoForm.SearchDialog = nil then begin
1638                 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1639                         chk := GikoForm.GetActiveList
1640                 else
1641                         chk := nil;
1642
1643                 GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk);
1644                 GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1645         end;
1646
1647         try
1648                 GikoForm.SearchDialog.Show;
1649         except
1650         end;
1651 end;
1652 // *************************************************************************
1653 //! \83I\83v\83V\83\87\83\93\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1654 // *************************************************************************
1655 procedure TGikoDM.OptionActionExecute(Sender: TObject);
1656 var
1657         Dlg: TOptionDialog;
1658 begin
1659         Dlg := TOptionDialog.Create(GikoForm);
1660         try
1661                 Dlg.ShowModal;
1662         finally
1663                 Dlg.Release;
1664         end;
1665 end;
1666 // *************************************************************************
1667 //! \8f\84\89ñ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1668 // *************************************************************************
1669 procedure TGikoDM.RoundActionExecute(Sender: TObject);
1670 var
1671         Dlg: TRoundDialog;
1672 begin
1673         Dlg := TRoundDialog.Create(GikoForm);
1674         try
1675                 Dlg.ShowModal;
1676         finally
1677                 Dlg.Release;
1678         end;
1679 end;
1680 // *************************************************************************
1681 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1682 // *************************************************************************
1683 procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1684 var
1685         Dlg: TKeySettingForm;
1686 begin
1687         Dlg := TKeySettingForm.Create(GikoForm);
1688         try
1689                 if Dlg.ShowModal = mrOk then begin
1690                         GikoSys.SaveKeySetting(GikoFormActionList, Setting.KEY_SETTING_FILE_NAME);
1691                         GikoSys.SaveKeySetting(Dlg.EditorForm.ActionList, Setting.EKEY_SETTING_FILE_NAME);
1692                         GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1693                 end;
1694
1695         finally
1696                 Dlg.Release;
1697                 MouseGesture.UnHook;
1698                 MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1699                 MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1700                 MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1701                 if GikoSys.Setting.GestureEnabled then begin
1702                         GikoSys.Setting.Gestures.ClearGesture;
1703                         GikoSys.Setting.Gestures.LoadGesture(
1704                                 GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1705                         MouseGesture.SetHook( GikoForm.Handle );
1706                 end;
1707         end;
1708 end;
1709 // *************************************************************************
1710 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1711 // *************************************************************************
1712 procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1713 var
1714         Dlg: TKotehanDialog;
1715 begin
1716         Dlg := TKotehanDialog.Create(GikoForm);
1717         try
1718                 Dlg.ShowModal;
1719         finally
1720                 Dlg.Release;
1721         end;
1722 end;
1723 // *************************************************************************
1724 //! \83c\81[\83\8b\83o\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1725 // *************************************************************************
1726 procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1727 var
1728         Dlg: TToolBarSettingDialog;
1729         i: Integer;
1730 begin
1731         Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1732         try
1733                 Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1734                 Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1735                 Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1736                 case GikoForm.ToolBarSettingSender of
1737                 tssMain:                Dlg.ToolBarIndex := 0;
1738                 tssList:                Dlg.ToolBarIndex := 1;
1739                 tssBrowser: Dlg.ToolBarIndex := 2;
1740                 end;
1741                 if Dlg.ShowModal = mrOK then begin
1742                         GikoForm.SetToolBarPopup;
1743
1744                         //\8dÅ\93K\95\9d\82ð\8dÄ\90Ý\92è\82·\82é\82½\82ß\82É\93K\93\96\82È\83v\83\8d\83p\83e\83B\82ð\82¢\82\82­\82é
1745                         for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1746                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1747                                         GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1748                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1749                                         GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1750                         end;
1751                         for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1752                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1753                                         GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1754                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1755                                         GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1756                         end;
1757                         for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1758                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1759                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1760                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1761                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1762                         end;
1763
1764                         SaveToolBarSetting(GikoForm.StdToolBar);
1765                         SaveToolBarSetting(GikoForm.ListToolBar);
1766                         //ListToolBar\82É\82¢\82é\82©\82à\82µ\82ê\82È\82¢\8di\8d\9e\82ÝComboBox\82ð\94z\92u
1767                         GikoForm.SetSelectComboBox;
1768                         GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1769                         SaveToolBarSetting(GikoForm.BrowserToolBar);
1770                 end;
1771         finally
1772                 Dlg.Release;
1773                 GikoForm.ToolBarSettingSender := tssNone;
1774         end;
1775 end;
1776 // *************************************************************************
1777 //! \83~\83\85\81[\83g
1778 // *************************************************************************
1779 procedure TGikoDM.MuteActionExecute(Sender: TObject);
1780 begin
1781         GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1782 end;
1783 ////////////////////////////////\83c\81[\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1784 // *************************************************************************
1785 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1786 // *************************************************************************
1787 procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1788 var
1789         Board: TBoard;
1790         TmpTreeNode: TTreeNode;
1791 begin
1792         TmpTreeNode := GikoForm.ClickNode;
1793         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1794         Board := nil;
1795
1796         if TObject(TmpTreeNode.Data) is TBoard then
1797                 Board := TBoard(TmpTreeNode.Data)
1798         else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1799                 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1800
1801         if Board <> nil then
1802                 GikoForm.DownloadList(Board);
1803 end;
1804 // *************************************************************************
1805 //! \91I\91ð\82³\82ê\82½\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1806 // *************************************************************************
1807 procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1808 var
1809         ThreadItem: TThreadItem;
1810         TmpTreeNode: TTreeNode;
1811 begin
1812         TmpTreeNode := GikoForm.ClickNode;
1813         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1814         ThreadItem := nil;
1815
1816         if TObject(TmpTreeNode.Data) is TThreadItem then
1817                 ThreadItem := TThreadItem(TmpTreeNode.Data)
1818         else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1819                 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1820
1821         if ThreadItem <> nil then
1822                 GikoForm.DownloadContent(ThreadItem);
1823 end;
1824 // *************************************************************************
1825 //! \91I\91ð\82³\82ê\82½\94Â\82ÌURL\82ð\83R\83s\81[\82·\82é
1826 // *************************************************************************
1827 procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1828 var
1829         TmpTreeNode: TTreeNode;
1830         s: string;
1831 begin
1832         TmpTreeNode := GikoForm.ClickNode;
1833         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1834         if TObject(TmpTreeNode.Data) is TBoard then begin
1835                 s := TBoard(TmpTreeNode.Data).URL + #13#10;
1836         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1837                 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1838         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1839                 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1840         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1841                 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1842         end;
1843         Clipboard.AsText := s;
1844 end;
1845 // *************************************************************************
1846 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
1847 // *************************************************************************
1848 procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1849 var
1850         TmpTreeNode: TTreeNode;
1851         s: string;
1852 begin
1853         TmpTreeNode := GikoForm.ClickNode;
1854         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1855         if TObject(TmpTreeNode.Data) is TBoard then begin
1856                 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1857         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1858                 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1859         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1860                 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1861         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1862                 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1863         end;
1864         Clipboard.AsText := s;
1865 end;
1866 // *************************************************************************
1867 //! \82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
1868 // *************************************************************************
1869 procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1870 begin
1871         GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1872 end;
1873 // *************************************************************************
1874 //! \94Â\96¼\8c\9f\8dõ
1875 // *************************************************************************
1876 procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1877 var
1878         s : String;
1879         msg : String;
1880         CurItem : TTreeNode;
1881         next : boolean;
1882 begin
1883         if InputQuery('\94Â\96¼\8c\9f\8dõ','\94Â\96¼\82Ì\93ü\97Í',s) then begin
1884                 next := true;
1885                 while next do begin
1886                         if GikoForm.TreeView.Selected = nil then
1887                                 CurItem := GikoForm.TreeView.Items.GetFirstNode
1888                         else begin
1889                                 CurItem := GikoForm.TreeView.Selected.GetNext;
1890                                 if CurItem = nil then
1891                                         CurItem := GikoForm.TreeView.Items.GetFirstNode;
1892                         end;
1893                         while CurItem <> nil do begin
1894                                 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1895                                         break;
1896                                 end;
1897                                 CurItem := CurItem.GetNext;
1898                         end;
1899                         try
1900                                 if CurItem = nil then begin
1901                                         msg := '\90æ\93ª\82É\96ß\82è\82Ü\82·\82©\81H';
1902                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1903                                                 CurItem := GikoForm.TreeView.Items.GetFirstNode;
1904                                         end else begin
1905                                                 Exit;
1906                                         end;
1907                                         GikoForm.TreeView.Select(CurItem);
1908                                         GikoForm.TreeView.SetFocus;
1909                                 end else begin
1910                                         GikoForm.TreeView.Select(CurItem);
1911                                         GikoForm.TreeView.SetFocus;
1912                                         msg := '\8e\9f\82É\8ds\82«\82Ü\82·\82©\81H';
1913                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1914                                                 next := true;
1915                                         end else begin
1916                                                 next := false;
1917                                         end;
1918                                 end;
1919
1920                         except
1921                                 Exit;
1922                         end;
1923                 end;
1924         end;
1925 end;
1926 // *************************************************************************
1927 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
1928 // *************************************************************************
1929 procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1930 var
1931         s: string;
1932 begin
1933         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1934         s := GikoForm.ClickNode.Text;
1935         Clipboard.AsText := s;
1936 end;
1937 ////////////////////////////////\83c\83\8a\81[\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1938 // *************************************************************************
1939 //! \83\8d\83O\83C\83\93\81^\83\8d\83O\83A\83E\83g\82ð\82·\82é
1940 // *************************************************************************
1941 procedure TGikoDM.LoginActionExecute(Sender: TObject);
1942 var
1943         TmpCursor: TCursor;
1944         msg : String;
1945 begin
1946         if GikoSys.Dolib.Connected then begin
1947                 //\83\8d\83O\83A\83E\83g
1948                 GikoSys.Dolib.Disconnect;
1949                 LoginAction.Checked := False;
1950                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK);
1951                 LoginAction.Caption := '\83\8d\83O\83C\83\93(&L)';
1952         end else begin
1953                 TmpCursor := GikoForm.ScreenCursor;
1954                 GikoForm.ScreenCursor := crHourGlass;
1955                 try
1956                         //\92Ê\8fí\83\8d\83O\83C\83\93
1957                         if not GikoSys.Setting.ForcedLogin then begin
1958                                 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1959                                 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1960                                 GikoSys.Dolib.Password := GikoSys.Setting.Password;
1961                                 if GikoSys.Setting.ReadProxy then begin
1962                                         GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1963                                         GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1964                                 end else begin
1965                                         GikoSys.Dolib.ProxyAddress := '';
1966                                         GikoSys.Dolib.ProxyPort := 0;
1967                                 end;
1968                                 if GikoSys.Dolib.Connect then begin
1969                                         LoginAction.Checked := True;
1970                                         GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1971                                         LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
1972                                         //LoginToolButton.Style := tbsCheck;
1973                                 end else begin
1974                 //                      MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
1975                                         GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1976                                         GikoForm.PlaySound('Error');
1977                                         LoginAction.Checked := False;
1978                                         //LoginToolButton.Down := False;
1979                                         ///LoginToolButton.Style := tbsButton;
1980                                 end;
1981                         end else begin
1982                                 msg := '\8b­\90§\83\8d\83O\83C\83\93\83\82\81[\83h\82Å\82Í\81C\83T\81[\83o\82Ì\8fØ\96¾\8f\91\82Ì\97L\8cø\90«\82ð\83`\83F\83b\83N\82µ\82Ü\82¹\82ñ\81B' + #13#10
1983                                                 + '\8bU\91\95\83T\81[\83o\82Ì\8fê\8d\87\81A\82 \82È\82½\82Ì\83p\83X\83\8f\81[\83h\93\90\82Ü\82ê\82é\89Â\94\\90«\82ª\82 \82è\82Ü\82·\81B' + #13#10
1984                                                 + '\82±\82Ì\83\82\81[\83h\82Å\83\8d\83O\83C\83\93\82ð\8e\8e\82Ý\82Ü\82·\82©\81H' + #13#10;
1985                                 if MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES  then begin
1986                                         GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1987                                         GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1988                                         GikoSys.Dolib.Password := GikoSys.Setting.Password;
1989                                         if GikoSys.Setting.ReadProxy then begin
1990                                                 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1991                                                 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1992                                         end else begin
1993                                                 GikoSys.Dolib.ProxyAddress := '';
1994                                                 GikoSys.Dolib.ProxyPort := 0;
1995                                         end;
1996                                         //SSL\8fá\8aQ\97p\8b­\90§\83\8d\83O\83C\83\93
1997                                         GikoSys.Dolib.ForcedConnect;
1998                                         if GikoSys.Dolib.Connect then begin
1999                                                 LoginAction.Checked := True;
2000                                                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK);
2001                                                 LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
2002                                                 //LoginToolButton.Style := tbsCheck;
2003                                                 end else begin
2004                         //                      MsgBox(Handle, '\83\8d\83O\83C\83\93\8fo\97\88\82Ü\82¹\82ñ\82Å\82µ\82½', '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
2005                                                 GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
2006                                                 GikoForm.PlaySound('Error');
2007                                                 LoginAction.Checked := False;
2008                                                 //LoginToolButton.Down := False;
2009                                                 //LoginToolButton.Style := tbsButton;
2010                                         end;
2011                                 end else begin
2012                                         LoginAction.Checked := False;
2013                                         //LoginToolButton.Down := False;
2014                                         //LoginToolButton.Style := tbsButton;
2015                                 end;
2016                         end;
2017                 finally
2018                         GikoForm.ScreenCursor := TmpCursor;
2019                 end;
2020         end;
2021 end;
2022 // *************************************************************************
2023 //! \83{\81[\83h\8dX\90V\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
2024 // *************************************************************************
2025 procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
2026 var
2027         Dlg: TNewBoardDialog;
2028         Msg: string;
2029 begin
2030         if (EditorFormExists) then begin
2031                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
2032                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
2033                 Exit;
2034         end;
2035         Dlg := TNewBoardDialog.Create(GikoForm);
2036         try
2037                 Dlg.ShowModal;
2038         finally
2039                 Dlg.Release;
2040         end;
2041 end;
2042 // *************************************************************************
2043 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
2044 // *************************************************************************
2045 procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2046 const
2047         DEL_MSG = '\81g^0\81h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2048         DEL_SAME_MSG = '\82±\82ê\82ç ^0 \8cÂ\82Ì\83X\83\8c\83b\83h\82Ì\83\8d\83O\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2049         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2050 var
2051         ThreadItem: TThreadItem;
2052         TmpListItem: TListItem;
2053         List: TList;
2054         i: Integer;
2055 begin
2056         List := TList.Create;
2057         try
2058                 TmpListItem := GikoForm.ListView.Selected;
2059                 while TmpListItem <> nil do begin
2060                         if TObject(TmpListItem.Data) is TThreadItem then begin
2061                                 ThreadItem := TThreadItem(TmpListItem.Data);
2062                                 if ThreadItem.IsLogFile then
2063                                         List.Add(ThreadItem);
2064                         end;
2065                         TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2066                 end;
2067
2068                 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2069                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2070                                 if List.Count = 1 then begin
2071                                         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
2072                                                 Exit;
2073                                 end else begin
2074                                         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
2075                                                 Exit;
2076                                 end;
2077                         end;
2078                 end;
2079
2080                 for i := 0 to List.Count - 1 do begin
2081                         ThreadItem := TThreadItem(List[i]);
2082                         GikoForm.DeleteHistory(ThreadItem);
2083                         GikoForm.DeleteTab(ThreadItem);
2084                         ThreadItem.DeleteLogFile;
2085                 end;
2086         GikoForm.TreeView.Refresh;      // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
2087                 GikoForm.ListView.Refresh;
2088         finally
2089                 List.Free;
2090         end;
2091 end;
2092 // *************************************************************************
2093 //! ActiveList\82ªTBoard\82Å\83X\83\8c\88ê\97\97\82Å\82P\82Â\88È\8fã\91I\91ð\82µ\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82éAction\82Å\8b¤\92Ê
2094 // *************************************************************************
2095 procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2096 begin
2097         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2098                                                                 and (GikoForm.ListView.SelCount > 0);
2099 end;
2100 // *************************************************************************
2101 //! \8di\8d\9e\82Ý\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2102 // *************************************************************************
2103 procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2104 const
2105         DEL_MSG = '\8di\8d\9e\82Ý\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2106         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2107 begin
2108         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2109                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2110                         Exit;
2111         GikoSys.Setting.SelectTextList.Clear;
2112         GikoForm.SelectComboBox.Items.Clear;
2113         GikoForm.SelectComboBox.Text := '';
2114         GikoForm.SetListViewType( gvtAll );
2115 end;
2116 // *************************************************************************
2117 //! \83\8c\83X\83G\83f\83B\83^\82Ì\96¼\91O\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2118 // *************************************************************************
2119 procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2120 const
2121         DEL_MSG = '\83\8c\83X\83G\83f\83B\83^\96¼\91O\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2122         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2123 begin
2124         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2125                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2126                         Exit;
2127         GikoSys.Setting.NameList.Clear;
2128         ClearNameTextAllEditor
2129 end;
2130 // *************************************************************************
2131 //! \83\8c\83X\83G\83f\83B\83^\82Ì\83\81\81[\83\8b\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2132 // *************************************************************************
2133 procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2134 const
2135         DEL_MSG = '\83\8c\83X\83G\83f\83B\83^\83\81\81[\83\8b\91S\97\9a\97ð\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
2136         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2137 begin
2138         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2139                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2140                         Exit;
2141         GikoSys.Setting.MailList.Clear;
2142         ClearMailAllEditor;
2143 end;
2144 // *************************************************************************
2145 //! \83M\83R\83i\83r\82ð\8fI\97¹\82·\82é
2146 // *************************************************************************
2147 procedure TGikoDM.ExitActionExecute(Sender: TObject);
2148 begin
2149         GikoForm.Close;
2150 end;
2151 // *************************************************************************
2152 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\91O\8f\88\97\9d
2153 // *************************************************************************
2154 procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2155 begin
2156         ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2157 end;
2158 // *************************************************************************
2159 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\8f\88\97\9d
2160 // *************************************************************************
2161 procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2162 begin
2163         if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2164                 ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
2165         end else begin
2166                 ShowMessage('\83t\83@\83C\83\8b\82Ì\8fo\97Í\82É\8e¸\94s\82µ\82Ü\82µ\82½');
2167         end;
2168 end;
2169 // *************************************************************************
2170 //! \91I\91ð\83X\83\8c\83b\83h\82ð\83t\83@\83C\83\8b\82É\95Û\91\82·\82é
2171 // *************************************************************************
2172 procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean);
2173 var
2174         List: TList;
2175         i: Integer;
2176         html: TStringList;
2177         title: string;
2178 begin
2179         List := TList.Create;
2180         try
2181                 GikoForm.ScreenCursor := crHourGlass;
2182                 GikoForm.SelectListItem(List);
2183                 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2184                         (GikoSys.Setting.ListHeightState = glsMax)) or
2185                         ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2186                         (GikoSys.Setting.ListWidthState = glsMax))      then
2187                         ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82­\82¾\82³\82¢')
2188                 else if(List.Count = 0) then
2189                         ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82­\82¾\82³\82¢')
2190                 else begin
2191                         if dat then begin
2192                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
2193                                 SaveDialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
2194                         end else begin
2195                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
2196                                 SaveDialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
2197                         end;
2198                         for i := 0 to List.Count - 1 do begin
2199                                 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2200                                         if dat then begin
2201                                                 SaveDialog.FileName := TThreadItem(List[i]).FileName;
2202                                         end else begin
2203                                                 SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2204                                         end;
2205                                         if SaveDialog.Execute then begin
2206                                                 if dat then begin
2207                                                         CopyFile(PChar(TThreadItem(List[i]).FilePath),
2208                                                                         PChar(SaveDialog.FileName), true);
2209                                                 end else begin
2210                                                         html := TStringList.Create;
2211                                                         title := TThreadItem(List[i]).Title;
2212                                                         try
2213                                                                 HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2214                                                                 html.SaveToFile(SaveDialog.FileName);
2215                                                                 THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName));
2216                                                         finally
2217                                                                 html.Free;
2218                                                         end;
2219                                                 end;
2220                                         end;
2221                                 end;
2222                         end;
2223                 end;
2224         finally
2225                 GikoForm.ScreenCursor := crDefault;
2226                 List.Free;
2227         end;
2228 end;
2229 // *************************************************************************
2230 //! \91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91
2231 // *************************************************************************
2232 procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2233 begin
2234         SelectThreadSaveToFile(false);
2235 end;
2236 // *************************************************************************
2237 //! \91I\91ð\83X\83\8c\83b\83h\82ðDAT\8c`\8e®\82Ì\82Ü\82Ü\95Û\91
2238 // *************************************************************************
2239 procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2240 begin
2241         SelectThreadSaveToFile(true);
2242 end;
2243 // *************************************************************************
2244 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95Û\91
2245 // *************************************************************************
2246 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2247 const
2248         Filename = 'tab.sav';
2249         bFilename = '~tab.sav';
2250 var
2251         SaveStringList: TStringList;
2252 begin
2253         SaveStringList := TStringList.Create;
2254         try
2255                 GetTabURLs(SaveStringList);
2256         try
2257             if FileExists( GikoSys.GetAppDir + Filename) then begin
2258                 CopyFile(PChar(GikoSys.GetAppDir + Filename),
2259                     PChar(GikoSys.GetAppDir + bFilename), False);
2260             end;
2261         except
2262         end;
2263         SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
2264         finally
2265                 SaveStringList.Free;
2266         end;
2267 end;
2268 // *************************************************************************
2269 //! \83u\83\89\83E\83U\83^\83u\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\8eæ\93¾
2270 // *************************************************************************
2271 procedure TGikoDM.GetTabURLs(AStringList: TStringList);
2272 var
2273   rec : TBrowserRecord;
2274   i : Integer;
2275 begin
2276     for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin
2277         try
2278             rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] );
2279             if( rec <> nil) and (rec.Thread <> nil) then
2280                 AStringList.Add( rec.Thread.URL );
2281         except
2282         end;
2283     end;
2284 end;
2285 // *************************************************************************
2286 //! \8ew\92è\82³\82ê\82½URL\82ð\8aJ\82«\81C\90æ\93ª\82Ì\83^\83u\82É\83t\83H\81[\83J\83X\82·\82é
2287 // *************************************************************************
2288 procedure TGikoDM.OpenURLs(AStringList: TStringList);
2289 var
2290     GikoTab                     : TGikoTabAppend;
2291     i, bound : Integer;
2292         item        : TThreadItem;
2293 begin
2294     if (AStringList <> nil) then begin
2295         GikoTab := GikoSys.Setting.BrowserTabAppend;
2296         try
2297             bound    := AStringList.Count - 1;
2298             if bound > -1 then begin
2299                 GikoSys.Setting.BrowserTabAppend := gtaLast;
2300                 for i := 0 to bound do begin
2301                     item := BBSsFindThreadFromURL( AStringList[ i ] );
2302                     if item <> nil then
2303                         GikoForm.InsertBrowserTab( item, false );
2304                 end;
2305                 //\8dÅ\8f\89\82Ì\82P\96\87\82É\90Ý\92è
2306                 if (GikoSys.Setting.URLDisplay) and
2307                     (GikoForm.BrowserTab.Tabs.Count > 0) then begin
2308                                         GikoForm.AddressComboBox.Text :=
2309                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL;
2310                 end;
2311             end;
2312         finally
2313             GikoSys.Setting.BrowserTabAppend := GikoTab;
2314         end;
2315     end;
2316 end;
2317 // *************************************************************************
2318 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
2319 // *************************************************************************
2320 procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2321 const
2322         TABFILE = 'tab.sav';
2323 var
2324         URLs                            : TStringList;
2325         fileName                : string;
2326 begin
2327     URLs := TStringList.Create();
2328         try
2329         fileName := GikoSys.GetAppDir + TABFILE;
2330                 if FileExists(fileName) then begin
2331                     try
2332                                 URLs.LoadFromFile(fileName);
2333                 if (URLs.Count = 0) then begin
2334                     // \8bó\82Ì\83t\83@\83C\83\8b\82Ì\8fê\8d\87\81C\83o\83b\83N\83A\83b\83v\82ð\8dí\8f\9c\82µ\82È\82¢\82½\82ß\82É\8dí\8f\9c
2335                     SysUtils.DeleteFile(fileName);
2336                 end else begin
2337                     OpenURLs(URLs);
2338                 end;
2339                 except
2340                         on EFOpenError do ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
2341             end;
2342         end;
2343         finally
2344         URLs.Free;
2345         end;
2346
2347     if (GikoForm.BrowserTab.Tabs.Count = 0) and
2348         (TabsOpenAction.Tag <> 1) then  begin
2349         ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
2350     end;
2351 end;
2352 // *************************************************************************
2353 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
2354 // *************************************************************************
2355 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2356 var
2357         TmpCursor: TCursor;
2358         msg : String;
2359 begin
2360         if GikoSys.Belib.Connected then begin
2361                 //\83\8d\83O\83A\83E\83g
2362                 GikoSys.Belib.Disconnect;
2363                 BeLogInOutAction.Checked := False;
2364                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmBeLogout), nil, gmiOK);
2365         end else begin
2366                 TmpCursor := GikoForm.ScreenCursor;
2367                 GikoForm.ScreenCursor := crHourGlass;
2368                 try
2369                         GikoSys.Belib.ClientUA := 'gikoNavi/1.00';
2370                         GikoSys.Belib.UserName := GikoSys.Setting.BeUserID;
2371                         GikoSys.Belib.Password := GikoSys.Setting.BePassword;
2372             if GikoSys.Setting.ReadProxy then begin
2373                                 GikoSys.Belib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
2374                                 GikoSys.Belib.ProxyPort := GikoSys.Setting.ReadProxyPort;
2375                         end else begin
2376                 GikoSys.Belib.ProxyAddress := '';
2377                                 GikoSys.Belib.ProxyPort := 0;
2378             end;
2379             if GikoSys.Belib.Connect then begin
2380                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmBeLogin) + GikoSys.Setting.BeUserID, nil, gmiOK);
2381                 BeLogInOutAction.Checked := True;
2382             end else begin
2383                 GikoForm.AddMessageList(GikoSys.Belib.ErrorMsg, nil, gmiNG);
2384                 GikoForm.PlaySound('Error');
2385                 BeLogInOutAction.Checked := False;
2386                         end;
2387                 finally
2388                         GikoForm.ScreenCursor := TmpCursor;
2389                 end;
2390         end;
2391 end;
2392 ////////////////////////////////\83t\83@\83C\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2393 // *************************************************************************
2394 //! \83R\83R\82Ü\82Å\93Ç\82ñ\82¾
2395 // *************************************************************************
2396 procedure TGikoDM.KokomadeActionExecute(Sender: TObject);
2397 var
2398         No: Integer;
2399         ThreadItem: TThreadItem;
2400 begin
2401         No := GikoForm.KokoPopupMenu.Tag;
2402         if No = 0
2403         then Exit;
2404         ThreadItem := GikoForm.KokoPopupThreadItem;
2405         if not Assigned(ThreadItem) then
2406         Exit;
2407         ThreadItem.Kokomade := No;
2408         GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2409         GikoForm.ActiveContent.Repaint := true;
2410         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2411         //INFO 2005/11/19 \88ê\92U\89B\95Á\81A\95K\97v\82È\82çGikoForm\82Ì\95û\82É\83\81\83\\83b\83h\82ð\92Ç\89Á\82·\82é
2412         //Application.ProcessMessages;
2413 end;
2414 // *************************************************************************
2415 //! \91S\95\94\93Ç\82ñ\82¾
2416 // *************************************************************************
2417 procedure TGikoDM.ZenbuActionExecute(Sender: TObject);
2418 var
2419         ThreadItem: TThreadItem;
2420 begin
2421         ThreadItem := GikoForm.GetActiveContent(True);
2422         if ThreadItem = nil then Exit;
2423         ThreadItem.Kokomade := -1;
2424         GikoForm.ActiveContent.Thread.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2425         GikoForm.ActiveContent.Repaint := true;
2426         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2427         //INFO 2005/11/19 \88ê\92U\89B\95Á\81A\95K\97v\82È\82çGikoForm\82Ì\95û\82É\83\81\83\\83b\83h\82ð\92Ç\89Á\82·\82é
2428         //Application.ProcessMessages;
2429 end;
2430 // *************************************************************************
2431 //! \83R\83R\82É\83\8c\83X
2432 // *************************************************************************
2433 procedure TGikoDM.KokoResActionExecute(Sender: TObject);
2434 var
2435         Editor: TEditorForm;
2436         Item: TThreadItem;
2437         Number: Integer;
2438 begin
2439         Number := GikoForm.KokoPopupMenu.Tag;
2440         if Number = 0 then Exit;
2441         Item := GikoForm.KokoPopupThreadItem;
2442         if Item = nil then Exit;
2443
2444         Editor := TEditorForm.Create(GikoForm);
2445         Editor.SetThreadItem(Item);
2446     Editor.SetTextEdit('>>' + IntToStr(Number) + #13#10);
2447         Editor.Show;
2448     Editor.SetFocusEdit;
2449 end;
2450 // *************************************************************************
2451 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2452 // *************************************************************************
2453 procedure TGikoDM.KoreCopyExecute(Sender: TObject);
2454 begin
2455         GikoForm.KonoresCopy(GikoForm.KokoPopupMenu.Tag, true);
2456 end;
2457 // *************************************************************************
2458 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2459 // *************************************************************************
2460 procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject);
2461 const
2462     LIMIT = 20;
2463 var
2464         ThreadItem : TThreadItem;
2465         No : Integer;
2466         AID: string;
2467 begin
2468         No := GikoForm.KokoPopupMenu.Tag;
2469         if No = 0 then Exit;
2470         ThreadItem := GikoForm.KokoPopupThreadItem;
2471         if ThreadItem = nil then Exit;
2472
2473     AID := GikoSys.GetResID(No, ThreadItem);
2474     if not IsNoValidID(AID) then begin
2475         GikoForm.ShowSameIDAncher(AID);
2476     end;
2477 end;
2478 // *************************************************************************
2479 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\92Ê\8fí\81j
2480 // *************************************************************************
2481 procedure TGikoDM.IndividualAbon1ActionExecute(Sender: TObject);
2482 begin
2483         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 1);
2484 end;
2485 // *************************************************************************
2486 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\93§\96¾\81j
2487 // *************************************************************************
2488 procedure TGikoDM.IndividualAbon0ActionExecute(Sender: TObject);
2489 begin
2490         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 0);
2491 end;
2492 // *************************************************************************
2493 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\89ð\8f\9c
2494 // *************************************************************************
2495 procedure TGikoDM.AntiIndividualAbonActionExecute(Sender: TObject);
2496 var
2497         IndividualForm :TIndividualAbonForm;
2498         ThreadItem : TThreadItem;
2499         msg : String;
2500         ReadList                : TStringList;
2501         wordCount               : TWordCount;
2502 begin
2503         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2504         try
2505                 ThreadItem := GikoForm.GetActiveContent(True);
2506                 ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2507                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2508                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2509                                 ReadList                := TStringList.Create;
2510                                 wordCount               := TWordCount.Create;
2511                                 try
2512 {$IFDEF SPAM_FILTER_ENABLED}
2513                                         // \83X\83p\83\80\82ð\89ð\8f\9c
2514                                         ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2515                                         GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
2516                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2517                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2518 {$ENDIF}
2519                                         if IndividualForm.DeleteNG(GikoForm.KokoPopupMenu.Tag) then begin
2520                                                 GikoForm.ActiveContent.Repaint := true;
2521                                                 GikoForm.InsertBrowserTab( ThreadItem, True );
2522                                         end;
2523                                 finally
2524                                         wordCount.Free;
2525                                         ReadList.Free;
2526                                 end;
2527                         end else begin
2528                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2529                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2530                         end;
2531                 end;
2532         finally
2533                 IndividualForm.Release;
2534         end;
2535 end;
2536 // *************************************************************************
2537 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\89ð\8f\9c\83\8c\83X\94Ô\8d\86\8ew\92è\81i\83_\83C\83A\83\8d\83O\95\\8e¦\81j
2538 // *************************************************************************
2539 procedure TGikoDM.AntiIndividualAbonDlgActionExecute(Sender: TObject);
2540 var
2541         IndividualForm :TIndividualAbonForm;
2542         ThreadItem : TThreadItem;
2543         msg : String;
2544         ReadList                : TStringList;
2545         wordCount               : TWordCount;
2546 {$IFDEF SPAM_FILTER_ENABLED}
2547         i : Integer;
2548 {$ENDIF}
2549 begin
2550         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2551         try
2552                 ThreadItem := GikoForm.GetActiveContent(True);
2553                 ThreadItem.ScrollTop := GikoForm.ActiveContent.Browser.OleObject.Document.Body.ScrollTop;
2554                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2555                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2556                                 if (IndividualForm.ShowModal = mrOK) then begin
2557                                         ReadList                := TStringList.Create;
2558                                         wordCount               := TWordCount.Create;
2559                                         try
2560 {$IFDEF SPAM_FILTER_ENABLED}
2561                                                 // \83X\83p\83\80\82ð\89ð\8f\9c
2562                                                 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2563                                                 for i := 0 to IndividualForm.DeleteList.Count - 1 do begin
2564                                                         GikoSys.SpamCountWord( ReadList[ StrToInt(IndividualForm.DeleteList[i]) - 1 ], wordCount );
2565                                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2566                                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2567                                                 end;
2568 {$ENDIF}
2569                                                 if IndividualForm.FRepaint then begin
2570                                                         GikoForm.ActiveContent.Repaint := true;
2571                                                         GikoForm.InsertBrowserTab( ThreadItem, True );
2572                                                 end;
2573                                         finally
2574                                                 wordCount.Free;
2575                                                 ReadList.Free;
2576                                         end;
2577                                 end;
2578                         end else begin
2579                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2580                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2581                         end;
2582                 end;
2583         finally
2584                 IndividualForm.Release;
2585         end;
2586 end;
2587 // *************************************************************************
2588 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\92Ê\8fí
2589 // *************************************************************************
2590 procedure TGikoDM.IndividualAbonID1ActionExecute(Sender: TObject);
2591 begin
2592         GikoForm.IndividualAbonID(1);
2593 end;
2594 // *************************************************************************
2595 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\93§\96¾
2596 // *************************************************************************
2597 procedure TGikoDM.IndividualAbonID0ActionExecute(Sender: TObject);
2598 begin
2599         GikoForm.IndividualAbonID(0);
2600 end;
2601 ////////////////////////////////\83u\83\89\83E\83U\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2602 // *************************************************************************
2603 //! \83M\83R\83i\83r\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2604 // *************************************************************************
2605 procedure TGikoDM.GikoNaviWebPageActionExecute(Sender: TObject);
2606 begin
2607         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GIKONAVI, gbtAuto);
2608 end;
2609 // *************************************************************************
2610 //! \83M\83R\83i\83r(\94ð\93ï\8f\8a\94Å)\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2611 // *************************************************************************
2612 procedure TGikoDM.GikoNaviGoesonWebPageActionExecute(Sender: TObject);
2613 begin
2614         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GIKONAVIGO, gbtAuto);
2615 end;
2616 // *************************************************************************
2617 //! \83\82\83i\83W\83\89\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2618 // *************************************************************************
2619 procedure TGikoDM.MonazillaWebPageActionExecute(Sender: TObject);
2620 begin
2621         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_MONAZILLA, gbtAuto);
2622 end;
2623 // *************************************************************************
2624 //! \82Q\82¿\82á\82ñ\82Ë\82é\83g\83b\83v\83y\81[\83W\82ð\95\\8e¦\82·\82é
2625 // *************************************************************************
2626 procedure TGikoDM.BBS2chWebPageActionExecute(Sender: TObject);
2627 begin
2628         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_2ch, gbtAuto);
2629 end;
2630 // *************************************************************************
2631 //! \83M\83R\83i\83r\82Ì\83t\83H\83\8b\83_\82ð\8aJ\82­
2632 // *************************************************************************
2633 procedure TGikoDM.GikoFolderOpenActionExecute(Sender: TObject);
2634 begin
2635         GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
2636 end;
2637 // *************************************************************************
2638 //! \83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\95\\8e¦\82·\82é
2639 // *************************************************************************
2640 procedure TGikoDM.AboutActionExecute(Sender: TObject);
2641 var
2642         Dlg: TAboutDialog;
2643 begin
2644         Dlg := TAboutDialog.Create(GikoForm);
2645         try
2646                 Dlg.ShowModal;
2647         finally
2648                 Dlg.Release;
2649         end;
2650 end;
2651 // *************************************************************************
2652 //! \83M\83R\83i\83r\82Ì\83w\83\8b\83v\82ð\95\\8e¦\82·\82é
2653 // *************************************************************************
2654 procedure TGikoDM.GikoHelpActionExecute(Sender: TObject);
2655 var
2656         FileName: string;
2657 begin
2658         FileName := GikoSys.GetAppDir + 'batahlp.chm';
2659         if not FileExists(FileName) then begin
2660                 MsgBox(
2661                         GikoForm.Handle,
2662                         '\83w\83\8b\83v\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ\82Å\82µ\82½' + #13#10 +
2663                         '\83w\83\8b\83v\83t\83@\83C\83\8b\82ð\83M\83R\83i\83r\82Ì\83t\83H\83\8b\83_\82É\92u\82¢\82Ä\82­\82¾\82³\82¢' + #13#10 +
2664                         '\83w\83\8b\83v\82Í\83M\83R\83i\83r\82Ì\83T\83C\83g\82É\92u\82¢\82Ä\82 \82è\82Ü\82·',
2665                         MSG_ERROR,
2666                         MB_ICONSTOP);
2667                 Exit;
2668         end;
2669         ShellExecute(GikoForm.Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
2670 end;
2671 // *************************************************************************
2672 //! \83M\83R\83i\83rWiki\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2673 // *************************************************************************
2674 procedure TGikoDM.WikiFAQWebPageActionExecute(Sender: TObject);
2675 begin
2676         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_Wiki, gbtAuto);
2677 end;
2678 // *************************************************************************
2679 //! \83M\83R\83i\83r(\94ð\93ï\8f\8a\94Å)Wiki\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2680 // *************************************************************************
2681 procedure TGikoDM.GoWikiFAQWebPageActionExecute(Sender: TObject);
2682 begin
2683         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GoWiki, gbtAuto);
2684 end;
2685 ////////////////////////////////\83w\83\8b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2686 // *************************************************************************
2687 //! \83\8a\83X\83g\94Ô\8d\86\95\\8e¦\82ð\95Ï\8dX\82·\82é
2688 // *************************************************************************
2689 procedure TGikoDM.ListNumberVisibleActionExecute(Sender: TObject);
2690 begin
2691         GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
2692         GikoForm.ListView.Refresh;
2693 end;
2694 // *************************************************************************
2695 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82é
2696 // *************************************************************************
2697 procedure TGikoDM.UpFolderActionExecute(Sender: TObject);
2698 begin
2699         if GikoForm.GetActiveList is TBoard then begin
2700                 if TBoard(GikoForm.GetActiveList).ParentCategory <> nil then
2701                         GikoForm.SelectTreeNode(TBoard(GikoForm.GetActiveList).ParentCategory, True);
2702         end else if GikoForm.GetActiveList is TCategory then begin
2703                 GikoForm.SelectTreeNode(TCategory(GikoForm.GetActiveList).ParenTBBS, True);
2704         end;
2705 end;
2706 // *************************************************************************
2707 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82éUpDate\83C\83x\83\93\83g
2708 // *************************************************************************
2709 procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
2710 begin
2711         UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS) and
2712         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
2713 end;
2714 // *************************************************************************
2715 //! \95\\8e¦\81@\95\\8e¦\83\8a\83X\83g\82Ì\83\82\81[\83h\95Ï\8dX
2716 // *************************************************************************
2717 procedure TGikoDM.IconStyleExecute(Sender: TObject);
2718 begin
2719         case GikoForm.ListView.ViewStyle of
2720                 vsIcon: SmallIconAction.Execute;
2721                 vsSmallIcon: ListIconAction.Execute;
2722                 vsList: DetailIconAction.Execute;
2723                 vsReport: LargeIconAction.Execute;
2724         end;
2725 end;
2726 // *************************************************************************
2727 //! SelectComboBox\82Ì\92l\82ð\83N\83\8a\83A\82·\82é
2728 // *************************************************************************
2729 procedure TGikoDM.ClearSelectComboBox;
2730 begin
2731         if GikoForm.SelectComboBoxPanel.Visible then begin
2732                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2733                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2734                 GikoForm.ListView.SetFocus;
2735         end;
2736 end;
2737 // *************************************************************************
2738 //! \83X\83\8c\83b\83h\82ð\82·\82×\82Ä\95\\8e¦\82·\82é
2739 // *************************************************************************
2740 procedure TGikoDM.AllItemActionExecute(Sender: TObject);
2741 begin
2742         try
2743                 if GikoForm.ViewType <> gvtAll then
2744                         GikoForm.SetListViewType(gvtAll);
2745                 GikoSys.Setting.ThreadRange := gtrAll;
2746                 AllItemAction.Checked           := True;
2747                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2748                 GikoForm.ModifySelectList;
2749                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2750                 ClearSelectComboBox;
2751         except
2752         end;
2753 end;
2754 // *************************************************************************
2755 //! \83\8d\83O\97L\82è\83X\83\8c\83b\83h\82Ì\82Ý\82ð\95\\8e¦\82·\82é
2756 // *************************************************************************
2757 procedure TGikoDM.LogItemActionExecute(Sender: TObject);
2758 begin
2759         try
2760                 if GikoForm.ViewType <> gvtLog then
2761                         GikoForm.SetListViewType(gvtLog);
2762                 GikoSys.Setting.ThreadRange     := gtrLog;
2763                 LogItemAction.Checked := True;
2764                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2765                 GikoForm.ModifySelectList;
2766                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2767                 ClearSelectComboBox;
2768         except
2769         end;
2770 end;
2771 // *************************************************************************
2772 //! \90V\92\85\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2773 // *************************************************************************
2774 procedure TGikoDM.NewItemActionExecute(Sender: TObject);
2775 begin
2776         try
2777
2778                 if GikoForm.ViewType <> gvtNew then
2779                         GikoForm.SetListViewType(gvtNew);
2780                 GikoSys.Setting.ThreadRange     := gtrNew;
2781                 NewItemAction.Checked := True;
2782                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2783                 GikoForm.ModifySelectList;
2784                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2785                 ClearSelectComboBox;
2786         except
2787         end;
2788 end;
2789 // *************************************************************************
2790 //! DAT\97\8e\82¿\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2791 // *************************************************************************
2792 procedure TGikoDM.ArchiveItemActionExecute(Sender: TObject);
2793 begin
2794         try
2795                 if GikoForm.ViewType <> gvtArch then
2796                         GikoForm.SetListViewType(gvtArch);
2797                 GikoSys.Setting.ThreadRange     := gtrArch;
2798                 ArchiveItemAction.Checked := True;
2799                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2800                 GikoForm.ModifySelectList;
2801                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2802                 ClearSelectComboBox;
2803         except
2804         end;
2805 end;
2806 // *************************************************************************
2807 //! \90\91\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2808 // *************************************************************************
2809 procedure TGikoDM.LiveItemActionExecute(Sender: TObject);
2810 begin
2811         try
2812                 if GikoForm.ViewType <> gvtLive then
2813                         GikoForm.SetListViewType(gvtLive);
2814                 GikoSys.Setting.ThreadRange     := gtrLive;
2815                 LiveItemAction.Checked := True;
2816                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2817                 GikoForm.ModifySelectList;
2818                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2819                 ClearSelectComboBox;
2820         except
2821         end;
2822 end;
2823
2824 // *************************************************************************
2825 //! \83X\83\8c\83b\83h\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
2826 // *************************************************************************
2827 procedure TGikoDM.ThreadRangeActionExecute(Sender: TObject);
2828 begin
2829         case GikoSys.Setting.ThreadRange of
2830         gtrAll: AllItemAction.Execute;
2831         gtrLog: LogItemAction.Execute;
2832         gtrNew: NewItemAction.Execute;
2833         gtrArch: ArchiveItemAction.Execute;
2834         gtrLive: LiveItemAction.Execute;
2835         end;
2836 end;
2837 // *************************************************************************
2838 //! \83X\83\8c\83b\83h\8di\8d\9e\82Ý\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
2839 // *************************************************************************
2840 procedure TGikoDM.SelectItemActionExecute(Sender: TObject);
2841 var
2842         idx: Integer;
2843         Dlg: TListSelectDialog;
2844 begin
2845         try
2846                 if GikoForm.SelectComboBoxPanel.Visible then begin
2847                         if GikoForm.SelectComboBoxPanel.Left + GikoForm.SelectComboBoxPanel.Width < GikoForm.ListToolBar.Width then begin
2848                                 // SelectComboBox \82ª\82 \82é\8fê\8d\87\82Í\83t\83H\81[\83J\83X\82ð\88Ú\82·
2849                                 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
2850                                         if GikoSys.Setting.ListWidthState = glsMax then
2851                                                 BrowserMinAction.Execute;
2852                                 end else begin
2853                                         if GikoSys.Setting.ListHeightState = glsMax then
2854                                                 BrowserMinAction.Execute;
2855                                 end;
2856                                 GikoForm.SelectComboBox.SetFocus;
2857                                 exit;
2858                         end;
2859                 end;
2860         except
2861         end;
2862
2863         if GikoForm.SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
2864                 GikoForm.SelectComboBox.Text := '';
2865                 GikoForm.SelectComboBox.Color := clWindow;
2866         end;
2867
2868         AllItemAction.Checked := False;
2869         LogItemAction.Checked := False;
2870         NewItemAction.Checked := False;
2871         //SelectItemAction.Checked := True;
2872         GikoForm.ModifySelectList;
2873         Dlg := TListSelectDialog.Create(GikoForm);
2874         try
2875                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
2876                 Dlg.SelectComboBox.Text := GikoForm.SelectComboBox.Text;
2877                 Dlg.ShowModal;
2878                 if Dlg.ModalResult = mrCancel then begin
2879                         if Length( GikoForm.SelectComboBox.Text ) = 0 then begin
2880                                 AllItemAction.Checked := True;
2881                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2882                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2883                         end;
2884
2885                         if GikoForm.GetActiveList is TBoard then
2886                                 GikoForm.SetListViewType(gvtUser, TBoard(GikoForm.GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
2887                 end else begin
2888                         idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
2889                         if idx <> -1 then
2890                                 GikoSys.Setting.SelectTextList.Delete(idx);
2891                         GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
2892                         while Dlg.SelectComboBox.Items.Count > 100 do begin
2893                                 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
2894                         end;
2895
2896                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
2897                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2898                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2899                         end else begin
2900                                 GikoForm.SelectComboBox.Text := Dlg.SelectComboBox.Text;
2901                                 GikoForm.SelectComboBox.Color := clWindow;
2902                         end;
2903                         GikoForm.SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
2904                 end;
2905         finally
2906                 Dlg.Release;
2907         end;
2908 end;
2909 // *************************************************************************
2910 //! \90V\83X\83\8c\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
2911 // *************************************************************************
2912 procedure TGikoDM.ThreadEditorActionExecute(Sender: TObject);
2913 var
2914         Editor: TEditorForm;
2915 begin
2916         if not (GikoForm.GetActiveList is TBoard) then
2917                 Exit;
2918         Editor := TEditorForm.Create(GikoForm);
2919         Editor.SetBoard(TBoard(GikoForm.GetActiveList));
2920         Editor.Show;
2921     Editor.SetFocusEdit;
2922 end;
2923 // *************************************************************************
2924 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
2925 // *************************************************************************
2926 procedure TGikoDM.BoardIEActionExecute(Sender: TObject);
2927 var
2928         URL: string;
2929 begin
2930         if GikoForm.GetActiveList is TBoard then begin
2931                 URL := TBoard(GikoForm.GetActiveList).URL;
2932                 GikoSys.OpenBrowser(URL, gbtAuto);
2933         end;
2934 end;
2935 // *************************************************************************
2936 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
2937 // *************************************************************************
2938 procedure TGikoDM.SelectItemURLCopyActionExecute(Sender: TObject);
2939 var
2940         List: TList;
2941         i: Integer;
2942         s: string;
2943 begin
2944         s := '';
2945         List := TList.Create;
2946         try
2947                 GikoForm.SelectListItem(List);
2948                 for i := 0 to List.Count - 1 do begin
2949                         if TObject(List[i]) is TBoard then
2950                                 s := s + TBoard(List[i]).URL + #13#10
2951                         else if TObject(List[i]) is TThreadItem then
2952                                 s := s + TThreadItem(List[i]).URL + #13#10;
2953                 end;
2954                 if s <> '' then
2955                         Clipboard.AsText := s;
2956         finally
2957                 List.Free;
2958         end;
2959 end;
2960 // *************************************************************************
2961 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82éUpdate\83C\83x\83\93\83g
2962 // *************************************************************************
2963 procedure TGikoDM.SelectItemURLCopyActionUpdate(Sender: TObject);
2964 begin
2965         if ((GikoForm.GetActiveList is TBoard) or
2966                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2967                 TAction(Sender).Enabled := True
2968         else
2969                 TAction(Sender).Enabled := False;
2970 end;
2971 // *************************************************************************
2972 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
2973 // *************************************************************************
2974 procedure TGikoDM.SelectItemNameCopyActionExecute(Sender: TObject);
2975 var
2976         List: TList;
2977         i: Integer;
2978         s: string;
2979 begin
2980         s := '';
2981         List := TList.Create;
2982         try
2983                 GikoForm.SelectListItem(List);
2984                 for i := 0 to List.Count - 1 do begin
2985             if TObject(List[i]) is TCategory then
2986                 s := s + TCategory(List[i]).Title + #13#10
2987                         else if TObject(List[i]) is TBoard then
2988                                 s := s + TBoard(List[i]).Title + #13#10
2989                         else if TObject(List[i]) is TThreadItem then
2990                                 s := s + TThreadItem(List[i]).Title + #13#10;
2991                 end;
2992                 if s <> '' then
2993                         Clipboard.AsText := s;
2994         finally
2995                 List.Free;
2996         end;
2997 end;
2998 // *************************************************************************
2999 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82éUpdate\83C\83x\83\93\83g
3000 // *************************************************************************
3001 procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject);
3002 begin
3003         if ((GikoForm.GetActiveList is TBBS) or
3004         (GikoForm.GetActiveList is TBoard) or
3005                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
3006                 TAction(Sender).Enabled := True
3007         else
3008                 TAction(Sender).Enabled := False;
3009 end;
3010 // *************************************************************************
3011 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
3012 // *************************************************************************
3013 procedure TGikoDM.SelectItemNameURLCopyActionExecute(Sender: TObject);
3014 var
3015         List: TList;
3016         i: Integer;
3017         s: string;
3018 begin
3019         s := '';
3020         List := TList.Create;
3021         try
3022                 GikoForm.SelectListItem(List);
3023                 for i := 0 to List.Count - 1 do begin
3024                         if TObject(List[i]) is TBoard then
3025                                 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
3026                         else if TObject(List[i]) is TThreadItem then
3027                                 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
3028                 end;
3029                 if s <> '' then
3030                         Clipboard.AsText := s;
3031         finally
3032                 List.Free;
3033         end;
3034 end;
3035 // *************************************************************************
3036 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
3037 // *************************************************************************
3038 procedure TGikoDM.SelectListReloadActionExecute(Sender: TObject);
3039 var
3040         i: Integer;
3041         List: TList;
3042         msg: string;
3043         shiftDown: Boolean;
3044 begin
3045         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
3046     GikoForm.ActiveListColumnSave;
3047         if GikoForm.GetActiveList is TCategory then begin
3048                 List := TList.Create;
3049                 try
3050                         GikoForm.SelectListItem(List);
3051                         if List.Count > 5 then begin
3052                                 msg := '5\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
3053                                                  + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
3054                                 MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
3055                                 Exit;
3056                         end;
3057                         for i := 0 to List.Count - 1 do begin
3058                                 if TObject(List[i]) is TBoard then
3059                                         GikoForm.DownloadList(TBoard(List[i]), shiftDown);
3060                         end;
3061                 finally
3062                         List.Free;
3063                 end;
3064         end else if GikoForm.GetActiveList is TBoard then begin
3065                 GikoForm.DownloadList(TBoard(GikoForm.GetActiveList), shiftDown);
3066         end;
3067 end;
3068 // *************************************************************************
3069 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82éUpdate\83C\83x\83\93\83g
3070 // *************************************************************************
3071 procedure TGikoDM.SelectListReloadActionUpdate(Sender: TObject);
3072 begin
3073         if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3074                 TAction(Sender).Enabled := True
3075         else if GikoForm.GetActiveList is TBoard then begin
3076                 TAction(Sender).Enabled :=
3077             (GikoForm.GetActiveList <> BoardGroup.SpecialBoard);
3078         end else
3079                 TAction(Sender).Enabled := False;
3080 end;
3081 // *************************************************************************
3082 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
3083 // *************************************************************************
3084 procedure TGikoDM.SelectThreadReloadActionExecute(Sender: TObject);
3085 var
3086         List: TList;
3087         i: Integer;
3088         msg: string;
3089         shiftDown: Boolean;
3090 begin
3091         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
3092         List := TList.Create;
3093         try
3094                 GikoForm.SelectListItem(List);
3095                 if List.Count > 10 then begin
3096                         msg := '10\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
3097                                          + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
3098                         MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
3099                         Exit;
3100                 end;
3101                 for i := 0 to List.Count - 1 do begin
3102                         if TObject(List[i]) is TThreadItem then
3103                                 GikoForm.DownloadContent(TThreadItem(List[i]), shiftDown);
3104                 end;
3105         finally
3106                 List.Free;
3107         end;
3108 end;
3109 // *************************************************************************
3110 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82éUpdate\83C\83x\83\93\83g
3111 // *************************************************************************
3112 procedure TGikoDM.SelectThreadReloadActionUpdate(Sender: TObject);
3113 begin
3114         TAction(Sender).Enabled :=
3115                 (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0);
3116 end;
3117 // *************************************************************************
3118 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñ
3119 // *************************************************************************
3120 procedure TGikoDM.SelectReservActionExecute(Sender: TObject);
3121 begin
3122         //INFO 2005/11/19 \83_\83~\81[\81H\81@by \82à\82\82ã
3123         // \82±\82Ì\83R\83\81\83\93\83g\8dí\8f\9c\82µ\82Ä\82Í\91Ê\96Ú
3124 end;
3125 // *************************************************************************
3126 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñUpdate\83C\83x\83\93\83g
3127 // *************************************************************************
3128 procedure TGikoDM.SelectReservActionUpdate(Sender: TObject);
3129 var
3130         i: Integer;
3131         List: TList;
3132 begin
3133         if (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0) then begin
3134                 List := TList.Create;
3135                 try
3136                         GikoForm.SelectListItem(List);
3137                         for i := 0 to List.Count - 1 do begin
3138                                 if TObject(List[i]) is TThreadItem then begin
3139                                         if TThreadItem(List[i]).IsLogFile then begin
3140                                                 SelectReservAction.Enabled := True;
3141                                                 Exit;
3142                                         end;
3143                                 end;
3144                         end;
3145                         SelectReservAction.Enabled := False;
3146                 finally
3147                         List.Free;
3148                 end;
3149         end else if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3150                 SelectReservAction.Enabled := True
3151         else
3152                 SelectReservAction.Enabled := False;
3153 end;
3154 // *************************************************************************
3155 //! \91I\91ð\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82É\90V\82µ\82¢\96¼\91O\82Å\8f\84\89ñ\97\\96ñ
3156 // *************************************************************************
3157 procedure TGikoDM.SelectNewRoundNameExecute(Sender: TObject);
3158 var
3159         s: string;
3160         Dlg: TRoundNameDialog;
3161                 cnt: Integer;
3162
3163 begin
3164         //\8cÄ\82Ñ\8fo\82µ\8c³\82ª\81ATAction\82ÅListView\82É\91I\91ð\82ª\82¢\82È\82¯\82ê\82Î\81AEXIT\82·\82é
3165         if (Sender is TAction) and (GikoForm.ListView.Selected = nil) then
3166                 Exit;
3167
3168         //\93o\98^\8fã\8cÀ\83`\83F\83b\83N
3169         cnt := RoundList.Count[grtBoard];
3170         cnt := cnt + RoundList.Count[grtItem];
3171         if cnt > 500 then begin
3172                         MsgBox(GikoForm.Handle, '\8f\84\89ñ\82Í500\88È\8fã\93o\98^\82Å\82«\82Ü\82¹\82ñ', MSG_ERROR, MB_OK or MB_ICONSTOP);
3173                         Exit;
3174         end;
3175
3176         Dlg := TRoundNameDialog.Create(GikoForm);
3177         try
3178                 Dlg.ShowModal;
3179                 if Dlg.ModalResult <> mrCancel then begin
3180                         s := Trim(Dlg.RoundNameEdit.Text);
3181                         if (Sender is TMenuItem) then begin
3182                                 GikoForm.SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
3183                         end else if (Sender is TAction) then begin
3184                                 if (GikoForm.ListView.Selected <> nil) then begin
3185                                         if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3186                                                 GikoForm.SetSelectItemRound(True, s,
3187                                                         TThreadItem(GikoForm.ListView.Selected.Data).Title);
3188                                         end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3189                                                 GikoForm.SetSelectItemRound(True, s,
3190                                                         TBoard(GikoForm.ListView.Selected.Data).Title);
3191                                         end;
3192                                 end;
3193                         end;
3194                         GikoForm.ListView.Refresh;
3195                 end;
3196         finally
3197                 Dlg.Free;
3198         end;
3199 end;
3200 // *************************************************************************
3201 //! \91I\91ð\82³\82ê\82Ä\82¢\83X\83\8c\83b\83h\82Ì\8f\84\89ñ\82ð\8dí\8f\9c\82·\82é
3202 // *************************************************************************
3203 procedure TGikoDM.SelectDeleteRoundExecute(Sender: TObject);
3204 var
3205         s : String;
3206 begin
3207         if (Sender is TMenuItem) then begin
3208                 try
3209                         GikoForm.SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
3210                 except
3211                 end;
3212         end else if (Sender is TAction) then begin
3213                 try
3214                         if GikoForm.ListView.Selected <> nil then begin
3215                                 if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3216                                         s := TThreadItem(GikoForm.ListView.Selected.Data).Title;
3217                                 end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3218                                         s := TBoard(GikoForm.ListView.Selected.Data).Title;
3219                                 end;
3220                                 GikoForm.SetSelectItemRound(False, '', s);
3221
3222                         end;
3223                 except
3224                 end;
3225         end;
3226         GikoForm.ListView.Refresh;
3227 end;
3228 // *************************************************************************
3229 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
3230 // *************************************************************************
3231 procedure TGikoDM.BoardFavoriteAddActionExecute(Sender: TObject);
3232 begin
3233         if TObject(GikoForm.ListView.Selected.Data) is TBoard then
3234                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
3235 end;
3236 // *************************************************************************
3237 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82éUpdate\83C\83x\83\93\83g
3238 // *************************************************************************
3239 procedure TGikoDM.BoardFavoriteAddActionUpdate(Sender: TObject);
3240 begin
3241         BoardFavoriteAddAction.Enabled :=
3242                 (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0);
3243 end;
3244 // *************************************************************************
3245 //! Explorer\82ÅLog\83t\83H\83\8b\83_\82ð\8aJ\82­
3246 // *************************************************************************
3247 procedure TGikoDM.LogFolderOpenActionExecute(Sender: TObject);
3248 var
3249         List: TList;
3250 begin
3251         if ((GikoSys.Setting.ListOrientation = gloVertical) and
3252                 (GikoSys.Setting.ListHeightState = glsMax)) or
3253                 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
3254                 (GikoSys.Setting.ListWidthState = glsMax))      then begin
3255                 if(GikoForm.GetActiveContent <> nil) then begin
3256                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GikoForm.GetActiveContent.FilePath) + '"');
3257                 end;
3258         end else if GikoForm.GetActiveList is TCategory then begin
3259                 List := TList.Create;
3260                 try
3261                         GikoForm.SelectListItem(List);
3262                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
3263                 finally
3264                         List.Free;
3265                 end;
3266         end else if GikoForm.GetActiveList is TBoard then begin
3267                 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GikoForm.GetActiveList).FilePath) + '"');
3268         end;
3269
3270 end;
3271 // *************************************************************************
3272 //! ActiveList\82ªTBoard\82©TCategory\82Å\83X\83\8c\88ê\97\97\82Å\82P\82Â\88È\8fã\91I\91ð\82µ\82Ä\82¢\82é\82Æ\97L\8cø\82É\82È\82éActionde\8b¤\92Ê
3273 // *************************************************************************
3274 procedure TGikoDM.LogFolderOpenActionUpdate(Sender: TObject);
3275 begin
3276         if (((GikoForm.GetActiveList is TBoard) and
3277         (GikoForm.GetActiveList <> BoardGroup.SpecialBoard))
3278         or (GikoForm.GetActiveList is TCategory))
3279                 and (GikoForm.ListView.SelCount > 0) then
3280                 TAction(Sender).Enabled := True
3281         else
3282                 TAction(Sender).Enabled := False;
3283 end;
3284 // *************************************************************************
3285 //! Header.txt\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
3286 // *************************************************************************
3287 procedure TGikoDM.BrowsBoradHeadActionExecute(Sender: TObject);
3288 var
3289         RefURL, URL : string;
3290         List : TList;
3291 begin
3292         RefURL := '';
3293         if GikoForm.GetActiveList is TCategory then begin
3294                 List := TList.Create;
3295                 try
3296                         GikoForm.SelectListItem(List);
3297                         RefURL := TBoard(List[0]).URL;
3298                 finally
3299                         List.Free;
3300                 end;
3301         end else if GikoForm.GetActiveList is TBoard then begin
3302                 RefURL := TBoard(GikoForm.GetActiveList).URL
3303         end;
3304         if RefURL <> '' then begin
3305                 if RefURL[Length(RefURL)] <> '/' then
3306                         URL     := RefURL + '/' + 'head.txt'
3307                 else
3308                         URL     := RefURL + 'head.txt';
3309
3310                 GikoForm.MoveToURL(URL);
3311         end else begin
3312                 ShowMessage('\94Â\82ð\93Á\92è\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B');
3313         end;
3314
3315 end;
3316 // *************************************************************************
3317 //! \83X\83\8c\88ê\97\97\82Ì\95\\8e¦\82µ\82Ä\82¢\82é\93à\97e\82É\82µ\82½\82ª\82Á\82Ä\81A\83\\81[\83g\83J\83\89\83\80\82Ì\88Ê\92u\82Æ\95û\8cü\82ð\8eæ\93¾\82·\82é
3318 // *************************************************************************
3319 function TGikoDM.GetSortProperties(List: TObject;
3320  var vSortOrder: Boolean): Boolean;
3321 begin
3322         Result := True;
3323         if (List <> nil) then begin
3324                 if (List is TBBS) then begin
3325                         vSortOrder := GikoSys.Setting.BBSSortOrder;
3326                 end else if (List is TCategory) then begin
3327                         vSortOrder := GikoSys.Setting.CategorySortOrder;
3328                 end else if (List is TBoard) then begin
3329                         vSortOrder := GikoSys.Setting.BoardSortOrder;
3330                 end else begin
3331                         Result := False;
3332                 end;
3333         end else begin
3334                 Result := False;
3335         end;
3336 end;
3337 // *************************************************************************
3338 //! \8c»\8dÝ\82Ì\83J\83\89\83\80\82ð\83\\81[\83g\82·\82é
3339 // *************************************************************************
3340 procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject);
3341 var
3342         i       : Integer;
3343         so : boolean;
3344 begin
3345         if GetSortProperties(GikoForm.GetActiveList, so) then begin
3346                 for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3347                         if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3348                                 (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3349                                 so := not so;
3350                                 TListViewUtils.ListViewSort(nil, GikoForm.ListView,
3351                                          GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked,
3352                                          so);
3353                                 break;
3354                         end;
3355                 end;
3356         end;
3357 end;
3358 // *************************************************************************
3359 //! \89E\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3360 // *************************************************************************
3361 procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject);
3362 var
3363         i, id   : Integer;
3364 begin
3365         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3366                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3367                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3368                         id := i + 1;
3369                         if id > GikoForm.ListView.Columns.Count - 1 then
3370                                 id := 0;
3371                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3372                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3373                                 id = 0);
3374                         break;
3375                 end;
3376         end;
3377 end;
3378 // *************************************************************************
3379 //! \8d\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3380 // *************************************************************************
3381 procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject);
3382 var
3383         i, id   : Integer;
3384 begin
3385         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3386                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3387                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3388                         id := i - 1;
3389                         if id < 0 then
3390                                 id := GikoForm.ListView.Columns.Count - 1;
3391                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3392                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3393                                 id = 0);
3394                         break;
3395                 end;
3396         end;
3397 end;
3398 ////////////////////////////////\94Â\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3399 // *************************************************************************
3400 //! \95W\8f\80\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3401 // *************************************************************************
3402 procedure TGikoDM.StdToolBarVisibleActionExecute(Sender: TObject);
3403 var
3404         CoolBand: TCoolBand;
3405 begin
3406         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.StdToolBar);
3407         if CoolBand = nil then
3408                 Exit;
3409         GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
3410         CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
3411         GikoForm.StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
3412 end;
3413 // *************************************************************************
3414 //! \83A\83h\83\8c\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3415 // *************************************************************************
3416 procedure TGikoDM.AddressBarVisibleActionExecute(Sender: TObject);
3417 var
3418         CoolBand: TCoolBand;
3419 begin
3420         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.AddressToolBar);
3421         if CoolBand = nil then
3422                 Exit;
3423         GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
3424         CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
3425         GikoForm.AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
3426 end;
3427 // *************************************************************************
3428 //! \83\8a\83\93\83N\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3429 // *************************************************************************
3430 procedure TGikoDM.LinkBarVisibleActionExecute(Sender: TObject);
3431 var
3432         CoolBand: TCoolBand;
3433 begin
3434         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.LinkToolBar);
3435         if CoolBand = nil then
3436                 Exit;
3437         GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
3438         CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
3439         GikoForm.LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
3440 end;
3441 // *************************************************************************
3442 //! \83\8a\83X\83g\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3443 // *************************************************************************
3444 procedure TGikoDM.ListToolBarVisibleActionExecute(Sender: TObject);
3445 var
3446         CoolBand: TCoolBand;
3447 begin
3448         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListToolBar);
3449         if CoolBand = nil then
3450                 Exit;
3451         CoolBand.Visible := ListToolBarVisibleAction.Checked;
3452         GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
3453 end;
3454 // *************************************************************************
3455 //! \83\8a\83X\83g\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3456 // *************************************************************************
3457 procedure TGikoDM.ListNameBarVisibleActionExecute(Sender: TObject);
3458 var
3459         CoolBand: TCoolBand;
3460 begin
3461         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListNameToolBar);
3462         if CoolBand = nil then
3463                 Exit;
3464         CoolBand.Visible := ListNameBarVisibleAction.Checked;
3465         GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
3466 end;
3467 // *************************************************************************
3468 //! \83u\83\89\83E\83U\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3469 // *************************************************************************
3470 procedure TGikoDM.BrowserToolBarVisibleActionExecute(Sender: TObject);
3471 var
3472         CoolBand: TCoolBand;
3473 begin
3474         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserToolBar);
3475         if CoolBand = nil then
3476                 Exit;
3477         CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
3478         GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
3479 end;
3480 // *************************************************************************
3481 //! \83u\83\89\83E\83U\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3482 // *************************************************************************
3483 procedure TGikoDM.BrowserNameBarVisibleActionExecute(Sender: TObject);
3484 var
3485         CoolBand: TCoolBand;
3486 begin
3487         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserNameToolBar);
3488         if CoolBand = nil then
3489                 Exit;
3490         CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
3491         GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
3492 end;
3493 // *************************************************************************
3494 //! \83\81\83b\83Z\81[\83W\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3495 // *************************************************************************
3496 procedure TGikoDM.MsgBarVisibleActionExecute(Sender: TObject);
3497 begin
3498         GikoForm.MessageSplitter.Visible := MsgBarVisibleAction.Checked;
3499         GikoForm.MessagePanel.Top :=
3500                 GikoForm.MessageSplitter.Top + GikoForm.MessageSplitter.Height;
3501         GikoForm.MessageSplitter.Top := GikoForm.MessagePanel.Top + 1;
3502         GikoForm.MessagePanel.Visible := MsgBarVisibleAction.Checked;
3503         GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
3504 end;
3505 // *************************************************************************
3506 //! \83\81\83b\83Z\81[\83W\83o\81[\82ð\95Â\82\82é
3507 // *************************************************************************
3508 procedure TGikoDM.MsgBarCloseActionExecute(Sender: TObject);
3509 begin
3510         MsgBarVisibleAction.Execute;
3511 end;
3512 // *************************************************************************
3513 //! \83X\83e\81[\83^\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3514 // *************************************************************************
3515 procedure TGikoDM.StatusBarVisibleActionExecute(Sender: TObject);
3516 begin
3517         GikoForm.StatusBar.Visible := StatusBarVisibleAction.Checked;
3518         GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
3519 end;
3520 // *************************************************************************
3521 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\8cf\8e¦\94Â\82É\82·\82é
3522 // *************************************************************************
3523 procedure TGikoDM.CabinetBBSActionExecute(Sender: TObject);
3524 begin
3525
3526         if GikoForm.CabinetPanel.Visible then begin
3527                 if GikoForm.TreeType = gtt2ch then begin
3528                         GikoForm.CabinetVisible( False );
3529
3530                         CabinetBBSAction.Checked := False;
3531                 end else begin
3532                         CabinetBBSAction.Checked := True;
3533                 end;
3534         end else begin
3535                 GikoForm.CabinetVisible( True );
3536                 CabinetBBSAction.Checked := True;
3537         end;
3538
3539         if GikoForm.ActiveBBS = nil then
3540                 GikoForm.ShowBBSTree( BBSs[ 0 ] )
3541         else
3542                 GikoForm.ShowBBSTree( GikoForm.ActiveBBS );
3543
3544 end;
3545 // *************************************************************************
3546 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\97\9a\97ð\83\8a\83X\83g\82É\82·\82é
3547 // *************************************************************************
3548 procedure TGikoDM.CabinetHistoryActionExecute(Sender: TObject);
3549 begin
3550         GikoForm.ShowHistoryTree;
3551 end;
3552 // *************************************************************************
3553 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\82¨\8bC\82É\93ü\82è\83\8a\83X\83g\82É\82·\82é
3554 // *************************************************************************
3555 procedure TGikoDM.CabinetFavoriteActionExecute(Sender: TObject);
3556 var
3557         i, b : Integer;
3558         item : TMenuItem;
3559 begin
3560
3561         if GikoForm.CabinetPanel.Visible then begin
3562                 if GikoForm.TreeType = gttFavorite then begin
3563                         GikoForm.CabinetVisible( False );
3564                         CabinetFavoriteAction.Checked := False;
3565                 end else begin
3566                         CabinetFavoriteAction.Checked := True;
3567                 end;
3568         end else begin
3569                 GikoForm.CabinetVisible( True );
3570                 CabinetFavoriteAction.Checked := True;
3571         end;
3572
3573         // BBS...BBS, History, Favorite
3574         GikoSys.Setting.CabinetIndex := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3575
3576         b := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3577         for i := 0 to b do begin
3578                 item := GikoForm.CabinetSelectPopupMenu.Items[ i ];
3579                 if item is TBBSMenuItem then begin
3580                         item.Checked := False;
3581                         // CabinetMenu \82Í CabinetSelectPopupMenu \82Æ\93¯\82\82Æ\8c\88\82ß\82¤\82¿\82µ\82¿\82á\82¤
3582                         GikoForm.CabinetMenu.Items[ i ].Checked := False;
3583                 end;
3584         end;
3585
3586         // \83L\83\83\83r\83l\83b\83g\83c\81[\83\8b\83o\81[\8by\82Ñ\83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\90Ø\91Ö
3587         GikoForm.HistoryToolBar.Hide;
3588         GikoForm.FavoriteToolBar.Show;
3589         GikoForm.TreeView.Visible := False;
3590         GikoForm.FavoriteTreeView.Visible := True;
3591
3592         GikoForm.CabinetSelectToolButton.Caption := '\82¨\8bC\82É\93ü\82è';
3593         GikoForm.TreeType := gttFavorite;
3594
3595         // \83\81\83j\83\85\81[\8by\82Ñ\83{\83^\83\93\82Ì\83`\83F\83b\83N\82ð\90Ý\92è
3596         CabinetBBSAction.Checked := False;
3597         CabinetHistoryAction.Checked := False;
3598
3599         // \82¨\8bC\82É\93ü\82è\82Ì\83c\83\8a\81[\82ð\93W\8aJ
3600         GikoForm.FavoriteTreeView.Items.GetFirstNode.Expanded := True;
3601
3602 end;
3603 // *************************************************************************
3604 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3605 // *************************************************************************
3606 procedure TGikoDM.CabinetVisibleActionExecute(Sender: TObject);
3607 begin
3608         case GikoForm.TreeType of
3609         gttHistory:             CabinetHistoryAction.Execute;
3610         gttFavorite:    CabinetFavoriteAction.Execute;
3611         else
3612                 CabinetBBSAction.Execute;
3613         end;
3614 end;
3615 // *************************************************************************
3616 //! \83L\83\83\83r\83l\83b\83g\82ð\95Â\82\82é
3617 // *************************************************************************
3618 procedure TGikoDM.CabinetCloseActionExecute(Sender: TObject);
3619 begin
3620         //INFO 2005/11/19 \82±\82Ì\83A\83N\83V\83\87\83\93\82É\82Í\89½\82à\90Ý\92è\82³\82ê\82Ä\82¢\82È\82©\82Á\82½\81@\82à\82\82ã
3621 end;
3622 // *************************************************************************
3623 //! \83\8a\83X\83g\82ð\91å\82«\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3624 // *************************************************************************
3625 procedure TGikoDM.LargeIconActionExecute(Sender: TObject);
3626 begin
3627         GikoForm.ListView.ViewStyle := vsIcon;
3628         LargeIconAction.Checked := True;
3629 end;
3630 // *************************************************************************
3631 //! \83\8a\83X\83g\82ð\8f¬\82³\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3632 // *************************************************************************
3633 procedure TGikoDM.SmallIconActionExecute(Sender: TObject);
3634 begin
3635         GikoForm.ListView.ViewStyle := vsSmallIcon;
3636         SmallIconAction.Checked := True;
3637 end;
3638 // *************************************************************************
3639 //! \83\8a\83X\83g\82ð\88ê\97\97\95\\8e¦\82É\82·\82é
3640 // *************************************************************************
3641 procedure TGikoDM.ListIconActionExecute(Sender: TObject);
3642 begin
3643         GikoForm.ListView.ViewStyle := vsList;
3644         ListIconAction.Checked := True;
3645 end;
3646 // *************************************************************************
3647 //! \83\8a\83X\83g\82ð\8fÚ\8d×\95\\8e¦\82É\82·\82é
3648 // *************************************************************************
3649 procedure TGikoDM.DetailIconActionExecute(Sender: TObject);
3650 begin
3651         GikoForm.ListView.ViewStyle := vsReport;
3652         DetailIconAction.Checked := True;
3653 end;
3654 // *************************************************************************
3655 //! \83_\83E\83\93\83\8d\81[\83h\82ð\92\86\8e~\82·\82é
3656 // *************************************************************************
3657 procedure TGikoDM.StopActionExecute(Sender: TObject);
3658 begin
3659         GikoForm.FControlThread.DownloadAbort;
3660         if GikoForm.WorkCount <> 0 then GikoForm.WorkCount := 0;
3661         try
3662                 GikoForm.Animate.Active := False;
3663         except
3664         end;
3665         GikoForm.ScreenCursor := crDefault;
3666 end;
3667 // *************************************************************************
3668 //! \83\8a\83X\83g\82Æ\83u\83\89\83E\83U\82Ì\8fc\89¡\94z\92u\82ð\95Ï\8dX\82·\82é
3669 // *************************************************************************
3670 procedure TGikoDM.ArrangeActionExecute(Sender: TObject);
3671 begin
3672         if ArrangeAction.Checked then begin
3673                 //\8fc
3674                 GikoForm.ViewPanel.Align := alNone;
3675                 GikoForm.ListSplitter.Align := alNone;
3676                 GikoForm.ThreadPanel.Align := alNone;
3677
3678                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3679                 GikoForm.ViewPanel.Align := alLeft;
3680
3681                 GikoForm.ListSplitter.Width := 5;
3682                 GikoForm.ListSplitter.Align := alLeft;
3683
3684                 GikoForm.ViewPanel.Left := -10;
3685
3686                 GikoForm.ThreadPanel.Align := alClient;
3687
3688                 GikoSys.Setting.ListOrientation := gloHorizontal;
3689                 case GikoSys.Setting.ListWidthState of
3690                         glsMax: begin
3691                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3692                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3693                                 GikoForm.ViewPanel.Width := 1;
3694                         end;
3695                         glsNormal: begin
3696                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3697                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3698                         end;
3699                         glsMin: begin
3700                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3701                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3702                                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
3703                         end;
3704                 end;
3705         end else begin
3706                 //\89¡
3707                 GikoForm.ViewPanel.Align := alNone;
3708                 GikoForm.ListSplitter.Align := alNone;
3709                 GikoForm.ThreadPanel.Align := alNone;
3710
3711                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3712                 GikoForm.ViewPanel.Align := alTop;
3713
3714                 GikoForm.ListSplitter.Height := 5;
3715                 GikoForm.ListSplitter.Align := alTop;
3716
3717                 GikoForm.ViewPanel.Top := -10;
3718
3719                 GikoForm.ThreadPanel.Align := alClient;
3720                 GikoSys.Setting.ListOrientation := gloVertical;
3721                 case GikoSys.Setting.ListHeightState of
3722                         glsMax: begin
3723                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3724                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3725                                 GikoForm.ViewPanel.Height := 1;
3726                         end;
3727                         glsNormal: begin
3728                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3729                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3730                         end;
3731                         glsMin: begin
3732                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3733                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3734                                 GikoForm.ViewPanel.Height :=
3735                                         GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
3736                         end;
3737                 end;
3738         end;
3739 end;
3740 // *************************************************************************
3741 //! \83y\83C\83\93\82Ì\83T\83C\83Y\82ð\8f\89\8aú\89»\82·\82é
3742 // *************************************************************************
3743 procedure TGikoDM.PaneInitActionExecute(Sender: TObject);
3744 begin
3745         GikoForm.CabinetPanel.Width := 150;
3746         GikoForm.MessagePanel.Height := 40;
3747
3748         GikoForm.BrowserSizeWidth := 200;
3749         GikoForm.BrowserSizeHeight := 200;
3750         if ArrangeAction.Checked then begin
3751                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3752         end else begin
3753                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3754         end;
3755         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
3756                 if GikoSys.Setting.ListHeightState = glsMax then begin
3757                         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3758                         GikoSys.Setting.ListHeightState := glsNormal;
3759                 end;
3760         end else begin
3761                 if GikoSys.Setting.ListWidthState = glsMax then begin
3762                         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3763                         GikoSys.Setting.ListWidthState := glsNormal;
3764                 end;
3765         end;
3766 end;
3767 // *************************************************************************
3768 //! \83u\83\89\83E\83U\83^\83u\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3769 // *************************************************************************
3770 procedure TGikoDM.BrowserTabVisibleActionExecute(Sender: TObject);
3771 begin
3772         GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
3773         GikoForm.SetBrowserTabState;
3774 end;
3775 // *************************************************************************
3776 //! \83u\83\89\83E\83U\83^\83u\82ð\8fã\82É\95\\8e¦\82·\82é
3777 // *************************************************************************
3778 procedure TGikoDM.BrowserTabTopActionExecute(Sender: TObject);
3779 begin
3780         BrowserTabBottomAction.Checked := False;
3781         BrowserTabTopAction.Checked := True;
3782         GikoSys.Setting.BrowserTabPosition := gtpTop;
3783         GikoForm.SetBrowserTabState;
3784 end;
3785 // *************************************************************************
3786 //! \83u\83\89\83E\83U\83^\83u\82ð\89º\82É\95\\8e¦\82·\82é
3787 // *************************************************************************
3788 procedure TGikoDM.BrowserTabBottomActionExecute(Sender: TObject);
3789 begin
3790         BrowserTabTopAction.Checked := False;
3791         BrowserTabBottomAction.Checked := True;
3792         GikoSys.Setting.BrowserTabPosition := gtpBottom;
3793         GikoForm.SetBrowserTabState;
3794 end;
3795 // *************************************************************************
3796 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83^\83u\83X\83^\83C\83\8b\82É\82·\82é
3797 // *************************************************************************
3798 procedure TGikoDM.BrowserTabTabStyleActionExecute(Sender: TObject);
3799 begin
3800         BrowserTabButtonStyleAction.Checked := False;
3801         BrowserTabFlatStyleAction.Checked := False;
3802         BrowserTabTabStyleAction.Checked := True;
3803         GikoSys.Setting.BrowserTabStyle := gtsTab;
3804         GikoForm.SetBrowserTabState;
3805 end;
3806 // *************************************************************************
3807 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83{\83^\83\93\83X\83^\83C\83\8b\82É\82·\82é
3808 // *************************************************************************
3809 procedure TGikoDM.BrowserTabButtonStyleActionExecute(Sender: TObject);
3810 begin
3811         BrowserTabTabStyleAction.Checked := False;
3812         BrowserTabFlatStyleAction.Checked := False;
3813         BrowserTabButtonStyleAction.Checked := True;
3814         GikoSys.Setting.BrowserTabStyle := gtsButton;
3815         GikoForm.SetBrowserTabState;
3816 end;
3817 // *************************************************************************
3818 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83t\83\89\83b\83g\83{\83^\83\93\83X\83^\83C\83\8b\82É\82·\82é
3819 // *************************************************************************
3820 procedure TGikoDM.BrowserTabFlatStyleActionExecute(Sender: TObject);
3821 begin
3822         BrowserTabFlatStyleAction.Checked := True;
3823         BrowserTabTabStyleAction.Checked := False;
3824         BrowserTabButtonStyleAction.Checked := False;
3825         GikoSys.Setting.BrowserTabStyle := gtsFlat;
3826         GikoForm.SetBrowserTabState;
3827 end;
3828 // *************************************************************************
3829 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3830 // *************************************************************************
3831 procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject);
3832 begin
3833     GikoForm.ActiveContent.Browser.SetFocus;
3834 end;
3835 // *************************************************************************
3836 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3837 // *************************************************************************
3838 procedure TGikoDM.SetFocusForBrowserActionUpdate(Sender: TObject);
3839 begin
3840         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and
3841                 (GikoForm.ActiveContent.Browser <> GikoForm.BrowserNullTab.Browser) then
3842                 TAction(Sender).Enabled := true
3843         else
3844                 TAction(Sender).Enabled := false;
3845 end;
3846 // *************************************************************************
3847 //! \83X\83\8c\83b\83h\88ê\97\97\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3848 // *************************************************************************
3849 procedure TGikoDM.SetFocusForThreadListActionExecute(Sender: TObject);
3850 begin
3851         if GikoForm.ActiveContent <> nil then
3852                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3853         GikoForm.ListView.SetFocus;
3854
3855         if( GikoForm.ListView.Items.Count > 0 ) and (GikoForm.ListView.ItemFocused = nil) then
3856                 GikoForm.ListView.Items.Item[0].Selected := true; //\91I\91ð\83A\83C\83e\83\80\82ª\96³\82¢\82Æ\82«\82Í\90æ\93ª\82Ì\82ð\91I\91ð\82·\82é
3857
3858         //\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
3859         if (GikoForm.ListView.ItemFocused <> nil) then begin
3860                 GikoForm.ListView.ItemFocused.MakeVisible(False);
3861         end;
3862 end;
3863 // *************************************************************************
3864 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3865 // *************************************************************************
3866 procedure TGikoDM.SetFocusForCabinetActionExecute(Sender: TObject);
3867 begin
3868         if GikoForm.ActiveContent <> nil then
3869                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3870         if GikoForm.TreeView.Visible then begin
3871                 GikoForm.TreeView.SetFocus;
3872                 if(GikoForm.TreeView.Items.Count > 0) and ( GikoForm.TreeView.Selected = nil ) then
3873                         GikoForm.TreeView.Items.Item[0].Selected := true;
3874         end else if GikoForm.FavoriteTreeView.Visible then begin
3875                 GikoForm.FavoriteTreeView.SetFocus;
3876                 if(GikoForm.FavoriteTreeView.Items.Count > 0) and (GikoForm.FavoriteTreeView.Selected = nil) then
3877                         GikoForm.FavoriteTreeView.Items.Item[0].Selected := true;
3878         end;
3879 end;
3880 // *************************************************************************
3881 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3882 // *************************************************************************
3883 procedure TGikoDM.SetFocusForCabinetActionUpdate(Sender: TObject);
3884 begin
3885         SetFocusForCabinetAction.Enabled := GikoForm.CabinetPanel.Visible;
3886 end;
3887 // *************************************************************************
3888 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3889 // *************************************************************************
3890 procedure TGikoDM.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
3891 begin
3892         BrowserMinAction.Execute;
3893         SetFocusForThreadListAction.Execute;
3894 end;
3895 // *************************************************************************
3896 //! \83X\83\8c\95\\8e¦\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3897 // *************************************************************************
3898 procedure TGikoDM.BrowserMaxAndFocusActionExecute(Sender: TObject);
3899 begin
3900         BrowserMaxAction.Execute;
3901         SetFocusForBrowserAction.Execute;
3902 end;
3903 // *************************************************************************
3904 //! \83X\83\8c\83b\83h\88ê\97\97\82Ì\91I\91ð\82ð\8dí\8f\9c\82·\82é
3905 // *************************************************************************
3906 procedure TGikoDM.UnSelectedListViewActionExecute(Sender: TObject);
3907 begin
3908         if GikoForm.ListView.Selected <> nil then begin
3909                 GikoForm.ListView.Selected.Focused := True;
3910                 GikoForm.ListView.Selected := nil;
3911         end;
3912 end;
3913 ////////////////////////////////\95\\8e¦\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3914 // *************************************************************************
3915 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8aù\93Ç\82É\82·\82é
3916 // *************************************************************************
3917 procedure TGikoDM.KidokuActionExecute(Sender: TObject);
3918 begin
3919         SetThreadReadProperty(true);
3920 end;
3921 // *************************************************************************
3922 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\96¢\93Ç\82É\82·\82é
3923 // *************************************************************************
3924 procedure TGikoDM.MidokuActionExecute(Sender: TObject);
3925 begin
3926         SetThreadReadProperty(false);
3927 end;
3928 // *************************************************************************
3929 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¢\93Ç\81E\8aù\93Ç\82ð\90Ý\92è\82·\82é   true : \8aù\93Ç false : \96¢\93Ç
3930 // *************************************************************************
3931 procedure TGikoDM.SetThreadReadProperty(read: Boolean);
3932 var
3933         List: TList;
3934         i: Integer;
3935 begin
3936         List := TList.Create;
3937         try
3938                 GikoForm.SelectListItem(List);
3939                 for i := 0 to List.Count - 1 do begin
3940                         if TObject(List[i]) is TThreadItem then begin
3941                                 if (TThreadItem(List[i]).IsLogFile) then begin
3942                                         TThreadItem(List[i]).UnRead := not read;
3943                                 end;
3944                         end;
3945                 end;
3946                 if GikoForm.TreeView.Visible then
3947                         GikoForm.TreeView.Refresh;
3948                 if GikoForm.ListView.Visible then
3949                         GikoForm.ListView.Refresh;
3950         finally
3951                 List.Free;
3952         end;
3953 end;
3954 // *************************************************************************
3955 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82é
3956 // *************************************************************************
3957 procedure TGikoDM.AllSelectActionExecute(Sender: TObject);
3958 begin
3959         GikoForm.ListViewAllSelect;
3960 end;
3961 // *************************************************************************
3962 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
3963 // *************************************************************************
3964 procedure TGikoDM.AllSelectActionUpdate(Sender: TObject);
3965 begin
3966         AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;
3967 end;
3968 ////////////////////////////////\95Ò\8fW\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3969 //! \83X\83\8c\83b\83h\82Ì\83T\83C\83Y\82ð\8dÄ\8cv\8eZ\82·\82é
3970 procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject);
3971 const
3972         RECALC_MES : String = '\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ð\83t\83@\83C\83\8b\82©\82ç\8dÄ\8cv\8eZ\82µ\82Ü\82·\81B'#13#10 +
3973                                                         '\82±\82Ì\91\80\8dì\92\86\81A\83M\83R\83i\83r\82Ì\91¼\82Ì\91\80\8dì\82ð\82·\82é\82Æ\83f\81[\83^\82ª\94j\89ó\82³\82ê\82é\8b°\82ê\82ª\82 \82è\82Ü\82·\81B' +
3974                                                         '\82Ü\82½\82±\82Ì\91\80\8dì\82Í\81A\94ñ\8fí\82É\8e\9e\8aÔ\82ª\82©\82©\82é\8fê\8d\87\82ª\82 \82è\82Ü\82·\82ª\81A\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
3975         RECALC_TITLE : String = '\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ð\83t\83@\83C\83\8b\82©\82ç\8dÄ\8cv\8eZ';
3976         LIMIT_SIZE = 1024;
3977 var
3978         limitSize : Integer;
3979         limitStr  : String;
3980 begin
3981\82Ü\82¸\81A\8e\9e\8aÔ\82ª\82©\82©\82é\82±\82Æ\82ð\8cx\8d\90\82·\82é\83\81\83b\83Z\81[\83W\82ð\8fo\97Í
3982   \8dÄ\8cv\8eZ\82·\82é\83X\83\8c\83b\83h\82Ì\83T\83C\83Y\82Ìè\87\92l\81i\83f\83t\83H\83\8b\83g1024B)\82ð\8am\94F
3983   \83v\83\89\83O\83C\83\93\82ð\97\98\97p\82µ\82È\82¢\82Æ\82±\82ë\82Å\91S\82Ä\82Ì\83\8d\83O\97L\82è\83X\83\8c\83b\83h\82ð\8c\9f\8dõ
3984   è\87\92l\88È\89º\82Ì\83T\83C\83Y\82Ì\8fê\8d\87\81ADAT\82Ì\83t\83@\83C\83\8b\83T\83C\83Y\82Æ\94ä\8ar\81A\82¸\82ê\82Ä\82¢\82ê\82Î\81A
3985   DAT\82Ì\83t\83@\83C\83\8b\83T\83C\83Y\82Å\8dX\90V\82·\82é
3986 }
3987         if MsgBox(GikoForm.Handle, RECALC_MES,
3988                 RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin
3989                 //è\87\92l\82Ì\8am\94F
3990                 limitSize := LIMIT_SIZE;
3991                 limitStr  := IntToStr(limitSize);
3992                 if InputQuery('è\87\92l\93ü\97Í', '\8ew\92è\82µ\82½\90\94\92l B\88È\89º\82Ì\97e\97Ê\82Ì\83X\83\8c\83b\83h\82Ì\82Ý\8dÄ\8cv\8eZ\82µ\82Ü\82·', limitStr) then begin
3993                         limitSize := StrToInt(MojuUtils.ZenToHan(limitStr));
3994                         if (limitSize < 0) then begin
3995                                 ShowMessage('è\87\92l\82É\95\89\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ\81I');
3996                                 ThreadSizeCalcForFileActionExecute(nil);
3997                         end else begin
3998                                 RecalcThreadSize(limitSize);
3999                         end;
4000                 end;
4001         end;
4002 end;
4003 //! limit\82æ\82è\82à\83T\83C\83Y\82Ì\8f¬\82³\82¢\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ðDAT\83t\83@\83C\83\8b\82©\82ç\8cv\8eZ
4004 procedure TGikoDM.RecalcThreadSize(limit : Integer);
4005 var
4006         i, j, tmpSize : Integer;
4007         Obj   : TObject;
4008         Board : TBoard;
4009         Thread: TThreadItem;
4010         dat   : TStringList;
4011 begin
4012         // \8dÄ\8cv\8eZ\83X\83^\81[\83g\81@\83v\83\89\83O\83C\83\93\82ð\97\98\97p\82µ\82È\82¢\82Æ\82±\82ë\82ð\91S\95\94\8c©\82é\81I
4013         GikoForm.ScreenCursor := crHourGlass;
4014         try
4015                 GikoForm.ProgressBar.Max := BoardGroups[0].Count;
4016                 for i := 0 to BoardGroups[0].Count - 1 do begin
4017                         Obj := BoardGroups[0].Objects[i];
4018                         if (Obj <> nil) then begin
4019                                 Board := TBoard(Obj);
4020                                 if not Board.IsThreadDatRead then begin
4021                                         GikoSys.ReadSubjectFile(Board);
4022                                 end;
4023                                 for j := 0 to Board.Count - 1 do begin
4024                                         Thread := Board.Items[j];
4025                                         if (Thread <> nil) and (Thread.IsLogFile)
4026                                                 and (Thread.Size <= limit) then begin
4027                                                 dat := TStringList.Create;
4028                                                 try
4029                                                         tmpSize := Thread.Size;
4030                                                         try
4031                                                                 dat.LoadFromFile(Thread.GetThreadFileName);
4032                                                                 tmpSize := Length(dat.Text);
4033                                                                 tmpSize := tmpSize - dat.Count;
4034                                                         except
4035                                                         end;
4036                                                         Thread.Size := tmpSize;
4037                                                 finally
4038                                                         dat.Free;
4039                                                 end;
4040                                         end;
4041                                 end;
4042                         end;
4043                         GikoForm.ProgressBar.StepBy(1);
4044                 end;
4045         finally
4046                 GikoForm.ScreenCursor := crDefault;
4047         end;
4048         GikoForm.ProgressBar.Position := 0;
4049         ShowMessage('\8cv\8eZ\8fI\97¹\82µ\82Ü\82µ\82½\81B');
4050 end;
4051 // *************************************************************************
4052 //! \93ü\97Í\83A\83V\83X\83g\82Ì\90Ý\92è\83t\83H\81[\83\80\82ð\8cÄ\82Ñ\8fo\82·
4053 // *************************************************************************
4054 procedure TGikoDM.SetInputAssistActionExecute(Sender: TObject);
4055 var
4056         form : TInputAssistForm;
4057 begin
4058         form := TInputAssistForm.Create(GikoForm);
4059         try
4060                 form.SetUpFromMain;
4061                 form.ShowModal;
4062         finally
4063                 form.Release;
4064         end;
4065 end;
4066 // *************************************************************************
4067 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
4068 // *************************************************************************
4069 procedure TGikoDM.OpenFindDialogActionExecute(Sender: TObject);
4070 begin
4071         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) then begin
4072         GikoForm.ActiveContent.OpenFindDialog;
4073         end;
4074 end;
4075
4076 // *************************************************************************
4077 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\95\\8e¦\96¼\82ð\83R\83s\81[\82·\82é
4078 // *************************************************************************
4079 procedure TGikoDM.FavoriteTreeViewItemNameCopyActionExecute(
4080   Sender: TObject);
4081 begin
4082         if GikoForm.ClickNode = nil then Exit;
4083
4084         Clipboard.AsText :=
4085                         GikoForm.ClickNode.Text + #13#10;
4086 end;
4087
4088 // *************************************************************************
4089 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\82·\82×\82Ä\82Ì\83\8c\83X\83G\83f\83B\83^\82ð\95Â\82\82é
4090 // *************************************************************************
4091 procedure TGikoDM.CloseAllEditorActionExecute(Sender: TObject);
4092 var
4093     i : Integer;
4094 begin
4095     if ( EditorFormExists ) then begin
4096         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\95Â\82\82é
4097             for i := Screen.CustomFormCount - 1 downto 0 do begin
4098                 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
4099                 TEditorForm(Screen.CustomForms[i]).Close;
4100                 end;
4101             end;
4102     end;
4103 end;
4104 // *************************************************************************
4105 //! \83X\83N\83\8a\81[\83\93\8fã\82É\83\8c\83X\83G\83f\83B\83^\82ª\82¢\82½\8fê\8d\87\81C\97L\8cø\82É\82È\82é
4106 // *************************************************************************
4107 procedure TGikoDM.CloseAllEditorActionUpdate(Sender: TObject);
4108 begin
4109     if (Sender is TAction) then begin
4110         TAction(Sender).Enabled := EditorFormExists;
4111     end;
4112 end;
4113 // *************************************************************************
4114 //! \83X\83N\83\8a\81[\83\93\8fã\82ÉEditorForm\82ª\82¢\82é\82©
4115 // *************************************************************************
4116 function TGikoDM.EditorFormExists(): boolean;
4117 var
4118         i : Integer;
4119 begin
4120         Result := false;
4121         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\92T\82·
4122         for i := Screen.CustomFormCount - 1 downto 0 do begin
4123                 if (Screen.CustomForms[i] is TEditorForm) then begin
4124                         Result := true;
4125                         Break;
4126                 end;
4127         end;
4128 end;
4129
4130 // *************************************************************************
4131 //! \83X\83N\83\8a\81[\83\93\8fã\82É\82¢\82é\82·\82×\82Ä\82ÌEditorForm\82©\82ç\96¼\91O\82Ì\97\9a\97ð\82ð\8dí\8f\9c\82·\82é
4132 // *************************************************************************
4133 procedure TGikoDM.ClearNameTextAllEditor();
4134 var
4135         i : Integer;
4136 begin
4137         for i := 0 to Screen.CustomFormCount - 1 do begin
4138                 if (Screen.CustomForms[i] is TEditorForm) then begin
4139                         TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
4140         end;
4141         end;
4142 end;
4143 // *************************************************************************
4144 //! \83X\83N\83\8a\81[\83\93\8fã\82É\82¢\82é\82·\82×\82Ä\82ÌEditorForm\82©\82ç\83\81\81[\83\8b\97\9a\97ð\82ð\8dí\8f\9c\82·\82é
4145 // *************************************************************************
4146 procedure TGikoDM.ClearMailAllEditor();
4147 var
4148         i : Integer;
4149 begin
4150         for i := 0 to Screen.CustomFormCount - 1 do begin
4151                 if TObject(Screen.CustomForms[i]) is TEditorForm then
4152                         TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
4153         end;
4154 end;
4155
4156 // *************************************************************************
4157 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é\82Ì\8dX\90V\8f\88\97\9d
4158 // *************************************************************************
4159 procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject);
4160 begin
4161       PrevMoveHistory.Enabled :=
4162           (MoveHisotryManager.HisotryIndex > 0)
4163 end;
4164 // *************************************************************************
4165 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é
4166 // *************************************************************************
4167 procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject);
4168 begin
4169     if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin
4170         BackToHistory(MoveHisotryManager.getPrevItem
4171             (TBrowserRecord(GikoForm.BrowserTab.Tabs
4172                     .Objects[GikoForm.BrowserTab.TabIndex])));
4173     end else begin
4174         BackToHistory(MoveHisotryManager.getPrevItem( nil ) );
4175     end;
4176 end;
4177 //! \83\8a\83\93\83N\97\9a\97ð\8f\88\97\9d
4178 procedure TGikoDM.BackToHistory(item: TMoveHistoryItem);
4179 var
4180     browser : TWebBrowser;
4181     doc : IHTMLDocument2;
4182 begin
4183     if ( item <> nil ) then begin
4184         if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin
4185             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4186                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4187             if (browser <> nil) then begin
4188                 try
4189                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4190                     (doc.body as IHTMLElement2).ScrollTop := item.ScrollTop;
4191                 except
4192                 end;
4193             end;
4194         end else begin
4195             //URL\82É\88Ú\93®
4196             MoveURLWithHistory(item.ThreadItem.URL, True);
4197         end;
4198     end;
4199 end;
4200 //! \97\9a\97ð\8f\88\97\9d\82Â\82«URL\88Ú\93®
4201 procedure TGikoDM.MoveURLWithHistory(URL : String; KeyMask: Boolean = False);
4202 var
4203     idx : Integer;
4204 begin
4205     //URL\82É\88Ú\93®
4206     GikoForm.MoveToURL(URL, KeyMask);
4207     //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
4208     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
4209     if idx = -1 then begin
4210         GikoForm.AddressComboBox.Items.Insert(0, URL);
4211         if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
4212             GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
4213     end else begin
4214         GikoForm.AddressComboBox.Items.Delete(idx);
4215         GikoForm.AddressComboBox.Items.Insert(0, URL);
4216     end;
4217 end;
4218 // *************************************************************************
4219 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ\82Ì\8dX\90V\8f\88\97\9d
4220 // *************************************************************************
4221 procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject);
4222 begin
4223     NextMoveHistory.Enabled :=
4224           (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1);
4225 end;
4226 // *************************************************************************
4227 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ
4228 // *************************************************************************
4229 procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject);
4230 begin
4231     BackToHistory(MoveHisotryManager.getNextItem);
4232 end;
4233 // *************************************************************************
4234 //! \83A\83N\83e\83B\83u\97v\91f\82Ì\83N\83\8a\83b\83N
4235 // *************************************************************************
4236 procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject);
4237 var
4238     browser : TWebBrowser;
4239     elem : IHTMLElement;
4240     doc : IHTMLDocument2;
4241 begin
4242     if (GikoForm.GetActiveContent <> nil) then begin
4243         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4244             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4245             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4246                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4247             if (browser <> nil) then begin
4248                 try
4249                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4250                     if Assigned(doc) then begin
4251                         elem := doc.activeElement;
4252                         if Assigned(elem) then begin
4253                             elem.click;
4254                         end;
4255                     end;
4256                 except
4257                 end;
4258             end;
4259
4260         end;
4261     end;
4262 end;
4263 //! \81«\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4264 procedure TGikoDM.VKDownActionExecute(Sender: TObject);
4265 begin
4266     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
4267     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4268 end;
4269 //! \81ª\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4270 procedure TGikoDM.VKUpActionExecute(Sender: TObject);
4271 begin
4272     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
4273     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4274 end;
4275 //! \81¨\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4276 procedure TGikoDM.VKRightActionExecute(Sender: TObject);
4277 begin
4278     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4279     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4280 end;
4281 //! \81©\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4282 procedure TGikoDM.VKLeftActionExecute(Sender: TObject);
4283 begin
4284     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4285     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4286 end;
4287 //! \83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é
4288 procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject);
4289 begin
4290     GikoForm.StoredTaskTray;
4291     StoredTaskTrayAction.Tag := -1;
4292 end;
4293
4294 {
4295 \breif  \83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4296 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4297 }
4298 procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject);
4299 var
4300     links : IHTMLElementCollection;
4301     urls, exts : TStringList;
4302 begin
4303     links := GetActiveThreadLinks;
4304     if (links <> nil) then begin
4305         urls := TStringList.Create;
4306         exts := TStringList.Create;
4307         try
4308             exts.CaseSensitive := False;
4309             exts.Sorted := True;
4310             exts.Delimiter := ';';
4311             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4312             GetLinkURLs(links, urls, 0, exts);
4313             Clipboard.SetTextBuf(urls.GetText);
4314         finally
4315             exts.Free;
4316             urls.Free;
4317         end;
4318     end;
4319 end;
4320
4321 {
4322 \breif  \90V\92\85\83\8c\83X\82Ì\83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4323 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4324 }
4325 procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject);
4326 var
4327     links : IHTMLElementCollection;
4328     urls, exts : TStringList;
4329     ThreadItem : TThreadItem;
4330 begin
4331     ThreadItem := GikoForm.GetActiveContent;
4332     links := GetActiveThreadLinks;
4333     if (ThreadItem <> nil) and (links <> nil) then begin
4334         urls := TStringList.Create;
4335         exts := TStringList.Create;
4336         try
4337             exts.CaseSensitive := False;
4338             exts.Sorted := True;
4339             exts.Delimiter := ';';
4340             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4341
4342             GetLinkURLs(links, urls,
4343                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4344             Clipboard.SetTextBuf(urls.GetText);
4345         finally
4346             exts.Free;
4347             urls.Free;
4348         end;
4349     end;
4350 end;
4351 {
4352 \breif  \83\8a\83\93\83NURL\8eæ\93¾
4353 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4354 }
4355 procedure TGikoDM.AllLinkToClipboardActionExecute(Sender: TObject);
4356 var
4357     links : IHTMLElementCollection;
4358     urls, exts : TStringList;
4359 begin
4360     links := GetActiveThreadLinks;
4361     if (links <> nil) then begin
4362         urls := TStringList.Create;
4363         exts := TStringList.Create;
4364         try
4365             exts.CaseSensitive := False;
4366             exts.Sorted := True;
4367             exts.Delimiter := ';';
4368             exts.DelimitedText :=
4369                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4370             GetLinkURLs(links, urls, 0, exts);
4371             Clipboard.SetTextBuf(urls.GetText);
4372         finally
4373             exts.Free;
4374             urls.Free;
4375         end;
4376     end;
4377 end;
4378 {
4379 \breif  \90V\92\85\83\8c\83X\83\8a\83\93\83NURL\8eæ\93¾
4380 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4381 }
4382 procedure TGikoDM.NewLinkToClipboardActionExecute(Sender: TObject);
4383 var
4384     links : IHTMLElementCollection;
4385     urls, exts : TStringList;
4386     ThreadItem : TThreadItem;
4387 begin
4388     ThreadItem := GikoForm.GetActiveContent;
4389     links := GetActiveThreadLinks;
4390     if (ThreadItem <> nil) and (links <> nil) then begin
4391         urls := TStringList.Create;
4392         exts := TStringList.Create;
4393         try
4394             exts.CaseSensitive := False;
4395             exts.Sorted := True;
4396             exts.Delimiter := ';';
4397             exts.DelimitedText :=
4398                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4399             GetLinkURLs(links, urls,
4400                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4401             Clipboard.SetTextBuf(urls.GetText);
4402         finally
4403             exts.Free;
4404             urls.Free;
4405         end;
4406     end;
4407 end;
4408
4409 {
4410 \brief  \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\82·\82×\82Ä\82Ì\83\8a\83\93\83N\82ð\8eæ\93¾\82·\82é\81B
4411 \return IHTMLElementCollection  \83\8a\83\93\83N\82Ì\83R\83\8c\83N\83V\83\87\83\93
4412 }
4413 function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection;
4414 var
4415     browser : TWebBrowser;
4416     doc : IHTMLDocument2;
4417 begin
4418     Result := nil;
4419     if (GikoForm.GetActiveContent <> nil) then begin
4420         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4421             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4422             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4423                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4424             if (browser <> nil) then begin
4425                 try
4426                     doc := browser.ControlInterface.Document as IHTMLDocument2;
4427                     if Assigned(doc) then begin
4428                         Result := doc.links;
4429                     end;
4430                 except
4431                     Result := nil;
4432                 end;
4433             end;
4434
4435         end;
4436     end;
4437 end;
4438 {
4439 \brief  \83\8a\83\93\83N\82ÌURL\82ð\8eæ\93¾\82·\82é
4440 \param  links   \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\91S\91Ì\82Ì\83R\83\8c\83N\83V\83\87\83\93
4441 \param  URLs    \8eæ\93¾\82µ\82½URL\82Ì\95Û\91\90æ
4442 \param  Start   \90Ý\92è\82µ\82½\83\8c\83X\94Ô\8d\86\88È\8d~\82ð\8eæ\93¾( > 0)
4443 \param  Exts    \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\8ag\92£\8eq
4444 }
4445 procedure TGikoDM.GetLinkURLs(links : IHTMLElementCollection;
4446         URLs : TStringList; const Start: Integer; Exts : TStringList);
4447 var
4448     index ,i, j : Integer;
4449     item : IHTMLElement;
4450     url, ext : string;
4451 begin
4452     if (links <> nil) then begin
4453         index := 0;
4454         for i := 0 to links.length - 1 do begin
4455             item := links.item(i, 0) as IHTMLElement;
4456             if (item <> nil) then begin
4457                 url := item.getAttribute('href', 0);
4458                 // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
4459                 if (Pos('menu:', url) > 0) then begin
4460                     index := StrToInt64Def(
4461                         Copy(url, 6, Length(url)), index + 1
4462                     );
4463                 end else begin
4464                     // \8aJ\8en\83\8c\83X\94Ô\8d\86\88È\8d~\82©\83`\83F\83b\83N
4465                     if (index >= Start) then begin
4466                         ext := ExtractFileExt( AnsiLowerCase(url) );
4467                         // \8ag\92£\8eq\82ð\83`\83F\83b\83N
4468                         if Exts.Find(ext, j) then begin
4469                             urls.Add(url)
4470                         end;
4471                     end;
4472                 end;
4473             end;
4474         end;
4475     end;
4476 end;
4477 {
4478 \brief  \83A\83h\83\8c\83X\83o\81[\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
4479 \param  Sender   \83C\83x\83\93\83g\82Ì\94­\90\8c³
4480 }
4481 procedure TGikoDM.SetForcusForAddresBarActionExecute(Sender: TObject);
4482 begin
4483     if ( GikoForm.AddressToolBar.Visible ) then begin
4484         GikoForm.AddressComboBox.SetFocus;
4485     end
4486 end;
4487 {
4488 \brief  \88Ú\93]\82µ\82½\94Â\82ÌURL\82ð\8eæ\93¾\82·\82é\83_\83C\83A\83O\83\89\83\80\82ð\95\\8e¦\82·\82é
4489 }
4490 procedure TGikoDM.NewBoardSearchActionExecute(Sender: TObject);
4491 var
4492     form : TNewBoardURLForm;
4493         Msg: string;
4494 begin
4495         if (EditorFormExists) then begin
4496                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
4497                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
4498                 Exit;
4499         end;
4500     form := TNewBoardURLForm.Create(Self);
4501     try
4502         form.ShowModal;
4503     finally
4504         form.Release;
4505     end;
4506 end;
4507 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4508 procedure TGikoDM.ScrollPageDownActionExecute(Sender: TObject);
4509 begin
4510     GikoForm.BrowserMovement(GikoForm.BrowserPanel.Height);
4511 end;
4512 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4513 procedure TGikoDM.ScrollPageUpActionExecute(Sender: TObject);
4514 begin
4515     GikoForm.BrowserMovement(-GikoForm.BrowserPanel.Height);
4516 end;
4517
4518
4519 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
4520 procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
4521 begin
4522     GikoForm.AddIDtoNGWord(true);
4523 end;
4524 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
4525 procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
4526 begin
4527     GikoForm.AddIDtoNGWord(false);
4528 end;
4529 //! \83N\83\8a\83b\83v\83{\81[\83h\82Ì\95\8e\9a\97ñ\82ðID\82Æ\82µ\82Ä\93¯\88êID\83\8c\83X\83A\83\93\83J\81[\95\\8e¦
4530 procedure TGikoDM.ExtractSameIDActionExecute(Sender: TObject);
4531 var
4532     ID: String;
4533 begin
4534     ID := Trim(Clipboard.AsText);
4535     if (Length(ID) > 0) then begin
4536         if not IsNoValidID(ID) then begin
4537             GikoForm.ShowSameIDAncher(ID);
4538         end;
4539     end;
4540 end;
4541 //! \83^\83u\82Ì\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82·\82é
4542 procedure TGikoDM.ShowTabListActionExecute(Sender: TObject);
4543 var
4544     i : Integer;
4545 begin
4546     GikoForm.ListView.Items.BeginUpdate;
4547     GikoForm.ListView.Items.Clear;
4548     BoardGroup.SpecialBoard.Clear;
4549         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
4550         BoardGroup.SpecialBoard.Add(
4551                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Thread);
4552         end;
4553     GikoForm.ListView.Items.EndUpdate;
4554     GikoForm.SetActiveList(BoardGroup.SpecialBoard);
4555 end;
4556 //! \8bt\8eQ\8fÆ\82µ\82Ä\82¢\82é\83\8c\83X\82ð\92Ç\89Á\82·\82é
4557 procedure TGikoDM.DereferenceResActionExecute(Sender: TObject);
4558 var
4559         i, currentNo, No : Integer;
4560     links : IHTMLElementCollection;
4561     threadItem : TThreadItem;
4562     item : IHTMLElement;
4563     url, url2 : string;
4564     resNo : TStringList;
4565     alreadyExist : Boolean;
4566         PathRec: TPathRec;
4567 begin
4568         No := GikoForm.KokoPopupMenu.Tag;
4569         if No = 0 then Exit;
4570
4571     ThreadItem := GikoForm.KokoPopupThreadItem;
4572     // \83A\83N\83e\83B\83u\83^\83u\82©\82ç\91S\82Ä\82Ì\83\8a\83\93\83N\82ð\8eæ\93¾\82·\82é
4573     links := GetActiveThreadLinks;
4574     if (ThreadItem <> nil) and (links <> nil) then begin
4575         resNo := TStringList.Create;
4576         try
4577             currentNo := 0;
4578             alreadyExist := False;
4579             // \83\8a\83\93\83N\82ð\91S\82Ä\91\96\8d¸\82·\82é
4580             for i := 0 to links.length - 1 do begin
4581                 item := links.item(i, 0) as IHTMLElement;
4582                 if (item <> nil) then begin
4583                     url := item.getAttribute('href', 0);
4584                     // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
4585                     if (Pos('menu:', url) > 0) then begin
4586                         currentNo := StrToInt64Def(
4587                             Copy(url, 6, Length(url)), currentNo + 1
4588                         );
4589                         alreadyExist := False;
4590                     end else if (currentNo <> -1) and (not alreadyExist) then begin
4591                         // IE7\91Î\89\9e
4592                         if Pos('about:..', url) = 1 then begin
4593                             url := 'about:blank..' + Copy( url, Length('about:..')+1, Length(url) )
4594                         end;
4595                         // \8e©\95ª\82Ö\82Ì\83\8a\83\93\83N\82©\82ç\83\8c\83X\83|\83b\83v\97p\82Ì\94Ô\8d\86\8eæ\93¾
4596                         if Pos('about:blank..', url) = 1 then begin
4597                             // No \94Ô\82Ö\82Ì\83\8a\83\93\83N\82ª\82 \82ê\82Î\8eQ\8fÆ\82 \82è
4598                             url2 := THTMLCreate.GetRespopupURL(url, ThreadItem.URL);
4599                                         PathRec := Gikosys.Parse2chURL2(url2);
4600                             if (not PathRec.FNoParam) then begin
4601                                 Gikosys.GetPopupResNumber(url2,PathRec.FSt,PathRec.FTo);
4602                                         end;
4603                             // \91Î\8fÛ\83\8c\83X\82à\82µ\82­\82Í\82»\82ê\82ð\8aÜ\82Þ\82È\82ç\8eQ\8fÆ\82 \82è\82Æ\82·\82é
4604                             if (PathRec.FSt = No) or
4605                                 ((PathRec.FSt <= No) and (PathRec.FTo >= No))  then begin
4606                                 alreadyExist := True;
4607                                 resNo.Add(IntToStr(currentNo));
4608                             end;
4609                         end;
4610                     end;
4611                 end;
4612             end;
4613             // \96³\90§\8cÀ\82È\82Ì\82Å-1\8cÅ\92è
4614             GikoForm.ActiveContent.IDAnchorPopup(
4615                 GikoSys.CreateResAnchor(resNo, ThreadItem, -1));
4616         finally
4617             resNo.Clear;
4618             resNo.Free;
4619         end;
4620     end;
4621 end;
4622
4623 procedure TGikoDM.UpdateGikonaviActionExecute(Sender: TObject);
4624 var
4625     form : TUpdateCheckForm;
4626         Msg: string;
4627     shutdown: boolean;
4628 begin
4629         if (EditorFormExists) then begin
4630                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
4631                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
4632                 Exit;
4633         end;
4634     GikoForm.UpdateExePath := '';
4635     GikoForm.UpdateExeArgs := '';
4636     form := TUpdateCheckForm.Create(GikoForm);
4637     try
4638         form.ShowModal;
4639         shutdown := form.Allowshutdown;
4640         if shutdown then begin
4641             GikoForm.UpdateExePath := form.ExecPath;
4642             GikoForm.UpdateExeArgs := form.ExecArgs;
4643         end;
4644     finally
4645         form.Release;
4646     end;
4647     if shutdown then begin
4648         // \83M\83R\83i\83r\8fI\97¹
4649         GikoForm.Close;
4650     end;
4651
4652 end;
4653 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iPATH_INFO)
4654 procedure TGikoDM.konoURLPATHActionExecute(Sender: TObject);
4655 var
4656     No : Integer;
4657     ThreadItem : TThreadItem;
4658     URL, Protocol, Host, Path, Document, Port, Bookmark : String;
4659 begin
4660         No := GikoForm.KokoPopupMenu.Tag;
4661         if No = 0 then Exit;
4662
4663     ThreadItem := GikoForm.KokoPopupThreadItem;
4664     if (ThreadItem.ParentBoard.Is2ch) or not (Pos('?', ThreadItem.URL) > 0) then begin
4665         GikoSys.ParseURI(ThreadItem.URL,Protocol, Host, Path, Document, Port, Bookmark);
4666         URL := Protocol + '://' + Host + Path + IntToStr(No);
4667     end else begin
4668         if Pos('?', ThreadItem.URL) > 0 then begin
4669             URL := Copy(ThreadItem.URL, 1, Pos('?', ThreadItem.URL)-1);
4670             // \82Ü\82¿BBS\97p\8f\88\92u
4671             URL := MojuUtils.CustomStringReplace(URL, 'read.pl', 'read.cgi');
4672             URL := URL + '/' + ThreadItem.ParentBoard.BBSID + '/' + ChangeFileExt(ThreadItem.FileName, '')  + '/' + IntToStr(No);
4673         end;
4674     end;
4675     Clipboard.SetTextBuf( PChar(URL) );
4676 end;
4677 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING)
4678 procedure TGikoDM.konoURLQueryActionExecute(Sender: TObject);
4679 var
4680     No : Integer;
4681     ThreadItem : TThreadItem;
4682     URL, Protocol, Host, Path, Document, Port, Bookmark : String;
4683 begin
4684         No := GikoForm.KokoPopupMenu.Tag;
4685         if No = 0 then Exit;
4686
4687     ThreadItem := GikoForm.KokoPopupThreadItem;
4688     // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\81A\83\8c\83X\94Ô\8d\86\82ð\82¤\82Ü\82­\8f\88\97\9d\82µ\82Ä\82­\82ê\82È\82¢\82Ì\82Å\97\98\97p\95s\89Â
4689     if ThreadItem.ParentBoard.Is2ch or not (Pos('?', ThreadItem.URL) > 0) then begin
4690         GikoSys.ParseURI(ThreadItem.URL, Protocol, Host, Path, Document, Port, Bookmark);
4691         URL := Protocol + '://' + Host + '/test/read.cgi?bbs=' + ThreadItem.ParentBoard.BBSID
4692             + '&key=' + ChangeFileExt(ThreadItem.FileName, '') + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
4693     end else begin
4694         URL := ThreadItem.URL;
4695         // \82Ü\82¿BBS
4696         if Pos('&LAST=', URL) > 0 then begin
4697             URL := Copy(URL, 1, Pos('&LAST=', URL) - 1);
4698             URL := URL + '&START=' + IntToStr(No) + '&END=' + IntToStr(No);
4699         end;
4700         // \82»\82Ì\91¼\8aO\95\94\94Â
4701         if Pos('&ls=', URL) > 0 then begin
4702             URL := Copy(URL, 1, Pos('&ls=', URL) - 1);
4703             URL := URL + '&st=' + IntToStr(No) + '&to=' + IntToStr(No);
4704         end;
4705
4706     end;
4707     Clipboard.SetTextBuf( PChar(URL) );
4708 end;
4709 //! \82±\82Ì\83\8c\83X\82ÌURL\83R\83s\81[\81iQuery_STRING\81j\82Ì\97\98\97p\83`\83F\83b\83N
4710 procedure TGikoDM.konoURLQueryActionUpdate(Sender: TObject);
4711 const
4712         LIVEDOOR_URL = 'http://jbbs.shitaraba.net/';
4713 begin
4714     // 2ch\82Æ\82µ\82½\82ç\82Î\82Í\97\98\97p\82Å\82«\82È\82¢\82æ\82¤\82É\82·\82é\81i\82¤\82Ü\82­\83\8c\83X\8ew\92è\82Å\82«\82È\82¢\82Ì\82Å\81j
4715     konoURLQueryAction.Enabled := false;
4716     if (GikoForm.KokoPopupThreadItem <> nil) then begin
4717         konoURLQueryAction.Enabled := not GikoForm.KokoPopupThreadItem.ParentBoard.Is2ch;
4718         if konoURLQueryAction.Enabled then begin
4719             konoURLQueryAction.Enabled := not (Pos(LIVEDOOR_URL, GikoForm.KokoPopupThreadItem.URL) = 1);
4720         end;
4721     end;
4722 end;
4723 //! \83|\83b\83v\83A\83b\83v\83\81\83j\83\85\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
4724 procedure TGikoDM.PopupMenuSettingActionExecute(Sender: TObject);
4725 var
4726         Dlg: TPopupMenuSettingDialog;
4727 begin
4728         Dlg := TPopupMenuSettingDialog.Create(GikoForm, GikoFormActionList);
4729         try
4730                 Dlg.ShowModal;
4731         finally
4732                 Dlg.Release;
4733         end;
4734 end;
4735
4736 procedure TGikoDM.ThreadSearchActionExecute(Sender: TObject);
4737 begin
4738     if (ThreadSrch <> nil) and (ThreadSrch.Visible = False) then begin
4739         ThreadSrch.Free;
4740         ThreadSrch := nil;
4741     end;
4742     if (ThreadSrch = nil) then begin
4743         ThreadSrch := TThreadSrch.Create(GikoForm);
4744     end;
4745     ThreadSrch.Show;
4746 end;
4747
4748 procedure TGikoDM.SaveThreadSearchSetting;
4749 begin
4750     if (ThreadSrch <> nil) and (ThreadSrch.Visible = True) then
4751         ThreadSrch.SaveSetting;
4752 end;
4753
4754 procedure TGikoDM.ThreadNgEditActionExecute(Sender: TObject);
4755 begin
4756     ThreadNGEdit := TThreadNGEdit.Create(GikoForm);
4757     if (ThreadNGEdit.ShowModal = mrOk) then begin
4758         GikoForm.ListView.Refresh;
4759     end;
4760     ThreadNGEdit.Free;
4761     ThreadNGEdit := nil;
4762 end;
4763
4764 end.
4765