OSDN Git Service

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