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                 end;
2048         GikoForm.TreeView.Refresh;      // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
2049                 GikoForm.ListView.Refresh;
2050         finally
2051                 List.Free;
2052         end;
2053 end;
2054 // *************************************************************************
2055 //! 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Ê
2056 // *************************************************************************
2057 procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2058 begin
2059         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2060                                                                 and (GikoForm.ListView.SelCount > 0);
2061 end;
2062 // *************************************************************************
2063 //! \8di\8d\9e\82Ý\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2064 // *************************************************************************
2065 procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2066 const
2067         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';
2068         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2069 begin
2070         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2071                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2072                         Exit;
2073         GikoSys.Setting.SelectTextList.Clear;
2074         GikoForm.SelectComboBox.Items.Clear;
2075         GikoForm.SelectComboBox.Text := '';
2076         GikoForm.SetListViewType( gvtAll );
2077 end;
2078 // *************************************************************************
2079 //! \83\8c\83X\83G\83f\83B\83^\82Ì\96¼\91O\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2080 // *************************************************************************
2081 procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2082 const
2083         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';
2084         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2085 begin
2086         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2087                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2088                         Exit;
2089         GikoSys.Setting.NameList.Clear;
2090         ClearNameTextAllEditor
2091 end;
2092 // *************************************************************************
2093 //! \83\8c\83X\83G\83f\83B\83^\82Ì\83\81\81[\83\8b\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2094 // *************************************************************************
2095 procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2096 const
2097         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';
2098         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2099 begin
2100         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2101                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2102                         Exit;
2103         GikoSys.Setting.MailList.Clear;
2104         ClearMailAllEditor;
2105 end;
2106 // *************************************************************************
2107 //! \83M\83R\83i\83r\82ð\8fI\97¹\82·\82é
2108 // *************************************************************************
2109 procedure TGikoDM.ExitActionExecute(Sender: TObject);
2110 begin
2111         GikoForm.Close;
2112 end;
2113 // *************************************************************************
2114 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\91O\8f\88\97\9d
2115 // *************************************************************************
2116 procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2117 begin
2118         ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2119 end;
2120 // *************************************************************************
2121 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\8f\88\97\9d
2122 // *************************************************************************
2123 procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2124 begin
2125         if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2126                 ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
2127         end else begin
2128                 ShowMessage('\83t\83@\83C\83\8b\82Ì\8fo\97Í\82É\8e¸\94s\82µ\82Ü\82µ\82½');
2129         end;
2130 end;
2131 // *************************************************************************
2132 //! \91I\91ð\83X\83\8c\83b\83h\82ð\83t\83@\83C\83\8b\82É\95Û\91\82·\82é
2133 // *************************************************************************
2134 procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean);
2135 var
2136         List: TList;
2137         i: Integer;
2138         html: TStringList;
2139         title: string;
2140 begin
2141         List := TList.Create;
2142         try
2143                 GikoForm.ScreenCursor := crHourGlass;
2144                 GikoForm.SelectListItem(List);
2145                 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2146                         (GikoSys.Setting.ListHeightState = glsMax)) or
2147                         ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2148                         (GikoSys.Setting.ListWidthState = glsMax))      then
2149                         ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82­\82¾\82³\82¢')
2150                 else if(List.Count = 0) then
2151                         ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82­\82¾\82³\82¢')
2152                 else begin
2153                         if dat then begin
2154                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
2155                                 SaveDialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
2156                         end else begin
2157                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
2158                                 SaveDialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
2159                         end;
2160                         for i := 0 to List.Count - 1 do begin
2161                                 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2162                                         if dat then begin
2163                                                 SaveDialog.FileName := TThreadItem(List[i]).FileName;
2164                                         end else begin
2165                                                 SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2166                                         end;
2167                                         if SaveDialog.Execute then begin
2168                                                 if dat then begin
2169                                                         CopyFile(PChar(TThreadItem(List[i]).FilePath),
2170                                                                         PChar(SaveDialog.FileName), true);
2171                                                 end else begin
2172                                                         html := TStringList.Create;
2173                                                         title := TThreadItem(List[i]).Title;
2174                                                         try
2175                                                                 HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2176                                                                 html.SaveToFile(SaveDialog.FileName);
2177                                                                 THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName));
2178                                                         finally
2179                                                                 html.Free;
2180                                                         end;
2181                                                 end;
2182                                         end;
2183                                 end;
2184                         end;
2185                 end;
2186         finally
2187                 GikoForm.ScreenCursor := crDefault;
2188                 List.Free;
2189         end;
2190 end;
2191 // *************************************************************************
2192 //! \91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91
2193 // *************************************************************************
2194 procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2195 begin
2196         SelectThreadSaveToFile(false);
2197 end;
2198 // *************************************************************************
2199 //! \91I\91ð\83X\83\8c\83b\83h\82ðDAT\8c`\8e®\82Ì\82Ü\82Ü\95Û\91
2200 // *************************************************************************
2201 procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2202 begin
2203         SelectThreadSaveToFile(true);
2204 end;
2205 // *************************************************************************
2206 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95Û\91
2207 // *************************************************************************
2208 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2209 const
2210         Filename = 'tab.sav';
2211         bFilename = '~tab.sav';
2212 var
2213         SaveStringList: TStringList;
2214 begin
2215         SaveStringList := TStringList.Create;
2216         try
2217                 GetTabURLs(SaveStringList);
2218         try
2219             if FileExists( GikoSys.GetAppDir + Filename) then begin
2220                 CopyFile(PChar(GikoSys.GetAppDir + Filename),
2221                     PChar(GikoSys.GetAppDir + bFilename), False);
2222             end;
2223         except
2224         end;
2225         SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
2226         finally
2227                 SaveStringList.Free;
2228         end;
2229 end;
2230 // *************************************************************************
2231 //! \83u\83\89\83E\83U\83^\83u\82É\90Ý\92è\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\8eæ\93¾
2232 // *************************************************************************
2233 procedure TGikoDM.GetTabURLs(AStringList: TStringList);
2234 var
2235   rec : TBrowserRecord;
2236   i : Integer;
2237 begin
2238     for i := 0 to GikoForm.BrowserTab.Tabs.Count -1 do begin
2239         try
2240             rec := TBrowserRecord( GikoForm.BrowserTab.Tabs.Objects[ i ] );
2241             if( rec <> nil) and (rec.Thread <> nil) then
2242                 AStringList.Add( rec.Thread.URL );
2243         except
2244         end;
2245     end;
2246 end;
2247 // *************************************************************************
2248 //! \8ew\92è\82³\82ê\82½URL\82ð\8aJ\82«\81C\90æ\93ª\82Ì\83^\83u\82É\83t\83H\81[\83J\83X\82·\82é
2249 // *************************************************************************
2250 procedure TGikoDM.OpenURLs(AStringList: TStringList);
2251 var
2252     GikoTab                     : TGikoTabAppend;
2253     i, bound : Integer;
2254         item        : TThreadItem;
2255 begin
2256     if (AStringList <> nil) then begin
2257         GikoTab := GikoSys.Setting.BrowserTabAppend;
2258         try
2259             bound    := AStringList.Count - 1;
2260             if bound > -1 then begin
2261                 GikoSys.Setting.BrowserTabAppend := gtaLast;
2262                 for i := 0 to bound do begin
2263                     item := BBSsFindThreadFromURL( AStringList[ i ] );
2264                     if item <> nil then
2265                         GikoForm.InsertBrowserTab( item, false );
2266                 end;
2267                 //\8dÅ\8f\89\82Ì\82P\96\87\82É\90Ý\92è
2268                 if (GikoSys.Setting.URLDisplay) and
2269                     (GikoForm.BrowserTab.Tabs.Count > 0) then begin
2270                                         GikoForm.AddressComboBox.Text :=
2271                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[0]).Thread.URL;
2272                 end;
2273             end;
2274         finally
2275             GikoSys.Setting.BrowserTabAppend := GikoTab;
2276         end;
2277     end;
2278 end;
2279 // *************************************************************************
2280 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
2281 // *************************************************************************
2282 procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2283 const
2284         TABFILE = 'tab.sav';
2285 var
2286         URLs                            : TStringList;
2287         fileName                : string;
2288 begin
2289     URLs := TStringList.Create();
2290         try
2291         fileName := GikoSys.GetAppDir + TABFILE;
2292                 if FileExists(fileName) then begin
2293                     try
2294                                 URLs.LoadFromFile(fileName);
2295                 if (URLs.Count = 0) then begin
2296                     // \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
2297                     SysUtils.DeleteFile(fileName);
2298                 end else begin
2299                     OpenURLs(URLs);
2300                 end;
2301                 except
2302                         on EFOpenError do ShowMessage('\83^\83u\83t\83@\83C\83\8b\82ª\8aJ\82¯\82Ü\82¹\82ñ');
2303             end;
2304         end;
2305         finally
2306         URLs.Free;
2307         end;
2308
2309     if (GikoForm.BrowserTab.Tabs.Count = 0) and
2310         (TabsOpenAction.Tag <> 1) then  begin
2311         ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
2312     end;
2313 end;
2314 // *************************************************************************
2315 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
2316 // *************************************************************************
2317 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2318 begin
2319         GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
2320 end;
2321 // *************************************************************************
2322 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é\82ÌUpdate\83C\83x\83\93\83g
2323 // *************************************************************************
2324 procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
2325 begin
2326         if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
2327                 if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true
2328                 else BeLogInOutAction.Checked := false;
2329                 BeLogInOutAction.Enabled := true
2330         end else
2331                 BeLogInOutAction.Enabled := false;
2332 end;
2333 ////////////////////////////////\83t\83@\83C\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2334 // *************************************************************************
2335 //! \83R\83R\82Ü\82Å\93Ç\82ñ\82¾
2336 // *************************************************************************
2337 procedure TGikoDM.KokomadeActionExecute(Sender: TObject);
2338 var
2339         No: Integer;
2340         ThreadItem: TThreadItem;
2341 begin
2342         No := GikoForm.KokoPopupMenu.Tag;
2343         if No = 0 then Exit;
2344         ThreadItem := GikoForm.GetActiveContent(True);
2345         if ThreadItem = nil then Exit;
2346         ThreadItem.Kokomade := No;
2347         GikoForm.ActiveContent.Thread.ScrollTop :=
2348                 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2349         GikoForm.ActiveContent.Repaint := true;
2350         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2351         //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é
2352         //Application.ProcessMessages;
2353 end;
2354 // *************************************************************************
2355 //! \91S\95\94\93Ç\82ñ\82¾
2356 // *************************************************************************
2357 procedure TGikoDM.ZenbuActionExecute(Sender: TObject);
2358 var
2359         ThreadItem: TThreadItem;
2360 begin
2361         ThreadItem := GikoForm.GetActiveContent(True);
2362         if ThreadItem = nil then Exit;
2363         ThreadItem.Kokomade := -1;
2364         GikoForm.ActiveContent.Thread.ScrollTop :=
2365                 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2366         GikoForm.ActiveContent.Repaint := true;
2367         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2368         //INFO 2005/11/19 \88ê\92U\89B\95Á\81A\95K\97v\82È\82çGikoForm\82Ì\95û\82É\83\81\83\\83b\83h\82ð\92Ç\89Á\82·\82é
2369         //Application.ProcessMessages;
2370 end;
2371 // *************************************************************************
2372 //! \83R\83R\82É\83\8c\83X
2373 // *************************************************************************
2374 procedure TGikoDM.KokoResActionExecute(Sender: TObject);
2375 var
2376         Editor: TEditorForm;
2377         Item: TThreadItem;
2378         Number: Integer;
2379 begin
2380         Number := GikoForm.KokoPopupMenu.Tag;
2381         if Number = 0 then Exit;
2382         Item := GikoForm.GetActiveContent(True);
2383         if Item = nil then Exit;
2384
2385         Editor := TEditorForm.Create(GikoForm);
2386         Editor.SetThreadItem(Item);
2387         Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
2388         Editor.Show;
2389         Editor.BodyEdit.SetFocus;
2390 end;
2391 // *************************************************************************
2392 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2393 // *************************************************************************
2394 procedure TGikoDM.KoreCopyExecute(Sender: TObject);
2395 begin
2396         GikoForm.KonoresCopy(GikoForm.KokoPopupMenu.Tag, true);
2397 end;
2398 // *************************************************************************
2399 //! \91I\91ð\82µ\82½\83\8c\83X\82ð\83R\83s\81[\82·\82é
2400 // *************************************************************************
2401 procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject);
2402 const
2403     LIMIT = 20;
2404 var
2405         ThreadItem : TThreadItem;
2406         No, count: Integer;
2407         body : string;
2408         limited: Integer;
2409 begin
2410         No := GikoForm.KokoPopupMenu.Tag;
2411         if No = 0 then Exit;
2412         ThreadItem := GikoForm.GetActiveContent(True);
2413         if ThreadItem = nil then Exit;
2414         count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread);
2415         limited := LIMIT;
2416     if not (GikoSys.Setting.LimitResCountMessage) then begin
2417         limited := -1;
2418     end else if count > LIMIT then begin
2419                 if ( GikoUtil.MsgBox(GikoForm.Handle,
2420                                 IntToStr(LIMIT) + '\8cÂ\88È\8fã\82 \82è\82Ü\82·\82ª\81A\82·\82×\82Ä\95\\8e¦\82µ\82Ü\82·\82©\81H',
2421                                 'ID\83|\83b\83v\83A\83b\83v\8cx\8d\90',
2422                                 MB_YESNO or MB_ICONQUESTION) = ID_YES ) then begin
2423             limited := -1;
2424         end;
2425         end;
2426         body := GikoSys.GetSameIDResAnchor(No, ThreadItem, limited);
2427         GikoForm.ActiveContent.IDAnchorPopup(body);
2428 end;
2429 // *************************************************************************
2430 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\92Ê\8fí\81j
2431 // *************************************************************************
2432 procedure TGikoDM.IndividualAbon1ActionExecute(Sender: TObject);
2433 begin
2434         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 1);
2435 end;
2436 // *************************************************************************
2437 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\81@\81i\93§\96¾\81j
2438 // *************************************************************************
2439 procedure TGikoDM.IndividualAbon0ActionExecute(Sender: TObject);
2440 begin
2441         GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 0);
2442 end;
2443 // *************************************************************************
2444 //! \82±\82Ì\83\8c\83X\82 \82Ú\81`\82ñ\89ð\8f\9c
2445 // *************************************************************************
2446 procedure TGikoDM.AntiIndividualAbonActionExecute(Sender: TObject);
2447 var
2448         IndividualForm :TIndividualAbonForm;
2449         ThreadItem : TThreadItem;
2450         msg : String;
2451         ReadList                : TStringList;
2452         wordCount               : TWordCount;
2453 begin
2454         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2455         try
2456                 ThreadItem := GikoForm.GetActiveContent(True);
2457                 ThreadItem.ScrollTop :=
2458                         OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2459                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2460                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2461                                 ReadList                := TStringList.Create;
2462                                 wordCount               := TWordCount.Create;
2463                                 try
2464 {$IFDEF SPAM_FILTER_ENABLED}
2465                                         // \83X\83p\83\80\82ð\89ð\8f\9c
2466                                         ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2467                                         GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
2468                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2469                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2470 {$ENDIF}
2471                                         if IndividualForm.DeleteNG(GikoForm.KokoPopupMenu.Tag) then begin
2472                                                 GikoForm.ActiveContent.Repaint := true;
2473                                                 GikoForm.InsertBrowserTab( ThreadItem, True );
2474                                         end;
2475                                 finally
2476                                         wordCount.Free;
2477                                         ReadList.Free;
2478                                 end;
2479                         end else begin
2480                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2481                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2482                         end;
2483                 end;
2484         finally
2485                 IndividualForm.Release;
2486         end;
2487 end;
2488 // *************************************************************************
2489 //! \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
2490 // *************************************************************************
2491 procedure TGikoDM.AntiIndividualAbonDlgActionExecute(Sender: TObject);
2492 var
2493         IndividualForm :TIndividualAbonForm;
2494         ThreadItem : TThreadItem;
2495         msg : String;
2496         ReadList                : TStringList;
2497         wordCount               : TWordCount;
2498 {$IFDEF SPAM_FILTER_ENABLED}
2499         i : Integer;
2500 {$ENDIF}
2501 begin
2502         IndividualForm := TIndividualAbonForm.Create(GikoForm);
2503         try
2504                 ThreadItem := GikoForm.GetActiveContent(True);
2505                 ThreadItem.ScrollTop :=
2506                         OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2507                 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2508                         if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2509                                 if (IndividualForm.ShowModal = mrOK) then begin
2510                                         ReadList                := TStringList.Create;
2511                                         wordCount               := TWordCount.Create;
2512                                         try
2513 {$IFDEF SPAM_FILTER_ENABLED}
2514                                                 // \83X\83p\83\80\82ð\89ð\8f\9c
2515                                                 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2516                                                 for i := 0 to IndividualForm.DeleteList.Count - 1 do begin
2517                                                         GikoSys.SpamCountWord( ReadList[ StrToInt(IndividualForm.DeleteList[i]) - 1 ], wordCount );
2518                                                         GikoSys.SpamForget( wordCount, True );  // \83X\83p\83\80\82ð\89ð\8f\9c
2519                                                         GikoSys.SpamLearn( wordCount, False );  // \83n\83\80\82É\90Ý\92è
2520                                                 end;
2521 {$ENDIF}
2522                                                 if IndividualForm.FRepaint then begin
2523                                                         GikoForm.ActiveContent.Repaint := true;
2524                                                         GikoForm.InsertBrowserTab( ThreadItem, True );
2525                                                 end;
2526                                         finally
2527                                                 wordCount.Free;
2528                                                 ReadList.Free;
2529                                         end;
2530                                 end;
2531                         end else begin
2532                                 msg := '\82±\82Ì\83X\83\8c\83b\83h\82Å\82Í\8cÂ\95Ê\82 \82Ú\81`\82ñ\82ð\8ds\82Á\82Ä\82Ü\82¹\82ñ';
2533                                 MsgBox(GikoForm.Handle, msg, '\83\81\83b\83Z\81[\83W', MB_OK);
2534                         end;
2535                 end;
2536         finally
2537                 IndividualForm.Release;
2538         end;
2539 end;
2540 // *************************************************************************
2541 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\92Ê\8fí
2542 // *************************************************************************
2543 procedure TGikoDM.IndividualAbonID1ActionExecute(Sender: TObject);
2544 begin
2545         GikoForm.IndividualAbonID(1);
2546 end;
2547 // *************************************************************************
2548 //! \82±\82ÌID\82 \82Ú\81`\82ñ\81@\93§\96¾
2549 // *************************************************************************
2550 procedure TGikoDM.IndividualAbonID0ActionExecute(Sender: TObject);
2551 begin
2552         GikoForm.IndividualAbonID(0);
2553 end;
2554 ////////////////////////////////\83u\83\89\83E\83U\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2555 // *************************************************************************
2556 //! \83M\83R\83i\83r\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2557 // *************************************************************************
2558 procedure TGikoDM.GikoNaviWebPageActionExecute(Sender: TObject);
2559 begin
2560         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_GIKONAVI, gbtAuto);
2561 end;
2562 // *************************************************************************
2563 //! \83\82\83i\83W\83\89\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2564 // *************************************************************************
2565 procedure TGikoDM.MonazillaWebPageActionExecute(Sender: TObject);
2566 begin
2567         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_MONAZILLA, gbtAuto);
2568 end;
2569 // *************************************************************************
2570 //! \82Q\82¿\82á\82ñ\82Ë\82é\83g\83b\83v\83y\81[\83W\82ð\95\\8e¦\82·\82é
2571 // *************************************************************************
2572 procedure TGikoDM.BBS2chWebPageActionExecute(Sender: TObject);
2573 begin
2574         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_2ch, gbtAuto);
2575 end;
2576 // *************************************************************************
2577 //! \83M\83R\83i\83r\82Ì\83t\83H\83\8b\83_\82ð\8aJ\82­
2578 // *************************************************************************
2579 procedure TGikoDM.GikoFolderOpenActionExecute(Sender: TObject);
2580 begin
2581         GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
2582 end;
2583 // *************************************************************************
2584 //! \83o\81[\83W\83\87\83\93\8fî\95ñ\82ð\95\\8e¦\82·\82é
2585 // *************************************************************************
2586 procedure TGikoDM.AboutActionExecute(Sender: TObject);
2587 var
2588         Dlg: TAboutDialog;
2589 begin
2590         Dlg := TAboutDialog.Create(GikoForm);
2591         try
2592                 Dlg.ShowModal;
2593         finally
2594                 Dlg.Release;
2595         end;
2596 end;
2597 // *************************************************************************
2598 //! \83M\83R\83i\83r\82Ì\83w\83\8b\83v\82ð\95\\8e¦\82·\82é
2599 // *************************************************************************
2600 procedure TGikoDM.GikoHelpActionExecute(Sender: TObject);
2601 var
2602         FileName: string;
2603 begin
2604         FileName := GikoSys.GetAppDir + 'batahlp.chm';
2605         if not FileExists(FileName) then begin
2606                 MsgBox(
2607                         GikoForm.Handle,
2608                         '\83w\83\8b\83v\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ\82Å\82µ\82½' + #13#10 +
2609                         '\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 +
2610                         '\83w\83\8b\83v\82Í\83M\83R\83i\83r\82Ì\83T\83C\83g\82É\92u\82¢\82Ä\82 \82è\82Ü\82·',
2611                         MSG_ERROR,
2612                         MB_ICONSTOP);
2613                 Exit;
2614         end;
2615         ShellExecute(GikoForm.Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
2616 end;
2617 // *************************************************************************
2618 //! \83M\83R\83i\83rWiki\82Ì\83E\83F\83u\83T\83C\83g\82ð\95\\8e¦\82·\82é
2619 // *************************************************************************
2620 procedure TGikoDM.WikiFAQWebPageActionExecute(Sender: TObject);
2621 begin
2622         GikoSys.OpenBrowser(PROTOCOL_HTTP + URL_Wiki, gbtAuto);
2623 end;
2624 ////////////////////////////////\83w\83\8b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2625 // *************************************************************************
2626 //! \83\8a\83X\83g\94Ô\8d\86\95\\8e¦\82ð\95Ï\8dX\82·\82é
2627 // *************************************************************************
2628 procedure TGikoDM.ListNumberVisibleActionExecute(Sender: TObject);
2629 begin
2630         GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
2631         GikoForm.ListView.Refresh;
2632 end;
2633 // *************************************************************************
2634 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82é
2635 // *************************************************************************
2636 procedure TGikoDM.UpFolderActionExecute(Sender: TObject);
2637 begin
2638         if GikoForm.GetActiveList is TBoard then begin
2639                 if TBoard(GikoForm.GetActiveList).ParentCategory <> nil then
2640                         GikoForm.SelectTreeNode(TBoard(GikoForm.GetActiveList).ParentCategory, True);
2641         end else if GikoForm.GetActiveList is TCategory then begin
2642                 GikoForm.SelectTreeNode(TCategory(GikoForm.GetActiveList).ParenTBBS, True);
2643         end;
2644 end;
2645 // *************************************************************************
2646 //! \8fã\88Ê\83t\83H\83\8b\83_\82É\88Ú\93®\82·\82éUpDate\83C\83x\83\93\83g
2647 // *************************************************************************
2648 procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
2649 begin
2650         UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS);
2651 end;
2652 // *************************************************************************
2653 //! \95\\8e¦\81@\95\\8e¦\83\8a\83X\83g\82Ì\83\82\81[\83h\95Ï\8dX
2654 // *************************************************************************
2655 procedure TGikoDM.IconStyleExecute(Sender: TObject);
2656 begin
2657         case GikoForm.ListView.ViewStyle of
2658                 vsIcon: SmallIconAction.Execute;
2659                 vsSmallIcon: ListIconAction.Execute;
2660                 vsList: DetailIconAction.Execute;
2661                 vsReport: LargeIconAction.Execute;
2662         end;
2663 end;
2664 // *************************************************************************
2665 //! SelectComboBox\82Ì\92l\82ð\83N\83\8a\83A\82·\82é
2666 // *************************************************************************
2667 procedure TGikoDM.ClearSelectComboBox;
2668 begin
2669         if GikoForm.SelectComboBoxPanel.Visible then begin
2670                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2671                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2672                 GikoForm.ListView.SetFocus;
2673         end;
2674 end;
2675 // *************************************************************************
2676 //! \83X\83\8c\83b\83h\82ð\82·\82×\82Ä\95\\8e¦\82·\82é
2677 // *************************************************************************
2678 procedure TGikoDM.AllItemActionExecute(Sender: TObject);
2679 begin
2680         try
2681                 if GikoForm.ViewType <> gvtAll then
2682                         GikoForm.SetListViewType(gvtAll);
2683                 GikoSys.Setting.ThreadRange := gtrAll;
2684                 AllItemAction.Checked           := True;
2685                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2686                 GikoForm.ModifySelectList;
2687                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2688                 ClearSelectComboBox;
2689         except
2690         end;
2691 end;
2692 // *************************************************************************
2693 //! \83\8d\83O\97L\82è\83X\83\8c\83b\83h\82Ì\82Ý\82ð\95\\8e¦\82·\82é
2694 // *************************************************************************
2695 procedure TGikoDM.LogItemActionExecute(Sender: TObject);
2696 begin
2697         try
2698                 if GikoForm.ViewType <> gvtLog then
2699                         GikoForm.SetListViewType(gvtLog);
2700                 GikoSys.Setting.ThreadRange     := gtrLog;
2701                 LogItemAction.Checked := True;
2702                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2703                 GikoForm.ModifySelectList;
2704                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2705                 ClearSelectComboBox;
2706         except
2707         end;
2708 end;
2709 // *************************************************************************
2710 //! \90V\92\85\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2711 // *************************************************************************
2712 procedure TGikoDM.NewItemActionExecute(Sender: TObject);
2713 begin
2714         try
2715
2716                 if GikoForm.ViewType <> gvtNew then
2717                         GikoForm.SetListViewType(gvtNew);
2718                 GikoSys.Setting.ThreadRange     := gtrNew;
2719                 NewItemAction.Checked := True;
2720                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2721                 GikoForm.ModifySelectList;
2722                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2723                 ClearSelectComboBox;
2724         except
2725         end;
2726 end;
2727 // *************************************************************************
2728 //! DAT\97\8e\82¿\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2729 // *************************************************************************
2730 procedure TGikoDM.ArchiveItemActionExecute(Sender: TObject);
2731 begin
2732         try
2733                 if GikoForm.ViewType <> gvtArch then
2734                         GikoForm.SetListViewType(gvtArch);
2735                 GikoSys.Setting.ThreadRange     := gtrArch;
2736                 ArchiveItemAction.Checked := True;
2737                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2738                 GikoForm.ModifySelectList;
2739                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2740                 ClearSelectComboBox;
2741         except
2742         end;
2743 end;
2744 // *************************************************************************
2745 //! \90\91\83X\83\8c\83b\83h\82Ì\82Ý\95\\8e¦\82·\82é
2746 // *************************************************************************
2747 procedure TGikoDM.LiveItemActionExecute(Sender: TObject);
2748 begin
2749         try
2750                 if GikoForm.ViewType <> gvtLive then
2751                         GikoForm.SetListViewType(gvtLive);
2752                 GikoSys.Setting.ThreadRange     := gtrLive;
2753                 LiveItemAction.Checked := True;
2754                 // SelectComboBox \82Ì\97\9a\97ð\82ð\8dX\90V\82µ\82Ä\82¨\82­
2755                 GikoForm.ModifySelectList;
2756                 // SelectComboBox \82Ì\92l\82ð\83N\83\8a\83A
2757                 ClearSelectComboBox;
2758         except
2759         end;
2760 end;
2761
2762 // *************************************************************************
2763 //! \83X\83\8c\83b\83h\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
2764 // *************************************************************************
2765 procedure TGikoDM.ThreadRangeActionExecute(Sender: TObject);
2766 begin
2767         case GikoSys.Setting.ThreadRange of
2768         gtrAll: AllItemAction.Execute;
2769         gtrLog: LogItemAction.Execute;
2770         gtrNew: NewItemAction.Execute;
2771         gtrArch: ArchiveItemAction.Execute;
2772         gtrLive: LiveItemAction.Execute;
2773         end;
2774 end;
2775 // *************************************************************************
2776 //! \83X\83\8c\83b\83h\8di\8d\9e\82Ý\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
2777 // *************************************************************************
2778 procedure TGikoDM.SelectItemActionExecute(Sender: TObject);
2779 var
2780         idx: Integer;
2781         Dlg: TListSelectDialog;
2782 begin
2783         try
2784                 if GikoForm.SelectComboBoxPanel.Visible then begin
2785                         if GikoForm.SelectComboBoxPanel.Left + GikoForm.SelectComboBoxPanel.Width < GikoForm.ListToolBar.Width then begin
2786                                 // SelectComboBox \82ª\82 \82é\8fê\8d\87\82Í\83t\83H\81[\83J\83X\82ð\88Ú\82·
2787                                 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
2788                                         if GikoSys.Setting.ListWidthState = glsMax then
2789                                                 BrowserMinAction.Execute;
2790                                 end else begin
2791                                         if GikoSys.Setting.ListHeightState = glsMax then
2792                                                 BrowserMinAction.Execute;
2793                                 end;
2794                                 GikoForm.SelectComboBox.SetFocus;
2795                                 exit;
2796                         end;
2797                 end;
2798         except
2799         end;
2800
2801         if GikoForm.SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
2802                 GikoForm.SelectComboBox.Text := '';
2803                 GikoForm.SelectComboBox.Color := clWindow;
2804         end;
2805
2806         AllItemAction.Checked := False;
2807         LogItemAction.Checked := False;
2808         NewItemAction.Checked := False;
2809         //SelectItemAction.Checked := True;
2810         GikoForm.ModifySelectList;
2811         Dlg := TListSelectDialog.Create(GikoForm);
2812         try
2813                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
2814                 Dlg.SelectComboBox.Text := GikoForm.SelectComboBox.Text;
2815                 Dlg.ShowModal;
2816                 if Dlg.ModalResult = mrCancel then begin
2817                         if Length( GikoForm.SelectComboBox.Text ) = 0 then begin
2818                                 AllItemAction.Checked := True;
2819                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2820                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2821                         end;
2822
2823                         if GikoForm.GetActiveList is TBoard then
2824                                 GikoForm.SetListViewType(gvtUser, TBoard(GikoForm.GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
2825                 end else begin
2826                         idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
2827                         if idx <> -1 then
2828                                 GikoSys.Setting.SelectTextList.Delete(idx);
2829                         GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
2830                         while Dlg.SelectComboBox.Items.Count > 100 do begin
2831                                 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
2832                         end;
2833
2834                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
2835                                 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2836                                 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2837                         end else begin
2838                                 GikoForm.SelectComboBox.Text := Dlg.SelectComboBox.Text;
2839                                 GikoForm.SelectComboBox.Color := clWindow;
2840                         end;
2841                         GikoForm.SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
2842                 end;
2843         finally
2844                 Dlg.Release;
2845         end;
2846 end;
2847 // *************************************************************************
2848 //! \90V\83X\83\8c\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
2849 // *************************************************************************
2850 procedure TGikoDM.ThreadEditorActionExecute(Sender: TObject);
2851 var
2852         Editor: TEditorForm;
2853 begin
2854         if not (GikoForm.GetActiveList is TBoard) then
2855                 Exit;
2856         Editor := TEditorForm.Create(GikoForm);
2857         Editor.SetBoard(TBoard(GikoForm.GetActiveList));
2858         Editor.Show;
2859         Editor.BodyEdit.SetFocus;
2860 end;
2861 // *************************************************************************
2862 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
2863 // *************************************************************************
2864 procedure TGikoDM.BoardIEActionExecute(Sender: TObject);
2865 var
2866         URL: string;
2867 begin
2868         if GikoForm.GetActiveList is TBoard then begin
2869                 URL := TBoard(GikoForm.GetActiveList).URL;
2870                 GikoSys.OpenBrowser(URL, gbtAuto);
2871         end;
2872 end;
2873 // *************************************************************************
2874 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
2875 // *************************************************************************
2876 procedure TGikoDM.SelectItemURLCopyActionExecute(Sender: TObject);
2877 var
2878         List: TList;
2879         i: Integer;
2880         s: string;
2881 begin
2882         s := '';
2883         List := TList.Create;
2884         try
2885                 GikoForm.SelectListItem(List);
2886                 for i := 0 to List.Count - 1 do begin
2887                         if TObject(List[i]) is TBoard then
2888                                 s := s + TBoard(List[i]).URL + #13#10
2889                         else if TObject(List[i]) is TThreadItem then
2890                                 s := s + TThreadItem(List[i]).URL + #13#10;
2891                 end;
2892                 if s <> '' then
2893                         Clipboard.AsText := s;
2894         finally
2895                 List.Free;
2896         end;
2897 end;
2898 // *************************************************************************
2899 //! \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
2900 // *************************************************************************
2901 procedure TGikoDM.SelectItemURLCopyActionUpdate(Sender: TObject);
2902 begin
2903         if ((GikoForm.GetActiveList is TBoard) or
2904                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2905                 TAction(Sender).Enabled := True
2906         else
2907                 TAction(Sender).Enabled := False;
2908 end;
2909 // *************************************************************************
2910 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
2911 // *************************************************************************
2912 procedure TGikoDM.SelectItemNameCopyActionExecute(Sender: TObject);
2913 var
2914         List: TList;
2915         i: Integer;
2916         s: string;
2917 begin
2918         s := '';
2919         List := TList.Create;
2920         try
2921                 GikoForm.SelectListItem(List);
2922                 for i := 0 to List.Count - 1 do begin
2923             if TObject(List[i]) is TCategory then
2924                 s := s + TCategory(List[i]).Title + #13#10
2925                         else if TObject(List[i]) is TBoard then
2926                                 s := s + TBoard(List[i]).Title + #13#10
2927                         else if TObject(List[i]) is TThreadItem then
2928                                 s := s + TThreadItem(List[i]).Title + #13#10;
2929                 end;
2930                 if s <> '' then
2931                         Clipboard.AsText := s;
2932         finally
2933                 List.Free;
2934         end;
2935 end;
2936 // *************************************************************************
2937 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82éUpdate\83C\83x\83\93\83g
2938 // *************************************************************************
2939 procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject);
2940 begin
2941         if ((GikoForm.GetActiveList is TBBS) or
2942         (GikoForm.GetActiveList is TBoard) or
2943                 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2944                 TAction(Sender).Enabled := True
2945         else
2946                 TAction(Sender).Enabled := False;
2947 end;
2948 // *************************************************************************
2949 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
2950 // *************************************************************************
2951 procedure TGikoDM.SelectItemNameURLCopyActionExecute(Sender: TObject);
2952 var
2953         List: TList;
2954         i: Integer;
2955         s: string;
2956 begin
2957         s := '';
2958         List := TList.Create;
2959         try
2960                 GikoForm.SelectListItem(List);
2961                 for i := 0 to List.Count - 1 do begin
2962                         if TObject(List[i]) is TBoard then
2963                                 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
2964                         else if TObject(List[i]) is TThreadItem then
2965                                 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
2966                 end;
2967                 if s <> '' then
2968                         Clipboard.AsText := s;
2969         finally
2970                 List.Free;
2971         end;
2972 end;
2973 // *************************************************************************
2974 //! \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é
2975 // *************************************************************************
2976 procedure TGikoDM.SelectListReloadActionExecute(Sender: TObject);
2977 var
2978         i: Integer;
2979         List: TList;
2980         msg: string;
2981         shiftDown: Boolean;
2982 begin
2983         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
2984     GikoForm.ActiveListColumnSave;
2985         if GikoForm.GetActiveList is TCategory then begin
2986                 List := TList.Create;
2987                 try
2988                         GikoForm.SelectListItem(List);
2989                         if List.Count > 5 then begin
2990                                 msg := '5\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
2991                                                  + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
2992                                 MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
2993                                 Exit;
2994                         end;
2995                         for i := 0 to List.Count - 1 do begin
2996                                 if TObject(List[i]) is TBoard then
2997                                         GikoForm.DownloadList(TBoard(List[i]), shiftDown);
2998                         end;
2999                 finally
3000                         List.Free;
3001                 end;
3002         end else if GikoForm.GetActiveList is TBoard then begin
3003                 GikoForm.DownloadList(TBoard(GikoForm.GetActiveList), shiftDown);
3004         end;
3005 end;
3006 // *************************************************************************
3007 //! \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
3008 // *************************************************************************
3009 procedure TGikoDM.SelectListReloadActionUpdate(Sender: TObject);
3010 begin
3011         if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3012                 TAction(Sender).Enabled := True
3013         else if GikoForm.GetActiveList is TBoard then
3014                 TAction(Sender).Enabled := True
3015         else
3016                 TAction(Sender).Enabled := False;
3017 end;
3018 // *************************************************************************
3019 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
3020 // *************************************************************************
3021 procedure TGikoDM.SelectThreadReloadActionExecute(Sender: TObject);
3022 var
3023         List: TList;
3024         i: Integer;
3025         msg: string;
3026         shiftDown: Boolean;
3027 begin
3028         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
3029         List := TList.Create;
3030         try
3031                 GikoForm.SelectListItem(List);
3032                 if List.Count > 10 then begin
3033                         msg := '10\8cÂ\88È\8fã\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ' + #13#10
3034                                          + '\82Q\82¿\82á\82ñ\82Ë\82é\95\89\89×\8cy\8c¸\82É\82²\8b¦\97Í\82­\82¾\82³\82¢';
3035                         MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_ICONEXCLAMATION);
3036                         Exit;
3037                 end;
3038                 for i := 0 to List.Count - 1 do begin
3039                         if TObject(List[i]) is TThreadItem then
3040                                 GikoForm.DownloadContent(TThreadItem(List[i]), shiftDown);
3041                 end;
3042         finally
3043                 List.Free;
3044         end;
3045 end;
3046 // *************************************************************************
3047 //! \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
3048 // *************************************************************************
3049 procedure TGikoDM.SelectThreadReloadActionUpdate(Sender: TObject);
3050 begin
3051         TAction(Sender).Enabled :=
3052                 (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0);
3053 end;
3054 // *************************************************************************
3055 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñ
3056 // *************************************************************************
3057 procedure TGikoDM.SelectReservActionExecute(Sender: TObject);
3058 begin
3059         //INFO 2005/11/19 \83_\83~\81[\81H\81@by \82à\82\82ã
3060         // \82±\82Ì\83R\83\81\83\93\83g\8dí\8f\9c\82µ\82Ä\82Í\91Ê\96Ú
3061 end;
3062 // *************************************************************************
3063 //! \83X\83\8c\83b\83h\8f\84\89ñ\97\\96ñUpdate\83C\83x\83\93\83g
3064 // *************************************************************************
3065 procedure TGikoDM.SelectReservActionUpdate(Sender: TObject);
3066 var
3067         i: Integer;
3068         List: TList;
3069 begin
3070         if (GikoForm.GetActiveList is TBoard) and (GikoForm.ListView.SelCount > 0) then begin
3071                 List := TList.Create;
3072                 try
3073                         GikoForm.SelectListItem(List);
3074                         for i := 0 to List.Count - 1 do begin
3075                                 if TObject(List[i]) is TThreadItem then begin
3076                                         if TThreadItem(List[i]).IsLogFile then begin
3077                                                 SelectReservAction.Enabled := True;
3078                                                 Exit;
3079                                         end;
3080                                 end;
3081                         end;
3082                         SelectReservAction.Enabled := False;
3083                 finally
3084                         List.Free;
3085                 end;
3086         end else if (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0) then
3087                 SelectReservAction.Enabled := True
3088         else
3089                 SelectReservAction.Enabled := False;
3090 end;
3091 // *************************************************************************
3092 //! \91I\91ð\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82É\90V\82µ\82¢\96¼\91O\82Å\8f\84\89ñ\97\\96ñ
3093 // *************************************************************************
3094 procedure TGikoDM.SelectNewRoundNameExecute(Sender: TObject);
3095 var
3096         s: string;
3097         Dlg: TRoundNameDialog;
3098                 cnt: Integer;
3099
3100 begin
3101         //\8cÄ\82Ñ\8fo\82µ\8c³\82ª\81ATAction\82ÅListView\82É\91I\91ð\82ª\82¢\82È\82¯\82ê\82Î\81AEXIT\82·\82é
3102         if (Sender is TAction) and (GikoForm.ListView.Selected = nil) then
3103                 Exit;
3104
3105         //\93o\98^\8fã\8cÀ\83`\83F\83b\83N
3106         cnt := RoundList.Count[grtBoard];
3107         cnt := cnt + RoundList.Count[grtItem];
3108         if cnt > 500 then begin
3109                         MsgBox(GikoForm.Handle, '\8f\84\89ñ\82Í500\88È\8fã\93o\98^\82Å\82«\82Ü\82¹\82ñ', MSG_ERROR, MB_OK or MB_ICONSTOP);
3110                         Exit;
3111         end;
3112
3113         Dlg := TRoundNameDialog.Create(GikoForm);
3114         try
3115                 Dlg.ShowModal;
3116                 if Dlg.ModalResult <> mrCancel then begin
3117                         s := Trim(Dlg.RoundNameEdit.Text);
3118                         if (Sender is TMenuItem) then begin
3119                                 GikoForm.SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
3120                         end else if (Sender is TAction) then begin
3121                                 if (GikoForm.ListView.Selected <> nil) then begin
3122                                         if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3123                                                 GikoForm.SetSelectItemRound(True, s,
3124                                                         TThreadItem(GikoForm.ListView.Selected.Data).Title);
3125                                         end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3126                                                 GikoForm.SetSelectItemRound(True, s,
3127                                                         TBoard(GikoForm.ListView.Selected.Data).Title);
3128                                         end;
3129                                 end;
3130                         end;
3131                         GikoForm.ListView.Refresh;
3132                 end;
3133         finally
3134                 Dlg.Free;
3135         end;
3136 end;
3137 // *************************************************************************
3138 //! \91I\91ð\82³\82ê\82Ä\82¢\83X\83\8c\83b\83h\82Ì\8f\84\89ñ\82ð\8dí\8f\9c\82·\82é
3139 // *************************************************************************
3140 procedure TGikoDM.SelectDeleteRoundExecute(Sender: TObject);
3141 var
3142         s : String;
3143 begin
3144         if (Sender is TMenuItem) then begin
3145                 try
3146                         GikoForm.SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
3147                 except
3148                 end;
3149         end else if (Sender is TAction) then begin
3150                 try
3151                         if GikoForm.ListView.Selected <> nil then begin
3152                                 if (TObject(GikoForm.ListView.Selected.Data) is TThreadItem) then begin
3153                                         s := TThreadItem(GikoForm.ListView.Selected.Data).Title;
3154                                 end else if (TObject(GikoForm.ListView.Selected.Data) is TBoard) then begin
3155                                         s := TBoard(GikoForm.ListView.Selected.Data).Title;
3156                                 end;
3157                                 GikoForm.SetSelectItemRound(False, '', s);
3158
3159                         end;
3160                 except
3161                 end;
3162         end;
3163         GikoForm.ListView.Refresh;
3164 end;
3165 // *************************************************************************
3166 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
3167 // *************************************************************************
3168 procedure TGikoDM.BoardFavoriteAddActionExecute(Sender: TObject);
3169 begin
3170         if TObject(GikoForm.ListView.Selected.Data) is TBoard then
3171                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
3172 end;
3173 // *************************************************************************
3174 //! \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
3175 // *************************************************************************
3176 procedure TGikoDM.BoardFavoriteAddActionUpdate(Sender: TObject);
3177 begin
3178         BoardFavoriteAddAction.Enabled :=
3179                 (GikoForm.GetActiveList is TCategory) and (GikoForm.ListView.SelCount > 0);
3180 end;
3181 // *************************************************************************
3182 //! Explorer\82ÅLog\83t\83H\83\8b\83_\82ð\8aJ\82­
3183 // *************************************************************************
3184 procedure TGikoDM.LogFolderOpenActionExecute(Sender: TObject);
3185 var
3186         List: TList;
3187 begin
3188         if ((GikoSys.Setting.ListOrientation = gloVertical) and
3189                 (GikoSys.Setting.ListHeightState = glsMax)) or
3190                 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
3191                 (GikoSys.Setting.ListWidthState = glsMax))      then begin
3192                 if(GikoForm.GetActiveContent <> nil) then begin
3193                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GikoForm.GetActiveContent.FilePath) + '"');
3194                 end;
3195         end else if GikoForm.GetActiveList is TCategory then begin
3196                 List := TList.Create;
3197                 try
3198                         GikoForm.SelectListItem(List);
3199                         GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
3200                 finally
3201                         List.Free;
3202                 end;
3203         end else if GikoForm.GetActiveList is TBoard then begin
3204                 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GikoForm.GetActiveList).FilePath) + '"');
3205         end;
3206
3207 end;
3208 // *************************************************************************
3209 //! 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Ê
3210 // *************************************************************************
3211 procedure TGikoDM.LogFolderOpenActionUpdate(Sender: TObject);
3212 begin
3213         if ((GikoForm.GetActiveList is TBoard) or (GikoForm.GetActiveList is TCategory))
3214                 and (GikoForm.ListView.SelCount > 0) then
3215                 TAction(Sender).Enabled := True
3216         else
3217                 TAction(Sender).Enabled := False;
3218 end;
3219 // *************************************************************************
3220 //! Header.txt\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
3221 // *************************************************************************
3222 procedure TGikoDM.BrowsBoradHeadActionExecute(Sender: TObject);
3223 var
3224         RefURL, URL : string;
3225         List : TList;
3226 begin
3227         RefURL := '';
3228         if GikoForm.GetActiveList is TCategory then begin
3229                 List := TList.Create;
3230                 try
3231                         GikoForm.SelectListItem(List);
3232                         RefURL := TBoard(List[0]).URL;
3233                 finally
3234                         List.Free;
3235                 end;
3236         end else if GikoForm.GetActiveList is TBoard then begin
3237                 RefURL := TBoard(GikoForm.GetActiveList).URL
3238         end;
3239         if RefURL <> '' then begin
3240                 if RefURL[Length(RefURL)] <> '/' then
3241                         URL     := RefURL + '/' + 'head.txt'
3242                 else
3243                         URL     := RefURL + 'head.txt';
3244
3245                 GikoForm.MoveToURL(URL);
3246         end else begin
3247                 ShowMessage('\94Â\82ð\93Á\92è\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B');
3248         end;
3249
3250 end;
3251 // *************************************************************************
3252 //! \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é
3253 // *************************************************************************
3254 function TGikoDM.GetSortProperties(List: TObject;
3255  var vSortOrder: Boolean): Boolean;
3256 begin
3257         Result := True;
3258         if (List <> nil) then begin
3259                 if (List is TBBS) then begin
3260                         vSortOrder := GikoSys.Setting.BBSSortOrder;
3261                 end else if (List is TCategory) then begin
3262                         vSortOrder := GikoSys.Setting.CategorySortOrder;
3263                 end else if (List is TBoard) then begin
3264                         vSortOrder := GikoSys.Setting.BoardSortOrder;
3265                 end else begin
3266                         Result := False;
3267                 end;
3268         end else begin
3269                 Result := False;
3270         end;
3271 end;
3272 // *************************************************************************
3273 //! \8c»\8dÝ\82Ì\83J\83\89\83\80\82ð\83\\81[\83g\82·\82é
3274 // *************************************************************************
3275 procedure TGikoDM.SortActiveColumnActionExecute(Sender: TObject);
3276 var
3277         i       : Integer;
3278         so : boolean;
3279 begin
3280         if GetSortProperties(GikoForm.GetActiveList, so) then begin
3281                 for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3282                         if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3283                                 (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3284                                 so := not so;
3285                                 TListViewUtils.ListViewSort(nil, GikoForm.ListView,
3286                                          GikoForm.ListView.Column[ i ], ListNumberVisibleAction.Checked,
3287                                          so);
3288                                 break;
3289                         end;
3290                 end;
3291         end;
3292 end;
3293 // *************************************************************************
3294 //! \89E\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3295 // *************************************************************************
3296 procedure TGikoDM.SortNextColumnActionExecute(Sender: TObject);
3297 var
3298         i, id   : Integer;
3299 begin
3300         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3301                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3302                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3303                         id := i + 1;
3304                         if id > GikoForm.ListView.Columns.Count - 1 then
3305                                 id := 0;
3306                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3307                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3308                                 id = 0);
3309                         break;
3310                 end;
3311         end;
3312 end;
3313 // *************************************************************************
3314 //! \8d\97×\82Ì\83J\83\89\83\80\82ð\83\\81[\83g
3315 // *************************************************************************
3316 procedure TGikoDM.SortPrevColumnActionExecute(Sender: TObject);
3317 var
3318         i, id   : Integer;
3319 begin
3320         for i := 0 to GikoForm.ListView.Columns.Count - 1 do begin
3321                 if (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT1) or
3322                         (GikoForm.ListView.Column[ i ].ImageIndex = ITEM_ICON_SORT2) then begin
3323                         id := i - 1;
3324                         if id < 0 then
3325                                 id := GikoForm.ListView.Columns.Count - 1;
3326                         TListViewUtils.ListViewSort( nil, GikoForm.ListView,
3327                                 GikoForm.ListView.Column[ id ], ListNumberVisibleAction.Checked,
3328                                 id = 0);
3329                         break;
3330                 end;
3331         end;
3332 end;
3333 ////////////////////////////////\94Â\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3334 // *************************************************************************
3335 //! \95W\8f\80\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3336 // *************************************************************************
3337 procedure TGikoDM.StdToolBarVisibleActionExecute(Sender: TObject);
3338 var
3339         CoolBand: TCoolBand;
3340 begin
3341         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.StdToolBar);
3342         if CoolBand = nil then
3343                 Exit;
3344         GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
3345         CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
3346         GikoForm.StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
3347 end;
3348 // *************************************************************************
3349 //! \83A\83h\83\8c\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3350 // *************************************************************************
3351 procedure TGikoDM.AddressBarVisibleActionExecute(Sender: TObject);
3352 var
3353         CoolBand: TCoolBand;
3354 begin
3355         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.AddressToolBar);
3356         if CoolBand = nil then
3357                 Exit;
3358         GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
3359         CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
3360         GikoForm.AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
3361 end;
3362 // *************************************************************************
3363 //! \83\8a\83\93\83N\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3364 // *************************************************************************
3365 procedure TGikoDM.LinkBarVisibleActionExecute(Sender: TObject);
3366 var
3367         CoolBand: TCoolBand;
3368 begin
3369         CoolBand := GikoForm.GetCoolBand(GikoForm.MainCoolBar, GikoForm.LinkToolBar);
3370         if CoolBand = nil then
3371                 Exit;
3372         GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
3373         CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
3374         GikoForm.LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
3375 end;
3376 // *************************************************************************
3377 //! \83\8a\83X\83g\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3378 // *************************************************************************
3379 procedure TGikoDM.ListToolBarVisibleActionExecute(Sender: TObject);
3380 var
3381         CoolBand: TCoolBand;
3382 begin
3383         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListToolBar);
3384         if CoolBand = nil then
3385                 Exit;
3386         CoolBand.Visible := ListToolBarVisibleAction.Checked;
3387         GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
3388 end;
3389 // *************************************************************************
3390 //! \83\8a\83X\83g\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3391 // *************************************************************************
3392 procedure TGikoDM.ListNameBarVisibleActionExecute(Sender: TObject);
3393 var
3394         CoolBand: TCoolBand;
3395 begin
3396         CoolBand := GikoForm.GetCoolBand(GikoForm.ListCoolBar, GikoForm.ListNameToolBar);
3397         if CoolBand = nil then
3398                 Exit;
3399         CoolBand.Visible := ListNameBarVisibleAction.Checked;
3400         GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
3401 end;
3402 // *************************************************************************
3403 //! \83u\83\89\83E\83U\83c\81[\83\8b\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3404 // *************************************************************************
3405 procedure TGikoDM.BrowserToolBarVisibleActionExecute(Sender: TObject);
3406 var
3407         CoolBand: TCoolBand;
3408 begin
3409         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserToolBar);
3410         if CoolBand = nil then
3411                 Exit;
3412         CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
3413         GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
3414 end;
3415 // *************************************************************************
3416 //! \83u\83\89\83E\83U\96¼\8fÌ\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3417 // *************************************************************************
3418 procedure TGikoDM.BrowserNameBarVisibleActionExecute(Sender: TObject);
3419 var
3420         CoolBand: TCoolBand;
3421 begin
3422         CoolBand := GikoForm.GetCoolBand(GikoForm.BrowserCoolBar, GikoForm.BrowserNameToolBar);
3423         if CoolBand = nil then
3424                 Exit;
3425         CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
3426         GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
3427 end;
3428 // *************************************************************************
3429 //! \83\81\83b\83Z\81[\83W\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3430 // *************************************************************************
3431 procedure TGikoDM.MsgBarVisibleActionExecute(Sender: TObject);
3432 begin
3433         GikoForm.MessageSplitter.Visible := MsgBarVisibleAction.Checked;
3434         GikoForm.MessagePanel.Top :=
3435                 GikoForm.MessageSplitter.Top + GikoForm.MessageSplitter.Height;
3436         GikoForm.MessageSplitter.Top := GikoForm.MessagePanel.Top + 1;
3437         GikoForm.MessagePanel.Visible := MsgBarVisibleAction.Checked;
3438         GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
3439 end;
3440 // *************************************************************************
3441 //! \83\81\83b\83Z\81[\83W\83o\81[\82ð\95Â\82\82é
3442 // *************************************************************************
3443 procedure TGikoDM.MsgBarCloseActionExecute(Sender: TObject);
3444 begin
3445         MsgBarVisibleAction.Execute;
3446 end;
3447 // *************************************************************************
3448 //! \83X\83e\81[\83^\83X\83o\81[\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3449 // *************************************************************************
3450 procedure TGikoDM.StatusBarVisibleActionExecute(Sender: TObject);
3451 begin
3452         GikoForm.StatusBar.Visible := StatusBarVisibleAction.Checked;
3453         GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
3454 end;
3455 // *************************************************************************
3456 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\8cf\8e¦\94Â\82É\82·\82é
3457 // *************************************************************************
3458 procedure TGikoDM.CabinetBBSActionExecute(Sender: TObject);
3459 begin
3460
3461         if GikoForm.CabinetPanel.Visible then begin
3462                 if GikoForm.TreeType = gtt2ch then begin
3463                         GikoForm.CabinetVisible( False );
3464
3465                         CabinetBBSAction.Checked := False;
3466                 end else begin
3467                         CabinetBBSAction.Checked := True;
3468                 end;
3469         end else begin
3470                 GikoForm.CabinetVisible( True );
3471                 CabinetBBSAction.Checked := True;
3472         end;
3473
3474         if GikoForm.ActiveBBS = nil then
3475                 GikoForm.ShowBBSTree( BBSs[ 0 ] )
3476         else
3477                 GikoForm.ShowBBSTree( GikoForm.ActiveBBS );
3478
3479 end;
3480 // *************************************************************************
3481 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\97\9a\97ð\83\8a\83X\83g\82É\82·\82é
3482 // *************************************************************************
3483 procedure TGikoDM.CabinetHistoryActionExecute(Sender: TObject);
3484 begin
3485         GikoForm.ShowHistoryTree;
3486 end;
3487 // *************************************************************************
3488 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\82ð\82¨\8bC\82É\93ü\82è\83\8a\83X\83g\82É\82·\82é
3489 // *************************************************************************
3490 procedure TGikoDM.CabinetFavoriteActionExecute(Sender: TObject);
3491 var
3492         i, b : Integer;
3493         item : TMenuItem;
3494 begin
3495
3496         if GikoForm.CabinetPanel.Visible then begin
3497                 if GikoForm.TreeType = gttFavorite then begin
3498                         GikoForm.CabinetVisible( False );
3499                         CabinetFavoriteAction.Checked := False;
3500                 end else begin
3501                         CabinetFavoriteAction.Checked := True;
3502                 end;
3503         end else begin
3504                 GikoForm.CabinetVisible( True );
3505                 CabinetFavoriteAction.Checked := True;
3506         end;
3507
3508         // BBS...BBS, History, Favorite
3509         GikoSys.Setting.CabinetIndex := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3510
3511         b := GikoForm.CabinetSelectPopupMenu.Items.Count - 1;
3512         for i := 0 to b do begin
3513                 item := GikoForm.CabinetSelectPopupMenu.Items[ i ];
3514                 if item is TBBSMenuItem then begin
3515                         item.Checked := False;
3516                         // CabinetMenu \82Í CabinetSelectPopupMenu \82Æ\93¯\82\82Æ\8c\88\82ß\82¤\82¿\82µ\82¿\82á\82¤
3517                         GikoForm.CabinetMenu.Items[ i ].Checked := False;
3518                 end;
3519         end;
3520
3521         // \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Ö
3522         GikoForm.HistoryToolBar.Hide;
3523         GikoForm.FavoriteToolBar.Show;
3524         GikoForm.TreeView.Visible := False;
3525         GikoForm.FavoriteTreeView.Visible := True;
3526
3527         GikoForm.CabinetSelectToolButton.Caption := '\82¨\8bC\82É\93ü\82è';
3528         GikoForm.TreeType := gttFavorite;
3529
3530         // \83\81\83j\83\85\81[\8by\82Ñ\83{\83^\83\93\82Ì\83`\83F\83b\83N\82ð\90Ý\92è
3531         CabinetBBSAction.Checked := False;
3532         CabinetHistoryAction.Checked := False;
3533
3534         // \82¨\8bC\82É\93ü\82è\82Ì\83c\83\8a\81[\82ð\93W\8aJ
3535         GikoForm.FavoriteTreeView.Items.GetFirstNode.Expanded := True;
3536
3537 end;
3538 // *************************************************************************
3539 //! \83L\83\83\83r\83l\83b\83g\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3540 // *************************************************************************
3541 procedure TGikoDM.CabinetVisibleActionExecute(Sender: TObject);
3542 begin
3543         case GikoForm.TreeType of
3544         gttHistory:             CabinetHistoryAction.Execute;
3545         gttFavorite:    CabinetFavoriteAction.Execute;
3546         else
3547                 CabinetBBSAction.Execute;
3548         end;
3549 end;
3550 // *************************************************************************
3551 //! \83L\83\83\83r\83l\83b\83g\82ð\95Â\82\82é
3552 // *************************************************************************
3553 procedure TGikoDM.CabinetCloseActionExecute(Sender: TObject);
3554 begin
3555         //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ã
3556 end;
3557 // *************************************************************************
3558 //! \83\8a\83X\83g\82ð\91å\82«\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3559 // *************************************************************************
3560 procedure TGikoDM.LargeIconActionExecute(Sender: TObject);
3561 begin
3562         GikoForm.ListView.ViewStyle := vsIcon;
3563         LargeIconAction.Checked := True;
3564 end;
3565 // *************************************************************************
3566 //! \83\8a\83X\83g\82ð\8f¬\82³\82¢\83A\83C\83R\83\93\95\\8e¦\82É\82·\82é
3567 // *************************************************************************
3568 procedure TGikoDM.SmallIconActionExecute(Sender: TObject);
3569 begin
3570         GikoForm.ListView.ViewStyle := vsSmallIcon;
3571         SmallIconAction.Checked := True;
3572 end;
3573 // *************************************************************************
3574 //! \83\8a\83X\83g\82ð\88ê\97\97\95\\8e¦\82É\82·\82é
3575 // *************************************************************************
3576 procedure TGikoDM.ListIconActionExecute(Sender: TObject);
3577 begin
3578         GikoForm.ListView.ViewStyle := vsList;
3579         ListIconAction.Checked := True;
3580 end;
3581 // *************************************************************************
3582 //! \83\8a\83X\83g\82ð\8fÚ\8d×\95\\8e¦\82É\82·\82é
3583 // *************************************************************************
3584 procedure TGikoDM.DetailIconActionExecute(Sender: TObject);
3585 begin
3586         GikoForm.ListView.ViewStyle := vsReport;
3587         DetailIconAction.Checked := True;
3588 end;
3589 // *************************************************************************
3590 //! \83_\83E\83\93\83\8d\81[\83h\82ð\92\86\8e~\82·\82é
3591 // *************************************************************************
3592 procedure TGikoDM.StopActionExecute(Sender: TObject);
3593 begin
3594         GikoForm.FControlThread.DownloadAbort;
3595         if GikoForm.WorkCount <> 0 then GikoForm.WorkCount := 0;
3596         try
3597                 GikoForm.Animate.Active := False;
3598         except
3599         end;
3600         GikoForm.ScreenCursor := crDefault;
3601 end;
3602 // *************************************************************************
3603 //! \83\8a\83X\83g\82Æ\83u\83\89\83E\83U\82Ì\8fc\89¡\94z\92u\82ð\95Ï\8dX\82·\82é
3604 // *************************************************************************
3605 procedure TGikoDM.ArrangeActionExecute(Sender: TObject);
3606 begin
3607         if ArrangeAction.Checked then begin
3608                 //\8fc
3609                 GikoForm.ViewPanel.Align := alNone;
3610                 GikoForm.ListSplitter.Align := alNone;
3611                 GikoForm.ThreadPanel.Align := alNone;
3612
3613                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3614                 GikoForm.ViewPanel.Align := alLeft;
3615
3616                 GikoForm.ListSplitter.Width := 5;
3617                 GikoForm.ListSplitter.Align := alLeft;
3618
3619                 GikoForm.ViewPanel.Left := -10;
3620
3621                 GikoForm.ThreadPanel.Align := alClient;
3622
3623                 GikoSys.Setting.ListOrientation := gloHorizontal;
3624                 case GikoSys.Setting.ListWidthState of
3625                         glsMax: begin
3626                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3627                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3628                                 GikoForm.ViewPanel.Width := 1;
3629                         end;
3630                         glsNormal: begin
3631                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3632                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
3633                         end;
3634                         glsMin: begin
3635                                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3636                                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
3637                                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
3638                         end;
3639                 end;
3640         end else begin
3641                 //\89¡
3642                 GikoForm.ViewPanel.Align := alNone;
3643                 GikoForm.ListSplitter.Align := alNone;
3644                 GikoForm.ThreadPanel.Align := alNone;
3645
3646                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3647                 GikoForm.ViewPanel.Align := alTop;
3648
3649                 GikoForm.ListSplitter.Height := 5;
3650                 GikoForm.ListSplitter.Align := alTop;
3651
3652                 GikoForm.ViewPanel.Top := -10;
3653
3654                 GikoForm.ThreadPanel.Align := alClient;
3655                 GikoSys.Setting.ListOrientation := gloVertical;
3656                 case GikoSys.Setting.ListHeightState of
3657                         glsMax: begin
3658                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3659                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3660                                 GikoForm.ViewPanel.Height := 1;
3661                         end;
3662                         glsNormal: begin
3663                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3664                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
3665                         end;
3666                         glsMin: begin
3667                                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3668                                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
3669                                 GikoForm.ViewPanel.Height :=
3670                                         GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
3671                         end;
3672                 end;
3673         end;
3674 end;
3675 // *************************************************************************
3676 //! \83y\83C\83\93\82Ì\83T\83C\83Y\82ð\8f\89\8aú\89»\82·\82é
3677 // *************************************************************************
3678 procedure TGikoDM.PaneInitActionExecute(Sender: TObject);
3679 begin
3680         GikoForm.CabinetPanel.Width := 150;
3681         GikoForm.MessagePanel.Height := 40;
3682
3683         GikoForm.BrowserSizeWidth := 200;
3684         GikoForm.BrowserSizeHeight := 200;
3685         if ArrangeAction.Checked then begin
3686                 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
3687         end else begin
3688                 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
3689         end;
3690         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
3691                 if GikoSys.Setting.ListHeightState = glsMax then begin
3692                         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
3693                         GikoSys.Setting.ListHeightState := glsNormal;
3694                 end;
3695         end else begin
3696                 if GikoSys.Setting.ListWidthState = glsMax then begin
3697                         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
3698                         GikoSys.Setting.ListWidthState := glsNormal;
3699                 end;
3700         end;
3701 end;
3702 // *************************************************************************
3703 //! \83u\83\89\83E\83U\83^\83u\82Ì\95\\8e¦\8fó\91Ô\82ð\95Ï\8dX\82·\82é
3704 // *************************************************************************
3705 procedure TGikoDM.BrowserTabVisibleActionExecute(Sender: TObject);
3706 begin
3707         GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
3708         GikoForm.SetBrowserTabState;
3709 end;
3710 // *************************************************************************
3711 //! \83u\83\89\83E\83U\83^\83u\82ð\8fã\82É\95\\8e¦\82·\82é
3712 // *************************************************************************
3713 procedure TGikoDM.BrowserTabTopActionExecute(Sender: TObject);
3714 begin
3715         BrowserTabBottomAction.Checked := False;
3716         BrowserTabTopAction.Checked := True;
3717         GikoSys.Setting.BrowserTabPosition := gtpTop;
3718         GikoForm.SetBrowserTabState;
3719 end;
3720 // *************************************************************************
3721 //! \83u\83\89\83E\83U\83^\83u\82ð\89º\82É\95\\8e¦\82·\82é
3722 // *************************************************************************
3723 procedure TGikoDM.BrowserTabBottomActionExecute(Sender: TObject);
3724 begin
3725         BrowserTabTopAction.Checked := False;
3726         BrowserTabBottomAction.Checked := True;
3727         GikoSys.Setting.BrowserTabPosition := gtpBottom;
3728         GikoForm.SetBrowserTabState;
3729 end;
3730 // *************************************************************************
3731 //! \83u\83\89\83E\83U\83^\83u\82Ì\83X\83^\83C\83\8b\82ð\83^\83u\83X\83^\83C\83\8b\82É\82·\82é
3732 // *************************************************************************
3733 procedure TGikoDM.BrowserTabTabStyleActionExecute(Sender: TObject);
3734 begin
3735         BrowserTabButtonStyleAction.Checked := False;
3736         BrowserTabFlatStyleAction.Checked := False;
3737         BrowserTabTabStyleAction.Checked := True;
3738         GikoSys.Setting.BrowserTabStyle := gtsTab;
3739         GikoForm.SetBrowserTabState;
3740 end;
3741 // *************************************************************************
3742 //! \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é
3743 // *************************************************************************
3744 procedure TGikoDM.BrowserTabButtonStyleActionExecute(Sender: TObject);
3745 begin
3746         BrowserTabTabStyleAction.Checked := False;
3747         BrowserTabFlatStyleAction.Checked := False;
3748         BrowserTabButtonStyleAction.Checked := True;
3749         GikoSys.Setting.BrowserTabStyle := gtsButton;
3750         GikoForm.SetBrowserTabState;
3751 end;
3752 // *************************************************************************
3753 //! \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é
3754 // *************************************************************************
3755 procedure TGikoDM.BrowserTabFlatStyleActionExecute(Sender: TObject);
3756 begin
3757         BrowserTabFlatStyleAction.Checked := True;
3758         BrowserTabTabStyleAction.Checked := False;
3759         BrowserTabButtonStyleAction.Checked := False;
3760         GikoSys.Setting.BrowserTabStyle := gtsFlat;
3761         GikoForm.SetBrowserTabState;
3762 end;
3763 // *************************************************************************
3764 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3765 // *************************************************************************
3766 procedure TGikoDM.SetFocusForBrowserActionExecute(Sender: TObject);
3767 begin
3768     GikoForm.ActiveContent.Browser.SetFocus;
3769 end;
3770 // *************************************************************************
3771 //! \83u\83\89\83E\83U\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3772 // *************************************************************************
3773 procedure TGikoDM.SetFocusForBrowserActionUpdate(Sender: TObject);
3774 begin
3775         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) and
3776                 (GikoForm.ActiveContent.Browser <> GikoForm.BrowserNullTab.Browser) then
3777                 TAction(Sender).Enabled := true
3778         else
3779                 TAction(Sender).Enabled := false;
3780 end;
3781 // *************************************************************************
3782 //! \83X\83\8c\83b\83h\88ê\97\97\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3783 // *************************************************************************
3784 procedure TGikoDM.SetFocusForThreadListActionExecute(Sender: TObject);
3785 begin
3786         if GikoForm.ActiveContent <> nil then
3787                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3788         GikoForm.ListView.SetFocus;
3789
3790         if( GikoForm.ListView.Items.Count > 0 ) and (GikoForm.ListView.ItemFocused = nil) then
3791                 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é
3792
3793         //\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
3794         if (GikoForm.ListView.ItemFocused <> nil) then begin
3795                 GikoForm.ListView.ItemFocused.MakeVisible(False);
3796         end;
3797 end;
3798 // *************************************************************************
3799 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3800 // *************************************************************************
3801 procedure TGikoDM.SetFocusForCabinetActionExecute(Sender: TObject);
3802 begin
3803         if GikoForm.ActiveContent <> nil then
3804                 GikoForm.WebBrowserClick(GikoForm.ActiveContent.Browser); //\88ê\89ñBrowser\82É\93\96\82Ä\82È\82¢\82Æ\93®\82©\82È\82¢\82Æ\82«\82ª\82 \82é
3805         if GikoForm.TreeView.Visible then begin
3806                 GikoForm.TreeView.SetFocus;
3807                 if(GikoForm.TreeView.Items.Count > 0) and ( GikoForm.TreeView.Selected = nil ) then
3808                         GikoForm.TreeView.Items.Item[0].Selected := true;
3809         end else if GikoForm.FavoriteTreeView.Visible then begin
3810                 GikoForm.FavoriteTreeView.SetFocus;
3811                 if(GikoForm.FavoriteTreeView.Items.Count > 0) and (GikoForm.FavoriteTreeView.Selected = nil) then
3812                         GikoForm.FavoriteTreeView.Items.Item[0].Selected := true;
3813         end;
3814 end;
3815 // *************************************************************************
3816 //! \83L\83\83\83r\83l\83b\83g\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82éUpdate\83C\83x\83\93\83g
3817 // *************************************************************************
3818 procedure TGikoDM.SetFocusForCabinetActionUpdate(Sender: TObject);
3819 begin
3820         SetFocusForCabinetAction.Enabled := GikoForm.CabinetPanel.Visible;
3821 end;
3822 // *************************************************************************
3823 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3824 // *************************************************************************
3825 procedure TGikoDM.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
3826 begin
3827         BrowserMinAction.Execute;
3828         SetFocusForThreadListAction.Execute;
3829 end;
3830 // *************************************************************************
3831 //! \83X\83\8c\95\\8e¦\82ð\8dÅ\91å\89»\82µ\82Ä\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
3832 // *************************************************************************
3833 procedure TGikoDM.BrowserMaxAndFocusActionExecute(Sender: TObject);
3834 begin
3835         BrowserMaxAction.Execute;
3836         SetFocusForBrowserAction.Execute;
3837 end;
3838 // *************************************************************************
3839 //! \83X\83\8c\83b\83h\88ê\97\97\82Ì\91I\91ð\82ð\8dí\8f\9c\82·\82é
3840 // *************************************************************************
3841 procedure TGikoDM.UnSelectedListViewActionExecute(Sender: TObject);
3842 begin
3843         if GikoForm.ListView.Selected <> nil then begin
3844                 GikoForm.ListView.Selected.Focused := True;
3845                 GikoForm.ListView.Selected := nil;
3846         end;
3847 end;
3848 ////////////////////////////////\95\\8e¦\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3849 // *************************************************************************
3850 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8aù\93Ç\82É\82·\82é
3851 // *************************************************************************
3852 procedure TGikoDM.KidokuActionExecute(Sender: TObject);
3853 begin
3854         SetThreadReadProperty(true);
3855 end;
3856 // *************************************************************************
3857 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\96¢\93Ç\82É\82·\82é
3858 // *************************************************************************
3859 procedure TGikoDM.MidokuActionExecute(Sender: TObject);
3860 begin
3861         SetThreadReadProperty(false);
3862 end;
3863 // *************************************************************************
3864 //! \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Ç
3865 // *************************************************************************
3866 procedure TGikoDM.SetThreadReadProperty(read: Boolean);
3867 var
3868         List: TList;
3869         i: Integer;
3870 begin
3871         List := TList.Create;
3872         try
3873                 GikoForm.SelectListItem(List);
3874                 for i := 0 to List.Count - 1 do begin
3875                         if TObject(List[i]) is TThreadItem then begin
3876                                 if (TThreadItem(List[i]).IsLogFile) then begin
3877                                         TThreadItem(List[i]).UnRead := not read;
3878                                 end;
3879                         end;
3880                 end;
3881                 if GikoForm.TreeView.Visible then
3882                         GikoForm.TreeView.Refresh;
3883                 if GikoForm.ListView.Visible then
3884                         GikoForm.ListView.Refresh;
3885         finally
3886                 List.Free;
3887         end;
3888 end;
3889 // *************************************************************************
3890 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82é
3891 // *************************************************************************
3892 procedure TGikoDM.AllSelectActionExecute(Sender: TObject);
3893 begin
3894         GikoForm.ListViewAllSelect;
3895 end;
3896 // *************************************************************************
3897 //! \83\8a\83X\83g\82ð\91S\82Ä\91I\91ð\82·\82éUpdate\83C\83x\83\93\83g
3898 // *************************************************************************
3899 procedure TGikoDM.AllSelectActionUpdate(Sender: TObject);
3900 begin
3901         AllSelectAction.Enabled := GikoForm.ListView.SelCount > 0;
3902 end;
3903 ////////////////////////////////\95Ò\8fW\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
3904 //! \83X\83\8c\83b\83h\82Ì\83T\83C\83Y\82ð\8dÄ\8cv\8eZ\82·\82é
3905 procedure TGikoDM.ThreadSizeCalcForFileActionExecute(Sender: TObject);
3906 const
3907         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 +
3908                                                         '\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' +
3909                                                         '\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';
3910         RECALC_TITLE : String = '\83X\83\8c\83b\83h\82Ì\97e\97Ê\82ð\83t\83@\83C\83\8b\82©\82ç\8dÄ\8cv\8eZ';
3911         LIMIT_SIZE = 1024;
3912 var
3913         limitSize : Integer;
3914         limitStr  : String;
3915 begin
3916\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Í
3917   \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
3918   \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õ
3919   è\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
3920   DAT\82Ì\83t\83@\83C\83\8b\83T\83C\83Y\82Å\8dX\90V\82·\82é
3921 }
3922         if MsgBox(GikoForm.Handle, RECALC_MES,
3923                 RECALC_TITLE, MB_YESNO or MB_ICONWARNING) = ID_YES then begin
3924                 //è\87\92l\82Ì\8am\94F
3925                 limitSize := LIMIT_SIZE;
3926                 limitStr  := IntToStr(limitSize);
3927                 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
3928                         limitSize := StrToInt(MojuUtils.ZenToHan(limitStr));
3929                         if (limitSize < 0) then begin
3930                                 ShowMessage('è\87\92l\82É\95\89\82Í\8ew\92è\82Å\82«\82Ü\82¹\82ñ\81I');
3931                                 ThreadSizeCalcForFileActionExecute(nil);
3932                         end else begin
3933                                 RecalcThreadSize(limitSize);
3934                         end;
3935                 end;
3936         end;
3937 end;
3938 //! 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
3939 procedure TGikoDM.RecalcThreadSize(limit : Integer);
3940 var
3941         i, j, tmpSize : Integer;
3942         Obj   : TObject;
3943         Board : TBoard;
3944         Thread: TThreadItem;
3945         dat   : TStringList;
3946 begin
3947         // \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
3948         GikoForm.ScreenCursor := crHourGlass;
3949         try
3950                 GikoForm.ProgressBar.Max := BoardGroups[0].Count;
3951                 for i := 0 to BoardGroups[0].Count - 1 do begin
3952                         Obj := BoardGroups[0].Objects[i];
3953                         if (Obj <> nil) then begin
3954                                 Board := TBoard(Obj);
3955                                 if not Board.IsThreadDatRead then begin
3956                                         GikoSys.ReadSubjectFile(Board);
3957                                 end;
3958                                 for j := 0 to Board.Count - 1 do begin
3959                                         Thread := Board.Items[j];
3960                                         if (Thread <> nil) and (Thread.IsLogFile)
3961                                                 and (Thread.Size <= limit) then begin
3962                                                 dat := TStringList.Create;
3963                                                 try
3964                                                         tmpSize := Thread.Size;
3965                                                         try
3966                                                                 dat.LoadFromFile(Thread.GetThreadFileName);
3967                                                                 tmpSize := Length(dat.Text);
3968                                                                 tmpSize := tmpSize - dat.Count;
3969                                                         except
3970                                                         end;
3971                                                         Thread.Size := tmpSize;
3972                                                 finally
3973                                                         dat.Free;
3974                                                 end;
3975                                         end;
3976                                 end;
3977                         end;
3978                         GikoForm.ProgressBar.StepBy(1);
3979                 end;
3980         finally
3981                 GikoForm.ScreenCursor := crDefault;
3982         end;
3983         GikoForm.ProgressBar.Position := 0;
3984         ShowMessage('\8cv\8eZ\8fI\97¹\82µ\82Ü\82µ\82½\81B');
3985 end;
3986 // *************************************************************************
3987 //! \93ü\97Í\83A\83V\83X\83g\82Ì\90Ý\92è\83t\83H\81[\83\80\82ð\8cÄ\82Ñ\8fo\82·
3988 // *************************************************************************
3989 procedure TGikoDM.SetInputAssistActionExecute(Sender: TObject);
3990 var
3991         form : TInputAssistForm;
3992 begin
3993         form := TInputAssistForm.Create(GikoForm);
3994         try
3995                 form.SetUpFromMain;
3996                 form.ShowModal;
3997         finally
3998                 form.Release;
3999         end;
4000 end;
4001 // *************************************************************************
4002 //! \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é
4003 // *************************************************************************
4004 procedure TGikoDM.OpenFindDialogActionExecute(Sender: TObject);
4005 begin
4006         if( GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil) then begin
4007         GikoForm.ActiveContent.OpenFindDialog;
4008         end;
4009 end;
4010
4011 // *************************************************************************
4012 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82Ì\95\\8e¦\96¼\82ð\83R\83s\81[\82·\82é
4013 // *************************************************************************
4014 procedure TGikoDM.FavoriteTreeViewItemNameCopyActionExecute(
4015   Sender: TObject);
4016 begin
4017         if GikoForm.ClickNode = nil then Exit;
4018
4019         Clipboard.AsText :=
4020                         GikoForm.ClickNode.Text + #13#10;
4021 end;
4022
4023 // *************************************************************************
4024 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\82·\82×\82Ä\82Ì\83\8c\83X\83G\83f\83B\83^\82ð\95Â\82\82é
4025 // *************************************************************************
4026 procedure TGikoDM.CloseAllEditorActionExecute(Sender: TObject);
4027 var
4028     i : Integer;
4029 begin
4030     if ( EditorFormExists ) then begin
4031         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\95Â\82\82é
4032             for i := Screen.CustomFormCount - 1 downto 0 do begin
4033                 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
4034                 TEditorForm(Screen.CustomForms[i]).Close;
4035                 end;
4036             end;
4037     end;
4038 end;
4039 // *************************************************************************
4040 //! \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é
4041 // *************************************************************************
4042 procedure TGikoDM.CloseAllEditorActionUpdate(Sender: TObject);
4043 begin
4044     if (Sender is TAction) then begin
4045         TAction(Sender).Enabled := EditorFormExists;
4046     end;
4047 end;
4048 // *************************************************************************
4049 //! \83X\83N\83\8a\81[\83\93\8fã\82ÉEditorForm\82ª\82¢\82é\82©
4050 // *************************************************************************
4051 function TGikoDM.EditorFormExists(): boolean;
4052 var
4053         i : Integer;
4054 begin
4055         Result := false;
4056         //\83X\83N\83\8a\81[\83\93\8fã\82Ì\91S\82Ä\82Ì\83t\83H\81[\83\80\82©\82ç\81AEditorForm\82ð\92T\82·
4057         for i := Screen.CustomFormCount - 1 downto 0 do begin
4058                 if (Screen.CustomForms[i] is TEditorForm) then begin
4059                         Result := true;
4060                         Break;
4061                 end;
4062         end;
4063 end;
4064
4065 // *************************************************************************
4066 //! \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é
4067 // *************************************************************************
4068 procedure TGikoDM.ClearNameTextAllEditor();
4069 var
4070         i : Integer;
4071 begin
4072         for i := 0 to Screen.CustomFormCount - 1 do begin
4073                 if (Screen.CustomForms[i] is TEditorForm) then begin
4074                         TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
4075         end;
4076         end;
4077 end;
4078 // *************************************************************************
4079 //! \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é
4080 // *************************************************************************
4081 procedure TGikoDM.ClearMailAllEditor();
4082 var
4083         i : Integer;
4084 begin
4085         for i := 0 to Screen.CustomFormCount - 1 do begin
4086                 if TObject(Screen.CustomForms[i]) is TEditorForm then
4087                         TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
4088         end;
4089 end;
4090
4091 // *************************************************************************
4092 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é\82Ì\8dX\90V\8f\88\97\9d
4093 // *************************************************************************
4094 procedure TGikoDM.PrevMoveHistoryUpdate(Sender: TObject);
4095 begin
4096       PrevMoveHistory.Enabled :=
4097           (MoveHisotryManager.HisotryIndex > 0)
4098 end;
4099 // *************************************************************************
4100 //! \83\8a\83\93\83N\97\9a\97ð\82ð\96ß\82é
4101 // *************************************************************************
4102 procedure TGikoDM.PrevMoveHistoryExecute(Sender: TObject);
4103 begin
4104     if ( GikoForm.BrowserTab.TabIndex >= 0 ) then begin
4105         BackToHistory(MoveHisotryManager.getPrevItem
4106             (TBrowserRecord(GikoForm.BrowserTab.Tabs
4107                     .Objects[GikoForm.BrowserTab.TabIndex])));
4108     end else begin
4109         BackToHistory(MoveHisotryManager.getPrevItem( nil ) );
4110     end;
4111 end;
4112 //! \83\8a\83\93\83N\97\9a\97ð\8f\88\97\9d
4113 procedure TGikoDM.BackToHistory(item: TMoveHistoryItem);
4114 var
4115     browser : TWebBrowser;
4116     doc : OleVariant;
4117 begin
4118     if ( item <> nil ) then begin
4119         if ( GikoForm.GetActiveContent = item.ThreadItem ) then begin
4120             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4121                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4122             if (browser <> nil) then begin
4123                 try
4124                     doc := Idispatch( olevariant(browser.ControlInterface).Document) as IHTMLDocument2;
4125                     doc.Body.ScrollTop := item.ScrollTop;
4126                 except
4127                 end;
4128             end;
4129         end else begin
4130             //URL\82É\88Ú\93®
4131             MoveURLWithHistory(item.ThreadItem.URL);
4132         end;
4133     end;
4134 end;
4135 //! \97\9a\97ð\8f\88\97\9d\82Â\82«URL\88Ú\93®
4136 procedure TGikoDM.MoveURLWithHistory(URL : String);
4137 var
4138     idx : Integer;
4139 begin
4140     //URL\82É\88Ú\93®
4141     GikoForm.MoveToURL(URL);
4142     //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
4143     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
4144     if idx = -1 then begin
4145         GikoForm.AddressComboBox.Items.Insert(0, URL);
4146         if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
4147             GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
4148     end else begin
4149         GikoForm.AddressComboBox.Items.Delete(idx);
4150         GikoForm.AddressComboBox.Items.Insert(0, URL);
4151     end;
4152 end;
4153 // *************************************************************************
4154 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ\82Ì\8dX\90V\8f\88\97\9d
4155 // *************************************************************************
4156 procedure TGikoDM.NextMoveHistoryUpdate(Sender: TObject);
4157 begin
4158     NextMoveHistory.Enabled :=
4159           (MoveHisotryManager.HisotryIndex < MoveHisotryManager.Count - 1);
4160 end;
4161 // *************************************************************************
4162 //! \83\8a\83\93\83N\97\9a\97ð\82ð\90i\82Þ
4163 // *************************************************************************
4164 procedure TGikoDM.NextMoveHistoryExecute(Sender: TObject);
4165 begin
4166     BackToHistory(MoveHisotryManager.getNextItem);
4167 end;
4168 // *************************************************************************
4169 //! \83A\83N\83e\83B\83u\97v\91f\82Ì\83N\83\8a\83b\83N
4170 // *************************************************************************
4171 procedure TGikoDM.ClickActiveElementActionExecute(Sender: TObject);
4172 var
4173     browser : TWebBrowser;
4174     elem : IHTMLElement;
4175 begin
4176     if (GikoForm.GetActiveContent <> nil) then begin
4177         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4178             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4179             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4180                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4181             if (browser <> nil) then begin
4182                 try
4183                     elem := IHTMLDocument2(browser.Document).activeElement;
4184                     elem.click;
4185                 except
4186                 end;
4187             end;
4188
4189         end;
4190     end;
4191 end;
4192 //! \81«\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4193 procedure TGikoDM.VKDownActionExecute(Sender: TObject);
4194 begin
4195     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY, 0);
4196     keybd_event(VK_DOWN, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4197 end;
4198 //! \81ª\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4199 procedure TGikoDM.VKUpActionExecute(Sender: TObject);
4200 begin
4201     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY, 0);
4202     keybd_event(VK_UP, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4203 end;
4204 //! \81¨\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4205 procedure TGikoDM.VKRightActionExecute(Sender: TObject);
4206 begin
4207     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4208     keybd_event(VK_RIGHT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4209 end;
4210 //! \81©\83L\81[\82Ì\83G\83~\83\85\83\8c\81[\83g\83A\83N\83V\83\87\83\93
4211 procedure TGikoDM.VKLeftActionExecute(Sender: TObject);
4212 begin
4213     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
4214     keybd_event(VK_LEFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
4215 end;
4216 //! \83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é
4217 procedure TGikoDM.StoredTaskTrayActionExecute(Sender: TObject);
4218 begin
4219     GikoForm.StoredTaskTray;
4220     StoredTaskTrayAction.Tag := -1;
4221 end;
4222
4223 {
4224 \breif  \83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4225 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4226 }
4227 procedure TGikoDM.AllImageLinkToClipbordActionExecute(Sender: TObject);
4228 var
4229     links : IHTMLElementCollection;
4230     urls, exts : TStringList;
4231 begin
4232     links := GetActiveThreadLinks;
4233     if (links <> nil) then begin
4234         urls := TStringList.Create;
4235         exts := TStringList.Create;
4236         try
4237             exts.CaseSensitive := False;
4238             exts.Sorted := True;
4239             exts.Delimiter := ';';
4240             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4241             GetLinkURLs(links, urls, 0, exts);
4242             Clipboard.SetTextBuf(urls.GetText);
4243         finally
4244             exts.Free;
4245             urls.Free;
4246         end;
4247     end;
4248 end;
4249
4250 {
4251 \breif  \90V\92\85\83\8c\83X\82Ì\83\8a\83\93\83N\83C\83\81\81[\83W\8eæ\93¾
4252 \83C\83\81\81[\83W\82Í\81C*.jpg, *.jpeg, *.gif, *.png
4253 }
4254 procedure TGikoDM.NewImageLinkToClipBoardActionExecute(Sender: TObject);
4255 var
4256     links : IHTMLElementCollection;
4257     urls, exts : TStringList;
4258     ThreadItem : TThreadItem;
4259 begin
4260     ThreadItem := GikoForm.GetActiveContent;
4261     links := GetActiveThreadLinks;
4262     if (ThreadItem <> nil) and (links <> nil) then begin
4263         urls := TStringList.Create;
4264         exts := TStringList.Create;
4265         try
4266             exts.CaseSensitive := False;
4267             exts.Sorted := True;
4268             exts.Delimiter := ';';
4269             exts.DelimitedText := '.gif;.jpg;.jpeg;.png';
4270
4271             GetLinkURLs(links, urls,
4272                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4273             Clipboard.SetTextBuf(urls.GetText);
4274         finally
4275             exts.Free;
4276             urls.Free;
4277         end;
4278     end;
4279 end;
4280 {
4281 \breif  \83\8a\83\93\83NURL\8eæ\93¾
4282 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4283 }
4284 procedure TGikoDM.AllLinkToClipboardActionExecute(Sender: TObject);
4285 var
4286     links : IHTMLElementCollection;
4287     urls, exts : TStringList;
4288 begin
4289     links := GetActiveThreadLinks;
4290     if (links <> nil) then begin
4291         urls := TStringList.Create;
4292         exts := TStringList.Create;
4293         try
4294             exts.CaseSensitive := False;
4295             exts.Sorted := True;
4296             exts.Delimiter := ';';
4297             exts.DelimitedText :=
4298                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4299             GetLinkURLs(links, urls, 0, exts);
4300             Clipboard.SetTextBuf(urls.GetText);
4301         finally
4302             exts.Free;
4303             urls.Free;
4304         end;
4305     end;
4306 end;
4307 {
4308 \breif  \90V\92\85\83\8c\83X\83\8a\83\93\83NURL\8eæ\93¾
4309 \91Î\8fÛ\8ag\92£\8eq\82Í\81A\8fÚ\8d×\90Ý\92è\82Å\90Ý\92è\82³\82ê\82Ä\82¢\82é
4310 }
4311 procedure TGikoDM.NewLinkToClipboardActionExecute(Sender: TObject);
4312 var
4313     links : IHTMLElementCollection;
4314     urls, exts : TStringList;
4315     ThreadItem : TThreadItem;
4316 begin
4317     ThreadItem := GikoForm.GetActiveContent;
4318     links := GetActiveThreadLinks;
4319     if (ThreadItem <> nil) and (links <> nil) then begin
4320         urls := TStringList.Create;
4321         exts := TStringList.Create;
4322         try
4323             exts.CaseSensitive := False;
4324             exts.Sorted := True;
4325             exts.Delimiter := ';';
4326             exts.DelimitedText :=
4327                 MojuUtils.CustomStringReplace(GikoSys.Setting.ExtList, '*', '');
4328             GetLinkURLs(links, urls,
4329                 (ThreadItem.Count - ThreadItem.NewResCount + 1), exts );
4330             Clipboard.SetTextBuf(urls.GetText);
4331         finally
4332             exts.Free;
4333             urls.Free;
4334         end;
4335     end;
4336 end;
4337
4338 {
4339 \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
4340 \return IHTMLElementCollection  \83\8a\83\93\83N\82Ì\83R\83\8c\83N\83V\83\87\83\93
4341 }
4342 function TGikoDM.GetActiveThreadLinks : IHTMLElementCollection;
4343 var
4344     browser : TWebBrowser;
4345 begin
4346     Result := nil;
4347     if (GikoForm.GetActiveContent <> nil) then begin
4348         if (GikoForm.BrowserTab.Tabs.Count > 0) and
4349             (GikoForm.BrowserTab.TabIndex >= 0) then begin
4350             browser := TBrowserRecord(GikoForm.BrowserTab.Tabs
4351                 .Objects[GikoForm.BrowserTab.TabIndex]).Browser;
4352             if (browser <> nil) then begin
4353                 try
4354                     Result := IHTMLDocument2(browser.Document).links;
4355                 except
4356                     Result := nil;
4357                 end;
4358             end;
4359
4360         end;
4361     end;
4362 end;
4363 {
4364 \brief  \83\8a\83\93\83N\82ÌURL\82ð\8eæ\93¾\82·\82é
4365 \param  links   \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\91S\91Ì\82Ì\83R\83\8c\83N\83V\83\87\83\93
4366 \param  URLs    \8eæ\93¾\82µ\82½URL\82Ì\95Û\91\90æ
4367 \param  Start   \90Ý\92è\82µ\82½\83\8c\83X\94Ô\8d\86\88È\8d~\82ð\8eæ\93¾( > 0)
4368 \param  Exts    \8eæ\93¾\82·\82é\83\8a\83\93\83N\82Ì\8ag\92£\8eq
4369 }
4370 procedure TGikoDM.GetLinkURLs(links : IHTMLElementCollection;
4371         URLs : TStringList; const Start: Integer; Exts : TStringList);
4372 var
4373     index ,i, j : Integer;
4374     item : IHTMLElement;
4375     url, ext : string;
4376 begin
4377     if (links <> nil) then begin
4378         index := 0;
4379         for i := 0 to links.length - 1 do begin
4380             item := links.item(i, 0) as IHTMLElement;
4381             if (item <> nil) then begin
4382                 url := item.getAttribute('href', 0);
4383                 // \83\8c\83X\82Ì\94Ô\8d\86\82ð\8dX\90V
4384                 if (Pos('menu:', url) > 0) then begin
4385                     index := StrToInt64Def(
4386                         Copy(url, 5, Length(url)), index + 1
4387                     );
4388                 end else begin
4389                     // \8aJ\8en\83\8c\83X\94Ô\8d\86\88È\8d~\82©\83`\83F\83b\83N
4390                     if (index >= Start) then begin
4391                         ext := ExtractFileExt( AnsiLowerCase(url) );
4392                         // \8ag\92£\8eq\82ð\83`\83F\83b\83N
4393                         if Exts.Find(ext, j) then begin
4394                             urls.Add(url)
4395                         end;
4396                     end;
4397                 end;
4398             end;
4399         end;
4400     end;
4401 end;
4402 {
4403 \brief  \83A\83h\83\8c\83X\83o\81[\82É\83t\83H\81[\83J\83X\82ð\93\96\82Ä\82é
4404 \param  Sender   \83C\83x\83\93\83g\82Ì\94­\90\8c³
4405 }
4406 procedure TGikoDM.SetForcusForAddresBarActionExecute(Sender: TObject);
4407 begin
4408     if ( GikoForm.AddressToolBar.Visible ) then begin
4409         GikoForm.AddressComboBox.SetFocus;
4410     end
4411 end;
4412 {
4413 \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é
4414 }
4415 procedure TGikoDM.NewBoardSearchActionExecute(Sender: TObject);
4416 var
4417     form : TNewBoardURLForm;
4418         Msg: string;
4419 begin
4420         if (EditorFormExists) then begin
4421                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
4422                 MsgBox(GikoForm.Handle, Msg, MSG_ERROR, MB_OK or MB_ICONSTOP);
4423                 Exit;
4424         end;
4425     form := TNewBoardURLForm.Create(Self);
4426     try
4427         form.ShowModal;
4428     finally
4429         form.Release;
4430     end;
4431 end;
4432 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4433 procedure TGikoDM.ScrollPageDownActionExecute(Sender: TObject);
4434 begin
4435     GikoForm.BrowserMovement(GikoForm.BrowserPanel.Height);
4436 end;
4437 //! \83u\83\89\83E\83U\82ð1\83y\81[\83W\95ª\83X\83N\83\8d\81[\83\8b\82³\82¹\82é
4438 procedure TGikoDM.ScrollPageUpActionExecute(Sender: TObject);
4439 begin
4440     GikoForm.BrowserMovement(-GikoForm.BrowserPanel.Height);
4441 end;
4442
4443
4444 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é\81i\93§\96¾)
4445 procedure TGikoDM.AddIDtoNGWord0ActionExecute(Sender: TObject);
4446 begin
4447     GikoForm.AddIDtoNGWord(true);
4448 end;
4449 //! \82±\82Ì\83\8c\83X\82ÌID\82ðNG\83\8f\81[\83h\82É\92Ç\89Á\82·\82é
4450 procedure TGikoDM.AddIDtoNGWord1ActionExecute(Sender: TObject);
4451 begin
4452     GikoForm.AddIDtoNGWord(false);
4453 end;
4454
4455 end.
4456