OSDN Git Service

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