OSDN Git Service

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