OSDN Git Service

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