Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/GikoDataModule.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.9 - (hide annotations) (download) (as text)
Sun Nov 20 11:49:17 2005 UTC (18 years, 5 months ago) by yoffy
Branch: MAIN
Changes since 1.8: +202 -198 lines
File MIME type: text/x-pascal
- コメントの強化。

1 h677 1.1 unit GikoDataModule;
2    
3     interface
4    
5     uses
6 h677 1.2 SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 h677 1.6 {$IF Defined(DELPRO) }
8     SHDocVw,
9     MSHTML,
10     {$ELSE}
11     SHDocVw_TLB,
12     MSHTML_TLB,
13     {$IFEND}
14 h677 1.2 ComCtrls;
15 h677 1.1
16     type
17     TGikoDM = class(TDataModule)
18 h677 1.6 GikoFormActionList: TActionList;
19     OnlyAHundredResAction: TAction;
20     OnlyKokoResAction: TAction;
21     LoginAction: TAction;
22     NewBoardAction: TAction;
23     LogDeleteAction: TAction;
24     KidokuAction: TAction;
25     StdToolBarVisibleAction: TAction;
26     AddressBarVisibleAction: TAction;
27     LinkBarVisibleAction: TAction;
28 h677 1.4 ListToolBarVisibleAction: TAction;
29 h677 1.6 SearchAction: TAction;
30     GikoNaviWebPageAction: TAction;
31     MonazillaWebPageAction: TAction;
32     BBS2chWebPageAction: TAction;
33     GikoFolderOpenAction: TAction;
34     AboutAction: TAction;
35     SelectTextClearAction: TAction;
36     NameTextClearAction: TAction;
37     MailTextClearAction: TAction;
38     ExitAction: TAction;
39     ListNameBarVisibleAction: TAction;
40     BrowserToolBarVisibleAction: TAction;
41     BrowserNameBarVisibleAction: TAction;
42     MsgBarVisibleAction: TAction;
43     MsgBarCloseAction: TAction;
44     StatusBarVisibleAction: TAction;
45     CabinetBBSAction: TAction;
46     CabinetHistoryAction: TAction;
47     OnlyNewResAction: TAction;
48 h677 1.4 CabinetFavoriteAction: TAction;
49 h677 1.6 CabinetVisibleAction: TAction;
50     ListNumberVisibleAction: TAction;
51     UpFolderAction: TAction;
52     CabinetCloseAction: TAction;
53     IconStyle: TAction;
54     LargeIconAction: TAction;
55     SmallIconAction: TAction;
56     ListIconAction: TAction;
57     DetailIconAction: TAction;
58     MidokuAction: TAction;
59     AllSelectAction: TAction;
60     AllItemAction: TAction;
61     LogItemAction: TAction;
62     NewItemAction: TAction;
63     ThreadRangeAction: TAction;
64     SelectItemAction: TAction;
65     StopAction: TAction;
66     OptionAction: TAction;
67     RoundAction: TAction;
68 h677 1.4 BrowserMaxAction: TAction;
69 h677 1.6 BrowserMinAction: TAction;
70     ScrollTopAction: TAction;
71     ScrollLastAction: TAction;
72     ScrollNewAction: TAction;
73     ScrollKokoAction: TAction;
74     EditorAction: TAction;
75     IEAction: TAction;
76     ShowThreadAction: TAction;
77     ShowBoardAction: TAction;
78     URLCopyAction: TAction;
79     NameCopyAction: TAction;
80     NameURLCopyAction: TAction;
81     ItemReloadAction: TAction;
82     ThreadEditorAction: TAction;
83     BoardIEAction: TAction;
84     SelectItemURLCopyAction: TAction;
85     SelectItemNameCopyAction: TAction;
86     SelectItemNameURLCopyAction: TAction;
87     SelectListReloadAction: TAction;
88 h677 1.4 SelectThreadReloadAction: TAction;
89 h677 1.6 BrowserTabCloseAction: TAction;
90     NotSelectTabCloseAction: TAction;
91     AllTabCloseAction: TAction;
92     KokomadeAction: TAction;
93     ZenbuAction: TAction;
94     KokoResAction: TAction;
95     TreeSelectBoradReload: TAction;
96     TreeSelectThreadReload: TAction;
97     TreeSelectURLCopy: TAction;
98     SelectReservAction: TAction;
99     SelectNewRoundName: TAction;
100     SelectDeleteRound: TAction;
101     KeySettingAction: TAction;
102     ArrangeAction: TAction;
103     ActiveLogDeleteAction: TAction;
104     TreeSelectNameURLCopy: TAction;
105     PaneInitAction: TAction;
106     LeftmostTabSelectAction: TAction;
107     LeftTabSelectAction: TAction;
108 h677 1.4 RightTabSelectAction: TAction;
109 h677 1.6 RightmostTabSelectAction: TAction;
110     FavoriteAddAction: TAction;
111     BoardFavoriteAddAction: TAction;
112     ThreadFavoriteAddAction: TAction;
113     TreeSelectFavoriteAddAction: TAction;
114     FavoriteArrangeAction: TAction;
115     MoveToAction: TAction;
116     BrowserTabVisibleAction: TAction;
117     BrowserTabTopAction: TAction;
118     BrowserTabBottomAction: TAction;
119     BrowserTabTabStyleAction: TAction;
120     BrowserTabButtonStyleAction: TAction;
121     BrowserTabFlatStyleAction: TAction;
122     GikoHelpAction: TAction;
123     KotehanAction: TAction;
124     ToolBarSettingAction: TAction;
125     SelectResAction: TAction;
126     AllResAction: TAction;
127     EditNGAction: TAction;
128 h677 1.4 ReloadAction: TAction;
129 h677 1.6 GoFowardAction: TAction;
130     GoBackAction: TAction;
131     TreeSelectSearchBoardName: TAction;
132     FavoriteTreeViewRenameAction: TAction;
133     FavoriteTreeViewNewFolderAction: TAction;
134     FavoriteTreeViewDeleteAction: TAction;
135     FavoriteTreeViewBrowseFolderAction: TAction;
136     FavoriteTreeViewReloadAction: TAction;
137     FavoriteTreeViewURLCopyAction: TAction;
138     FavoriteTreeViewNameCopyAction: TAction;
139     FavoriteTreeViewNameURLCopyAction: TAction;
140     FavoriteTreeViewLogDeleteAction: TAction;
141     ResRangeAction: TAction;
142     ExportFavoriteFile: TFileSaveAs;
143     FavoriteTreeViewBrowseBoardAction: TAction;
144     FavoriteTreeViewBrowseThreadAction: TAction;
145     UpBoardAction: TAction;
146     KoreCopy: TAction;
147     TreeSelectNameCopy: TAction;
148 h677 1.4 SetFocusForBrowserAction: TAction;
149 h677 1.6 SetFocusForThreadListAction: TAction;
150     SetFocusForCabinetAction: TAction;
151     FileRun1: TFileRun;
152     ThreadlistMaxAndFocusAction: TAction;
153     BrowserMaxAndFocusAction: TAction;
154     SelectItemSaveForHTML: TAction;
155     SelectItemSaveForDat: TAction;
156     FileSaveAs1: TFileSaveAs;
157     LogFolderOpenAction: TAction;
158     TabsSaveAction: TAction;
159     TabsOpenAction: TAction;
160     BrowsBoradHeadAction: TAction;
161     TabAutoSaveAction: TAction;
162     TabAutoLoadAction: TAction;
163     JumpToNumOfResAction: TAction;
164     FavoriteTreeViewCollapseAction: TAction;
165     RightTabCloseAction: TAction;
166     LeftTabCloseAction: TAction;
167     SameIDResAnchorAction: TAction;
168 h677 1.4 IndividualAbon1Action: TAction;
169 h677 1.6 IndividualAbon0Action: TAction;
170     AntiIndividualAbonAction: TAction;
171     AntiIndividualAbonDlgAction: TAction;
172     IndividualAbonID1Action: TAction;
173     IndividualAbonID0Action: TAction;
174     MuteAction: TAction;
175     SortActiveColumnAction: TAction;
176     SortNextColumnAction: TAction;
177     SortPrevColumnAction: TAction;
178     BeLogInOutAction: TAction;
179     UnSelectedListViewAction: TAction;
180     WikiFAQWebPageAction: TAction;
181     ToobarImageList: TImageList;
182     procedure EditNGActionExecute(Sender: TObject);
183     procedure ReloadActionExecute(Sender: TObject);
184     procedure GoFowardActionExecute(Sender: TObject);
185     procedure GoBackActionExecute(Sender: TObject);
186     procedure MoveToActionExecute(Sender: TObject);
187     procedure FavoriteAddActionExecute(Sender: TObject);
188 h677 1.4 procedure FavoriteArrangeActionExecute(Sender: TObject);
189 h677 1.6 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
190     procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
191     procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
192     procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
193     procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
194     procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
195     procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
196     procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
197     procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
198     procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
199     procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
200     procedure OnlyAHundredResActionExecute(Sender: TObject);
201     procedure OnlyKokoResActionExecute(Sender: TObject);
202     procedure OnlyNewResActionExecute(Sender: TObject);
203     procedure BrowserMaxActionExecute(Sender: TObject);
204     procedure BrowserMinActionExecute(Sender: TObject);
205     procedure ScrollTopActionExecute(Sender: TObject);
206     procedure ScrollLastActionExecute(Sender: TObject);
207     procedure ScrollNewActionExecute(Sender: TObject);
208 h677 1.4 procedure ScrollKokoActionExecute(Sender: TObject);
209 h677 1.6 procedure ScrollKokoActionUpdate(Sender: TObject);
210     procedure EditorActionExecute(Sender: TObject);
211     procedure IEActionExecute(Sender: TObject);
212     procedure ShowThreadActionExecute(Sender: TObject);
213     procedure ShowBoardActionExecute(Sender: TObject);
214     procedure URLCopyActionExecute(Sender: TObject);
215     procedure NameCopyActionExecute(Sender: TObject);
216     procedure NameURLCopyActionExecute(Sender: TObject);
217     procedure ItemReloadActionExecute(Sender: TObject);
218     procedure BrowserTabCloseActionExecute(Sender: TObject);
219     procedure BrowserTabCloseActionUpdate(Sender: TObject);
220     procedure NotSelectTabCloseActionExecute(Sender: TObject);
221     procedure NotSelectTabCloseActionUpdate(Sender: TObject);
222     procedure AllTabCloseActionExecute(Sender: TObject);
223     procedure ActiveLogDeleteActionExecute(Sender: TObject);
224     procedure LeftmostTabSelectActionExecute(Sender: TObject);
225     procedure LeftmostTabSelectActionUpdate(Sender: TObject);
226     procedure LeftTabSelectActionExecute(Sender: TObject);
227     procedure RightTabSelectActionExecute(Sender: TObject);
228 h677 1.4 procedure RightTabSelectActionUpdate(Sender: TObject);
229 h677 1.6 procedure RightmostTabSelectActionExecute(Sender: TObject);
230     procedure ThreadFavoriteAddActionExecute(Sender: TObject);
231     procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
232     procedure SelectResActionExecute(Sender: TObject);
233     procedure AllResActionExecute(Sender: TObject);
234     procedure ResRangeActionExecute(Sender: TObject);
235     procedure UpBoardActionExecute(Sender: TObject);
236     procedure JumpToNumOfResActionExecute(Sender: TObject);
237     procedure RightTabCloseActionExecute(Sender: TObject);
238     procedure RightTabCloseActionUpdate(Sender: TObject);
239     procedure LeftTabCloseActionExecute(Sender: TObject);
240     procedure DataModuleCreate(Sender: TObject);
241     procedure SearchActionExecute(Sender: TObject);
242     procedure OptionActionExecute(Sender: TObject);
243     procedure RoundActionExecute(Sender: TObject);
244     procedure KeySettingActionExecute(Sender: TObject);
245     procedure KotehanActionExecute(Sender: TObject);
246     procedure ToolBarSettingActionExecute(Sender: TObject);
247     procedure MuteActionExecute(Sender: TObject);
248     procedure TreeSelectBoradReloadExecute(Sender: TObject);
249     procedure TreeSelectThreadReloadExecute(Sender: TObject);
250     procedure TreeSelectURLCopyExecute(Sender: TObject);
251     procedure TreeSelectNameURLCopyExecute(Sender: TObject);
252     procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
253     procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
254     procedure TreeSelectNameCopyExecute(Sender: TObject);
255     procedure LoginActionExecute(Sender: TObject);
256     procedure NewBoardActionExecute(Sender: TObject);
257     procedure LogDeleteActionExecute(Sender: TObject);
258     procedure LogDeleteActionUpdate(Sender: TObject);
259     procedure SelectTextClearActionExecute(Sender: TObject);
260     procedure NameTextClearActionExecute(Sender: TObject);
261     procedure MailTextClearActionExecute(Sender: TObject);
262     procedure ExitActionExecute(Sender: TObject);
263     procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
264     procedure ExportFavoriteFileAccept(Sender: TObject);
265     procedure SelectItemSaveForHTMLExecute(Sender: TObject);
266     procedure SelectItemSaveForDatExecute(Sender: TObject);
267     procedure TabsSaveActionExecute(Sender: TObject);
268     procedure TabsOpenActionExecute(Sender: TObject);
269     procedure TabAutoSaveActionExecute(Sender: TObject);
270     procedure TabAutoLoadActionExecute(Sender: TObject);
271     procedure BeLogInOutActionExecute(Sender: TObject);
272     procedure BeLogInOutActionUpdate(Sender: TObject);
273     procedure KokomadeActionExecute(Sender: TObject);
274     procedure ZenbuActionExecute(Sender: TObject);
275     procedure KokoResActionExecute(Sender: TObject);
276     procedure KoreCopyExecute(Sender: TObject);
277     procedure SameIDResAnchorActionExecute(Sender: TObject);
278     procedure IndividualAbon1ActionExecute(Sender: TObject);
279     procedure IndividualAbon0ActionExecute(Sender: TObject);
280     procedure AntiIndividualAbonActionExecute(Sender: TObject);
281     procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
282     procedure IndividualAbonID1ActionExecute(Sender: TObject);
283     procedure IndividualAbonID0ActionExecute(Sender: TObject);
284     procedure GikoNaviWebPageActionExecute(Sender: TObject);
285 h677 1.7 procedure MonazillaWebPageActionExecute(Sender: TObject);
286     procedure BBS2chWebPageActionExecute(Sender: TObject);
287     procedure GikoFolderOpenActionExecute(Sender: TObject);
288     procedure AboutActionExecute(Sender: TObject);
289     procedure GikoHelpActionExecute(Sender: TObject);
290     procedure WikiFAQWebPageActionExecute(Sender: TObject);
291     procedure ListNumberVisibleActionExecute(Sender: TObject);
292     procedure UpFolderActionExecute(Sender: TObject);
293     procedure UpFolderActionUpdate(Sender: TObject);
294     procedure IconStyleExecute(Sender: TObject);
295     procedure AllItemActionExecute(Sender: TObject);
296     procedure LogItemActionExecute(Sender: TObject);
297     procedure NewItemActionExecute(Sender: TObject);
298     procedure ThreadRangeActionExecute(Sender: TObject);
299     procedure SelectItemActionExecute(Sender: TObject);
300     procedure ThreadEditorActionExecute(Sender: TObject);
301     procedure BoardIEActionExecute(Sender: TObject);
302     procedure SelectItemURLCopyActionExecute(Sender: TObject);
303     procedure SelectItemURLCopyActionUpdate(Sender: TObject);
304     procedure SelectItemNameCopyActionExecute(Sender: TObject);
305     procedure SelectItemNameCopyActionUpdate(Sender: TObject);
306     procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
307     procedure SelectListReloadActionExecute(Sender: TObject);
308     procedure SelectListReloadActionUpdate(Sender: TObject);
309     procedure SelectThreadReloadActionExecute(Sender: TObject);
310     procedure SelectThreadReloadActionUpdate(Sender: TObject);
311     procedure SelectReservActionExecute(Sender: TObject);
312     procedure SelectReservActionUpdate(Sender: TObject);
313     procedure SelectNewRoundNameExecute(Sender: TObject);
314     procedure SelectDeleteRoundExecute(Sender: TObject);
315     procedure BoardFavoriteAddActionExecute(Sender: TObject);
316     procedure BoardFavoriteAddActionUpdate(Sender: TObject);
317     procedure LogFolderOpenActionExecute(Sender: TObject);
318     procedure LogFolderOpenActionUpdate(Sender: TObject);
319     procedure BrowsBoradHeadActionExecute(Sender: TObject);
320     procedure SortActiveColumnActionExecute(Sender: TObject);
321     procedure SortNextColumnActionExecute(Sender: TObject);
322     procedure SortPrevColumnActionExecute(Sender: TObject);
323 h677 1.8 procedure StdToolBarVisibleActionExecute(Sender: TObject);
324     procedure AddressBarVisibleActionExecute(Sender: TObject);
325     procedure LinkBarVisibleActionExecute(Sender: TObject);
326     procedure ListToolBarVisibleActionExecute(Sender: TObject);
327     procedure ListNameBarVisibleActionExecute(Sender: TObject);
328     procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
329     procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
330     procedure MsgBarVisibleActionExecute(Sender: TObject);
331     procedure MsgBarCloseActionExecute(Sender: TObject);
332     procedure StatusBarVisibleActionExecute(Sender: TObject);
333     procedure CabinetBBSActionExecute(Sender: TObject);
334     procedure CabinetHistoryActionExecute(Sender: TObject);
335     procedure CabinetFavoriteActionExecute(Sender: TObject);
336     procedure CabinetVisibleActionExecute(Sender: TObject);
337     procedure CabinetCloseActionExecute(Sender: TObject);
338     procedure LargeIconActionExecute(Sender: TObject);
339     procedure SmallIconActionExecute(Sender: TObject);
340     procedure ListIconActionExecute(Sender: TObject);
341     procedure DetailIconActionExecute(Sender: TObject);
342     procedure StopActionExecute(Sender: TObject);
343     procedure ArrangeActionExecute(Sender: TObject);
344     procedure PaneInitActionExecute(Sender: TObject);
345     procedure BrowserTabVisibleActionExecute(Sender: TObject);
346     procedure BrowserTabTopActionExecute(Sender: TObject);
347     procedure BrowserTabBottomActionExecute(Sender: TObject);
348     procedure BrowserTabTabStyleActionExecute(Sender: TObject);
349     procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
350     procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
351     procedure SetFocusForBrowserActionExecute(Sender: TObject);
352     procedure SetFocusForBrowserActionUpdate(Sender: TObject);
353     procedure SetFocusForThreadListActionExecute(Sender: TObject);
354     procedure SetFocusForCabinetActionExecute(Sender: TObject);
355     procedure SetFocusForCabinetActionUpdate(Sender: TObject);
356     procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
357     procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
358     procedure UnSelectedListViewActionExecute(Sender: TObject);
359     procedure KidokuActionExecute(Sender: TObject);
360     procedure MidokuActionExecute(Sender: TObject);
361     procedure AllSelectActionExecute(Sender: TObject);
362     procedure AllSelectActionUpdate(Sender: TObject);
363 h677 1.1 private
364     { Private 鐃緒申鐃緒申 }
365     public
366     { Public 鐃緒申鐃緒申 }
367     published
368     { Published 鐃緒申鐃緒申 }
369 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
370 h677 1.1 procedure DependActiveCntentActionUpdate(Sender: TObject);
371 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
372 h677 1.2 procedure DependActiveCntentLogActionUpdate(Sender: TObject);
373 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
374 h677 1.2 procedure DependActiveListTBoardActionUpdate(Sender: TObject);
375 h677 1.1 end;
376    
377     var
378     GikoDM: TGikoDM;
379    
380     implementation
381    
382     uses
383 h677 1.6 Windows, Math, Messages, Dialogs, Clipbrd,
384 h677 1.3 Giko, GikoSystem, GikoUtil, BoardGroup,
385     FavoriteArrange, Favorite, Setting, MojuUtils,
386 h677 1.4 Editor, ListSelect, Search, Option, Round,
387     KeySetting, Gesture, Kotehan, ToolBarSetting,
388 h677 1.6 ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
389 h677 1.7 GikoBayesian, About, ShellAPI, Graphics,
390 h677 1.8 RoundName, RoundData, Menus, ListViewUtils,
391     ThreadControl;
392 h677 1.1
393    
394     const
395 h677 1.3 CAPTION_NAME: string = '鐃?鐃?鐃?鐃?';
396 h677 1.1 USER_SETLINKBAR = WM_USER + 2003;
397 h677 1.7
398 yoffy 1.9 ITEM_ICON_SORT1 = 12; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
399     ITEM_ICON_SORT2 = 13; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
400 h677 1.7
401 h677 1.3 //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
402 yoffy 1.9 TOOL_ICON_HEIGHT_MAX = 16; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
403     TOOL_ICON_HEIGHT_MIN = 17; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
404     TOOL_ICON_HEIGHT_NORMAL = 18; //!< 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
405     TOOL_ICON_WIDTH_MAX = 19; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
406     TOOL_ICON_WIDTH_MIN = 20; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
407     TOOL_ICON_WIDTH_NORMAL = 21; //!< 鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
408    
409     TOOL_ICON_FAV_FOLDER = 30; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申
410     TOOL_ICON_FAV_BOARD = 31; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
411     TOOL_ICON_FAV_THREAD = 32; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
412 h677 1.3
413 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申URL
414 h677 1.6 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
415 yoffy 1.9 //! Monazilla鐃?鐃?鐃?鐃緒申URL
416 h677 1.6 URL_MONAZILLA: string = 'http://www.monazilla.org/';
417 yoffy 1.9 //! 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL
418 h677 1.6 URL_2ch: string = 'http://www.2ch.net/';
419 yoffy 1.9 //! 鐃?鐃?鐃?鐃?Wiki鐃緒申URL
420 h677 1.6 URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ';
421    
422 h677 1.7 SELECTCOMBOBOX_NAME: string = ''; // '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申';
423     SELECTCOMBOBOX_COLOR: TColor = clWindow;
424    
425 h677 1.1 {$R *.dfm}
426     // *************************************************************************
427 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
428 h677 1.2 // *************************************************************************
429     procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
430     begin
431     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
432     end;
433     // *************************************************************************
434 yoffy 1.9 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
435 h677 1.2 // *************************************************************************
436     procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
437     begin
438     TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
439     and (GikoForm.GetActiveContent.IsLogFile);
440     end;
441     // *************************************************************************
442 yoffy 1.9 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
443 h677 1.2 // *************************************************************************
444     procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
445     begin
446     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
447     end;
448     // *************************************************************************
449 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃?
450 h677 1.1 // *************************************************************************
451     procedure TGikoDM.EditNGActionExecute(Sender: TObject);
452     begin
453     //鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
454     GikoSys.FAbon.EditNGwords;
455     end;
456     // *************************************************************************
457 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
458 h677 1.1 // *************************************************************************
459     procedure TGikoDM.ReloadActionExecute(Sender: TObject);
460     begin
461     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
462     if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
463     MsgBox(GikoForm.Handle, 'NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
464     end else begin
465     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
466     GikoForm.RepaintAllTabsBrowser();
467     end;
468     end;
469     // *************************************************************************
470 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
471 h677 1.1 // *************************************************************************
472     procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
473     var
474     s: string;
475     begin
476     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
477     if GikoSys.FAbon.GoBack =false then begin
478     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
479     end else begin
480     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
481     s := GikoSys.FAbon.NGwordname;
482     GikoForm.StatusBar.Panels.Items[2].Text := s;
483     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
484     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
485     GikoForm.StatusBarResize(Sender);
486     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
487     GikoForm.RepaintAllTabsBrowser();
488     end;
489     end;
490     // *************************************************************************
491 yoffy 1.9 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
492 h677 1.1 // *************************************************************************
493     procedure TGikoDM.GoBackActionExecute(Sender: TObject);
494     var
495     s: string;
496     begin
497     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
498     if GikoSys.FAbon.GoForward =false then begin
499     MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃?鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
500     end else begin
501     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
502     s := GikoSys.FAbon.NGwordname;
503     GikoForm.StatusBar.Panels.Items[2].Text := s;
504     //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
505     GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
506     GikoForm.StatusBarResize(Sender);
507     //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
508     GikoForm.RepaintAllTabsBrowser();
509     end;
510     end;
511     // *************************************************************************
512 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
513 h677 1.1 // *************************************************************************
514     procedure TGikoDM.MoveToActionExecute(Sender: TObject);
515     var
516     URL: string;
517     idx: Integer;
518     begin
519     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃緒申鐃緒申
520     URL := Trim(GikoForm.AddressComboBox.Text);
521     //URL鐃緒申鐃緒申鐃緒申
522     GikoForm.MoveToURL(URL);
523     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
524     idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
525     if idx = -1 then begin
526     GikoForm.AddressComboBox.Items.Insert(0, URL);
527     if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
528     GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
529     end else begin
530     GikoForm.AddressComboBox.Items.Delete(idx);
531     GikoForm.AddressComboBox.Items.Insert(0, URL);
532     end;
533     end;
534     // *************************************************************************
535 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
536 h677 1.1 // *************************************************************************
537     procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
538     begin
539     GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
540     end;
541     // *************************************************************************
542 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
543 h677 1.1 // *************************************************************************
544     procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
545     var
546     Dlg: TFavoriteArrangeDialog;
547     begin
548     Dlg := TFavoriteArrangeDialog.Create(Self);
549     try
550     Dlg.ShowModal;
551     finally
552     Dlg.Release;
553     end;
554     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
555     PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
556     end;
557     // *************************************************************************
558 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
559 h677 1.1 // *************************************************************************
560     procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
561     var
562     node : TTreeNode;
563     begin
564     node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
565     try
566     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
567     while node <> nil do begin
568     if node.HasChildren then
569     node.Expanded := False;
570     node := node.GetNext;
571     end;
572     except
573     end;
574     end;
575 h677 1.2 // *************************************************************************
576 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
577 h677 1.2 // *************************************************************************
578     procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
579     var
580     node : TTreeNode;
581     begin
582    
583     if GikoForm.ClickNode = nil then
584     Exit;
585     if GikoForm.ClickNode.IsFirstNode then
586     Exit;
587     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
588     Exit;
589     GikoForm.FavoriteTreeView.ReadOnly := False;
590     if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
591     node := GikoForm.ClickNode.Parent;
592     while node <> nil do begin
593     node.Expanded := True;
594     node := node.Parent;
595     end;
596     GikoForm.ClickNode.EditText;
597     end else begin
598     GikoForm.ClickNode.Text := InputBox( '鐃緒申鐃?鐃緒申鐃緒申鐃?', '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', GikoForm.ClickNode.Text );
599     end;
600    
601     GikoForm.SetLinkBar;
602     end;
603     // *************************************************************************
604 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
605 h677 1.2 // *************************************************************************
606     procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
607     var
608     NewFavFolder: TFavoriteFolder;
609     Node: TTreeNode;
610     begin
611    
612     if GikoForm.ClickNode = nil then
613     Exit;
614    
615     try
616     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
617     GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
618     GikoForm.ClickNode := GikoForm.ClickNode.Parent;
619     end;
620    
621     NewFavFolder := TFavoriteFolder.Create;
622     Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?', NewFavFolder);
623     Node.ImageIndex := 14;
624     Node.SelectedIndex := 14;
625     // FClickNode.Selected.Expanded := True;
626     GikoForm.FavoriteTreeView.Selected := Node;
627     GikoForm.ClickNode := Node;
628     FavoriteTreeViewRenameAction.Execute;
629     finally
630     end;
631    
632     end;
633     // *************************************************************************
634 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
635 h677 1.2 // *************************************************************************
636     procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
637     const
638     DEL_LINK_MSG = '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
639     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
640     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
641     begin
642    
643     if GikoForm.ClickNode = nil then
644     Exit;
645     if GikoForm.ClickNode.IsFirstNode then
646     Exit;
647     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
648     if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
649     if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
650     Exit;
651     end else begin
652     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
653     Exit;
654     end;
655     end;
656    
657     GikoForm.ClickNode.Delete;
658    
659     GikoForm.SetLinkBar;
660    
661     end;
662     // *************************************************************************
663 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
664 h677 1.2 // *************************************************************************
665     procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
666     Sender: TObject);
667     begin
668     GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
669     end;
670     // *************************************************************************
671 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
672 h677 1.2 // *************************************************************************
673     procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
674     var
675     ThreadItem: TThreadItem;
676     FavThread: TFavoriteThreadItem;
677     Board: TBoard;
678     FavBoard: TFavoriteBoardItem;
679     shiftDown: Boolean;
680     begin
681    
682     if GikoForm.ClickNode = nil then Exit;
683    
684     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
685    
686     if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
687     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
688     ThreadItem := FavThread.Item;
689     if ThreadItem <> nil then
690     GikoForm.DownloadContent(ThreadItem, shiftDown);
691     end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
692     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
693     Board := FavBoard.Item;
694     GikoForm.DownloadList(Board, shiftDown);
695     end;
696    
697     end;
698     // *************************************************************************
699 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
700 h677 1.2 // *************************************************************************
701     procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
702     var
703     FavThread : TFavoriteThreadItem;
704     FavBoard : TFavoriteBoardItem;
705     s : string;
706     begin
707    
708     if GikoForm.ClickNode = nil then Exit;
709    
710     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
711    
712     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
713     s := FavThread.URL + #13#10;
714     if s <> '' then
715     Clipboard.AsText := s;
716    
717     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
718    
719     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
720     s := FavBoard.URL + #13#10;
721     if s <> '' then
722     Clipboard.AsText := s;
723    
724     end;
725     end;
726     // *************************************************************************
727 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
728 h677 1.2 // *************************************************************************
729     procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
730     var
731     ThreadItem: TThreadItem;
732     FavThread: TFavoriteThreadItem;
733     Board: TBoard;
734     FavBoard: TFavoriteBoardItem;
735     s: string;
736     begin
737    
738     if GikoForm.ClickNode = nil then Exit;
739    
740     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
741    
742     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
743     ThreadItem := FavThread.Item;
744    
745     try
746     s := ThreadItem.Title + #13#10;
747     if s <> '' then
748     Clipboard.AsText := s;
749     finally
750     end;
751    
752     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
753    
754     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
755     Board := FavBoard.Item;
756     if Board <> nil then
757     if not Board.IsThreadDatRead then
758     GikoSys.ReadSubjectFile(Board);
759    
760     try
761     s := Board.Title + #13#10;
762     if s <> '' then
763     Clipboard.AsText := s;
764     finally
765     end;
766    
767     end;
768    
769     end;
770     // *************************************************************************
771 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
772 h677 1.2 // *************************************************************************
773     procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
774     Sender: TObject);
775     var
776     ThreadItem: TThreadItem;
777     FavThread: TFavoriteThreadItem;
778     Board: TBoard;
779     FavBoard: TFavoriteBoardItem;
780     s: string;
781     begin
782    
783     if GikoForm.ClickNode = nil then Exit;
784    
785     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
786    
787     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
788     ThreadItem := FavThread.Item;
789    
790     try
791     s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
792     if s <> '' then
793     Clipboard.AsText := s;
794     finally
795     end;
796    
797     end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
798    
799     FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
800     Board := FavBoard.Item;
801     if Board <> nil then
802     if not Board.IsThreadDatRead then
803     GikoSys.ReadSubjectFile(Board);
804    
805     try
806     s := Board.Title + #13#10 + Board.URL + #13#10;
807     if s <> '' then
808     Clipboard.AsText := s;
809     finally
810     end;
811    
812     end;
813    
814     end;
815     // *************************************************************************
816 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
817 h677 1.2 // *************************************************************************
818     procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
819     const
820     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
821     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
822     var
823     ThreadItem: TThreadItem;
824     FavThread: TFavoriteThreadItem;
825     begin
826    
827     if GikoForm.ClickNode = nil then Exit;
828     if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
829    
830     FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
831     ThreadItem := FavThread.Item;
832    
833     try
834     if GikoSys.Setting.DeleteMsg then begin
835     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
836     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
837     Exit;
838     end;
839    
840     GikoForm.DeleteHistory(ThreadItem);
841     GikoForm.DeleteTab(ThreadItem);
842     ThreadItem.DeleteLogFile;
843    
844     GikoForm.ListView.Refresh;
845     finally
846     end;
847    
848     end;
849     // *************************************************************************
850 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
851 h677 1.2 // *************************************************************************
852     procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
853     Sender: TObject);
854     var
855     threadItem : TThreadItem;
856     begin
857    
858     if GikoForm.ClickNode = nil then Exit;
859    
860     if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
861    
862     threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
863     if threadItem = nil then
864     Exit;
865     GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
866    
867     end;
868     end;
869 h677 1.3 // *************************************************************************
870 yoffy 1.9 //! 鐃緒申鐃?100鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
871 h677 1.3 // *************************************************************************
872     procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
873     var
874     FilterList : TStringList;
875     begin
876     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
877     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
878    
879     GikoForm.ResRangeMenuSelect := 100;
880     OnlyAHundredResAction.Checked := True;
881    
882     if GikoSys.ResRange <> 100 then begin
883     GikoSys.ResRange := 100;
884    
885     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
886     FilterList := TStringList.Create;
887     try
888     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
889     GikoSys.FSelectResFilter.Reverse := False;
890     finally
891     FilterList.Free;
892     end;
893    
894     GikoForm.SelectResWord := '';
895     GikoForm.RepaintAllTabsBrowser();
896     end;
897     end;
898     // *************************************************************************
899 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
900 h677 1.3 // *************************************************************************
901     procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
902     var
903     FilterList : TStringList;
904     begin
905     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
906     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
907    
908     GikoForm.ResRangeMenuSelect := Ord( grrKoko );
909     OnlyKokoResAction.Checked := True;
910    
911     if GikoSys.ResRange <> Ord( grrKoko ) then begin
912     GikoSys.ResRange := Ord( grrKoko );
913    
914     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
915     FilterList := TStringList.Create;
916     try
917     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
918     GikoSys.FSelectResFilter.Reverse := False;
919     finally
920     FilterList.Free;
921     end;
922    
923     GikoForm.SelectResWord := '';
924     GikoForm.RepaintAllTabsBrowser();
925     end;
926     end;
927     // *************************************************************************
928 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
929 h677 1.3 // *************************************************************************
930     procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
931     var
932     FilterList : TStringList;
933     begin
934     if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
935     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
936    
937     GikoForm.ResRangeMenuSelect := Ord( grrNew );
938     OnlyNewResAction.Checked := True;
939    
940     if GikoSys.ResRange <> Ord( grrNew ) then begin
941     GikoSys.ResRange := Ord( grrNew );
942 h677 1.1
943 h677 1.3 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
944     FilterList := TStringList.Create;
945     try
946     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
947     GikoSys.FSelectResFilter.Reverse := False;
948     finally
949     FilterList.Free;
950     end;
951    
952     GikoForm.SelectResWord := '';
953     GikoForm.RepaintAllTabsBrowser();
954     end;
955     end;
956     // *************************************************************************
957 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
958 h677 1.3 // *************************************************************************
959     procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
960     begin
961     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
962     case GikoSys.Setting.ListWidthState of
963     glsMax: begin
964     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
965     if GikoForm.ActiveContent <> nil then
966     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
967     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
968     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
969     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
970     GikoSys.Setting.ListWidthState := glsNormal;
971     if GikoForm.ActiveContent <> nil then
972     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
973     end;
974     glsMin, glsNormal: begin
975     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
976     if GikoForm.ActiveContent <> nil then
977     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
978     if GikoSys.Setting.ListWidthState = glsNormal then
979     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
980     if GikoForm.ActiveContent <> nil then
981     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
982     GikoForm.ViewPanel.Width := 1;
983     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
984     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
985     GikoSys.Setting.ListWidthState := glsMax;
986     end;
987     end;
988     end else begin
989     case GikoSys.Setting.ListHeightState of
990     glsMax: begin
991     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
992     if GikoForm.ActiveContent <> nil then
993     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
994     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
995     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
996     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
997     GikoSys.Setting.ListHeightState := glsNormal;
998     if GikoForm.ActiveContent <> nil then
999     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1000     end;
1001     glsMin, glsNormal: begin
1002     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1003     if GikoForm.ActiveContent <> nil then
1004     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1005     if GikoSys.Setting.ListHeightState = glsNormal then
1006     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1007     if GikoForm.ActiveContent <> nil then
1008     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1009     GikoForm.ViewPanel.Height := 1;
1010     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1011     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1012     GikoSys.Setting.ListHeightState := glsMax;
1013     end;
1014     end;
1015     end;
1016     end;
1017     // *************************************************************************
1018 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1019 h677 1.3 // *************************************************************************
1020     procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1021     begin
1022     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1023     case GikoSys.Setting.ListWidthState of
1024     glsMax, glsNormal: begin
1025     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1026     if GikoForm.ActiveContent <> nil then
1027     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1028     if GikoSys.Setting.ListWidthState = glsNormal then
1029     GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
1030     if GikoForm.ActiveContent <> nil then
1031     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1032     GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
1033     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1034     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1035     GikoSys.Setting.ListWidthState := glsMin;
1036     end;
1037     glsMin: begin
1038     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1039     if GikoForm.ActiveContent <> nil then
1040     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1041     GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
1042     BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1043     BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1044     GikoSys.Setting.ListWidthState := glsNormal;
1045     if GikoForm.ActiveContent <> nil then
1046     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1047     end;
1048     end;
1049     end else begin
1050     case GikoSys.Setting.ListHeightState of
1051     glsMax, glsNormal: begin
1052     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1053     if GikoForm.ActiveContent <> nil then
1054     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1055     if GikoSys.Setting.ListHeightState = glsNormal then
1056     GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1057     GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1058     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1059     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1060     GikoSys.Setting.ListHeightState := glsMin;
1061     if GikoForm.ActiveContent <> nil then
1062     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1063     end;
1064     glsMin: begin
1065     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1066     if GikoForm.ActiveContent <> nil then
1067     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1068     GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1069     BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1070     BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1071     GikoSys.Setting.ListHeightState := glsNormal;
1072     if GikoForm.ActiveContent <> nil then
1073     SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1074     end;
1075     end;
1076     end;
1077     end;
1078     // *************************************************************************
1079 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1080 h677 1.3 // *************************************************************************
1081     procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1082     begin
1083     GikoForm.BrowserMovement('top');
1084     end;
1085     // *************************************************************************
1086 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1087 h677 1.3 // *************************************************************************
1088     procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1089     begin
1090     GikoForm.BrowserMovement('bottom');
1091     end;
1092     // *************************************************************************
1093 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1094 h677 1.3 // *************************************************************************
1095     procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1096     begin
1097     GikoForm.BrowserMovement('new');
1098     end;
1099     // *************************************************************************
1100 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1101 h677 1.3 // *************************************************************************
1102     procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1103     begin
1104     GikoForm.BrowserMovement('koko');
1105     end;
1106     // *************************************************************************
1107 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1108 h677 1.3 // *************************************************************************
1109     procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1110     begin
1111     ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1112     and (GikoForm.GetActiveContent.IsLogFile)
1113     and (GikoForm.GetActiveContent.Kokomade <> -1);
1114     end;
1115     // *************************************************************************
1116 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1117 h677 1.3 // *************************************************************************
1118     procedure TGikoDM.EditorActionExecute(Sender: TObject);
1119     var
1120     Editor: TEditorForm;
1121     Item: TThreadItem;
1122     begin
1123     Item := GikoForm.GetActiveContent;
1124     if Item = nil then Exit;
1125     Editor := TEditorForm.Create(GikoForm.GetMainForm);
1126     Editor.SetThreadItem(Item);
1127     GikoSys.LoadEditorKeySetting(Editor.ActionList);
1128     Editor.Show;
1129     Editor.BodyEdit.SetFocus;
1130     end;
1131     // *************************************************************************
1132 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1133 h677 1.3 // *************************************************************************
1134     procedure TGikoDM.IEActionExecute(Sender: TObject);
1135     begin
1136     ShowThreadAction.Execute;
1137     end;
1138     // *************************************************************************
1139 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1140 h677 1.3 // *************************************************************************
1141     procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1142     var
1143     ThreadItem: TThreadItem;
1144     begin
1145     ThreadItem := GikoForm.GetActiveContent;
1146     if ThreadItem = nil then Exit;
1147     GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1148     end;
1149     // *************************************************************************
1150 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1151 h677 1.3 // *************************************************************************
1152     procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1153     var
1154     ThreadItem: TThreadItem;
1155     begin
1156     ThreadItem := GikoForm.GetActiveContent;
1157     if ThreadItem = nil then Exit;
1158     GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1159     end;
1160     // *************************************************************************
1161 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1162 h677 1.3 // *************************************************************************
1163     procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1164     var
1165     s: string;
1166     begin
1167     s := '';
1168     if TObject(GikoForm.GetActiveContent) is TBoard then
1169     s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1170     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1171     s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1172     if s <> '' then
1173     Clipboard.AsText := s;
1174     end;
1175     // *************************************************************************
1176 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1177 h677 1.3 // *************************************************************************
1178     procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1179     var
1180     s: string;
1181     begin
1182     s := '';
1183     if TObject(GikoForm.GetActiveContent) is TBoard then
1184     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1185     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1186     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1187     if s <> '' then
1188     Clipboard.AsText := s;
1189     end;
1190     // *************************************************************************
1191 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1192 h677 1.3 // *************************************************************************
1193     procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1194     var
1195     s: string;
1196     begin
1197     s := '';
1198     if TObject(GikoForm.GetActiveContent) is TBoard then
1199     s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1200     else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1201     s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1202     if s <> '' then
1203     Clipboard.AsText := s;
1204     end;
1205     // *************************************************************************
1206 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1207 h677 1.3 // *************************************************************************
1208     procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1209     var
1210     ThreadItem: TThreadItem;
1211     shiftDown: Boolean;
1212     begin
1213     ThreadItem := GikoForm.GetActiveContent;
1214     shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1215     if ThreadItem <> nil then
1216     GikoForm.DownloadContent(ThreadItem, shiftDown);
1217     end;
1218     // *************************************************************************
1219 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1220 h677 1.3 // *************************************************************************
1221     procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1222     var
1223     idx: Integer;
1224     begin
1225     idx := GikoForm.BrowserTab.TabIndex;
1226     if idx <> -1 then begin
1227     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1228     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1229     end;
1230     end;
1231     end;
1232     // *************************************************************************
1233 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1234 h677 1.3 // *************************************************************************
1235     procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1236     begin
1237     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1238     end;
1239     // *************************************************************************
1240 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1241 h677 1.3 // *************************************************************************
1242     procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1243     var
1244     i: Integer;
1245     idx: Integer;
1246     begin
1247     idx := GikoForm.BrowserTab.TabIndex;
1248     if idx = -1 then Exit;
1249     GikoForm.BrowserTab.Tabs.BeginUpdate;
1250     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1251     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1252     GikoForm.BrowserTab.Tabs.Delete(i);
1253     end;
1254     if idx > 0 then begin
1255     for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1256     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1257     GikoForm.BrowserTab.Tabs.Delete(i);
1258     end;
1259     end;
1260     GikoForm.BrowserTab.Tabs.EndUpdate;
1261     end;
1262     // *************************************************************************
1263 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1264 h677 1.3 // *************************************************************************
1265     procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1266     begin
1267     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1268     end;
1269     // *************************************************************************
1270 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1271 h677 1.3 // *************************************************************************
1272     procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1273     var
1274     i: Integer;
1275     begin
1276     if GikoSys.Setting.ShowDialogForAllTabClose then
1277     if(MessageDlg('鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1278     Exit;
1279    
1280     GikoForm.ActiveContent := nil;
1281     GikoForm.BrowserNullTab.Thread := nil;
1282     GikoForm.BrowserTab.OnChange := nil;
1283     GikoForm.BrowserTab.Tabs.BeginUpdate;
1284     for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1285     TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1286     end;
1287     GikoForm.BrowserTab.Tabs.Clear;
1288     GikoForm.BrowserTab.Tabs.EndUpdate;
1289     GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1290     GikoForm.SetContent(GikoForm.BrowserNullTab);
1291     GikoForm.Caption := CAPTION_NAME ;
1292     end;
1293     // *************************************************************************
1294 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1295 h677 1.3 // *************************************************************************
1296     procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1297     const
1298     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1299     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
1300     var
1301     idx: Integer;
1302     ThreadItem: TThreadItem;
1303     begin
1304     idx := GikoForm.BrowserTab.TabIndex;
1305     if idx <> -1 then begin
1306     if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1307     ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1308     if GikoSys.Setting.DeleteMsg then
1309     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1310     if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1311     Exit;
1312     GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1313     ThreadItem.DeleteLogFile;
1314     if ThreadItem.ParentBoard = GikoForm.ActiveList then
1315     GikoForm.ListView.Refresh;
1316     end;
1317     end;
1318     end;
1319     // *************************************************************************
1320 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1321 h677 1.3 // *************************************************************************
1322     procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1323     begin
1324     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1325     GikoForm.BrowserTab.TabIndex := 0;
1326     GikoForm.BrowserTab.OnChange(nil);
1327     end;
1328     end;
1329     // *************************************************************************
1330 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1331 h677 1.3 // *************************************************************************
1332     procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1333     begin
1334     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1335     and (GikoForm.BrowserTab.TabIndex <> 0);
1336     end;
1337     // *************************************************************************
1338 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1339 h677 1.3 // *************************************************************************
1340     procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1341     begin
1342     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1343     if GikoForm.BrowserTab.TabIndex = -1 then begin
1344     GikoForm.BrowserTab.TabIndex := 0;
1345     GikoForm.BrowserTab.OnChange(nil);
1346     end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1347     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1348     GikoForm.BrowserTab.OnChange(nil);
1349     end;
1350     end;
1351     end;
1352     // *************************************************************************
1353 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1354 h677 1.3 // *************************************************************************
1355     procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1356     begin
1357     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1358     if GikoForm.BrowserTab.TabIndex = -1 then begin
1359     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1360     GikoForm.BrowserTab.OnChange(nil);
1361     end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1362     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1363     GikoForm.BrowserTab.OnChange(nil);
1364     end;
1365     end;
1366     end;
1367     // *************************************************************************
1368 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1369 h677 1.3 // *************************************************************************
1370     procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1371     begin
1372     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1373     and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1374     end;
1375     // *************************************************************************
1376 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1377 h677 1.3 // *************************************************************************
1378     procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1379     begin
1380     if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1381     GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1382     GikoForm.BrowserTab.OnChange(nil);
1383     end;
1384     end;
1385     // *************************************************************************
1386 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1387 h677 1.3 // *************************************************************************
1388     procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1389     begin
1390     if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1391     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1392     end;
1393     // *************************************************************************
1394 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1395 h677 1.3 // *************************************************************************
1396     procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1397     begin
1398     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1399     and (GikoForm.ListView.SelCount > 0);
1400     end;
1401     // *************************************************************************
1402 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1403 h677 1.3 // *************************************************************************
1404     procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1405     var
1406     Dlg: TListSelectDialog;
1407     FilterList : TStringList;
1408     idx : Integer;
1409     begin
1410     Dlg := TListSelectDialog.Create(Self);
1411     try
1412     Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1413     Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1414     Dlg.ShowModal;
1415     if Dlg.ModalResult = mrOK then begin
1416     SelectResAction.Checked := True;
1417     if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1418     // 鐃緒申鐃緒申鐃緒申鐃緒申 OK 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1419     ResRangeAction.Execute;
1420     end else begin
1421     GikoSys.ResRange := Ord( grrSelect );
1422    
1423     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1424     GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1425    
1426     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
1427     idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1428     if idx <> -1 then
1429     GikoSys.Setting.SelectTextList.Delete(idx);
1430     GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1431     while Dlg.SelectComboBox.Items.Count > 100 do begin
1432     Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1433     end;
1434    
1435     try
1436     if GikoForm.SelectComboBoxPanel.Visible then
1437     GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1438     except
1439     end;
1440    
1441     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1442     FilterList := TStringList.Create;
1443     try
1444     GikoSys.FSelectResFilter.Reverse := True;
1445     FilterList.Delimiter := ' '; //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1446     FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1447    
1448     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1449     finally
1450     FilterList.Free;
1451     end;
1452     GikoForm.RepaintAllTabsBrowser();
1453     end;
1454     end else begin
1455     // 鐃?鐃緒申鐃緒申鐃?鐃緒申
1456     if GikoSys.ResRange <> Ord( grrSelect ) then
1457     ResRangeAction.Execute;
1458     end;
1459     finally
1460     Dlg.Release;
1461     end;
1462    
1463     end;
1464     // *************************************************************************
1465 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1466 h677 1.3 // *************************************************************************
1467     procedure TGikoDM.AllResActionExecute(Sender: TObject);
1468     var
1469     FilterList : TStringList;
1470     begin
1471     if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1472     and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1473    
1474     GikoForm.ResRangeMenuSelect := Ord( grrAll );
1475     AllResAction.Checked := True;
1476    
1477     if GikoSys.ResRange <> Ord( grrAll ) then begin
1478     GikoSys.ResRange := Ord( grrAll );
1479    
1480     // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1481     FilterList := TStringList.Create;
1482     try
1483     GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1484     GikoSys.FSelectResFilter.Reverse := False;
1485     finally
1486     FilterList.Free;
1487     end;
1488    
1489     GikoForm.SelectResWord := '';
1490    
1491     GikoForm.RepaintAllTabsBrowser();
1492     end;
1493     end;
1494     // *************************************************************************
1495 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1496 h677 1.3 // *************************************************************************
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 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1509 h677 1.3 // *************************************************************************
1510     procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1511     begin
1512     GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1513     end;
1514     // *************************************************************************
1515 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1516 h677 1.3 // *************************************************************************
1517     procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1518     var
1519     str: string;
1520     res: integer;
1521     begin
1522     str := '1';
1523     if( InputQuery('鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申', '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', 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.BrowserMovement(IntToStr(res), GikoForm.ActiveContent);
1528     SetFocusForBrowserAction.Execute;
1529     end else if res > GikoForm.GetActiveContent.Count then begin
1530     GikoForm.BrowserMovement(IntToStr(GikoForm.GetActiveContent.Count), GikoForm.ActiveContent);
1531     SetFocusForBrowserAction.Execute;
1532     end;
1533     end;
1534     end;
1535     // *************************************************************************
1536 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1537 h677 1.3 // *************************************************************************
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 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1554 h677 1.3 // *************************************************************************
1555     procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1556     begin
1557     TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1558     end;
1559     // *************************************************************************
1560 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1561 h677 1.3 // *************************************************************************
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     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1579 h677 1.4 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1580     begin
1581    
1582     end;
1583     // *************************************************************************
1584 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1585 h677 1.4 // *************************************************************************
1586     procedure TGikoDM.SearchActionExecute(Sender: TObject);
1587     var
1588     chk: TObject;
1589     begin
1590    
1591     if GikoForm.SearchDialog = nil then begin
1592     if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
1593     chk := GikoForm.GetActiveList
1594     else
1595     chk := nil;
1596    
1597     GikoForm.SearchDialog := TSearchDialog.Create(Self, chk);
1598     GikoForm.SearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1599     end;
1600    
1601     try
1602     GikoForm.SearchDialog.Show;
1603     except
1604     end;
1605     end;
1606     // *************************************************************************
1607 yoffy 1.9 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1608 h677 1.4 // *************************************************************************
1609     procedure TGikoDM.OptionActionExecute(Sender: TObject);
1610     var
1611     Dlg: TOptionDialog;
1612     begin
1613     Dlg := TOptionDialog.Create(Self);
1614     try
1615     Dlg.ShowModal;
1616     finally
1617     Dlg.Release;
1618     end;
1619     end;
1620     // *************************************************************************
1621 yoffy 1.9 //! 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1622 h677 1.4 // *************************************************************************
1623     procedure TGikoDM.RoundActionExecute(Sender: TObject);
1624     var
1625     Dlg: TRoundDialog;
1626     begin
1627     Dlg := TRoundDialog.Create(Self);
1628     try
1629     Dlg.ShowModal;
1630     finally
1631     Dlg.Release;
1632     end;
1633     end;
1634     // *************************************************************************
1635 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1636 h677 1.4 // *************************************************************************
1637     procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1638     var
1639     Dlg: TKeySettingForm;
1640     begin
1641     Dlg := TKeySettingForm.Create(Self);
1642     try
1643     if Dlg.ShowModal = mrOk then begin
1644     GikoSys.SaveKeySetting(GikoFormActionList);
1645     GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
1646     GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
1647     end;
1648    
1649     finally
1650     Dlg.Release;
1651     MouseGesture.UnHook;
1652     MouseGesture.OnGestureStart := GikoForm.OnGestureStart;
1653     MouseGesture.OnGestureMove := GikoForm.OnGestureMove;
1654     MouseGesture.OnGestureEnd := GikoForm.OnGestureEnd;
1655     if GikoSys.Setting.GestureEnabled then begin
1656     GikoSys.Setting.Gestures.ClearGesture;
1657     GikoSys.Setting.Gestures.LoadGesture(
1658     GikoSys.Setting.GetGestureFileName, GikoFormActionList );
1659     MouseGesture.SetHook( GikoForm.Handle );
1660     end;
1661     end;
1662     end;
1663     // *************************************************************************
1664 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1665 h677 1.4 // *************************************************************************
1666     procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1667     var
1668     Dlg: TKotehanDialog;
1669     begin
1670     Dlg := TKotehanDialog.Create(Self);
1671     try
1672     Dlg.ShowModal;
1673     finally
1674     Dlg.Release;
1675     end;
1676     end;
1677     // *************************************************************************
1678 yoffy 1.9 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1679 h677 1.4 // *************************************************************************
1680     procedure TGikoDM.ToolBarSettingActionExecute(Sender: TObject);
1681     var
1682     Dlg: TToolBarSettingDialog;
1683     i: Integer;
1684     //Component: TComponent;
1685     ToolButton : TToolButton;
1686     begin
1687     Dlg := TToolBarSettingDialog.Create(GikoForm, GikoFormActionList);
1688     try
1689     Dlg.AddToolBar(GikoForm.StdToolBar, gttStandard);
1690     Dlg.AddToolBar(GikoForm.ListToolBar, gttList);
1691     Dlg.AddToolBar(GikoForm.BrowserToolBar, gttBrowser);
1692     case GikoForm.ToolBarSettingSender of
1693     tssMain: Dlg.ToolBarIndex := 0;
1694     tssList: Dlg.ToolBarIndex := 1;
1695     tssBrowser: Dlg.ToolBarIndex := 2;
1696     end;
1697     if Dlg.ShowModal = mrOK then begin
1698     GikoForm.SetToolBarPopup;
1699    
1700     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1701     for i := 0 to GikoForm.MainCoolBar.Bands.Count - 1 do begin
1702     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1703     GikoForm.MainCoolBar.Bands[i].MinWidth + 1;
1704     GikoForm.MainCoolBar.Bands[i].MinWidth :=
1705     GikoForm.MainCoolBar.Bands[i].MinWidth - 1;
1706     end;
1707     for i := 0 to GikoForm.ListCoolBar.Bands.Count - 1 do begin
1708     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1709     GikoForm.ListCoolBar.Bands[i].MinWidth + 1;
1710     GikoForm.ListCoolBar.Bands[i].MinWidth :=
1711     GikoForm.ListCoolBar.Bands[i].MinWidth - 1;
1712     end;
1713     for i := 0 to GikoForm.BrowserCoolBar.Bands.Count - 1 do begin
1714     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1715     GikoForm.BrowserCoolBar.Bands[i].MinWidth + 1;
1716     GikoForm.BrowserCoolBar.Bands[i].MinWidth :=
1717     GikoForm.BrowserCoolBar.Bands[i].MinWidth - 1;
1718     end;
1719    
1720     SaveToolBarSetting(GikoForm.StdToolBar);
1721     SaveToolBarSetting(GikoForm.ListToolBar);
1722     //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1723     GikoForm.SelectComboBoxPanel.Visible := False;
1724     try
1725     for i := GikoForm.ListToolBar.ControlCount - 1 downto 0 do
1726     begin
1727     if GikoForm.ListToolBar.Controls[ i ].Action = SelectItemAction then
1728     begin
1729     GikoForm.SelectComboBoxPanel.Left :=
1730     GikoForm.ListToolBar.Controls[ i ].Left;
1731     GikoForm.SelectComboBoxPanel.Width :=
1732     GikoSys.Setting.SelectComboBoxWidth;
1733     GikoForm.SelectComboBoxPanel.Parent :=
1734     GikoForm.ListToolBar;
1735     GikoForm.SelectComboBoxPanel.Visible := True;
1736    
1737     GikoForm.SelectComboBox.Left := 0;
1738     GikoForm.SelectComboBox.Top := 0;
1739     GikoForm.SelectComboBox.Height :=
1740     GikoForm.SelectComboBoxPanel.ClientHeight;
1741     GikoForm.SelectComboBox.Width :=
1742     GikoForm.SelectComboBoxPanel.Width -
1743     GikoForm.SelectComboBoxSplitter.Width;
1744    
1745    
1746     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1747     ToolButton := TToolButton(GikoForm.ListToolBar.FindComponent('SelectComboBoxDummy'));
1748     if ToolButton <> nil then begin
1749     ToolButton.Parent := nil;
1750     end else begin
1751     ToolButton := TToolButton.Create(GikoForm.ListToolBar);
1752     ToolButton.Name := 'SelectComboBoxDummy';
1753     end;
1754    
1755     ToolButton.Style := tbsSeparator;
1756     ToolButton.Width := 0;
1757     ToolButton.Left := GikoForm.ListToolBar.Controls[ i ].Left;
1758     GikoForm.ListToolBar.InsertControl(ToolButton);
1759     ToolButton.Visible := False;
1760    
1761     // 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1762     if (i + 1) < GikoForm.ListToolBar.ControlCount then
1763     if GikoForm.ListToolBar.Controls[ i + 1 ] is TToolButton then
1764     if TToolButton( GikoForm.ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1765     GikoForm.ListToolBar.Controls[ i + 1 ].Visible := False;
1766    
1767    
1768     // 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申
1769     GikoForm.ListToolBar.Controls[ i ].Visible := False;
1770    
1771     break;
1772     end;
1773     end;
1774     except
1775     end;
1776     GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1777     SaveToolBarSetting(GikoForm.BrowserToolBar);
1778     end;
1779     finally
1780     Dlg.Release;
1781     GikoForm.ToolBarSettingSender := tssNone;
1782     end;
1783     end;
1784     // *************************************************************************
1785 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?
1786 h677 1.4 // *************************************************************************
1787     procedure TGikoDM.MuteActionExecute(Sender: TObject);
1788     begin
1789     GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1790     end;
1791     ////////////////////////////////鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1792     // *************************************************************************
1793 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1794 h677 1.4 // *************************************************************************
1795     procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1796     var
1797     Board: TBoard;
1798     TmpTreeNode: TTreeNode;
1799     begin
1800     TmpTreeNode := GikoForm.ClickNode;
1801     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1802     Board := nil;
1803    
1804     if TObject(TmpTreeNode.Data) is TBoard then
1805     Board := TBoard(TmpTreeNode.Data)
1806     else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1807     Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1808    
1809     if Board <> nil then
1810     GikoForm.DownloadList(Board);
1811     end;
1812     // *************************************************************************
1813 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1814 h677 1.4 // *************************************************************************
1815     procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1816     var
1817     ThreadItem: TThreadItem;
1818     TmpTreeNode: TTreeNode;
1819     begin
1820     TmpTreeNode := GikoForm.ClickNode;
1821     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1822     ThreadItem := nil;
1823    
1824     if TObject(TmpTreeNode.Data) is TThreadItem then
1825     ThreadItem := TThreadItem(TmpTreeNode.Data)
1826     else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1827     ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1828    
1829     if ThreadItem <> nil then
1830     GikoForm.DownloadContent(ThreadItem);
1831     end;
1832     // *************************************************************************
1833 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1834 h677 1.4 // *************************************************************************
1835     procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1836     var
1837     TmpTreeNode: TTreeNode;
1838     s: string;
1839     begin
1840     TmpTreeNode := GikoForm.ClickNode;
1841     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1842     if TObject(TmpTreeNode.Data) is TBoard then begin
1843     s := TBoard(TmpTreeNode.Data).URL + #13#10;
1844     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1845     s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1846     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1847     s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1848     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1849     s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1850     end;
1851     Clipboard.AsText := s;
1852     end;
1853     // *************************************************************************
1854 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1855 h677 1.4 // *************************************************************************
1856     procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1857     var
1858     TmpTreeNode: TTreeNode;
1859     s: string;
1860     begin
1861     TmpTreeNode := GikoForm.ClickNode;
1862     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1863     if TObject(TmpTreeNode.Data) is TBoard then begin
1864     s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1865     end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1866     s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1867     end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1868     s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1869     end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1870     s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1871     end;
1872     Clipboard.AsText := s;
1873     end;
1874     // *************************************************************************
1875 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1876 h677 1.4 // *************************************************************************
1877     procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1878     begin
1879     GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1880     end;
1881     // *************************************************************************
1882 yoffy 1.9 //! 鐃緒申鐃緒申鐃緒申鐃緒申
1883 h677 1.4 // *************************************************************************
1884     procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1885     var
1886     s : String;
1887     msg : String;
1888     CurItem : TTreeNode;
1889     next : boolean;
1890     begin
1891     if InputQuery('鐃緒申鐃緒申鐃緒申鐃緒申','鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申',s) then begin
1892     next := true;
1893     while next do begin
1894     if GikoForm.TreeView.Selected = nil then
1895     CurItem := GikoForm.TreeView.Items.GetFirstNode
1896     else begin
1897     CurItem := GikoForm.TreeView.Selected.GetNext;
1898     if CurItem = nil then
1899     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1900     end;
1901     while CurItem <> nil do begin
1902     if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1903     break;
1904     end;
1905     CurItem := CurItem.GetNext;
1906     end;
1907     try
1908     if CurItem = nil then begin
1909     msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1910     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1911     CurItem := GikoForm.TreeView.Items.GetFirstNode;
1912     end else begin
1913     Exit;
1914     end;
1915     GikoForm.TreeView.Select(CurItem);
1916     GikoForm.TreeView.SetFocus;
1917     end else begin
1918     GikoForm.TreeView.Select(CurItem);
1919     GikoForm.TreeView.SetFocus;
1920     msg := '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1921     if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1922     next := true;
1923     end else begin
1924     next := false;
1925     end;
1926     end;
1927    
1928     except
1929     Exit;
1930     end;
1931     end;
1932     end;
1933     end;
1934     // *************************************************************************
1935 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1936 h677 1.4 // *************************************************************************
1937     procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1938     var
1939     s: string;
1940     begin
1941     GikoForm.TreeView.Selected := GikoForm.ClickNode;
1942     s := GikoForm.ClickNode.Text;
1943     Clipboard.AsText := s;
1944     end;
1945     ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1946 h677 1.5 // *************************************************************************
1947 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1948 h677 1.5 // *************************************************************************
1949     procedure TGikoDM.LoginActionExecute(Sender: TObject);
1950     var
1951     TmpCursor: TCursor;
1952     msg : String;
1953     begin
1954     if GikoSys.Dolib.Connected then begin
1955     //鐃緒申鐃?鐃?鐃?鐃?
1956     GikoSys.Dolib.Disconnect;
1957     LoginAction.Checked := False;
1958     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK);
1959     LoginAction.Caption := '鐃緒申鐃?鐃?鐃緒申(&L)';
1960     end else begin
1961     TmpCursor := GikoForm.ScreenCursor;
1962     GikoForm.ScreenCursor := crHourGlass;
1963     try
1964     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1965     if not GikoSys.Setting.ForcedLogin then begin
1966     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1967     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1968     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1969     if GikoSys.Setting.ReadProxy then begin
1970     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1971     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1972     end else begin
1973     GikoSys.Dolib.ProxyAddress := '';
1974     GikoSys.Dolib.ProxyPort := 0;
1975     end;
1976     if GikoSys.Dolib.Connect then begin
1977     LoginAction.Checked := True;
1978     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1979     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1980     //LoginToolButton.Style := tbsCheck;
1981     end else begin
1982     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1983     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1984     GikoForm.PlaySound('Error');
1985     LoginAction.Checked := False;
1986     //LoginToolButton.Down := False;
1987     ///LoginToolButton.Style := tbsButton;
1988     end;
1989     end else begin
1990     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1991     + '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1992     + '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10;
1993     if MsgBox(GikoForm.Handle, msg, '鐃?鐃緒申', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
1994     GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1995     GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1996     GikoSys.Dolib.Password := GikoSys.Setting.Password;
1997     if GikoSys.Setting.ReadProxy then begin
1998     GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1999     GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
2000     end else begin
2001     GikoSys.Dolib.ProxyAddress := '';
2002     GikoSys.Dolib.ProxyPort := 0;
2003     end;
2004     //SSL鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
2005     GikoSys.Dolib.ForcedConnect;
2006     if GikoSys.Dolib.Connect then begin
2007     LoginAction.Checked := True;
2008     GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
2009     LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
2010     //LoginToolButton.Style := tbsCheck;
2011     end else begin
2012     // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
2013     GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
2014     GikoForm.PlaySound('Error');
2015     LoginAction.Checked := False;
2016     //LoginToolButton.Down := False;
2017     //LoginToolButton.Style := tbsButton;
2018     end;
2019     end else begin
2020     LoginAction.Checked := False;
2021     //LoginToolButton.Down := False;
2022     //LoginToolButton.Style := tbsButton;
2023     end;
2024     end;
2025     finally
2026     GikoForm.ScreenCursor := TmpCursor;
2027     end;
2028     end;
2029     end;
2030     // *************************************************************************
2031 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2032 h677 1.5 // *************************************************************************
2033     procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
2034     var
2035     Dlg: TNewBoardDialog;
2036     Msg: string;
2037     begin
2038     if GikoForm.EditorFormExists then begin
2039     Msg := '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2040     MsgBox(GikoForm.Handle, Msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
2041     Exit;
2042     end;
2043     Dlg := TNewBoardDialog.Create(Self);
2044     try
2045     Dlg.ShowModal;
2046     finally
2047     Dlg.Release;
2048     end;
2049     end;
2050     // *************************************************************************
2051 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2052 h677 1.5 // *************************************************************************
2053     procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2054     const
2055     DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2056     DEL_SAME_MSG = '鐃緒申鐃緒申鐃緒申 ^0 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2057     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2058     var
2059     ThreadItem: TThreadItem;
2060     TmpListItem: TListItem;
2061     List: TList;
2062     i: Integer;
2063     begin
2064     List := TList.Create;
2065     try
2066     TmpListItem := GikoForm.ListView.Selected;
2067     while TmpListItem <> nil do begin
2068     if TObject(TmpListItem.Data) is TThreadItem then begin
2069     ThreadItem := TThreadItem(TmpListItem.Data);
2070     if ThreadItem.IsLogFile then
2071     List.Add(ThreadItem);
2072     end;
2073     TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2074     end;
2075    
2076     if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2077     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2078     if List.Count = 1 then begin
2079     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
2080     Exit;
2081     end else begin
2082     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
2083     Exit;
2084     end;
2085     end;
2086     end;
2087    
2088     for i := 0 to List.Count - 1 do begin
2089     ThreadItem := TThreadItem(List[i]);
2090     GikoForm.DeleteHistory(ThreadItem);
2091     GikoForm.DeleteTab(ThreadItem);
2092     ThreadItem.DeleteLogFile;
2093    
2094     GikoForm.TreeView.Refresh; // UnRead 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
2095     end;
2096     GikoForm.ListView.Refresh;
2097     finally
2098     List.Free;
2099     end;
2100     end;
2101     // *************************************************************************
2102 yoffy 1.9 //! ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Action鐃緒申鐃緒申鐃緒申
2103 h677 1.5 // *************************************************************************
2104     procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2105     begin
2106     TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2107     and (GikoForm.ListView.SelCount > 0);
2108     end;
2109     // *************************************************************************
2110 yoffy 1.9 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2111 h677 1.5 // *************************************************************************
2112     procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2113     const
2114     DEL_MSG = '鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2115     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2116     begin
2117     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2118     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2119     Exit;
2120     GikoSys.Setting.SelectTextList.Clear;
2121     GikoForm.SelectComboBox.Items.Clear;
2122     GikoForm.SelectComboBox.Text := '';
2123     GikoForm.SetListViewType( gvtAll );
2124     end;
2125     // *************************************************************************
2126 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2127 h677 1.5 // *************************************************************************
2128     procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2129     const
2130     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2131     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2132     begin
2133     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2134     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2135     Exit;
2136     GikoSys.Setting.NameList.Clear;
2137     GikoForm.AllEditroFormNameTextClearClear;
2138     end;
2139     // *************************************************************************
2140 yoffy 1.9 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2141 h677 1.5 // *************************************************************************
2142     procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2143     const
2144     DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2145     DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2146     begin
2147     if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2148     if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2149     Exit;
2150     GikoSys.Setting.MailList.Clear;
2151     GikoForm.AllEditroFormMailTextClearClear;
2152     end;
2153     // *************************************************************************
2154 yoffy 1.9 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2155 h677 1.5 // *************************************************************************
2156     procedure TGikoDM.ExitActionExecute(Sender: TObject);
2157     begin
2158     GikoForm.Close;
2159     end;
2160     // *************************************************************************
2161 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
2162 h677 1.5 // *************************************************************************
2163     procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2164     begin
2165     ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2166     end;
2167     // *************************************************************************
2168 yoffy 1.9 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
2169 h677 1.5 // *************************************************************************
2170     procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2171     begin
2172     if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2173     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
2174     end else begin
2175     ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申');
2176     end;
2177     end;
2178     // *************************************************************************
2179 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2180 h677 1.5 // *************************************************************************
2181     procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2182     var
2183     List: TList;
2184     i: Integer;
2185     html: TStringList;
2186     title: string;
2187     begin
2188     List := TList.Create;
2189     try
2190     GikoForm.ScreenCursor := crHourGlass;
2191     GikoForm.SelectListItem(List);
2192     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2193     (GikoSys.Setting.ListHeightState = glsMax)) or
2194     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2195     (GikoSys.Setting.ListWidthState = glsMax)) then
2196     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2197     else if(List.Count = 0) then
2198     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2199     else begin
2200     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2201     FileSaveAs1.Dialog.Filter := 'HTML鐃?鐃?鐃?鐃緒申(*.html)|*.html';
2202     for i := 0 to List.Count - 1 do begin
2203     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2204     FileSaveAs1.Dialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2205     if FileSaveAs1.Dialog.Execute then begin
2206     html := TStringList.Create;
2207     title := TThreadItem(List[i]).Title;
2208     try
2209     HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2210     html.SaveToFile(FileSaveAs1.Dialog.FileName);
2211     THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
2212     finally
2213     html.Free;
2214     end;
2215     end;
2216     end;
2217     end;
2218     end;
2219     finally
2220     GikoForm.ScreenCursor := crDefault;
2221     List.Free;
2222     end;
2223     end;
2224     // *************************************************************************
2225 yoffy 1.9 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申DAT鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2226 h677 1.5 // *************************************************************************
2227     procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2228     var
2229     List: TList;
2230     i: Integer;
2231     begin
2232     List := TList.Create;
2233     try
2234     GikoForm.ScreenCursor := crHourGlass;
2235     GikoForm.SelectListItem(List);
2236     if ((GikoSys.Setting.ListOrientation = gloVertical) and
2237     (GikoSys.Setting.ListHeightState = glsMax)) or
2238     ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2239     (GikoSys.Setting.ListWidthState = glsMax)) then
2240     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2241     else if(List.Count = 0) then
2242     ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2243     else begin
2244     FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申dat鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2245     FileSaveAs1.Dialog.Filter := 'DAT鐃?鐃?鐃?鐃緒申(*.dat)|*.dat';
2246     for i := 0 to List.Count - 1 do begin
2247     if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2248     FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
2249     if FileSaveAs1.Dialog.Execute then begin
2250     CopyFile(PChar(TThreadItem(List[i]).FilePath),
2251     PChar(FileSaveAs1.Dialog.FileName), true);
2252     end;
2253     end;
2254     end;