OSDN Git Service

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