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