OSDN Git Service

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