OSDN Git Service

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