OSDN Git Service

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