OSDN Git Service

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