OSDN Git Service

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