OSDN Git Service

f43ae57ef9a3e25bf2d89a281f035358670229f9
[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     SetInputAssistAction: TAction;
216         procedure EditNGActionExecute(Sender: TObject);
217         procedure ReloadActionExecute(Sender: TObject);
218         procedure GoFowardActionExecute(Sender: TObject);
219         procedure GoBackActionExecute(Sender: TObject);
220         procedure MoveToActionExecute(Sender: TObject);
221         procedure FavoriteAddActionExecute(Sender: TObject);
222         procedure FavoriteArrangeActionExecute(Sender: TObject);
223         procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
224         procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
225         procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
226         procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
227         procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
228         procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
229         procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
230         procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
231         procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
232         procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
233         procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
234         procedure OnlyAHundredResActionExecute(Sender: TObject);
235         procedure OnlyKokoResActionExecute(Sender: TObject);
236         procedure OnlyNewResActionExecute(Sender: TObject);
237         procedure BrowserMaxActionExecute(Sender: TObject);
238         procedure BrowserMinActionExecute(Sender: TObject);
239         procedure ScrollTopActionExecute(Sender: TObject);
240         procedure ScrollLastActionExecute(Sender: TObject);
241         procedure ScrollNewActionExecute(Sender: TObject);
242         procedure ScrollKokoActionExecute(Sender: TObject);
243         procedure ScrollKokoActionUpdate(Sender: TObject);
244         procedure EditorActionExecute(Sender: TObject);
245         procedure IEActionExecute(Sender: TObject);
246         procedure ShowThreadActionExecute(Sender: TObject);
247         procedure ShowBoardActionExecute(Sender: TObject);
248         procedure URLCopyActionExecute(Sender: TObject);
249         procedure NameCopyActionExecute(Sender: TObject);
250         procedure NameURLCopyActionExecute(Sender: TObject);
251         procedure ItemReloadActionExecute(Sender: TObject);
252         procedure BrowserTabCloseActionExecute(Sender: TObject);
253         procedure BrowserTabCloseActionUpdate(Sender: TObject);
254         procedure NotSelectTabCloseActionExecute(Sender: TObject);
255         procedure NotSelectTabCloseActionUpdate(Sender: TObject);
256         procedure AllTabCloseActionExecute(Sender: TObject);
257         procedure ActiveLogDeleteActionExecute(Sender: TObject);
258         procedure LeftmostTabSelectActionExecute(Sender: TObject);
259         procedure LeftmostTabSelectActionUpdate(Sender: TObject);
260         procedure LeftTabSelectActionExecute(Sender: TObject);
261         procedure RightTabSelectActionExecute(Sender: TObject);
262         procedure RightTabSelectActionUpdate(Sender: TObject);
263         procedure RightmostTabSelectActionExecute(Sender: TObject);
264         procedure ThreadFavoriteAddActionExecute(Sender: TObject);
265         procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
266         procedure SelectResActionExecute(Sender: TObject);
267         procedure AllResActionExecute(Sender: TObject);
268         procedure ResRangeActionExecute(Sender: TObject);
269         procedure UpBoardActionExecute(Sender: TObject);
270         procedure JumpToNumOfResActionExecute(Sender: TObject);
271         procedure RightTabCloseActionExecute(Sender: TObject);
272         procedure RightTabCloseActionUpdate(Sender: TObject);
273         procedure LeftTabCloseActionExecute(Sender: TObject);
274         procedure DataModuleCreate(Sender: TObject);
275         procedure SearchActionExecute(Sender: TObject);
276         procedure OptionActionExecute(Sender: TObject);
277         procedure RoundActionExecute(Sender: TObject);
278         procedure KeySettingActionExecute(Sender: TObject);
279         procedure KotehanActionExecute(Sender: TObject);
280         procedure ToolBarSettingActionExecute(Sender: TObject);
281         procedure MuteActionExecute(Sender: TObject);
282         procedure TreeSelectBoradReloadExecute(Sender: TObject);
283         procedure TreeSelectThreadReloadExecute(Sender: TObject);
284         procedure TreeSelectURLCopyExecute(Sender: TObject);
285         procedure TreeSelectNameURLCopyExecute(Sender: TObject);
286         procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
287         procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
288         procedure TreeSelectNameCopyExecute(Sender: TObject);
289         procedure LoginActionExecute(Sender: TObject);
290         procedure NewBoardActionExecute(Sender: TObject);
291         procedure LogDeleteActionExecute(Sender: TObject);
292         procedure LogDeleteActionUpdate(Sender: TObject);
293         procedure SelectTextClearActionExecute(Sender: TObject);
294         procedure NameTextClearActionExecute(Sender: TObject);
295         procedure MailTextClearActionExecute(Sender: TObject);
296         procedure ExitActionExecute(Sender: TObject);
297         procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
298         procedure ExportFavoriteFileAccept(Sender: TObject);
299         procedure SelectItemSaveForHTMLExecute(Sender: TObject);
300         procedure SelectItemSaveForDatExecute(Sender: TObject);
301         procedure TabsSaveActionExecute(Sender: TObject);
302         procedure TabsOpenActionExecute(Sender: TObject);
303         procedure TabAutoSaveActionExecute(Sender: TObject);
304         procedure TabAutoLoadActionExecute(Sender: TObject);
305         procedure BeLogInOutActionExecute(Sender: TObject);
306         procedure BeLogInOutActionUpdate(Sender: TObject);
307         procedure KokomadeActionExecute(Sender: TObject);
308         procedure ZenbuActionExecute(Sender: TObject);
309         procedure KokoResActionExecute(Sender: TObject);
310         procedure KoreCopyExecute(Sender: TObject);
311         procedure SameIDResAnchorActionExecute(Sender: TObject);
312         procedure IndividualAbon1ActionExecute(Sender: TObject);
313         procedure IndividualAbon0ActionExecute(Sender: TObject);
314         procedure AntiIndividualAbonActionExecute(Sender: TObject);
315         procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
316         procedure IndividualAbonID1ActionExecute(Sender: TObject);
317         procedure IndividualAbonID0ActionExecute(Sender: TObject);
318         procedure GikoNaviWebPageActionExecute(Sender: TObject);
319         procedure MonazillaWebPageActionExecute(Sender: TObject);
320         procedure BBS2chWebPageActionExecute(Sender: TObject);
321         procedure GikoFolderOpenActionExecute(Sender: TObject);
322         procedure AboutActionExecute(Sender: TObject);
323         procedure GikoHelpActionExecute(Sender: TObject);
324         procedure WikiFAQWebPageActionExecute(Sender: TObject);
325         procedure ListNumberVisibleActionExecute(Sender: TObject);
326         procedure UpFolderActionExecute(Sender: TObject);
327         procedure UpFolderActionUpdate(Sender: TObject);
328         procedure IconStyleExecute(Sender: TObject);
329         procedure AllItemActionExecute(Sender: TObject);
330         procedure LogItemActionExecute(Sender: TObject);
331         procedure NewItemActionExecute(Sender: TObject);
332         procedure ThreadRangeActionExecute(Sender: TObject);
333         procedure SelectItemActionExecute(Sender: TObject);
334         procedure ThreadEditorActionExecute(Sender: TObject);
335         procedure BoardIEActionExecute(Sender: TObject);
336         procedure SelectItemURLCopyActionExecute(Sender: TObject);
337         procedure SelectItemURLCopyActionUpdate(Sender: TObject);
338         procedure SelectItemNameCopyActionExecute(Sender: TObject);
339         procedure SelectItemNameCopyActionUpdate(Sender: TObject);
340         procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
341         procedure SelectListReloadActionExecute(Sender: TObject);
342         procedure SelectListReloadActionUpdate(Sender: TObject);
343         procedure SelectThreadReloadActionExecute(Sender: TObject);
344         procedure SelectThreadReloadActionUpdate(Sender: TObject);
345         procedure SelectReservActionExecute(Sender: TObject);
346         procedure SelectReservActionUpdate(Sender: TObject);
347         procedure SelectNewRoundNameExecute(Sender: TObject);
348         procedure SelectDeleteRoundExecute(Sender: TObject);
349         procedure BoardFavoriteAddActionExecute(Sender: TObject);
350         procedure BoardFavoriteAddActionUpdate(Sender: TObject);
351         procedure LogFolderOpenActionExecute(Sender: TObject);
352         procedure LogFolderOpenActionUpdate(Sender: TObject);
353         procedure BrowsBoradHeadActionExecute(Sender: TObject);
354         procedure SortActiveColumnActionExecute(Sender: TObject);
355         procedure SortNextColumnActionExecute(Sender: TObject);
356         procedure SortPrevColumnActionExecute(Sender: TObject);
357         procedure StdToolBarVisibleActionExecute(Sender: TObject);
358         procedure AddressBarVisibleActionExecute(Sender: TObject);
359         procedure LinkBarVisibleActionExecute(Sender: TObject);
360         procedure ListToolBarVisibleActionExecute(Sender: TObject);
361         procedure ListNameBarVisibleActionExecute(Sender: TObject);
362         procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
363         procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
364         procedure MsgBarVisibleActionExecute(Sender: TObject);
365         procedure MsgBarCloseActionExecute(Sender: TObject);
366         procedure StatusBarVisibleActionExecute(Sender: TObject);
367         procedure CabinetBBSActionExecute(Sender: TObject);
368         procedure CabinetHistoryActionExecute(Sender: TObject);
369         procedure CabinetFavoriteActionExecute(Sender: TObject);
370         procedure CabinetVisibleActionExecute(Sender: TObject);
371         procedure CabinetCloseActionExecute(Sender: TObject);
372         procedure LargeIconActionExecute(Sender: TObject);
373         procedure SmallIconActionExecute(Sender: TObject);
374         procedure ListIconActionExecute(Sender: TObject);
375         procedure DetailIconActionExecute(Sender: TObject);
376         procedure StopActionExecute(Sender: TObject);
377         procedure ArrangeActionExecute(Sender: TObject);
378         procedure PaneInitActionExecute(Sender: TObject);
379         procedure BrowserTabVisibleActionExecute(Sender: TObject);
380         procedure BrowserTabTopActionExecute(Sender: TObject);
381         procedure BrowserTabBottomActionExecute(Sender: TObject);
382         procedure BrowserTabTabStyleActionExecute(Sender: TObject);
383         procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
384         procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
385         procedure SetFocusForBrowserActionExecute(Sender: TObject);
386         procedure SetFocusForBrowserActionUpdate(Sender: TObject);
387         procedure SetFocusForThreadListActionExecute(Sender: TObject);
388         procedure SetFocusForCabinetActionExecute(Sender: TObject);
389         procedure SetFocusForCabinetActionUpdate(Sender: TObject);
390         procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
391         procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
392         procedure UnSelectedListViewActionExecute(Sender: TObject);
393         procedure KidokuActionExecute(Sender: TObject);
394         procedure MidokuActionExecute(Sender: TObject);
395         procedure AllSelectActionExecute(Sender: TObject);
396         procedure AllSelectActionUpdate(Sender: TObject);
397     procedure ThreadSizeCalcForFileActionExecute(Sender: TObject);
398     procedure SetInputAssistActionExecute(Sender: TObject);
399   private
400         { Private \90é\8c¾ }
401         procedure ClearResFilter;
402         procedure SetResRange(range: Integer);
403         procedure SetThreadAreaHorNormal;
404         procedure SetThreadAreaHorizontal(gls : TGikoListState);
405         procedure SetThreadAreaVerNormal;
406         procedure SetThreadAreaVertical(gls : TGikoListState);
407         procedure SetThreadReadProperty(read: Boolean);
408         procedure SelectThreadSaveToFile(dat: Boolean);
409         function GetSortProperties(List: TObject;var vSortOrder: Boolean): Boolean;
410         procedure RecalcThreadSize(limit : Integer);
411   public
412         { Public \90é\8c¾ }
413         procedure RepaintStatusBar;
414   published
415         { Published \90é\8c¾ }
416         //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
417         procedure DependActiveCntentActionUpdate(Sender: TObject);
418         //! 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é
419         procedure DependActiveCntentLogActionUpdate(Sender: TObject);
420         //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
421         procedure DependActiveListTBoardActionUpdate(Sender: TObject);
422   end;
423
424 var
425   GikoDM: TGikoDM;
426
427
428 implementation
429
430 uses
431         Windows, Math, Clipbrd,
432         Giko, GikoSystem, GikoUtil, BoardGroup,
433         FavoriteArrange, Favorite, MojuUtils,
434         Editor, ListSelect, Search, Option, Round,
435         KeySetting, Gesture, Kotehan, ToolBarSetting,
436         ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
437         GikoBayesian, About, ShellAPI,
438         RoundName, RoundData, Menus, ListViewUtils,
439         ThreadControl, GikoMessage, InputAssist;
440
441
442 {$R *.dfm}
443 // *************************************************************************
444 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82Å\97L\8cø\82É\82È\82é
445 // *************************************************************************
446 procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
447 begin
448         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
449 end;
450 // *************************************************************************
451 //! TAction\82ÅGetActiveContent\82ªnil\88È\8aO\82©\82Â\83\8d\83O\82ð\8e\9d\82Á\82Ä\82¢\82é
452 // *************************************************************************
453 procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
454 begin
455         TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
456                                                                         and (GikoForm.GetActiveContent.IsLogFile);
457 end;
458 // *************************************************************************
459 //! TAction\82ÅActiveList\82ªTBoard\82Å\97L\8cø\82É\82È\82é
460 // *************************************************************************
461 procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
462 begin
463         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
464 end;
465 // *************************************************************************
466 //! NG\83\8f\81[\83h\95Ò\8fW
467 // *************************************************************************
468 procedure TGikoDM.EditNGActionExecute(Sender: TObject);
469 begin
470         //\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
471         GikoSys.FAbon.EditNGwords;
472 end;
473 // *************************************************************************
474 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\8dÄ\93Ç\82Ý\8d\9e\82Ý\81j
475 // *************************************************************************
476 procedure TGikoDM.ReloadActionExecute(Sender: TObject);
477 begin
478         //\83\8a\83\8d\81[\83h\82ð\8eÀ\8ds\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
479         if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
480                 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);
481         end else begin
482                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
483                 GikoForm.RepaintAllTabsBrowser();
484         end;
485 end;
486 // *************************************************************************
487 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\8cã\82ë\81j
488 // *************************************************************************
489 procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
490 begin
491         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
492         if GikoSys.FAbon.GoBack =false then begin
493                 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);
494         end else begin
495                 //\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
496                 RepaintStatusBar;
497                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
498                 GikoForm.RepaintAllTabsBrowser();
499         end;
500 end;
501 // *************************************************************************
502 //! NG\83\8f\81[\83h\93Ç\82Ý\8d\9e\82Ý\81i\88ê\82Â\91O\81j
503 // *************************************************************************
504 procedure TGikoDM.GoBackActionExecute(Sender: TObject);
505 begin
506         //\88ê\82Â\8cã\82ë\82Ì\93Ç\82Ý\8d\9e\82Ý\81@\8e¸\94s\82µ\82½\82ç\83\81\83b\83Z\81[\83W\8fo\97Í
507         if GikoSys.FAbon.GoForward =false then begin
508                 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);
509         end else begin
510                 //\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
511                 RepaintStatusBar;
512                 //\91S\82Ä\82Ì\83^\83u\82É\8dÄ\95`\89æ\82ð\90Ý\92è
513                 GikoForm.RepaintAllTabsBrowser();
514         end;
515 end;
516 // *************************************************************************
517 //! 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
518 // *************************************************************************
519 procedure TGikoDM.RepaintStatusBar;
520 var
521         s : String;
522 begin
523         //\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
524         s := GikoSys.FAbon.NGwordname;
525         GikoForm.StatusBar.Panels.Items[GiKo.NGWORDNAME_PANEL].Text := s;
526         //\83X\83e\81[\83^\83X\82Ì\95\\8e¦\83T\83C\83Y\82Ì\83\8a\83T\83C\83Y
527         GikoForm.StatusBar.Panels[GiKo.NGWORDNAME_PANEL].Width
528                 := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
529         GikoForm.StatusBarResize(nil);
530 end;
531 // *************************************************************************
532 //! \83A\83h\83\8c\83X\83o\81[\82É\95\\8e¦\82µ\82Ä\82¢\82é\83A\83h\83\8c\83X\82Ö\88Ú\93®\82·\82é
533 // *************************************************************************
534 procedure TGikoDM.MoveToActionExecute(Sender: TObject);
535 var
536         URL: string;
537         idx: Integer;
538 begin
539         //\83A\83h\83\8c\83X\83R\83\93\83{\83{\83b\83N\83X\82©\82çURL\82ð\8eæ\93¾
540         URL := Trim(GikoForm.AddressComboBox.Text);
541         //URL\82É\88Ú\93®
542         GikoForm.MoveToURL(URL);
543         //\88È\89º\81A\97\9a\97ð\82Ì\8f\88\97\9d
544         idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
545         if idx = -1 then begin
546                 GikoForm.AddressComboBox.Items.Insert(0, URL);
547                 if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
548                         GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
549         end else begin
550                 GikoForm.AddressComboBox.Items.Delete(idx);
551                 GikoForm.AddressComboBox.Items.Insert(0, URL);
552         end;
553 end;
554 // *************************************************************************
555 //! \82¨\8bC\82É\93ü\82è\82Ì\92Ç\89Á\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
556 // *************************************************************************
557 procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
558 begin
559         GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
560 end;
561 // *************************************************************************
562 //! \82¨\8bC\82É\93ü\82è\82Ì\90®\97\9d\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
563 // *************************************************************************
564 procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
565 var
566         Dlg: TFavoriteArrangeDialog;
567 begin
568         Dlg := TFavoriteArrangeDialog.Create(GikoForm);
569         try
570                 Dlg.ShowModal;
571         finally
572                 Dlg.Release;
573         end;
574         //\83\8a\83\93\83N\83o\81[\82É\8dX\90V\82ð\93`\82¦\82é
575         PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
576 end;
577 // *************************************************************************
578 //! \83c\83\8a\81[\82ð\91S\82Ä\95Â\82\82é
579 // *************************************************************************
580 procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
581 var
582         node    : TTreeNode;
583 begin
584         node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
585         try
586                 //\83m\81[\83h\82ª\91±\82­\8cÀ\82è\81@\83m\81[\83h\82ð\8fk\8f¬\82³\82¹\82é
587                 while node <> nil do begin
588                         if node.HasChildren then
589                                 node.Expanded := False;
590                         node := node.GetNext;
591                 end;
592         except
593         end;
594 end;
595 // *************************************************************************
596 //! \82¨\8bC\82É\93ü\82è\82Ì\96¼\91O\82ð\95Ò\8fW\82·\82é
597 // *************************************************************************
598 procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
599 var
600         node : TTreeNode;
601 begin
602
603         if GikoForm.ClickNode = nil then
604                 Exit;
605         if GikoForm.ClickNode.IsFirstNode then
606                 Exit;
607         if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
608                 Exit;
609         GikoForm.FavoriteTreeView.ReadOnly := False;
610         if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
611                 node := GikoForm.ClickNode.Parent;
612                 while node <> nil do begin
613                         node.Expanded   := True;
614                         node                                    := node.Parent;
615                 end;
616                 GikoForm.ClickNode.EditText;
617         end else begin
618                 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 );
619         end;
620         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
621         FavoriteDM.Modified := true;
622         GikoForm.SetLinkBar;
623 end;
624 // *************************************************************************
625 //! \90V\82µ\82­\82¨\8bC\82É\93ü\82è\82É\83t\83H\83\8b\83_\82ð\8dì\90¬\82·\82é
626 // *************************************************************************
627 procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
628 var
629         NewFavFolder: TFavoriteFolder;
630         Node: TTreeNode;
631 begin
632
633         if GikoForm.ClickNode = nil then
634                 Exit;
635
636         try
637                 if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
638                         GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
639                         GikoForm.ClickNode := GikoForm.ClickNode.Parent;
640                 end;
641
642                 NewFavFolder := TFavoriteFolder.Create;
643                 Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '\90V\82µ\82¢\83t\83H\83\8b\83_', NewFavFolder);
644                 Node.ImageIndex := 14;
645                 Node.SelectedIndex := 14;
646         //                      FClickNode.Selected.Expanded := True;
647                 GikoForm.FavoriteTreeView.Selected := Node;
648                 GikoForm.ClickNode := Node;
649                 //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
650                 FavoriteDM.Modified := true;
651                 FavoriteTreeViewRenameAction.Execute;
652         finally
653         end;
654
655 end;
656 // *************************************************************************
657 //! \82±\82Ì\82¨\8bC\82É\93ü\82è\82ð\8dí\8f\9c\82·\82é
658 // *************************************************************************
659 procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
660 const
661         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';
662         DEL_MSG = '\81g^0\81h\82ð\8dí\8f\9c\82µ\82Ü\82·\81B\82æ\82ë\82µ\82¢\82Å\82·\82©\81H';
663         DEL_TITLE = '\8dí\8f\9c\8am\94F';
664 begin
665
666         if GikoForm.ClickNode = nil then
667                 Exit;
668         if GikoForm.ClickNode.IsFirstNode then
669                 Exit;
670         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
671                 if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
672                         if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
673                                 Exit;
674                 end else begin
675                         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
676                                 Exit;
677                 end;
678         end;
679
680         GikoForm.ClickNode.Delete;
681         //\8dX\90V\82µ\82½\82±\82Æ\82ð\8b³\82¦\82é
682         FavoriteDM.Modified := true;
683
684         GikoForm.SetLinkBar;
685
686 end;
687 // *************************************************************************
688 //! \82±\82Ì\83t\83H\83\8b\83_\82É\93ü\82Á\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\91S\82Ä\8aJ\82­
689 // *************************************************************************
690 procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
691   Sender: TObject);
692 begin
693         GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
694 end;
695 // *************************************************************************
696 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\82¨\8bC\82É\93ü\82è\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
697 // *************************************************************************
698 procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
699 var
700         FavThread: TFavoriteThreadItem;
701         FavBoard: TFavoriteBoardItem;
702         shiftDown: Boolean;
703 begin
704         if (GikoForm.ClickNode = nil) then Exit;
705
706         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
707
708         if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
709                 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
710                 if FavThread.Item <> nil then
711                         GikoForm.DownloadContent(FavThread.Item, shiftDown);
712         end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
713                 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
714                 GikoForm.DownloadList(FavBoard.Item, shiftDown);
715         end;
716
717 end;
718 // *************************************************************************
719 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
720 // *************************************************************************
721 procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
722 begin
723
724         if GikoForm.ClickNode = nil then Exit;
725
726         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
727                 Clipboard.AsText := TFavoriteItem( GikoForm.ClickNode.Data ).URL + #13#10;
728         end;
729 end;
730 // *************************************************************************
731 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
732 // *************************************************************************
733 procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
734 begin
735
736         if GikoForm.ClickNode = nil then Exit;
737
738         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
739                 Clipboard.AsText :=
740                         TFavoriteItem(GikoForm.ClickNode.Data).GetItemTitle + #13#10;
741         end;
742 end;
743 // *************************************************************************
744 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
745 // *************************************************************************
746 procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
747   Sender: TObject);
748 var
749         favItem : TFavoriteItem;
750 begin
751
752         if GikoForm.ClickNode = nil then Exit;
753
754         if (TObject(GikoForm.ClickNode.Data) is TFavoriteItem) then begin
755                 favItem := TFavoriteItem(GikoForm.ClickNode.Data);
756                 Clipboard.AsText := favItem.GetItemTitle  + #13#10 +
757                                                         favItem.URL + #13#10;
758         end;
759
760 end;
761 // *************************************************************************
762 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
763 // *************************************************************************
764 procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
765 const
766         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';
767         DEL_TITLE = '\8dí\8f\9c\8am\94F';
768 var
769         ThreadItem: TThreadItem;
770         FavThread: TFavoriteThreadItem;
771 begin
772
773         if GikoForm.ClickNode = nil then Exit;
774         if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
775
776         FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
777         ThreadItem := FavThread.Item;
778
779         try
780                 if GikoSys.Setting.DeleteMsg then begin
781                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
782                                 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
783                                         Exit;
784                 end;
785
786                 GikoForm.DeleteHistory(ThreadItem);
787                 GikoForm.DeleteTab(ThreadItem);
788                 ThreadItem.DeleteLogFile;
789
790                 GikoForm.ListView.Refresh;
791         finally
792         end;
793
794 end;
795 // *************************************************************************
796 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
797 // *************************************************************************
798 procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
799   Sender: TObject);
800 var
801         threadItem      : TThreadItem;
802 begin
803
804         if GikoForm.ClickNode = nil then Exit;
805
806         if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
807
808                 threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
809                 if threadItem = nil then
810                         Exit;
811                 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
812
813         end;
814 end;
815 //! \83\8c\83X\82Ì\8di\8d\9e\82Ý\83t\83B\83\8b\83^\81[\82ð\8bó\82É\82·\82é
816 procedure TGikoDM.ClearResFilter;
817 var
818         FilterList : TStringList;
819 begin
820         // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
821         FilterList := TStringList.Create;
822         try
823                 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
824                 GikoSys.FSelectResFilter.Reverse := False;
825         finally
826                 FilterList.Free;
827         end;
828         GikoForm.SelectResWord := '';
829 end;
830 // *************************************************************************
831 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
832 // *************************************************************************
833 procedure TGikoDM.SetResRange(range: Integer);
834 begin
835         if GikoSys.ResRange <> range then begin
836                 GikoSys.ResRange        := range;
837                 // \83t\83B\83\8b\83^\95\8e\9a\97ñ\82ð\8bó\82É\82·\82é
838                 ClearResFilter;
839                 GikoForm.RepaintAllTabsBrowser();
840         end;
841 end;
842 // *************************************************************************
843 //! \8dÅ\90V100\83\8c\83X\82Ì\82Ý\95\\8e¦
844 // *************************************************************************
845 procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
846 begin
847         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
848                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
849
850         GikoForm.ResRangeMenuSelect     := 100;
851         OnlyAHundredResAction.Checked   := True;
852         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
853         SetResRange(100);
854 end;
855 // *************************************************************************
856 //! \96¢\93Ç\83\8c\83X\82Ì\82Ý\95\\8e¦
857 // *************************************************************************
858 procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
859 begin
860         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
861                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
862
863         GikoForm.ResRangeMenuSelect     := Ord( grrKoko );
864         OnlyKokoResAction.Checked       := True;
865
866         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
867         SetResRange(Ord( grrKoko ));
868 end;
869 // *************************************************************************
870 //! \90V\92\85\83\8c\83X\82Ì\82Ý\95\\8e¦
871 // *************************************************************************
872 procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
873 begin
874         if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
875                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
876
877         GikoForm.ResRangeMenuSelect     := Ord( grrNew );
878         OnlyNewResAction.Checked        := True;
879
880         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
881         SetResRange(Ord( grrNew ));
882 end;
883 // *************************************************************************
884 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloHorizontal\81@
885 // *************************************************************************
886 procedure TGikoDM.SetThreadAreaHorNormal;
887 begin
888         //\92Ê\8fí\95\\8e¦\82É\82·\82é
889         if GikoForm.ActiveContent <> nil then
890                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0);  //\95`\89æ\92â\8e~
891         GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
892         BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
893         BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
894         GikoSys.Setting.ListWidthState := glsNormal;
895         if GikoForm.ActiveContent <> nil then
896                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0);  //\95`\89æ
897 end;
898 // *************************************************************************
899 //! \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@
900 // *************************************************************************
901 procedure TGikoDM.SetThreadAreaHorizontal(gls : TGikoListState);
902 begin
903         if GikoForm.ActiveContent <> nil then
904                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0);  //\95`\89æ\92â\8e~
905         if GikoSys.Setting.ListWidthState = glsNormal then
906                 GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
907         //\8dÅ\91å\95\\8e¦
908         if (gls = glsMax) then begin
909                 GikoForm.ViewPanel.Width := 1;
910                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
911                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
912                 GikoSys.Setting.ListWidthState := glsMax;
913         end else if (gls = glsMin) then begin
914                 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
915                 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
916                 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
917                 GikoSys.Setting.ListWidthState := glsMin;
918         end;
919         if GikoForm.ActiveContent <> nil then
920                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0);  //\95`\89æ
921 end;
922 // *************************************************************************
923 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\92Ê\8fí\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
924 // *************************************************************************
925 procedure TGikoDM.SetThreadAreaVerNormal;
926 begin
927         //\92Ê\8fí\95\\8e¦\82É\82·\82é
928         if GikoForm.ActiveContent <> nil then
929                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0);  //\95`\89æ\92â\8e~
930         GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
931         BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
932         BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
933         GikoSys.Setting.ListHeightState := glsNormal;
934         if GikoForm.ActiveContent <> nil then
935                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0);  //\95`\89æ
936 end;
937 // *************************************************************************
938 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\8dÅ\91å/\8dÅ\8f¬\95\\8e¦\82É\82·\82é \92\8d)ListOrientation = gloVertical
939 // *************************************************************************
940 procedure TGikoDM.SetThreadAreaVertical(gls : TGikoListState);
941 begin
942         if GikoForm.ActiveContent <> nil then
943                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0);  //\95`\89æ\92â\8e~
944         if GikoSys.Setting.ListHeightState = glsNormal then
945                 GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
946         if (gls = glsMin) then begin
947                 GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
948                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
949                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
950                 GikoSys.Setting.ListHeightState := glsMin;
951         end else if (gls = glsMax) then begin
952                 GikoForm.ViewPanel.Height := 1;
953                 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
954                 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
955                 GikoSys.Setting.ListHeightState := glsMax;
956         end;
957         if GikoForm.ActiveContent <> nil then
958                 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0);  //\95`\89æ
959 end;
960 // *************************************************************************
961 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\91å\82«\82­\95\\8e¦\82·\82é
962 // *************************************************************************
963 procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
964 begin
965         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
966                 case GikoSys.Setting.ListWidthState of
967                         glsMax: begin
968                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
969                                 SetThreadAreaHorNormal;
970                         end;
971                         glsMin, glsNormal: begin
972                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
973                                 SetThreadAreaHorizontal(glsMax);
974                         end;
975                 end;
976         end else begin
977                 case GikoSys.Setting.ListHeightState of
978                         glsMax: begin
979                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
980                                 SetThreadAreaVerNormal;
981                         end;
982                         glsMin, glsNormal: begin
983                                 //\8dÅ\91å\95\\8e¦\82É\82·\82é
984                                 SetThreadAreaVertical(glsMax);
985                         end;
986                 end;
987         end;
988 end;
989 // *************************************************************************
990 //! \83X\83\8c\83b\83h\95\\8e¦\83G\83\8a\83A\82ð\8f¬\82³\82­\95\\8e¦\82·\82é
991 // *************************************************************************
992 procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
993 begin
994         if GikoSys.Setting.ListOrientation = gloHorizontal then begin
995                 case GikoSys.Setting.ListWidthState of
996                         glsMax, glsNormal: begin
997                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
998                                 SetThreadAreaHorizontal(glsMin);
999                         end;
1000                         glsMin: begin
1001                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1002                                 SetThreadAreaHorNormal;
1003                         end;
1004                 end;
1005         end else begin
1006                 case GikoSys.Setting.ListHeightState of
1007                         glsMax, glsNormal: begin
1008                                 //\8dÅ\8f¬\95\\8e¦\82É\82·\82é
1009                                 SetThreadAreaVertical(glsMin);
1010                         end;
1011                         glsMin: begin
1012                                 //\92Ê\8fí\95\\8e¦\82É\82·\82é
1013                                 SetThreadAreaVerNormal;
1014                         end;
1015                 end;
1016         end;
1017 end;
1018 // *************************************************************************
1019 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90æ\93ª\82Ö\88Ú\93®\82·\82é
1020 // *************************************************************************
1021 procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1022 begin
1023         GikoForm.BrowserMovement('top');
1024 end;
1025 // *************************************************************************
1026 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\8dÅ\8cã\82Ö\88Ú\93®\82·\82é
1027 // *************************************************************************
1028 procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1029 begin
1030         GikoForm.BrowserMovement('bottom');
1031 end;
1032 // *************************************************************************
1033 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82Ì\90V\92\85\82Ö\88Ú\93®\82·\82é
1034 // *************************************************************************
1035 procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1036 begin
1037         GikoForm.BrowserMovement('new');
1038 end;
1039 // *************************************************************************
1040 //! \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é
1041 // *************************************************************************
1042 procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1043 begin
1044         GikoForm.BrowserMovement('koko');
1045 end;
1046 // *************************************************************************
1047 //! \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
1048 // *************************************************************************
1049 procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1050 begin
1051         ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1052                                                                 and (GikoForm.GetActiveContent.IsLogFile)
1053                                                                 and (GikoForm.GetActiveContent.Kokomade <> -1);
1054 end;
1055 // *************************************************************************
1056 //! \83\8c\83X\8f\91\82«\8d\9e\82Ý\83E\83B\83\93\83h\83E\82ð\95\\8e¦\82·\82é
1057 // *************************************************************************
1058 procedure TGikoDM.EditorActionExecute(Sender: TObject);
1059 var
1060         Editor: TEditorForm;
1061         Item: TThreadItem;
1062 begin
1063         Item := GikoForm.GetActiveContent;
1064         if Item = nil then Exit;
1065         Editor := TEditorForm.Create(GikoForm.GetMainForm);
1066         Editor.SetThreadItem(Item);
1067         Editor.Show;
1068         Editor.BodyEdit.SetFocus;
1069 end;
1070 // *************************************************************************
1071 //! \83X\83\8c\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1072 // *************************************************************************
1073 procedure TGikoDM.IEActionExecute(Sender: TObject);
1074 begin
1075         ShowThreadAction.Execute;
1076 end;
1077 // *************************************************************************
1078 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é
1079 // *************************************************************************
1080 procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1081 var
1082         ThreadItem: TThreadItem;
1083 begin
1084         ThreadItem := GikoForm.GetActiveContent;
1085         if ThreadItem = nil then Exit;
1086         GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1087 end;
1088 // *************************************************************************
1089 //! \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é
1090 // *************************************************************************
1091 procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1092 var
1093         ThreadItem: TThreadItem;
1094 begin
1095         ThreadItem := GikoForm.GetActiveContent;
1096         if ThreadItem = nil then Exit;
1097         GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1098 end;
1099 // *************************************************************************
1100 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\82ÌURL\82ð\83R\83s\81[\82·\82é
1101 // *************************************************************************
1102 procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1103 var
1104         s: string;
1105 begin
1106         s := '';
1107         if TObject(GikoForm.GetActiveContent) is TBoard then
1108                 s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1109         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1110                 s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1111         if s <> '' then
1112                 Clipboard.AsText := s;
1113 end;
1114 // *************************************************************************
1115 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ð\83R\83s\81[\82·\82é
1116 // *************************************************************************
1117 procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1118 var
1119         s: string;
1120 begin
1121         s := '';
1122         if TObject(GikoForm.GetActiveContent) is TBoard then
1123                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1124         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1125                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1126         if s <> '' then
1127                 Clipboard.AsText := s;
1128 end;
1129 // *************************************************************************
1130 //! \8c»\8dÝ\95\\8e¦\82µ\82Ä\82¢\82é\83X\83\8c\83b\83h\96¼\82ÆURL\82ð\83R\83s\81[\82·\82é
1131 // *************************************************************************
1132 procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1133 var
1134         s: string;
1135 begin
1136         s := '';
1137         if TObject(GikoForm.GetActiveContent) is TBoard then
1138                 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1139         else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1140                 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1141         if s <> '' then
1142                 Clipboard.AsText := s;
1143 end;
1144 // *************************************************************************
1145 //! \95\\8e¦\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1146 // *************************************************************************
1147 procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1148 var
1149         ThreadItem: TThreadItem;
1150         shiftDown: Boolean;
1151 begin
1152         ThreadItem := GikoForm.GetActiveContent;
1153         shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1154         if ThreadItem <> nil then
1155                 GikoForm.DownloadContent(ThreadItem, shiftDown);
1156 end;
1157 // *************************************************************************
1158 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82ð\95Â\82\82é
1159 // *************************************************************************
1160 procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1161 var
1162         idx: Integer;
1163 begin
1164         idx := GikoForm.BrowserTab.TabIndex;
1165         if idx <> -1 then begin
1166                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1167                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1168                 end;
1169         end;
1170 end;
1171 // *************************************************************************
1172 //! \83^\83u\82ª\82P\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1173 // *************************************************************************
1174 procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1175 begin
1176         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1177 end;
1178 // *************************************************************************
1179 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\88È\8aO\82ð\95Â\82\82é
1180 // *************************************************************************
1181 procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1182 var
1183         i: Integer;
1184         idx: Integer;
1185 begin
1186         idx := GikoForm.BrowserTab.TabIndex;
1187         if idx = -1 then Exit;
1188         GikoForm.BrowserTab.Tabs.BeginUpdate;
1189         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1190                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1191                 GikoForm.BrowserTab.Tabs.Delete(i);
1192         end;
1193         if idx > 0 then begin
1194                 for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1195                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1196                         GikoForm.BrowserTab.Tabs.Delete(i);
1197                 end;
1198         end;
1199         GikoForm.BrowserTab.Tabs.EndUpdate;
1200 end;
1201 // *************************************************************************
1202 //! \83^\83u\82ª\82Q\82Â\88È\8fã\82 \82ê\82ª\97L\8cø\82É\82·\82éUpdate\83C\83x\83\93\83g
1203 // *************************************************************************
1204 procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1205 begin
1206         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1207 end;
1208 // *************************************************************************
1209 //! \91S\82Ä\82Ì\83^\83u\82ð\95Â\82\82é
1210 // *************************************************************************
1211 procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1212 var
1213         i: Integer;
1214 begin
1215         if GikoSys.Setting.ShowDialogForAllTabClose then
1216                 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
1217                         Exit;
1218
1219         GikoForm.ActiveContent := nil;
1220         GikoForm.BrowserNullTab.Thread := nil;
1221         GikoForm.BrowserTab.OnChange := nil;
1222         GikoForm.BrowserTab.Tabs.BeginUpdate;
1223         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1224                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1225         end;
1226         GikoForm.BrowserTab.Tabs.Clear;
1227         GikoForm.BrowserTab.Tabs.EndUpdate;
1228         GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1229         GikoForm.SetContent(GikoForm.BrowserNullTab);
1230         GikoForm.Caption := CAPTION_NAME ;
1231 end;
1232 // *************************************************************************
1233 //! \8c»\8dÝ\8aJ\82¢\82Ä\82¢\82é\83^\83u\82Ì\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
1234 // *************************************************************************
1235 procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1236 const
1237         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';
1238         DEL_TITLE = '\8dí\8f\9c\8am\94F';
1239 var
1240         idx: Integer;
1241         ThreadItem: TThreadItem;
1242 begin
1243         idx := GikoForm.BrowserTab.TabIndex;
1244         if idx <> -1 then begin
1245                 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1246                         ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1247                         if GikoSys.Setting.DeleteMsg then
1248                                 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1249                                         if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1250                                                 Exit;
1251                         GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1252                         ThreadItem.DeleteLogFile;
1253                         if ThreadItem.ParentBoard = GikoForm.ActiveList then
1254                                 GikoForm.ListView.Refresh;
1255                 end;
1256         end;
1257 end;
1258 // *************************************************************************
1259 //! \88ê\94Ô\8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1260 // *************************************************************************
1261 procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1262 begin
1263         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1264                 GikoForm.BrowserTab.TabIndex := 0;
1265                 GikoForm.BrowserTab.OnChange(nil);
1266         end;
1267 end;
1268 // *************************************************************************
1269 //! \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
1270 // *************************************************************************
1271 procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1272 begin
1273         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1274                                                                 and (GikoForm.BrowserTab.TabIndex <> 0);
1275 end;
1276 // *************************************************************************
1277 //! \8d\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1278 // *************************************************************************
1279 procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1280 begin
1281         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1282                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1283                         GikoForm.BrowserTab.TabIndex := 0;
1284                         GikoForm.BrowserTab.OnChange(nil);
1285                 end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1286                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1287                         GikoForm.BrowserTab.OnChange(nil);
1288                 end;
1289         end;
1290 end;
1291 // *************************************************************************
1292 //! \89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1293 // *************************************************************************
1294 procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1295 begin
1296         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1297                 if GikoForm.BrowserTab.TabIndex = -1 then begin
1298                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1299                         GikoForm.BrowserTab.OnChange(nil);
1300                 end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1301                         GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1302                         GikoForm.BrowserTab.OnChange(nil);
1303                 end;
1304         end;
1305 end;
1306 // *************************************************************************
1307 //! \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
1308 // *************************************************************************
1309 procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1310 begin
1311         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1312                                                                 and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1313 end;
1314 // *************************************************************************
1315 //! \88ê\94Ô\89E\82Ì\83^\83u\82ð\91I\91ð\82·\82é
1316 // *************************************************************************
1317 procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1318 begin
1319         if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1320                 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1321                 GikoForm.BrowserTab.OnChange(nil);
1322         end;
1323 end;
1324 // *************************************************************************
1325 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á
1326 // *************************************************************************
1327 procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1328 begin
1329         if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1330                 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1331 end;
1332 // *************************************************************************
1333 //! \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
1334 // *************************************************************************
1335 procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1336 begin
1337         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1338                                                                         and (GikoForm.ListView.SelCount > 0);
1339 end;
1340 // *************************************************************************
1341 //! \83\8c\83X\82Ì\93à\97e\82ð\8di\82è\8d\9e\82Þ
1342 // *************************************************************************
1343 procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1344 var
1345         Dlg: TListSelectDialog;
1346         FilterList : TStringList;
1347         idx : Integer;
1348 begin
1349         Dlg := TListSelectDialog.Create(GikoForm);
1350         try
1351                 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1352                 Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1353                 Dlg.ShowModal;
1354                 if Dlg.ModalResult = mrOK then begin
1355                         SelectResAction.Checked := True;
1356                         if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1357                                 // \8bó\93ü\97Í\82Å OK \82Í\8di\82è\8d\9e\82Ý\89ð\8f\9c\82Æ\93¯\88Ó\8b`
1358                                 ResRangeAction.Execute;
1359                         end else begin
1360                                 GikoSys.ResRange := Ord( grrSelect );
1361
1362                                 // \8dÅ\8cã\82É\90Ý\92è\82µ\82½\82à\82Ì\82ð\8ao\82¦\82Ä\82¨\82­
1363                                 GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1364
1365                                 // \8c\9f\8dõ\97\9a\97ð\82Ì\8dX\90V
1366                                 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1367                                 if idx <> -1 then
1368                                         GikoSys.Setting.SelectTextList.Delete(idx);
1369                                 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1370                                 while Dlg.SelectComboBox.Items.Count > 100 do begin
1371                                         Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1372                                 end;
1373
1374                                 try
1375                                         if GikoForm.SelectComboBoxPanel.Visible then
1376                                                 GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1377                                 except
1378                                 end;
1379
1380                                 // \83t\83B\83\8b\83^\82Ì\90Ý\92è
1381                                 FilterList := TStringList.Create;
1382                                 try
1383                                         GikoSys.FSelectResFilter.Reverse := True;
1384                                         FilterList.Delimiter := ' '; //\8bæ\90Ø\82è\8eq\82ð\94¼\8ap\83X\83y\81[\83X\82É\90Ý\92è
1385                                         FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1386
1387                                         GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1388                                 finally
1389                                         FilterList.Free;
1390                                 end;
1391                                 GikoForm.RepaintAllTabsBrowser();
1392                         end;
1393                 end else begin
1394                         // \83L\83\83\83\93\83Z\83\8b
1395                         if GikoSys.ResRange <> Ord( grrSelect ) then
1396                                 ResRangeAction.Execute;
1397                 end;
1398         finally
1399                 Dlg.Release;
1400         end;
1401
1402 end;
1403 // *************************************************************************
1404 //! \91S\82Ä\82Ì\83\8c\83X\82ð\95\\8e¦\82·\82é
1405 // *************************************************************************
1406 procedure TGikoDM.AllResActionExecute(Sender: TObject);
1407 begin
1408         if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1409                 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1410
1411         GikoForm.ResRangeMenuSelect     := Ord( grrAll );
1412         AllResAction.Checked            := True;
1413
1414         //\81@\95\\8e¦\94Í\88Í\82ð\90Ý\92è\82·\82é
1415         SetResRange(Ord( grrAll ));
1416 end;
1417 // *************************************************************************
1418 //! \83\8c\83X\82Ì\95\\8e¦\94Í\88Í\82ð\90Ý\92è
1419 // *************************************************************************
1420 procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1421 begin
1422         case GikoForm.ResRangeMenuSelect of
1423         Ord( grrAll ):  AllResAction.Execute;
1424         Ord( grrKoko ): OnlyKokoResAction.Execute;
1425         Ord( grrNew ):  OnlyNewResAction.Execute;
1426         100:                    OnlyAHundredResAction.Execute;
1427         end;
1428
1429 end;
1430 // *************************************************************************
1431 //! \82±\82Ì\83X\83\8c\83b\83h\82ð\8aÜ\82Þ\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦
1432 // *************************************************************************
1433 procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1434 begin
1435         GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1436 end;
1437 // *************************************************************************
1438 //! \8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83\8c\83X\82É\94ò\82Ô
1439 // *************************************************************************
1440 procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1441 var
1442         str: string;
1443         res: integer;
1444 begin
1445         str := '1';
1446         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
1447                 str := ZenToHan(str);
1448                 res := StrToIntDef(str, -1);
1449                 if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1450                         GikoForm.ActiveContent.Move(IntToStr(res));
1451                         SetFocusForBrowserAction.Execute;
1452                 end else if res > GikoForm.GetActiveContent.Count then begin
1453                         GikoForm.ActiveContent.Move(IntToStr(GikoForm.GetActiveContent.Count));
1454                         SetFocusForBrowserAction.Execute;
1455                 end;
1456         end;
1457 end;
1458 // *************************************************************************
1459 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\89E\82ð\95Â\82\82é
1460 // *************************************************************************
1461 procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1462 var
1463         i: Integer;
1464         idx: Integer;
1465 begin
1466         idx := GikoForm.BrowserTab.TabIndex;
1467         if idx = -1 then Exit;
1468         GikoForm.BrowserTab.Tabs.BeginUpdate;
1469         for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1470                 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1471                 GikoForm.BrowserTab.Tabs.Delete(i);
1472         end;
1473         GikoForm.BrowserTab.Tabs.EndUpdate;
1474 end;
1475 // *************************************************************************
1476 //! \83^\83u\82Ì\90\94\82ª\82Q\88È\8fã\82Å\97L\8cø\82ÈUpdate\83C\83x\83\93\83g
1477 // *************************************************************************
1478 procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1479 begin
1480         TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1481 end;
1482 // *************************************************************************
1483 //! \83A\83N\83e\83B\83u\82È\83^\83u\82æ\82è\8d\82ð\95Â\82\82é
1484 // *************************************************************************
1485 procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1486 var
1487         i: Integer;
1488         idx: Integer;
1489 begin
1490         idx := GikoForm.BrowserTab.TabIndex;
1491         if idx = -1 then Exit;
1492         GikoForm.BrowserTab.Tabs.BeginUpdate;
1493         if idx > 0 then begin
1494                 for i := idx - 1 downto 0 do begin
1495                         TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1496                         GikoForm.BrowserTab.Tabs.Delete(i);
1497                 end;
1498         end;
1499         GikoForm.BrowserTab.Tabs.EndUpdate;
1500 end;
1501 ////////////////////////////////\83X\83\8c\83b\83h\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1502 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1503 begin
1504 end;
1505 // *************************************************************************
1506 //! \83\8d\83O\8c\9f\8dõ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1507 // *************************************************************************
1508 procedure TGikoDM.SearchActionExecute(Sender: TObject);
1509 var
1510         chk: TObject;
1511 begin
1512
1513         if GikoForm.SearchDialog = nil then begin
1514                 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1515                         chk := GikoForm.GetActiveList
1516                 else
1517                         chk := nil;
1518
1519                 GikoForm.SearchDialog := TSearchDialog.Create(GikoForm, chk);
1520                 GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1521         end;
1522
1523         try
1524                 GikoForm.SearchDialog.Show;
1525         except
1526         end;
1527 end;
1528 // *************************************************************************
1529 //! \83I\83v\83V\83\87\83\93\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1530 // *************************************************************************
1531 procedure TGikoDM.OptionActionExecute(Sender: TObject);
1532 var
1533         Dlg: TOptionDialog;
1534 begin
1535         Dlg := TOptionDialog.Create(GikoForm);
1536         try
1537                 Dlg.ShowModal;
1538         finally
1539                 Dlg.Release;
1540         end;
1541 end;
1542 // *************************************************************************
1543 //! \8f\84\89ñ\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1544 // *************************************************************************
1545 procedure TGikoDM.RoundActionExecute(Sender: TObject);
1546 var
1547         Dlg: TRoundDialog;
1548 begin
1549         Dlg := TRoundDialog.Create(GikoForm);
1550         try
1551                 Dlg.ShowModal;
1552         finally
1553                 Dlg.Release;
1554         end;
1555 end;
1556 // *************************************************************************
1557 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1558 // *************************************************************************
1559 procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1560 var
1561         Dlg: TKeySettingForm;
1562 begin
1563         Dlg := TKeySettingForm.Create(GikoForm);
1564         try
1565                 if Dlg.ShowModal = mrOk then begin
1566                         GikoSys.SaveKeySetting(GikoFormActionList, Setting.KEY_SETTING_FILE_NAME);
1567                         GikoSys.SaveKeySetting(Dlg.EditorForm.ActionList, Setting.EKEY_SETTING_FILE_NAME);
1568                         GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1569                 end;
1570
1571         finally
1572                 Dlg.Release;
1573                 MouseGesture.UnHook;
1574                 MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1575                 MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1576                 MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1577                 if GikoSys.Setting.GestureEnabled then begin
1578                         GikoSys.Setting.Gestures.ClearGesture;
1579                         GikoSys.Setting.Gestures.LoadGesture(
1580                                 GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1581                         MouseGesture.SetHook( GikoForm.Handle );
1582                 end;
1583         end;
1584 end;
1585 // *************************************************************************
1586 //! \83L\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1587 // *************************************************************************
1588 procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1589 var
1590         Dlg: TKotehanDialog;
1591 begin
1592         Dlg := TKotehanDialog.Create(GikoForm);
1593         try
1594                 Dlg.ShowModal;
1595         finally
1596                 Dlg.Release;
1597         end;
1598 end;
1599 // *************************************************************************
1600 //! \83c\81[\83\8b\83o\81[\90Ý\92è\83_\83C\83A\83\8d\83O\82ð\8aJ\82­
1601 // *************************************************************************
1602 procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1603 var
1604         Dlg: TToolBarSettingDialog;
1605         i: Integer;
1606 begin
1607         Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1608         try
1609                 Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1610                 Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1611                 Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1612                 case GikoForm.ToolBarSettingSender of
1613                 tssMain:                Dlg.ToolBarIndex := 0;
1614                 tssList:                Dlg.ToolBarIndex := 1;
1615                 tssBrowser: Dlg.ToolBarIndex := 2;
1616                 end;
1617                 if Dlg.ShowModal = mrOK then begin
1618                         GikoForm.SetToolBarPopup;
1619
1620                         //\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é
1621                         for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1622                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1623                                         GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1624                                 GikoForm.MainCoolBar.Bands[i].MinWidth :=
1625                                         GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1626                         end;
1627                         for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1628                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1629                                         GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1630                                 GikoForm.ListCoolBar.Bands[i].MinWidth :=
1631                                         GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1632                         end;
1633                         for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1634                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1635                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1636                                 GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1637                                         GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1638                         end;
1639
1640                         SaveToolBarSetting(GikoForm.StdToolBar);
1641                         SaveToolBarSetting(GikoForm.ListToolBar);
1642                         //ListToolBar\82É\82¢\82é\82©\82à\82µ\82ê\82È\82¢\8di\8d\9e\82ÝComboBox\82ð\94z\92u
1643                         GikoForm.SetSelectComboBox;
1644                         GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1645                         SaveToolBarSetting(GikoForm.BrowserToolBar);
1646                 end;
1647         finally
1648                 Dlg.Release;
1649                 GikoForm.ToolBarSettingSender := tssNone;
1650         end;
1651 end;
1652 // *************************************************************************
1653 //! \83~\83\85\81[\83g
1654 // *************************************************************************
1655 procedure TGikoDM.MuteActionExecute(Sender: TObject);
1656 begin
1657         GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1658 end;
1659 ////////////////////////////////\83c\81[\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1660 // *************************************************************************
1661 //! \83X\83\8c\83b\83h\88ê\97\97\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1662 // *************************************************************************
1663 procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1664 var
1665         Board: TBoard;
1666         TmpTreeNode: TTreeNode;
1667 begin
1668         TmpTreeNode := GikoForm.ClickNode;
1669         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1670         Board := nil;
1671
1672         if TObject(TmpTreeNode.Data) is TBoard then
1673                 Board := TBoard(TmpTreeNode.Data)
1674         else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1675                 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1676
1677         if Board <> nil then
1678                 GikoForm.DownloadList(Board);
1679 end;
1680 // *************************************************************************
1681 //! \91I\91ð\82³\82ê\82½\83X\83\8c\83b\83h\82ð\83_\83E\83\93\83\8d\81[\83h\82·\82é
1682 // *************************************************************************
1683 procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1684 var
1685         ThreadItem: TThreadItem;
1686         TmpTreeNode: TTreeNode;
1687 begin
1688         TmpTreeNode := GikoForm.ClickNode;
1689         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1690         ThreadItem := nil;
1691
1692         if TObject(TmpTreeNode.Data) is TThreadItem then
1693                 ThreadItem := TThreadItem(TmpTreeNode.Data)
1694         else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1695                 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1696
1697         if ThreadItem <> nil then
1698                 GikoForm.DownloadContent(ThreadItem);
1699 end;
1700 // *************************************************************************
1701 //! \91I\91ð\82³\82ê\82½\94Â\82ÌURL\82ð\83R\83s\81[\82·\82é
1702 // *************************************************************************
1703 procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1704 var
1705         TmpTreeNode: TTreeNode;
1706         s: string;
1707 begin
1708         TmpTreeNode := GikoForm.ClickNode;
1709         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1710         if TObject(TmpTreeNode.Data) is TBoard then begin
1711                 s := TBoard(TmpTreeNode.Data).URL + #13#10;
1712         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1713                 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1714         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1715                 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1716         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1717                 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1718         end;
1719         Clipboard.AsText := s;
1720 end;
1721 // *************************************************************************
1722 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ÆURL\82ð\83R\83s\81[\82·\82é
1723 // *************************************************************************
1724 procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1725 var
1726         TmpTreeNode: TTreeNode;
1727         s: string;
1728 begin
1729         TmpTreeNode := GikoForm.ClickNode;
1730         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1731         if TObject(TmpTreeNode.Data) is TBoard then begin
1732                 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1733         end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1734                 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1735         end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1736                 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1737         end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1738                 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1739         end;
1740         Clipboard.AsText := s;
1741 end;
1742 // *************************************************************************
1743 //! \82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82·\82é
1744 // *************************************************************************
1745 procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1746 begin
1747         GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1748 end;
1749 // *************************************************************************
1750 //! \94Â\96¼\8c\9f\8dõ
1751 // *************************************************************************
1752 procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1753 var
1754         s : String;
1755         msg : String;
1756         CurItem : TTreeNode;
1757         next : boolean;
1758 begin
1759         if InputQuery('\94Â\96¼\8c\9f\8dõ','\94Â\96¼\82Ì\93ü\97Í',s) then begin
1760                 next := true;
1761                 while next do begin
1762                         if GikoForm.TreeView.Selected = nil then
1763                                 CurItem := GikoForm.TreeView.Items.GetFirstNode
1764                         else begin
1765                                 CurItem := GikoForm.TreeView.Selected.GetNext;
1766                                 if CurItem = nil then
1767                                         CurItem := GikoForm.TreeView.Items.GetFirstNode;
1768                         end;
1769                         while CurItem <> nil do begin
1770                                 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1771                                         break;
1772                                 end;
1773                                 CurItem := CurItem.GetNext;
1774                         end;
1775                         try
1776                                 if CurItem = nil then begin
1777                                         msg := '\90æ\93ª\82É\96ß\82è\82Ü\82·\82©\81H';
1778                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1779                                                 CurItem := GikoForm.TreeView.Items.GetFirstNode;
1780                                         end else begin
1781                                                 Exit;
1782                                         end;
1783                                         GikoForm.TreeView.Select(CurItem);
1784                                         GikoForm.TreeView.SetFocus;
1785                                 end else begin
1786                                         GikoForm.TreeView.Select(CurItem);
1787                                         GikoForm.TreeView.SetFocus;
1788                                         msg := '\8e\9f\82É\8ds\82«\82Ü\82·\82©\81H';
1789                                         if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes     then begin
1790                                                 next := true;
1791                                         end else begin
1792                                                 next := false;
1793                                         end;
1794                                 end;
1795
1796                         except
1797                                 Exit;
1798                         end;
1799                 end;
1800         end;
1801 end;
1802 // *************************************************************************
1803 //! \91I\91ð\82³\82ê\82½\94Â\82Ì\96¼\91O\82ð\83R\83s\81[\82·\82é
1804 // *************************************************************************
1805 procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1806 var
1807         s: string;
1808 begin
1809         GikoForm.TreeView.Selected := GikoForm.ClickNode;
1810         s := GikoForm.ClickNode.Text;
1811         Clipboard.AsText := s;
1812 end;
1813 ////////////////////////////////\83c\83\8a\81[\83|\83b\83v\83A\83b\83v\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
1814 // *************************************************************************
1815 //! \83\8d\83O\83C\83\93\81^\83\8d\83O\83A\83E\83g\82ð\82·\82é
1816 // *************************************************************************
1817 procedure TGikoDM.LoginActionExecute(Sender: TObject);
1818 var
1819         TmpCursor: TCursor;
1820         msg : String;
1821 begin
1822         if GikoSys.Dolib.Connected then begin
1823                 //\83\8d\83O\83A\83E\83g
1824                 GikoSys.Dolib.Disconnect;
1825                 LoginAction.Checked := False;
1826                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogout), nil, gmiOK);
1827                 LoginAction.Caption := '\83\8d\83O\83C\83\93(&L)';
1828         end else begin
1829                 TmpCursor := GikoForm.ScreenCursor;
1830                 GikoForm.ScreenCursor := crHourGlass;
1831                 try
1832                         //\92Ê\8fí\83\8d\83O\83C\83\93
1833                         if not GikoSys.Setting.ForcedLogin then begin
1834                                 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1835                                 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1836                                 GikoSys.Dolib.Password := GikoSys.Setting.Password;
1837                                 if GikoSys.Setting.ReadProxy then begin
1838                                         GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1839                                         GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1840                                 end else begin
1841                                         GikoSys.Dolib.ProxyAddress := '';
1842                                         GikoSys.Dolib.ProxyPort := 0;
1843                                 end;
1844                                 if GikoSys.Dolib.Connect then begin
1845                                         LoginAction.Checked := True;
1846                                         GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1847                                         LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
1848                                         //LoginToolButton.Style := tbsCheck;
1849                                 end else begin
1850                 //                      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);
1851                                         GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1852                                         GikoForm.PlaySound('Error');
1853                                         LoginAction.Checked := False;
1854                                         //LoginToolButton.Down := False;
1855                                         ///LoginToolButton.Style := tbsButton;
1856                                 end;
1857                         end else begin
1858                                 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
1859                                                 + '\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
1860                                                 + '\82±\82Ì\83\82\81[\83h\82Å\83\8d\83O\83C\83\93\82ð\8e\8e\82Ý\82Ü\82·\82©\81H' + #13#10;
1861                                 if MsgBox(GikoForm.Handle, msg, '\8cx\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES  then begin
1862                                         GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1863                                         GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1864                                         GikoSys.Dolib.Password := GikoSys.Setting.Password;
1865                                         if GikoSys.Setting.ReadProxy then begin
1866                                                 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1867                                                 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1868                                         end else begin
1869                                                 GikoSys.Dolib.ProxyAddress := '';
1870                                                 GikoSys.Dolib.ProxyPort := 0;
1871                                         end;
1872                                         //SSL\8fá\8aQ\97p\8b­\90§\83\8d\83O\83C\83\93
1873                                         GikoSys.Dolib.ForcedConnect;
1874                                         if GikoSys.Dolib.Connect then begin
1875                                                 LoginAction.Checked := True;
1876                                                 GikoForm.AddMessageList(GikoSys.GetGikoMessage(gmForceLogin) + GikoSys.Setting.UserID, nil, gmiOK);
1877                                                 LoginAction.Caption := '\83\8d\83O\83A\83E\83g(&L)';
1878                                                 //LoginToolButton.Style := tbsCheck;
1879                                                 end else begin
1880                         //                      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);
1881                                                 GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1882                                                 GikoForm.PlaySound('Error');
1883                                                 LoginAction.Checked := False;
1884                                                 //LoginToolButton.Down := False;
1885                                                 //LoginToolButton.Style := tbsButton;
1886                                         end;
1887                                 end else begin
1888                                         LoginAction.Checked := False;
1889                                         //LoginToolButton.Down := False;
1890                                         //LoginToolButton.Style := tbsButton;
1891                                 end;
1892                         end;
1893                 finally
1894                         GikoForm.ScreenCursor := TmpCursor;
1895                 end;
1896         end;
1897 end;
1898 // *************************************************************************
1899 //! \83{\81[\83h\8dX\90V\83_\83C\83A\83\8d\83O\82ð\95\\8e¦\82·\82é
1900 // *************************************************************************
1901 procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
1902 var
1903         Dlg: TNewBoardDialog;
1904         Msg: string;
1905 begin
1906         if GikoForm.EditorFormExists then begin
1907                 Msg := '\83\8c\83X\83G\83f\83B\83^\82ð\91S\82Ä\95Â\82\82Ä\82­\82¾\82³\82¢';
1908                 MsgBox(GikoForm.Handle, Msg, '\83G\83\89\81[', MB_OK or MB_ICONSTOP);
1909                 Exit;
1910         end;
1911         Dlg := TNewBoardDialog.Create(GikoForm);
1912         try
1913                 Dlg.ShowModal;
1914         finally
1915                 Dlg.Release;
1916         end;
1917 end;
1918 // *************************************************************************
1919 //! \91I\91ð\82³\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h\82ð\8dí\8f\9c\82·\82é
1920 // *************************************************************************
1921 procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
1922 const
1923         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';
1924         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';
1925         DEL_TITLE = '\8dí\8f\9c\8am\94F';
1926 var
1927         ThreadItem: TThreadItem;
1928         TmpListItem: TListItem;
1929         List: TList;
1930         i: Integer;
1931 begin
1932         List := TList.Create;
1933         try
1934                 TmpListItem := GikoForm.ListView.Selected;
1935                 while TmpListItem <> nil do begin
1936                         if TObject(TmpListItem.Data) is TThreadItem then begin
1937                                 ThreadItem := TThreadItem(TmpListItem.Data);
1938                                 if ThreadItem.IsLogFile then
1939                                         List.Add(ThreadItem);
1940                         end;
1941                         TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
1942                 end;
1943
1944                 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
1945                         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
1946                                 if List.Count = 1 then begin
1947                                         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
1948                                                 Exit;
1949                                 end else begin
1950                                         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
1951                                                 Exit;
1952                                 end;
1953                         end;
1954                 end;
1955
1956                 for i := 0 to List.Count - 1 do begin
1957                         ThreadItem := TThreadItem(List[i]);
1958                         GikoForm.DeleteHistory(ThreadItem);
1959                         GikoForm.DeleteTab(ThreadItem);
1960                         ThreadItem.DeleteLogFile;
1961
1962                         GikoForm.TreeView.Refresh;      // UnRead \82Ì\95\\8e¦\82ð\8dX\90V
1963                 end;
1964                 GikoForm.ListView.Refresh;
1965         finally
1966                 List.Free;
1967         end;
1968 end;
1969 // *************************************************************************
1970 //! 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Ê
1971 // *************************************************************************
1972 procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
1973 begin
1974         TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1975                                                                 and (GikoForm.ListView.SelCount > 0);
1976 end;
1977 // *************************************************************************
1978 //! \8di\8d\9e\82Ý\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
1979 // *************************************************************************
1980 procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
1981 const
1982         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';
1983         DEL_TITLE = '\8dí\8f\9c\8am\94F';
1984 begin
1985         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1986                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1987                         Exit;
1988         GikoSys.Setting.SelectTextList.Clear;
1989         GikoForm.SelectComboBox.Items.Clear;
1990         GikoForm.SelectComboBox.Text := '';
1991         GikoForm.SetListViewType( gvtAll );
1992 end;
1993 // *************************************************************************
1994 //! \83\8c\83X\83G\83f\83B\83^\82Ì\96¼\91O\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
1995 // *************************************************************************
1996 procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
1997 const
1998         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';
1999         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2000 begin
2001         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2002                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2003                         Exit;
2004         GikoSys.Setting.NameList.Clear;
2005         GikoForm.AllEditroFormNameTextClearClear;
2006 end;
2007 // *************************************************************************
2008 //! \83\8c\83X\83G\83f\83B\83^\82Ì\83\81\81[\83\8b\97\9a\97ð\82ð\8fÁ\8b\8e\82·\82é
2009 // *************************************************************************
2010 procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2011 const
2012         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';
2013         DEL_TITLE = '\8dí\8f\9c\8am\94F';
2014 begin
2015         if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2016                 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2017                         Exit;
2018         GikoSys.Setting.MailList.Clear;
2019         GikoForm.AllEditroFormMailTextClearClear;
2020 end;
2021 // *************************************************************************
2022 //! \83M\83R\83i\83r\82ð\8fI\97¹\82·\82é
2023 // *************************************************************************
2024 procedure TGikoDM.ExitActionExecute(Sender: TObject);
2025 begin
2026         GikoForm.Close;
2027 end;
2028 // *************************************************************************
2029 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\91O\8f\88\97\9d
2030 // *************************************************************************
2031 procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2032 begin
2033         ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2034 end;
2035 // *************************************************************************
2036 //! \82¨\8bC\82É\93ü\82è\82Ì\83G\83N\83X\83|\81[\83g\81@\8eÀ\8ds\8f\88\97\9d
2037 // *************************************************************************
2038 procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2039 begin
2040         if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2041                 ShowMessage('\83t\83@\83C\83\8b\82ð\8fo\97Í\82µ\82Ü\82µ\82½');
2042         end else begin
2043                 ShowMessage('\83t\83@\83C\83\8b\82Ì\8fo\97Í\82É\8e¸\94s\82µ\82Ü\82µ\82½');
2044         end;
2045 end;
2046 // *************************************************************************
2047 //! \91I\91ð\83X\83\8c\83b\83h\82ð\83t\83@\83C\83\8b\82É\95Û\91\82·\82é
2048 // *************************************************************************
2049 procedure TGikoDM.SelectThreadSaveToFile(dat: Boolean);
2050 var
2051         List: TList;
2052         i: Integer;
2053         html: TStringList;
2054         title: string;
2055 begin
2056         List := TList.Create;
2057         try
2058                 GikoForm.ScreenCursor := crHourGlass;
2059                 GikoForm.SelectListItem(List);
2060                 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2061                         (GikoSys.Setting.ListHeightState = glsMax)) or
2062                         ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2063                         (GikoSys.Setting.ListWidthState = glsMax))      then
2064                         ShowMessage('\83X\83\8c\83b\83h\88ê\97\97\82ð\95\\8e¦\82µ\82Ä\82­\82¾\82³\82¢')
2065                 else if(List.Count = 0) then
2066                         ShowMessage('\83X\83\8c\83b\83h\82ð\91I\91ð\82µ\82Ä\82­\82¾\82³\82¢')
2067                 else begin
2068                         if dat then begin
2069                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðdat\82Ì\82Ü\82Ü\95Û\91¶';
2070                                 SaveDialog.Filter := 'DAT\83t\83@\83C\83\8b(*.dat)|*.dat';
2071                         end else begin
2072                                 SaveDialog.Title := '\91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91¶';
2073                                 SaveDialog.Filter := 'HTML\83t\83@\83C\83\8b(*.html)|*.html';
2074                         end;
2075                         for i := 0 to List.Count - 1 do begin
2076                                 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2077                                         if dat then begin
2078                                                 SaveDialog.FileName := TThreadItem(List[i]).FileName;
2079                                         end else begin
2080                                                 SaveDialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2081                                         end;
2082                                         if SaveDialog.Execute then begin
2083                                                 if dat then begin
2084                                                         CopyFile(PChar(TThreadItem(List[i]).FilePath),
2085                                                                         PChar(SaveDialog.FileName), true);
2086                                                 end else begin
2087                                                         html := TStringList.Create;
2088                                                         title := TThreadItem(List[i]).Title;
2089                                                         try
2090                                                                 HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2091                                                                 html.SaveToFile(SaveDialog.FileName);
2092                                                                 THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(SaveDialog.FileName));
2093                                                         finally
2094                                                                 html.Free;
2095                                                         end;
2096                                                 end;
2097                                         end;
2098                                 end;
2099                         end;
2100                 end;
2101         finally
2102                 GikoForm.ScreenCursor := crDefault;
2103                 List.Free;
2104         end;
2105 end;
2106 // *************************************************************************
2107 //! \91I\91ð\83X\83\8c\83b\83h\82ðHTML\89»\82µ\82Ä\95Û\91
2108 // *************************************************************************
2109 procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2110 begin
2111         SelectThreadSaveToFile(false);
2112 end;
2113 // *************************************************************************
2114 //! \91I\91ð\83X\83\8c\83b\83h\82ðDAT\8c`\8e®\82Ì\82Ü\82Ü\95Û\91
2115 // *************************************************************************
2116 procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2117 begin
2118         SelectThreadSaveToFile(true);
2119 end;
2120 // *************************************************************************
2121 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95Û\91
2122 // *************************************************************************
2123 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2124 begin
2125         if not GikoForm.SaveTabURLs then begin
2126                 if TabsSaveAction.Tag = 0 then
2127                         ShowMessage('\95Û\91\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ')
2128                 else if TabsSaveAction.Tag = 1 then
2129                         GikoDM.TabsOpenAction.Tag := -1;
2130         end;
2131 end;
2132 // *************************************************************************
2133 //! \83^\83u\82Ì\8f\87\94Ô\82ð\95\9c\8c³
2134 // *************************************************************************
2135 procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2136 begin
2137         if TabsOpenAction.Tag <> -1 then begin
2138                 if not GikoForm.LoadTabURLs then begin
2139                         if TabsOpenAction.Tag = 0 then
2140                                 ShowMessage('\95\\8e¦\82·\82é\83^\83u\82ª\82 \82è\82Ü\82¹\82ñ\81B');
2141                 end;
2142         end;
2143 end;
2144 // *************************************************************************
2145 //! \83^\83u\82Ì\8f\87\94Ô\82ð\8e©\93®\95Û\91
2146 // *************************************************************************
2147 procedure TGikoDM.TabAutoSaveActionExecute(Sender: TObject);
2148 begin
2149         GikoForm.SaveTabURLs;
2150 end;
2151 // *************************************************************************
2152 //! \83^\83u\82Ì\8f\87\94Ô\82ð\8e©\93®\95\9c\8c³
2153 // *************************************************************************
2154 procedure TGikoDM.TabAutoLoadActionExecute(Sender: TObject);
2155 begin
2156         GikoForm.LoadTabURLs;
2157 end;
2158 // *************************************************************************
2159 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é
2160 // *************************************************************************
2161 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2162 begin
2163         GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
2164 end;
2165 // *************************************************************************
2166 //! Be2ch\82É\83\8d\83O\83C\83\93/\83\8d\83O\83A\83E\83g\82·\82é\82ÌUpdate\83C\83x\83\93\83g
2167 // *************************************************************************
2168 procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
2169 begin
2170         if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
2171                 if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true
2172                 else BeLogInOutAction.Checked := false;
2173                 BeLogInOutAction.Enabled := true
2174         end else
2175                 BeLogInOutAction.Enabled := false;
2176 end;
2177 ////////////////////////////////\83t\83@\83C\83\8b\82Ü\82Å\82¨\82µ\82Ü\82¢/////////////////////
2178 // *************************************************************************
2179 //! \83R\83R\82Ü\82Å\93Ç\82ñ\82¾
2180 // *************************************************************************
2181 procedure TGikoDM.KokomadeActionExecute(Sender: TObject);
2182 var
2183         No: Integer;
2184         ThreadItem: TThreadItem;
2185 begin
2186         No := GikoForm.KokoPopupMenu.Tag;
2187         if No = 0 then Exit;
2188         ThreadItem := GikoForm.GetActiveContent;
2189         if ThreadItem = nil then Exit;
2190         ThreadItem.Kokomade := No;
2191         GikoForm.ActiveContent.Thread.ScrollTop :=
2192                 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2193         GikoForm.ActiveContent.Repaint := true;
2194         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2195         //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é
2196         //Application.ProcessMessages;
2197 end;
2198 // *************************************************************************
2199 //! \91S\95\94\93Ç\82ñ\82¾
2200 // *************************************************************************
2201 procedure TGikoDM.ZenbuActionExecute(Sender: TObject);
2202 var
2203         ThreadItem: TThreadItem;
2204 begin
2205         ThreadItem := GikoForm.GetActiveContent;
2206         if ThreadItem = nil then Exit;
2207         ThreadItem.Kokomade := -1;
2208         GikoForm.ActiveContent.Thread.ScrollTop :=
2209                 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2210         GikoForm.ActiveContent.Repaint := true;
2211         GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2212         //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é
2213         //Application.ProcessMessages;
2214 end;
2215 // *************************************************************************
2216 //! \83R\83R\82É\83\8c\83X
2217 // *************************************************************************
2218 procedure TGikoDM.KokoResActionExecute(Sender: TObject);
2219 var
2220         Editor: TEditorForm;
2221         Item: TThreadItem;
2222         Number: Integer;
2223 begin
2224         Number := GikoForm.KokoPopupMenu.Tag;
2225         if Number = 0 then Exit;
2226         Item := GikoForm.GetActiveContent;
2227         if Item = nil then Exit;
2228
2229         Editor := TEditorForm.Create(GikoForm);
2230         Editor.SetThreadItem(Item);
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 procedure TGikoDM.SetInputAssistActionExecute(Sender: TObject);
3787 var
3788         form : TInputAssistForm;
3789 begin
3790         form := TInputAssistForm.Create(GikoForm);
3791         try
3792                 form.ShowModal;
3793         finally
3794                 form.Release;
3795         end;
3796 end;
3797
3798 end.
3799