OSDN Git Service

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