OSDN Git Service

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