OSDN Git Service

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