OSDN Git Service

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