Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/GikoDataModule.pas

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


Revision 1.13 - (show annotations) (download) (as text)
Sun Nov 27 15:02:30 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
CVS Tags: v1_51_0_622
Changes since 1.12: +1 -53 lines
File MIME type: text/x-pascal
・リスト配置の縦横の設定が保存されない不具合の修正。
・キャビネット非表示時にBBSの変更で、切り替わらないときのある不具合の修正。
(あと、初期化の処理を一部メソッド化)

1 unit GikoDataModule;
2
3 interface
4
5 uses
6 SysUtils, Classes, ExtActns, StdActns, ActnList, ImgList, Controls,
7 {$IF Defined(DELPRO) }
8 SHDocVw,
9 MSHTML,
10 {$ELSE}
11 SHDocVw_TLB,
12 MSHTML_TLB,
13 {$IFEND}
14 ComCtrls;
15
16
17 type
18 TGikoDM = class(TDataModule)
19 GikoFormActionList: TActionList;
20 OnlyAHundredResAction: TAction;
21 OnlyKokoResAction: TAction;
22 LoginAction: TAction;
23 NewBoardAction: TAction;
24 LogDeleteAction: TAction;
25 KidokuAction: TAction;
26 StdToolBarVisibleAction: TAction;
27 AddressBarVisibleAction: TAction;
28 LinkBarVisibleAction: TAction;
29 ListToolBarVisibleAction: TAction;
30 SearchAction: TAction;
31 GikoNaviWebPageAction: TAction;
32 MonazillaWebPageAction: TAction;
33 BBS2chWebPageAction: TAction;
34 GikoFolderOpenAction: TAction;
35 AboutAction: TAction;
36 SelectTextClearAction: TAction;
37 NameTextClearAction: TAction;
38 MailTextClearAction: TAction;
39 ExitAction: TAction;
40 ListNameBarVisibleAction: TAction;
41 BrowserToolBarVisibleAction: TAction;
42 BrowserNameBarVisibleAction: TAction;
43 MsgBarVisibleAction: TAction;
44 MsgBarCloseAction: TAction;
45 StatusBarVisibleAction: TAction;
46 CabinetBBSAction: TAction;
47 CabinetHistoryAction: TAction;
48 OnlyNewResAction: TAction;
49 CabinetFavoriteAction: TAction;
50 CabinetVisibleAction: TAction;
51 ListNumberVisibleAction: TAction;
52 UpFolderAction: TAction;
53 CabinetCloseAction: TAction;
54 IconStyle: TAction;
55 LargeIconAction: TAction;
56 SmallIconAction: TAction;
57 ListIconAction: TAction;
58 DetailIconAction: TAction;
59 MidokuAction: TAction;
60 AllSelectAction: TAction;
61 AllItemAction: TAction;
62 LogItemAction: TAction;
63 NewItemAction: TAction;
64 ThreadRangeAction: TAction;
65 SelectItemAction: TAction;
66 StopAction: TAction;
67 OptionAction: TAction;
68 RoundAction: TAction;
69 BrowserMaxAction: TAction;
70 BrowserMinAction: TAction;
71 ScrollTopAction: TAction;
72 ScrollLastAction: TAction;
73 ScrollNewAction: TAction;
74 ScrollKokoAction: TAction;
75 EditorAction: TAction;
76 IEAction: TAction;
77 ShowThreadAction: TAction;
78 ShowBoardAction: TAction;
79 URLCopyAction: TAction;
80 NameCopyAction: TAction;
81 NameURLCopyAction: TAction;
82 ItemReloadAction: TAction;
83 ThreadEditorAction: TAction;
84 BoardIEAction: TAction;
85 SelectItemURLCopyAction: TAction;
86 SelectItemNameCopyAction: TAction;
87 SelectItemNameURLCopyAction: TAction;
88 SelectListReloadAction: TAction;
89 SelectThreadReloadAction: TAction;
90 BrowserTabCloseAction: TAction;
91 NotSelectTabCloseAction: TAction;
92 AllTabCloseAction: TAction;
93 KokomadeAction: TAction;
94 ZenbuAction: TAction;
95 KokoResAction: TAction;
96 TreeSelectBoradReload: TAction;
97 TreeSelectThreadReload: TAction;
98 TreeSelectURLCopy: TAction;
99 SelectReservAction: TAction;
100 SelectNewRoundName: TAction;
101 SelectDeleteRound: TAction;
102 KeySettingAction: TAction;
103 ArrangeAction: TAction;
104 ActiveLogDeleteAction: TAction;
105 TreeSelectNameURLCopy: TAction;
106 PaneInitAction: TAction;
107 LeftmostTabSelectAction: TAction;
108 LeftTabSelectAction: TAction;
109 RightTabSelectAction: TAction;
110 RightmostTabSelectAction: TAction;
111 FavoriteAddAction: TAction;
112 BoardFavoriteAddAction: TAction;
113 ThreadFavoriteAddAction: TAction;
114 TreeSelectFavoriteAddAction: TAction;
115 FavoriteArrangeAction: TAction;
116 MoveToAction: TAction;
117 BrowserTabVisibleAction: TAction;
118 BrowserTabTopAction: TAction;
119 BrowserTabBottomAction: TAction;
120 BrowserTabTabStyleAction: TAction;
121 BrowserTabButtonStyleAction: TAction;
122 BrowserTabFlatStyleAction: TAction;
123 GikoHelpAction: TAction;
124 KotehanAction: TAction;
125 ToolBarSettingAction: TAction;
126 SelectResAction: TAction;
127 AllResAction: TAction;
128 EditNGAction: TAction;
129 ReloadAction: TAction;
130 GoFowardAction: TAction;
131 GoBackAction: TAction;
132 TreeSelectSearchBoardName: TAction;
133 FavoriteTreeViewRenameAction: TAction;
134 FavoriteTreeViewNewFolderAction: TAction;
135 FavoriteTreeViewDeleteAction: TAction;
136 FavoriteTreeViewBrowseFolderAction: TAction;
137 FavoriteTreeViewReloadAction: TAction;
138 FavoriteTreeViewURLCopyAction: TAction;
139 FavoriteTreeViewNameCopyAction: TAction;
140 FavoriteTreeViewNameURLCopyAction: TAction;
141 FavoriteTreeViewLogDeleteAction: TAction;
142 ResRangeAction: TAction;
143 ExportFavoriteFile: TFileSaveAs;
144 FavoriteTreeViewBrowseBoardAction: TAction;
145 FavoriteTreeViewBrowseThreadAction: TAction;
146 UpBoardAction: TAction;
147 KoreCopy: TAction;
148 TreeSelectNameCopy: TAction;
149 SetFocusForBrowserAction: TAction;
150 SetFocusForThreadListAction: TAction;
151 SetFocusForCabinetAction: TAction;
152 FileRun1: TFileRun;
153 ThreadlistMaxAndFocusAction: TAction;
154 BrowserMaxAndFocusAction: TAction;
155 SelectItemSaveForHTML: TAction;
156 SelectItemSaveForDat: TAction;
157 FileSaveAs1: TFileSaveAs;
158 LogFolderOpenAction: TAction;
159 TabsSaveAction: TAction;
160 TabsOpenAction: TAction;
161 BrowsBoradHeadAction: TAction;
162 TabAutoSaveAction: TAction;
163 TabAutoLoadAction: TAction;
164 JumpToNumOfResAction: TAction;
165 FavoriteTreeViewCollapseAction: TAction;
166 RightTabCloseAction: TAction;
167 LeftTabCloseAction: TAction;
168 SameIDResAnchorAction: TAction;
169 IndividualAbon1Action: TAction;
170 IndividualAbon0Action: TAction;
171 AntiIndividualAbonAction: TAction;
172 AntiIndividualAbonDlgAction: TAction;
173 IndividualAbonID1Action: TAction;
174 IndividualAbonID0Action: TAction;
175 MuteAction: TAction;
176 SortActiveColumnAction: TAction;
177 SortNextColumnAction: TAction;
178 SortPrevColumnAction: TAction;
179 BeLogInOutAction: TAction;
180 UnSelectedListViewAction: TAction;
181 WikiFAQWebPageAction: TAction;
182 ToobarImageList: TImageList;
183 procedure EditNGActionExecute(Sender: TObject);
184 procedure ReloadActionExecute(Sender: TObject);
185 procedure GoFowardActionExecute(Sender: TObject);
186 procedure GoBackActionExecute(Sender: TObject);
187 procedure MoveToActionExecute(Sender: TObject);
188 procedure FavoriteAddActionExecute(Sender: TObject);
189 procedure FavoriteArrangeActionExecute(Sender: TObject);
190 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
191 procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
192 procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
193 procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
194 procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
195 procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
196 procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
197 procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
198 procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
199 procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
200 procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
201 procedure OnlyAHundredResActionExecute(Sender: TObject);
202 procedure OnlyKokoResActionExecute(Sender: TObject);
203 procedure OnlyNewResActionExecute(Sender: TObject);
204 procedure BrowserMaxActionExecute(Sender: TObject);
205 procedure BrowserMinActionExecute(Sender: TObject);
206 procedure ScrollTopActionExecute(Sender: TObject);
207 procedure ScrollLastActionExecute(Sender: TObject);
208 procedure ScrollNewActionExecute(Sender: TObject);
209 procedure ScrollKokoActionExecute(Sender: TObject);
210 procedure ScrollKokoActionUpdate(Sender: TObject);
211 procedure EditorActionExecute(Sender: TObject);
212 procedure IEActionExecute(Sender: TObject);
213 procedure ShowThreadActionExecute(Sender: TObject);
214 procedure ShowBoardActionExecute(Sender: TObject);
215 procedure URLCopyActionExecute(Sender: TObject);
216 procedure NameCopyActionExecute(Sender: TObject);
217 procedure NameURLCopyActionExecute(Sender: TObject);
218 procedure ItemReloadActionExecute(Sender: TObject);
219 procedure BrowserTabCloseActionExecute(Sender: TObject);
220 procedure BrowserTabCloseActionUpdate(Sender: TObject);
221 procedure NotSelectTabCloseActionExecute(Sender: TObject);
222 procedure NotSelectTabCloseActionUpdate(Sender: TObject);
223 procedure AllTabCloseActionExecute(Sender: TObject);
224 procedure ActiveLogDeleteActionExecute(Sender: TObject);
225 procedure LeftmostTabSelectActionExecute(Sender: TObject);
226 procedure LeftmostTabSelectActionUpdate(Sender: TObject);
227 procedure LeftTabSelectActionExecute(Sender: TObject);
228 procedure RightTabSelectActionExecute(Sender: TObject);
229 procedure RightTabSelectActionUpdate(Sender: TObject);
230 procedure RightmostTabSelectActionExecute(Sender: TObject);
231 procedure ThreadFavoriteAddActionExecute(Sender: TObject);
232 procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
233 procedure SelectResActionExecute(Sender: TObject);
234 procedure AllResActionExecute(Sender: TObject);
235 procedure ResRangeActionExecute(Sender: TObject);
236 procedure UpBoardActionExecute(Sender: TObject);
237 procedure JumpToNumOfResActionExecute(Sender: TObject);
238 procedure RightTabCloseActionExecute(Sender: TObject);
239 procedure RightTabCloseActionUpdate(Sender: TObject);
240 procedure LeftTabCloseActionExecute(Sender: TObject);
241 procedure DataModuleCreate(Sender: TObject);
242 procedure SearchActionExecute(Sender: TObject);
243 procedure OptionActionExecute(Sender: TObject);
244 procedure RoundActionExecute(Sender: TObject);
245 procedure KeySettingActionExecute(Sender: TObject);
246 procedure KotehanActionExecute(Sender: TObject);
247 procedure ToolBarSettingActionExecute(Sender: TObject);
248 procedure MuteActionExecute(Sender: TObject);
249 procedure TreeSelectBoradReloadExecute(Sender: TObject);
250 procedure TreeSelectThreadReloadExecute(Sender: TObject);
251 procedure TreeSelectURLCopyExecute(Sender: TObject);
252 procedure TreeSelectNameURLCopyExecute(Sender: TObject);
253 procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
254 procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
255 procedure TreeSelectNameCopyExecute(Sender: TObject);
256 procedure LoginActionExecute(Sender: TObject);
257 procedure NewBoardActionExecute(Sender: TObject);
258 procedure LogDeleteActionExecute(Sender: TObject);
259 procedure LogDeleteActionUpdate(Sender: TObject);
260 procedure SelectTextClearActionExecute(Sender: TObject);
261 procedure NameTextClearActionExecute(Sender: TObject);
262 procedure MailTextClearActionExecute(Sender: TObject);
263 procedure ExitActionExecute(Sender: TObject);
264 procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
265 procedure ExportFavoriteFileAccept(Sender: TObject);
266 procedure SelectItemSaveForHTMLExecute(Sender: TObject);
267 procedure SelectItemSaveForDatExecute(Sender: TObject);
268 procedure TabsSaveActionExecute(Sender: TObject);
269 procedure TabsOpenActionExecute(Sender: TObject);
270 procedure TabAutoSaveActionExecute(Sender: TObject);
271 procedure TabAutoLoadActionExecute(Sender: TObject);
272 procedure BeLogInOutActionExecute(Sender: TObject);
273 procedure BeLogInOutActionUpdate(Sender: TObject);
274 procedure KokomadeActionExecute(Sender: TObject);
275 procedure ZenbuActionExecute(Sender: TObject);
276 procedure KokoResActionExecute(Sender: TObject);
277 procedure KoreCopyExecute(Sender: TObject);
278 procedure SameIDResAnchorActionExecute(Sender: TObject);
279 procedure IndividualAbon1ActionExecute(Sender: TObject);
280 procedure IndividualAbon0ActionExecute(Sender: TObject);
281 procedure AntiIndividualAbonActionExecute(Sender: TObject);
282 procedure AntiIndividualAbonDlgActionExecute(Sender: TObject);
283 procedure IndividualAbonID1ActionExecute(Sender: TObject);
284 procedure IndividualAbonID0ActionExecute(Sender: TObject);
285 procedure GikoNaviWebPageActionExecute(Sender: TObject);
286 procedure MonazillaWebPageActionExecute(Sender: TObject);
287 procedure BBS2chWebPageActionExecute(Sender: TObject);
288 procedure GikoFolderOpenActionExecute(Sender: TObject);
289 procedure AboutActionExecute(Sender: TObject);
290 procedure GikoHelpActionExecute(Sender: TObject);
291 procedure WikiFAQWebPageActionExecute(Sender: TObject);
292 procedure ListNumberVisibleActionExecute(Sender: TObject);
293 procedure UpFolderActionExecute(Sender: TObject);
294 procedure UpFolderActionUpdate(Sender: TObject);
295 procedure IconStyleExecute(Sender: TObject);
296 procedure AllItemActionExecute(Sender: TObject);
297 procedure LogItemActionExecute(Sender: TObject);
298 procedure NewItemActionExecute(Sender: TObject);
299 procedure ThreadRangeActionExecute(Sender: TObject);
300 procedure SelectItemActionExecute(Sender: TObject);
301 procedure ThreadEditorActionExecute(Sender: TObject);
302 procedure BoardIEActionExecute(Sender: TObject);
303 procedure SelectItemURLCopyActionExecute(Sender: TObject);
304 procedure SelectItemURLCopyActionUpdate(Sender: TObject);
305 procedure SelectItemNameCopyActionExecute(Sender: TObject);
306 procedure SelectItemNameCopyActionUpdate(Sender: TObject);
307 procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
308 procedure SelectListReloadActionExecute(Sender: TObject);
309 procedure SelectListReloadActionUpdate(Sender: TObject);
310 procedure SelectThreadReloadActionExecute(Sender: TObject);
311 procedure SelectThreadReloadActionUpdate(Sender: TObject);
312 procedure SelectReservActionExecute(Sender: TObject);
313 procedure SelectReservActionUpdate(Sender: TObject);
314 procedure SelectNewRoundNameExecute(Sender: TObject);
315 procedure SelectDeleteRoundExecute(Sender: TObject);
316 procedure BoardFavoriteAddActionExecute(Sender: TObject);
317 procedure BoardFavoriteAddActionUpdate(Sender: TObject);
318 procedure LogFolderOpenActionExecute(Sender: TObject);
319 procedure LogFolderOpenActionUpdate(Sender: TObject);
320 procedure BrowsBoradHeadActionExecute(Sender: TObject);
321 procedure SortActiveColumnActionExecute(Sender: TObject);
322 procedure SortNextColumnActionExecute(Sender: TObject);
323 procedure SortPrevColumnActionExecute(Sender: TObject);
324 procedure StdToolBarVisibleActionExecute(Sender: TObject);
325 procedure AddressBarVisibleActionExecute(Sender: TObject);
326 procedure LinkBarVisibleActionExecute(Sender: TObject);
327 procedure ListToolBarVisibleActionExecute(Sender: TObject);
328 procedure ListNameBarVisibleActionExecute(Sender: TObject);
329 procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
330 procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
331 procedure MsgBarVisibleActionExecute(Sender: TObject);
332 procedure MsgBarCloseActionExecute(Sender: TObject);
333 procedure StatusBarVisibleActionExecute(Sender: TObject);
334 procedure CabinetBBSActionExecute(Sender: TObject);
335 procedure CabinetHistoryActionExecute(Sender: TObject);
336 procedure CabinetFavoriteActionExecute(Sender: TObject);
337 procedure CabinetVisibleActionExecute(Sender: TObject);
338 procedure CabinetCloseActionExecute(Sender: TObject);
339 procedure LargeIconActionExecute(Sender: TObject);
340 procedure SmallIconActionExecute(Sender: TObject);
341 procedure ListIconActionExecute(Sender: TObject);
342 procedure DetailIconActionExecute(Sender: TObject);
343 procedure StopActionExecute(Sender: TObject);
344 procedure ArrangeActionExecute(Sender: TObject);
345 procedure PaneInitActionExecute(Sender: TObject);
346 procedure BrowserTabVisibleActionExecute(Sender: TObject);
347 procedure BrowserTabTopActionExecute(Sender: TObject);
348 procedure BrowserTabBottomActionExecute(Sender: TObject);
349 procedure BrowserTabTabStyleActionExecute(Sender: TObject);
350 procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
351 procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
352 procedure SetFocusForBrowserActionExecute(Sender: TObject);
353 procedure SetFocusForBrowserActionUpdate(Sender: TObject);
354 procedure SetFocusForThreadListActionExecute(Sender: TObject);
355 procedure SetFocusForCabinetActionExecute(Sender: TObject);
356 procedure SetFocusForCabinetActionUpdate(Sender: TObject);
357 procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
358 procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
359 procedure UnSelectedListViewActionExecute(Sender: TObject);
360 procedure KidokuActionExecute(Sender: TObject);
361 procedure MidokuActionExecute(Sender: TObject);
362 procedure AllSelectActionExecute(Sender: TObject);
363 procedure AllSelectActionUpdate(Sender: TObject);
364 private
365 { Private 鐃緒申鐃緒申 }
366 public
367 { Public 鐃緒申鐃緒申 }
368 published
369 { Published 鐃緒申鐃緒申 }
370 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
371 procedure DependActiveCntentActionUpdate(Sender: TObject);
372 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
373 procedure DependActiveCntentLogActionUpdate(Sender: TObject);
374 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
375 procedure DependActiveListTBoardActionUpdate(Sender: TObject);
376 end;
377
378 var
379 GikoDM: TGikoDM;
380
381
382 implementation
383
384 uses
385 Windows, Math, Messages, Dialogs, Clipbrd,
386 Giko, GikoSystem, GikoUtil, BoardGroup,
387 FavoriteArrange, Favorite, Setting, MojuUtils,
388 Editor, ListSelect, Search, Option, Round,
389 KeySetting, Gesture, Kotehan, ToolBarSetting,
390 ToolBarUtil, NewBoard, HTMLCreate, IndividualAbon,
391 GikoBayesian, About, ShellAPI, Graphics,
392 RoundName, RoundData, Menus, ListViewUtils,
393 ThreadControl;
394
395 const
396 CAPTION_NAME: string = '鐃?鐃?鐃?鐃?';
397 USER_SETLINKBAR = WM_USER + 2003;
398
399 ITEM_ICON_SORT1 = 12; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
400 ITEM_ICON_SORT2 = 13; //!< 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
401
402 //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
403 TOOL_ICON_HEIGHT_MAX = 16; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
404 TOOL_ICON_HEIGHT_MIN = 17; //!< 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
405 TOOL_ICON_HEIGHT_NORMAL = 18; //!< 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
406 TOOL_ICON_WIDTH_MAX = 19; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
407 TOOL_ICON_WIDTH_MIN = 20; //!< 鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
408 TOOL_ICON_WIDTH_NORMAL = 21; //!< 鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
409
410 TOOL_ICON_FAV_FOLDER = 30; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申
411 TOOL_ICON_FAV_BOARD = 31; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
412 TOOL_ICON_FAV_THREAD = 32; //!< 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申
413
414 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申URL
415 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
416 //! Monazilla鐃?鐃?鐃?鐃緒申URL
417 URL_MONAZILLA: string = 'http://www.monazilla.org/';
418 //! 2鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL
419 URL_2ch: string = 'http://www.2ch.net/';
420 //! 鐃?鐃?鐃?鐃?Wiki鐃緒申URL
421 URL_Wiki: string = 'http://gikowiki.dyndns.info/index.php?FAQ';
422
423 SELECTCOMBOBOX_NAME: string = ''; // '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申';
424 SELECTCOMBOBOX_COLOR: TColor = clWindow;
425
426 {$R *.dfm}
427 // *************************************************************************
428 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
429 // *************************************************************************
430 procedure TGikoDM.DependActiveCntentActionUpdate(Sender: TObject);
431 begin
432 TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil);
433 end;
434 // *************************************************************************
435 //! TAction鐃緒申GetActiveContent鐃緒申nil鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
436 // *************************************************************************
437 procedure TGikoDM.DependActiveCntentLogActionUpdate(Sender: TObject);
438 begin
439 TAction(Sender).Enabled := (GikoForm.GetActiveContent <> nil)
440 and (GikoForm.GetActiveContent.IsLogFile);
441 end;
442 // *************************************************************************
443 //! TAction鐃緒申ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
444 // *************************************************************************
445 procedure TGikoDM.DependActiveListTBoardActionUpdate(Sender: TObject);
446 begin
447 TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard);
448 end;
449 // *************************************************************************
450 //! NG鐃緒申鐃?鐃?鐃緒申鐃?
451 // *************************************************************************
452 procedure TGikoDM.EditNGActionExecute(Sender: TObject);
453 begin
454 //鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
455 GikoSys.FAbon.EditNGwords;
456 end;
457 // *************************************************************************
458 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
459 // *************************************************************************
460 procedure TGikoDM.ReloadActionExecute(Sender: TObject);
461 begin
462 //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
463 if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
464 MsgBox(GikoForm.Handle, 'NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
465 end else begin
466 //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
467 GikoForm.RepaintAllTabsBrowser();
468 end;
469 end;
470 // *************************************************************************
471 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
472 // *************************************************************************
473 procedure TGikoDM.GoFowardActionExecute(Sender: TObject);
474 var
475 s: string;
476 begin
477 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
478 if GikoSys.FAbon.GoBack =false then begin
479 MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
480 end else begin
481 //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
482 s := GikoSys.FAbon.NGwordname;
483 GikoForm.StatusBar.Panels.Items[2].Text := s;
484 //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
485 GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
486 GikoForm.StatusBarResize(Sender);
487 //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
488 GikoForm.RepaintAllTabsBrowser();
489 end;
490 end;
491 // *************************************************************************
492 //! NG鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
493 // *************************************************************************
494 procedure TGikoDM.GoBackActionExecute(Sender: TObject);
495 var
496 s: string;
497 begin
498 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
499 if GikoSys.FAbon.GoForward =false then begin
500 MsgBox(GikoForm.Handle, '鐃緒申鐃緒申鐃?鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONEXCLAMATION);
501 end else begin
502 //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申NG鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?
503 s := GikoSys.FAbon.NGwordname;
504 GikoForm.StatusBar.Panels.Items[2].Text := s;
505 //鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
506 GikoForm.StatusBar.Panels[2].Width := Max(GikoForm.StatusBar.Canvas.TextWidth(s), 100);
507 GikoForm.StatusBarResize(Sender);
508 //鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
509 GikoForm.RepaintAllTabsBrowser();
510 end;
511 end;
512 // *************************************************************************
513 //! 鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
514 // *************************************************************************
515 procedure TGikoDM.MoveToActionExecute(Sender: TObject);
516 var
517 URL: string;
518 idx: Integer;
519 begin
520 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃緒申鐃緒申
521 URL := Trim(GikoForm.AddressComboBox.Text);
522 //URL鐃緒申鐃緒申鐃緒申
523 GikoForm.MoveToURL(URL);
524 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
525 idx := GikoForm.AddressComboBox.Items.IndexOf(URL);
526 if idx = -1 then begin
527 GikoForm.AddressComboBox.Items.Insert(0, URL);
528 if GikoForm.AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
529 GikoForm.AddressComboBox.Items.Delete(GikoForm.AddressComboBox.Items.Count - 1);
530 end else begin
531 GikoForm.AddressComboBox.Items.Delete(idx);
532 GikoForm.AddressComboBox.Items.Insert(0, URL);
533 end;
534 end;
535 // *************************************************************************
536 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
537 // *************************************************************************
538 procedure TGikoDM.FavoriteAddActionExecute(Sender: TObject);
539 begin
540 GikoForm.ShowFavoriteAddDialog(GikoForm.GetActiveContent);
541 end;
542 // *************************************************************************
543 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
544 // *************************************************************************
545 procedure TGikoDM.FavoriteArrangeActionExecute(Sender: TObject);
546 var
547 Dlg: TFavoriteArrangeDialog;
548 begin
549 Dlg := TFavoriteArrangeDialog.Create(GikoForm);
550 try
551 Dlg.ShowModal;
552 finally
553 Dlg.Release;
554 end;
555 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
556 PostMessage( GikoForm.Handle, USER_SETLINKBAR, 0, 0 );
557 end;
558 // *************************************************************************
559 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
560 // *************************************************************************
561 procedure TGikoDM.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
562 var
563 node : TTreeNode;
564 begin
565 node := GikoForm.FavoriteTreeView.Items.GetFirstNode;
566 try
567 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
568 while node <> nil do begin
569 if node.HasChildren then
570 node.Expanded := False;
571 node := node.GetNext;
572 end;
573 except
574 end;
575 end;
576 // *************************************************************************
577 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申
578 // *************************************************************************
579 procedure TGikoDM.FavoriteTreeViewRenameActionExecute(Sender: TObject);
580 var
581 node : TTreeNode;
582 begin
583
584 if GikoForm.ClickNode = nil then
585 Exit;
586 if GikoForm.ClickNode.IsFirstNode then
587 Exit;
588 if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then
589 Exit;
590 GikoForm.FavoriteTreeView.ReadOnly := False;
591 if (GikoForm.TreeType = gttFavorite) and (GikoForm.CabinetPanel.Visible) then begin
592 node := GikoForm.ClickNode.Parent;
593 while node <> nil do begin
594 node.Expanded := True;
595 node := node.Parent;
596 end;
597 GikoForm.ClickNode.EditText;
598 end else begin
599 GikoForm.ClickNode.Text := InputBox( '鐃緒申鐃?鐃緒申鐃緒申鐃?', '鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', GikoForm.ClickNode.Text );
600 end;
601
602 GikoForm.SetLinkBar;
603 end;
604 // *************************************************************************
605 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
606 // *************************************************************************
607 procedure TGikoDM.FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
608 var
609 NewFavFolder: TFavoriteFolder;
610 Node: TTreeNode;
611 begin
612
613 if GikoForm.ClickNode = nil then
614 Exit;
615
616 try
617 if not (TObject(GikoForm.ClickNode.Data) is TFavoriteFolder) then begin
618 GikoForm.FavoriteTreeView.Selected := GikoForm.ClickNode.Parent;
619 GikoForm.ClickNode := GikoForm.ClickNode.Parent;
620 end;
621
622 NewFavFolder := TFavoriteFolder.Create;
623 Node := GikoForm.FavoriteTreeView.Items.AddChildObject(GikoForm.ClickNode, '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?', NewFavFolder);
624 Node.ImageIndex := 14;
625 Node.SelectedIndex := 14;
626 // FClickNode.Selected.Expanded := True;
627 GikoForm.FavoriteTreeView.Selected := Node;
628 GikoForm.ClickNode := Node;
629 FavoriteTreeViewRenameAction.Execute;
630 finally
631 end;
632
633 end;
634 // *************************************************************************
635 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
636 // *************************************************************************
637 procedure TGikoDM.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
638 const
639 DEL_LINK_MSG = '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
640 DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
641 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
642 begin
643
644 if GikoForm.ClickNode = nil then
645 Exit;
646 if GikoForm.ClickNode.IsFirstNode then
647 Exit;
648 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
649 if GikoForm.ClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
650 if MsgBox(GikoForm.Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
651 Exit;
652 end else begin
653 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
654 Exit;
655 end;
656 end;
657
658 GikoForm.ClickNode.Delete;
659
660 GikoForm.SetLinkBar;
661
662 end;
663 // *************************************************************************
664 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
665 // *************************************************************************
666 procedure TGikoDM.FavoriteTreeViewBrowseFolderActionExecute(
667 Sender: TObject);
668 begin
669 GikoForm.FavoriteBrowseFolder( GikoForm.ClickNode );
670 end;
671 // *************************************************************************
672 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
673 // *************************************************************************
674 procedure TGikoDM.FavoriteTreeViewReloadActionExecute(Sender: TObject);
675 var
676 ThreadItem: TThreadItem;
677 FavThread: TFavoriteThreadItem;
678 Board: TBoard;
679 FavBoard: TFavoriteBoardItem;
680 shiftDown: Boolean;
681 begin
682
683 if GikoForm.ClickNode = nil then Exit;
684
685 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
686
687 if TObject( GikoForm.ClickNode.Data ) is TFavoriteThreadItem then begin
688 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
689 ThreadItem := FavThread.Item;
690 if ThreadItem <> nil then
691 GikoForm.DownloadContent(ThreadItem, shiftDown);
692 end else if TObject( GikoForm.ClickNode.Data ) is TFavoriteBoardItem then begin
693 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
694 Board := FavBoard.Item;
695 GikoForm.DownloadList(Board, shiftDown);
696 end;
697
698 end;
699 // *************************************************************************
700 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
701 // *************************************************************************
702 procedure TGikoDM.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
703 var
704 FavThread : TFavoriteThreadItem;
705 FavBoard : TFavoriteBoardItem;
706 s : string;
707 begin
708
709 if GikoForm.ClickNode = nil then Exit;
710
711 if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
712
713 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
714 s := FavThread.URL + #13#10;
715 if s <> '' then
716 Clipboard.AsText := s;
717
718 end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
719
720 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
721 s := FavBoard.URL + #13#10;
722 if s <> '' then
723 Clipboard.AsText := s;
724
725 end;
726 end;
727 // *************************************************************************
728 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
729 // *************************************************************************
730 procedure TGikoDM.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
731 var
732 ThreadItem: TThreadItem;
733 FavThread: TFavoriteThreadItem;
734 Board: TBoard;
735 FavBoard: TFavoriteBoardItem;
736 s: string;
737 begin
738
739 if GikoForm.ClickNode = nil then Exit;
740
741 if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
742
743 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
744 ThreadItem := FavThread.Item;
745
746 try
747 s := ThreadItem.Title + #13#10;
748 if s <> '' then
749 Clipboard.AsText := s;
750 finally
751 end;
752
753 end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
754
755 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
756 Board := FavBoard.Item;
757 if Board <> nil then
758 if not Board.IsThreadDatRead then
759 GikoSys.ReadSubjectFile(Board);
760
761 try
762 s := Board.Title + #13#10;
763 if s <> '' then
764 Clipboard.AsText := s;
765 finally
766 end;
767
768 end;
769
770 end;
771 // *************************************************************************
772 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
773 // *************************************************************************
774 procedure TGikoDM.FavoriteTreeViewNameURLCopyActionExecute(
775 Sender: TObject);
776 var
777 ThreadItem: TThreadItem;
778 FavThread: TFavoriteThreadItem;
779 Board: TBoard;
780 FavBoard: TFavoriteBoardItem;
781 s: string;
782 begin
783
784 if GikoForm.ClickNode = nil then Exit;
785
786 if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
787
788 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
789 ThreadItem := FavThread.Item;
790
791 try
792 s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
793 if s <> '' then
794 Clipboard.AsText := s;
795 finally
796 end;
797
798 end else if (TObject(GikoForm.ClickNode.Data) is TFavoriteBoardItem) then begin
799
800 FavBoard := TFavoriteBoardItem( GikoForm.ClickNode.Data );
801 Board := FavBoard.Item;
802 if Board <> nil then
803 if not Board.IsThreadDatRead then
804 GikoSys.ReadSubjectFile(Board);
805
806 try
807 s := Board.Title + #13#10 + Board.URL + #13#10;
808 if s <> '' then
809 Clipboard.AsText := s;
810 finally
811 end;
812
813 end;
814
815 end;
816 // *************************************************************************
817 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
818 // *************************************************************************
819 procedure TGikoDM.FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
820 const
821 DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
822 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
823 var
824 ThreadItem: TThreadItem;
825 FavThread: TFavoriteThreadItem;
826 begin
827
828 if GikoForm.ClickNode = nil then Exit;
829 if not (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then Exit;
830
831 FavThread := TFavoriteThreadItem( GikoForm.ClickNode.Data );
832 ThreadItem := FavThread.Item;
833
834 try
835 if GikoSys.Setting.DeleteMsg then begin
836 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
837 if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', GikoForm.ClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
838 Exit;
839 end;
840
841 GikoForm.DeleteHistory(ThreadItem);
842 GikoForm.DeleteTab(ThreadItem);
843 ThreadItem.DeleteLogFile;
844
845 GikoForm.ListView.Refresh;
846 finally
847 end;
848
849 end;
850 // *************************************************************************
851 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
852 // *************************************************************************
853 procedure TGikoDM.FavoriteTreeViewBrowseThreadActionExecute(
854 Sender: TObject);
855 var
856 threadItem : TThreadItem;
857 begin
858
859 if GikoForm.ClickNode = nil then Exit;
860
861 if (TObject(GikoForm.ClickNode.Data) is TFavoriteThreadItem) then begin
862
863 threadItem := TFavoriteThreadItem( GikoForm.ClickNode.Data ).Item;
864 if threadItem = nil then
865 Exit;
866 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
867
868 end;
869 end;
870 // *************************************************************************
871 //! 鐃緒申鐃?100鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
872 // *************************************************************************
873 procedure TGikoDM.OnlyAHundredResActionExecute(Sender: TObject);
874 var
875 FilterList : TStringList;
876 begin
877 if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
878 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
879
880 GikoForm.ResRangeMenuSelect := 100;
881 OnlyAHundredResAction.Checked := True;
882
883 if GikoSys.ResRange <> 100 then begin
884 GikoSys.ResRange := 100;
885
886 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
887 FilterList := TStringList.Create;
888 try
889 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
890 GikoSys.FSelectResFilter.Reverse := False;
891 finally
892 FilterList.Free;
893 end;
894
895 GikoForm.SelectResWord := '';
896 GikoForm.RepaintAllTabsBrowser();
897 end;
898 end;
899 // *************************************************************************
900 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
901 // *************************************************************************
902 procedure TGikoDM.OnlyKokoResActionExecute(Sender: TObject);
903 var
904 FilterList : TStringList;
905 begin
906 if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
907 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
908
909 GikoForm.ResRangeMenuSelect := Ord( grrKoko );
910 OnlyKokoResAction.Checked := True;
911
912 if GikoSys.ResRange <> Ord( grrKoko ) then begin
913 GikoSys.ResRange := Ord( grrKoko );
914
915 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
916 FilterList := TStringList.Create;
917 try
918 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
919 GikoSys.FSelectResFilter.Reverse := False;
920 finally
921 FilterList.Free;
922 end;
923
924 GikoForm.SelectResWord := '';
925 GikoForm.RepaintAllTabsBrowser();
926 end;
927 end;
928 // *************************************************************************
929 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
930 // *************************************************************************
931 procedure TGikoDM.OnlyNewResActionExecute(Sender: TObject);
932 var
933 FilterList : TStringList;
934 begin
935 if (GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil)
936 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
937
938 GikoForm.ResRangeMenuSelect := Ord( grrNew );
939 OnlyNewResAction.Checked := True;
940
941 if GikoSys.ResRange <> Ord( grrNew ) then begin
942 GikoSys.ResRange := Ord( grrNew );
943
944 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
945 FilterList := TStringList.Create;
946 try
947 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
948 GikoSys.FSelectResFilter.Reverse := False;
949 finally
950 FilterList.Free;
951 end;
952
953 GikoForm.SelectResWord := '';
954 GikoForm.RepaintAllTabsBrowser();
955 end;
956 end;
957 // *************************************************************************
958 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
959 // *************************************************************************
960 procedure TGikoDM.BrowserMaxActionExecute(Sender: TObject);
961 begin
962 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
963 case GikoSys.Setting.ListWidthState of
964 glsMax: begin
965 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
966 if GikoForm.ActiveContent <> nil then
967 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
968 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
969 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
970 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
971 GikoSys.Setting.ListWidthState := glsNormal;
972 if GikoForm.ActiveContent <> nil then
973 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
974 end;
975 glsMin, glsNormal: begin
976 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
977 if GikoForm.ActiveContent <> nil then
978 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
979 if GikoSys.Setting.ListWidthState = glsNormal then
980 GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
981 if GikoForm.ActiveContent <> nil then
982 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
983 GikoForm.ViewPanel.Width := 1;
984 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
985 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
986 GikoSys.Setting.ListWidthState := glsMax;
987 end;
988 end;
989 end else begin
990 case GikoSys.Setting.ListHeightState of
991 glsMax: begin
992 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
993 if GikoForm.ActiveContent <> nil then
994 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
995 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
996 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
997 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
998 GikoSys.Setting.ListHeightState := glsNormal;
999 if GikoForm.ActiveContent <> nil then
1000 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1001 end;
1002 glsMin, glsNormal: begin
1003 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1004 if GikoForm.ActiveContent <> nil then
1005 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1006 if GikoSys.Setting.ListHeightState = glsNormal then
1007 GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1008 if GikoForm.ActiveContent <> nil then
1009 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1010 GikoForm.ViewPanel.Height := 1;
1011 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1012 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1013 GikoSys.Setting.ListHeightState := glsMax;
1014 end;
1015 end;
1016 end;
1017 end;
1018 // *************************************************************************
1019 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1020 // *************************************************************************
1021 procedure TGikoDM.BrowserMinActionExecute(Sender: TObject);
1022 begin
1023 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1024 case GikoSys.Setting.ListWidthState of
1025 glsMax, glsNormal: begin
1026 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1027 if GikoForm.ActiveContent <> nil then
1028 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1029 if GikoSys.Setting.ListWidthState = glsNormal then
1030 GikoForm.BrowserSizeWidth := GikoForm.ViewPanel.Width;
1031 if GikoForm.ActiveContent <> nil then
1032 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1033 GikoForm.ViewPanel.Width := GikoForm.ThreadMainPanel.Width - 80;
1034 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1035 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1036 GikoSys.Setting.ListWidthState := glsMin;
1037 end;
1038 glsMin: begin
1039 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1040 if GikoForm.ActiveContent <> nil then
1041 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1042 GikoForm.ViewPanel.Width := GikoForm.BrowserSizeWidth;
1043 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1044 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1045 GikoSys.Setting.ListWidthState := glsNormal;
1046 if GikoForm.ActiveContent <> nil then
1047 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1048 end;
1049 end;
1050 end else begin
1051 case GikoSys.Setting.ListHeightState of
1052 glsMax, glsNormal: begin
1053 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1054 if GikoForm.ActiveContent <> nil then
1055 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1056 if GikoSys.Setting.ListHeightState = glsNormal then
1057 GikoForm.BrowserSizeHeight := GikoForm.ViewPanel.Height;
1058 GikoForm.ViewPanel.Height := GikoForm.ThreadMainPanel.Height - GikoForm.BrowserCoolBar.Height - 7;
1059 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1060 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1061 GikoSys.Setting.ListHeightState := glsMin;
1062 if GikoForm.ActiveContent <> nil then
1063 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1064 end;
1065 glsMin: begin
1066 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1067 if GikoForm.ActiveContent <> nil then
1068 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 0, 0); //鐃?鐃緒申鐃緒申鐃?
1069 GikoForm.ViewPanel.Height := GikoForm.BrowserSizeHeight;
1070 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1071 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1072 GikoSys.Setting.ListHeightState := glsNormal;
1073 if GikoForm.ActiveContent <> nil then
1074 SendMessage(GikoForm.ActiveContent.Browser.Handle, WM_SETREDRAW, 1, 0); //鐃?鐃緒申
1075 end;
1076 end;
1077 end;
1078 end;
1079 // *************************************************************************
1080 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1081 // *************************************************************************
1082 procedure TGikoDM.ScrollTopActionExecute(Sender: TObject);
1083 begin
1084 GikoForm.BrowserMovement('top');
1085 end;
1086 // *************************************************************************
1087 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1088 // *************************************************************************
1089 procedure TGikoDM.ScrollLastActionExecute(Sender: TObject);
1090 begin
1091 GikoForm.BrowserMovement('bottom');
1092 end;
1093 // *************************************************************************
1094 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1095 // *************************************************************************
1096 procedure TGikoDM.ScrollNewActionExecute(Sender: TObject);
1097 begin
1098 GikoForm.BrowserMovement('new');
1099 end;
1100 // *************************************************************************
1101 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1102 // *************************************************************************
1103 procedure TGikoDM.ScrollKokoActionExecute(Sender: TObject);
1104 begin
1105 GikoForm.BrowserMovement('koko');
1106 end;
1107 // *************************************************************************
1108 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1109 // *************************************************************************
1110 procedure TGikoDM.ScrollKokoActionUpdate(Sender: TObject);
1111 begin
1112 ScrollKokoAction.Enabled := (GikoForm.GetActiveContent <> nil)
1113 and (GikoForm.GetActiveContent.IsLogFile)
1114 and (GikoForm.GetActiveContent.Kokomade <> -1);
1115 end;
1116 // *************************************************************************
1117 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1118 // *************************************************************************
1119 procedure TGikoDM.EditorActionExecute(Sender: TObject);
1120 var
1121 Editor: TEditorForm;
1122 Item: TThreadItem;
1123 begin
1124 Item := GikoForm.GetActiveContent;
1125 if Item = nil then Exit;
1126 Editor := TEditorForm.Create(GikoForm.GetMainForm);
1127 Editor.SetThreadItem(Item);
1128 GikoSys.LoadEditorKeySetting(Editor.ActionList);
1129 Editor.Show;
1130 Editor.BodyEdit.SetFocus;
1131 end;
1132 // *************************************************************************
1133 //! 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1134 // *************************************************************************
1135 procedure TGikoDM.IEActionExecute(Sender: TObject);
1136 begin
1137 ShowThreadAction.Execute;
1138 end;
1139 // *************************************************************************
1140 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1141 // *************************************************************************
1142 procedure TGikoDM.ShowThreadActionExecute(Sender: TObject);
1143 var
1144 ThreadItem: TThreadItem;
1145 begin
1146 ThreadItem := GikoForm.GetActiveContent;
1147 if ThreadItem = nil then Exit;
1148 GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
1149 end;
1150 // *************************************************************************
1151 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1152 // *************************************************************************
1153 procedure TGikoDM.ShowBoardActionExecute(Sender: TObject);
1154 var
1155 ThreadItem: TThreadItem;
1156 begin
1157 ThreadItem := GikoForm.GetActiveContent;
1158 if ThreadItem = nil then Exit;
1159 GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
1160 end;
1161 // *************************************************************************
1162 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1163 // *************************************************************************
1164 procedure TGikoDM.URLCopyActionExecute(Sender: TObject);
1165 var
1166 s: string;
1167 begin
1168 s := '';
1169 if TObject(GikoForm.GetActiveContent) is TBoard then
1170 s := s + TBoard(GikoForm.GetActiveContent).URL + #13#10
1171 else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1172 s := s + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1173 if s <> '' then
1174 Clipboard.AsText := s;
1175 end;
1176 // *************************************************************************
1177 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1178 // *************************************************************************
1179 procedure TGikoDM.NameCopyActionExecute(Sender: TObject);
1180 var
1181 s: string;
1182 begin
1183 s := '';
1184 if TObject(GikoForm.GetActiveContent) is TBoard then
1185 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10
1186 else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1187 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10;
1188 if s <> '' then
1189 Clipboard.AsText := s;
1190 end;
1191 // *************************************************************************
1192 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1193 // *************************************************************************
1194 procedure TGikoDM.NameURLCopyActionExecute(Sender: TObject);
1195 var
1196 s: string;
1197 begin
1198 s := '';
1199 if TObject(GikoForm.GetActiveContent) is TBoard then
1200 s := s + TBoard(GikoForm.GetActiveContent).Title + #13#10 + TBoard(GikoForm.GetActiveContent).URL + #13#10
1201 else if TObject(GikoForm.GetActiveContent) is TThreadItem then
1202 s := s + TThreadItem(GikoForm.GetActiveContent).Title + #13#10 + TThreadItem(GikoForm.GetActiveContent).URL + #13#10;
1203 if s <> '' then
1204 Clipboard.AsText := s;
1205 end;
1206 // *************************************************************************
1207 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1208 // *************************************************************************
1209 procedure TGikoDM.ItemReloadActionExecute(Sender: TObject);
1210 var
1211 ThreadItem: TThreadItem;
1212 shiftDown: Boolean;
1213 begin
1214 ThreadItem := GikoForm.GetActiveContent;
1215 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
1216 if ThreadItem <> nil then
1217 GikoForm.DownloadContent(ThreadItem, shiftDown);
1218 end;
1219 // *************************************************************************
1220 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1221 // *************************************************************************
1222 procedure TGikoDM.BrowserTabCloseActionExecute(Sender: TObject);
1223 var
1224 idx: Integer;
1225 begin
1226 idx := GikoForm.BrowserTab.TabIndex;
1227 if idx <> -1 then begin
1228 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1229 GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1230 end;
1231 end;
1232 end;
1233 // *************************************************************************
1234 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1235 // *************************************************************************
1236 procedure TGikoDM.BrowserTabCloseActionUpdate(Sender: TObject);
1237 begin
1238 TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0);
1239 end;
1240 // *************************************************************************
1241 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1242 // *************************************************************************
1243 procedure TGikoDM.NotSelectTabCloseActionExecute(Sender: TObject);
1244 var
1245 i: Integer;
1246 idx: Integer;
1247 begin
1248 idx := GikoForm.BrowserTab.TabIndex;
1249 if idx = -1 then Exit;
1250 GikoForm.BrowserTab.Tabs.BeginUpdate;
1251 for i := GikoForm.BrowserTab.Tabs.Count - 1 downto GikoForm.BrowserTab.TabIndex + 1 do begin
1252 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1253 GikoForm.BrowserTab.Tabs.Delete(i);
1254 end;
1255 if idx > 0 then begin
1256 for i := GikoForm.BrowserTab.TabIndex - 1 downto 0 do begin
1257 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1258 GikoForm.BrowserTab.Tabs.Delete(i);
1259 end;
1260 end;
1261 GikoForm.BrowserTab.Tabs.EndUpdate;
1262 end;
1263 // *************************************************************************
1264 //! 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1265 // *************************************************************************
1266 procedure TGikoDM.NotSelectTabCloseActionUpdate(Sender: TObject);
1267 begin
1268 TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1269 end;
1270 // *************************************************************************
1271 //! 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1272 // *************************************************************************
1273 procedure TGikoDM.AllTabCloseActionExecute(Sender: TObject);
1274 var
1275 i: Integer;
1276 begin
1277 if GikoSys.Setting.ShowDialogForAllTabClose then
1278 if(MessageDlg('鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
1279 Exit;
1280
1281 GikoForm.ActiveContent := nil;
1282 GikoForm.BrowserNullTab.Thread := nil;
1283 GikoForm.BrowserTab.OnChange := nil;
1284 GikoForm.BrowserTab.Tabs.BeginUpdate;
1285 for i := GikoForm.BrowserTab.Tabs.Count - 1 downto 0 do begin
1286 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1287 end;
1288 GikoForm.BrowserTab.Tabs.Clear;
1289 GikoForm.BrowserTab.Tabs.EndUpdate;
1290 GikoForm.BrowserTab.OnChange := GikoForm.BrowserTabChange;
1291 GikoForm.SetContent(GikoForm.BrowserNullTab);
1292 GikoForm.Caption := CAPTION_NAME ;
1293 end;
1294 // *************************************************************************
1295 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1296 // *************************************************************************
1297 procedure TGikoDM.ActiveLogDeleteActionExecute(Sender: TObject);
1298 const
1299 DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1300 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
1301 var
1302 idx: Integer;
1303 ThreadItem: TThreadItem;
1304 begin
1305 idx := GikoForm.BrowserTab.TabIndex;
1306 if idx <> -1 then begin
1307 if GikoForm.BrowserTab.Tabs.Objects[idx] <> nil then begin
1308 ThreadItem := TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]).Thread;
1309 if GikoSys.Setting.DeleteMsg then
1310 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
1311 if MsgBox(GikoForm.Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
1312 Exit;
1313 GikoForm.DeleteTab(TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[idx]));
1314 ThreadItem.DeleteLogFile;
1315 if ThreadItem.ParentBoard = GikoForm.ActiveList then
1316 GikoForm.ListView.Refresh;
1317 end;
1318 end;
1319 end;
1320 // *************************************************************************
1321 //! 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1322 // *************************************************************************
1323 procedure TGikoDM.LeftmostTabSelectActionExecute(Sender: TObject);
1324 begin
1325 if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1326 GikoForm.BrowserTab.TabIndex := 0;
1327 GikoForm.BrowserTab.OnChange(nil);
1328 end;
1329 end;
1330 // *************************************************************************
1331 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1332 // *************************************************************************
1333 procedure TGikoDM.LeftmostTabSelectActionUpdate(Sender: TObject);
1334 begin
1335 TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1336 and (GikoForm.BrowserTab.TabIndex <> 0);
1337 end;
1338 // *************************************************************************
1339 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1340 // *************************************************************************
1341 procedure TGikoDM.LeftTabSelectActionExecute(Sender: TObject);
1342 begin
1343 if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1344 if GikoForm.BrowserTab.TabIndex = -1 then begin
1345 GikoForm.BrowserTab.TabIndex := 0;
1346 GikoForm.BrowserTab.OnChange(nil);
1347 end else if GikoForm.BrowserTab.TabIndex > 0 then begin
1348 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex - 1;
1349 GikoForm.BrowserTab.OnChange(nil);
1350 end;
1351 end;
1352 end;
1353 // *************************************************************************
1354 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1355 // *************************************************************************
1356 procedure TGikoDM.RightTabSelectActionExecute(Sender: TObject);
1357 begin
1358 if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1359 if GikoForm.BrowserTab.TabIndex = -1 then begin
1360 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1361 GikoForm.BrowserTab.OnChange(nil);
1362 end else if GikoForm.BrowserTab.TabIndex < (GikoForm.BrowserTab.Tabs.Count - 1) then begin
1363 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.TabIndex + 1;
1364 GikoForm.BrowserTab.OnChange(nil);
1365 end;
1366 end;
1367 end;
1368 // *************************************************************************
1369 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1370 // *************************************************************************
1371 procedure TGikoDM.RightTabSelectActionUpdate(Sender: TObject);
1372 begin
1373 TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 0)
1374 and (GikoForm.BrowserTab.TabIndex <> GikoForm.BrowserTab.Tabs.Count - 1);
1375 end;
1376 // *************************************************************************
1377 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1378 // *************************************************************************
1379 procedure TGikoDM.RightmostTabSelectActionExecute(Sender: TObject);
1380 begin
1381 if GikoForm.BrowserTab.Tabs.Count > 0 then begin
1382 GikoForm.BrowserTab.TabIndex := GikoForm.BrowserTab.Tabs.Count - 1;
1383 GikoForm.BrowserTab.OnChange(nil);
1384 end;
1385 end;
1386 // *************************************************************************
1387 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1388 // *************************************************************************
1389 procedure TGikoDM.ThreadFavoriteAddActionExecute(Sender: TObject);
1390 begin
1391 if TObject(GikoForm.ListView.Selected.Data) is TThreadItem then
1392 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ListView.Selected.Data));
1393 end;
1394 // *************************************************************************
1395 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1396 // *************************************************************************
1397 procedure TGikoDM.ThreadFavoriteAddActionUpdate(Sender: TObject);
1398 begin
1399 TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
1400 and (GikoForm.ListView.SelCount > 0);
1401 end;
1402 // *************************************************************************
1403 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1404 // *************************************************************************
1405 procedure TGikoDM.SelectResActionExecute(Sender: TObject);
1406 var
1407 Dlg: TListSelectDialog;
1408 FilterList : TStringList;
1409 idx : Integer;
1410 begin
1411 Dlg := TListSelectDialog.Create(GikoForm);
1412 try
1413 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
1414 Dlg.SelectComboBox.Text := GikoForm.SelectResWord;
1415 Dlg.ShowModal;
1416 if Dlg.ModalResult = mrOK then begin
1417 SelectResAction.Checked := True;
1418 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
1419 // 鐃緒申鐃緒申鐃緒申鐃緒申 OK 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1420 ResRangeAction.Execute;
1421 end else begin
1422 GikoSys.ResRange := Ord( grrSelect );
1423
1424 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1425 GikoForm.SelectResWord := Dlg.SelectComboBox.Text;
1426
1427 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?
1428 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
1429 if idx <> -1 then
1430 GikoSys.Setting.SelectTextList.Delete(idx);
1431 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
1432 while Dlg.SelectComboBox.Items.Count > 100 do begin
1433 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
1434 end;
1435
1436 try
1437 if GikoForm.SelectComboBoxPanel.Visible then
1438 GikoForm.SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1439 except
1440 end;
1441
1442 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1443 FilterList := TStringList.Create;
1444 try
1445 GikoSys.FSelectResFilter.Reverse := True;
1446 FilterList.Delimiter := ' '; //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1447 FilterList.DelimitedText := Dlg.SelectComboBox.Text;
1448
1449 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1450 finally
1451 FilterList.Free;
1452 end;
1453 GikoForm.RepaintAllTabsBrowser();
1454 end;
1455 end else begin
1456 // 鐃?鐃緒申鐃緒申鐃?鐃緒申
1457 if GikoSys.ResRange <> Ord( grrSelect ) then
1458 ResRangeAction.Execute;
1459 end;
1460 finally
1461 Dlg.Release;
1462 end;
1463
1464 end;
1465 // *************************************************************************
1466 //! 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1467 // *************************************************************************
1468 procedure TGikoDM.AllResActionExecute(Sender: TObject);
1469 var
1470 FilterList : TStringList;
1471 begin
1472 if(GikoForm.ActiveContent <> nil) and (GikoForm.ActiveContent.Browser <> nil )
1473 and (GikoForm.ActiveContent.Browser.Busy) then Exit;
1474
1475 GikoForm.ResRangeMenuSelect := Ord( grrAll );
1476 AllResAction.Checked := True;
1477
1478 if GikoSys.ResRange <> Ord( grrAll ) then begin
1479 GikoSys.ResRange := Ord( grrAll );
1480
1481 // 鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1482 FilterList := TStringList.Create;
1483 try
1484 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
1485 GikoSys.FSelectResFilter.Reverse := False;
1486 finally
1487 FilterList.Free;
1488 end;
1489
1490 GikoForm.SelectResWord := '';
1491
1492 GikoForm.RepaintAllTabsBrowser();
1493 end;
1494 end;
1495 // *************************************************************************
1496 //! 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1497 // *************************************************************************
1498 procedure TGikoDM.ResRangeActionExecute(Sender: TObject);
1499 begin
1500 case GikoForm.ResRangeMenuSelect of
1501 Ord( grrAll ): AllResAction.Execute;
1502 Ord( grrKoko ): OnlyKokoResAction.Execute;
1503 Ord( grrNew ): OnlyNewResAction.Execute;
1504 100: OnlyAHundredResAction.Execute;
1505 end;
1506
1507 end;
1508 // *************************************************************************
1509 //! 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1510 // *************************************************************************
1511 procedure TGikoDM.UpBoardActionExecute(Sender: TObject);
1512 begin
1513 GikoForm.SelectTreeNode( GikoForm.GetActiveContent.ParentBoard, True );
1514 end;
1515 // *************************************************************************
1516 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1517 // *************************************************************************
1518 procedure TGikoDM.JumpToNumOfResActionExecute(Sender: TObject);
1519 var
1520 str: string;
1521 res: integer;
1522 begin
1523 str := '1';
1524 if( InputQuery('鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申', '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', str) ) then begin
1525 str := ZenToHan(str);
1526 res := StrToIntDef(str, -1);
1527 if (res > 0) and (res <= GikoForm.GetActiveContent.Count) then begin
1528 GikoForm.BrowserMovement(IntToStr(res), GikoForm.ActiveContent);
1529 SetFocusForBrowserAction.Execute;
1530 end else if res > GikoForm.GetActiveContent.Count then begin
1531 GikoForm.BrowserMovement(IntToStr(GikoForm.GetActiveContent.Count), GikoForm.ActiveContent);
1532 SetFocusForBrowserAction.Execute;
1533 end;
1534 end;
1535 end;
1536 // *************************************************************************
1537 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1538 // *************************************************************************
1539 procedure TGikoDM.RightTabCloseActionExecute(Sender: TObject);
1540 var
1541 i: Integer;
1542 idx: Integer;
1543 begin
1544 idx := GikoForm.BrowserTab.TabIndex;
1545 if idx = -1 then Exit;
1546 GikoForm.BrowserTab.Tabs.BeginUpdate;
1547 for i := GikoForm.BrowserTab.Tabs.Count - 1 downto idx + 1 do begin
1548 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1549 GikoForm.BrowserTab.Tabs.Delete(i);
1550 end;
1551 GikoForm.BrowserTab.Tabs.EndUpdate;
1552 end;
1553 // *************************************************************************
1554 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
1555 // *************************************************************************
1556 procedure TGikoDM.RightTabCloseActionUpdate(Sender: TObject);
1557 begin
1558 TAction(Sender).Enabled := (GikoForm.BrowserTab.Tabs.Count > 1);
1559 end;
1560 // *************************************************************************
1561 //! 鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1562 // *************************************************************************
1563 procedure TGikoDM.LeftTabCloseActionExecute(Sender: TObject);
1564 var
1565 i: Integer;
1566 idx: Integer;
1567 begin
1568 idx := GikoForm.BrowserTab.TabIndex;
1569 if idx = -1 then Exit;
1570 GikoForm.BrowserTab.Tabs.BeginUpdate;
1571 if idx > 0 then begin
1572 for i := idx - 1 downto 0 do begin
1573 TBrowserRecord(GikoForm.BrowserTab.Tabs.Objects[i]).Free;
1574 GikoForm.BrowserTab.Tabs.Delete(i);
1575 end;
1576 end;
1577 GikoForm.BrowserTab.Tabs.EndUpdate;
1578 end;
1579 ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1580 procedure TGikoDM.DataModuleCreate(Sender: TObject);
1581 begin
1582 end;
1583 // *************************************************************************
1584 //! 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1585 // *************************************************************************
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(GikoForm, 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 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1608 // *************************************************************************
1609 procedure TGikoDM.OptionActionExecute(Sender: TObject);
1610 var
1611 Dlg: TOptionDialog;
1612 begin
1613 Dlg := TOptionDialog.Create(GikoForm);
1614 try
1615 Dlg.ShowModal;
1616 finally
1617 Dlg.Release;
1618 end;
1619 end;
1620 // *************************************************************************
1621 //! 鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1622 // *************************************************************************
1623 procedure TGikoDM.RoundActionExecute(Sender: TObject);
1624 var
1625 Dlg: TRoundDialog;
1626 begin
1627 Dlg := TRoundDialog.Create(GikoForm);
1628 try
1629 Dlg.ShowModal;
1630 finally
1631 Dlg.Release;
1632 end;
1633 end;
1634 // *************************************************************************
1635 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1636 // *************************************************************************
1637 procedure TGikoDM.KeySettingActionExecute(Sender: TObject);
1638 var
1639 Dlg: TKeySettingForm;
1640 begin
1641 Dlg := TKeySettingForm.Create(GikoForm);
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 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1665 // *************************************************************************
1666 procedure TGikoDM.KotehanActionExecute(Sender: TObject);
1667 var
1668 Dlg: TKotehanDialog;
1669 begin
1670 Dlg := TKotehanDialog.Create(GikoForm);
1671 try
1672 Dlg.ShowModal;
1673 finally
1674 Dlg.Release;
1675 end;
1676 end;
1677 // *************************************************************************
1678 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
1679 // *************************************************************************
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.SetSelectComboBox;
1724 GikoForm.ResetBandInfo( GikoForm.ListCoolBar, GikoForm.ListToolBar );
1725 SaveToolBarSetting(GikoForm.BrowserToolBar);
1726 end;
1727 finally
1728 Dlg.Release;
1729 GikoForm.ToolBarSettingSender := tssNone;
1730 end;
1731 end;
1732 // *************************************************************************
1733 //! 鐃?鐃緒申鐃?鐃?
1734 // *************************************************************************
1735 procedure TGikoDM.MuteActionExecute(Sender: TObject);
1736 begin
1737 GikoSys.Setting.Mute := not GikoSys.Setting.Mute;
1738 end;
1739 ////////////////////////////////鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1740 // *************************************************************************
1741 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1742 // *************************************************************************
1743 procedure TGikoDM.TreeSelectBoradReloadExecute(Sender: TObject);
1744 var
1745 Board: TBoard;
1746 TmpTreeNode: TTreeNode;
1747 begin
1748 TmpTreeNode := GikoForm.ClickNode;
1749 GikoForm.TreeView.Selected := GikoForm.ClickNode;
1750 Board := nil;
1751
1752 if TObject(TmpTreeNode.Data) is TBoard then
1753 Board := TBoard(TmpTreeNode.Data)
1754 else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
1755 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
1756
1757 if Board <> nil then
1758 GikoForm.DownloadList(Board);
1759 end;
1760 // *************************************************************************
1761 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1762 // *************************************************************************
1763 procedure TGikoDM.TreeSelectThreadReloadExecute(Sender: TObject);
1764 var
1765 ThreadItem: TThreadItem;
1766 TmpTreeNode: TTreeNode;
1767 begin
1768 TmpTreeNode := GikoForm.ClickNode;
1769 GikoForm.TreeView.Selected := GikoForm.ClickNode;
1770 ThreadItem := nil;
1771
1772 if TObject(TmpTreeNode.Data) is TThreadItem then
1773 ThreadItem := TThreadItem(TmpTreeNode.Data)
1774 else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
1775 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
1776
1777 if ThreadItem <> nil then
1778 GikoForm.DownloadContent(ThreadItem);
1779 end;
1780 // *************************************************************************
1781 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1782 // *************************************************************************
1783 procedure TGikoDM.TreeSelectURLCopyExecute(Sender: TObject);
1784 var
1785 TmpTreeNode: TTreeNode;
1786 s: string;
1787 begin
1788 TmpTreeNode := GikoForm.ClickNode;
1789 GikoForm.TreeView.Selected := GikoForm.ClickNode;
1790 if TObject(TmpTreeNode.Data) is TBoard then begin
1791 s := TBoard(TmpTreeNode.Data).URL + #13#10;
1792 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1793 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1794 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1795 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
1796 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1797 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1798 end;
1799 Clipboard.AsText := s;
1800 end;
1801 // *************************************************************************
1802 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1803 // *************************************************************************
1804 procedure TGikoDM.TreeSelectNameURLCopyExecute(Sender: TObject);
1805 var
1806 TmpTreeNode: TTreeNode;
1807 s: string;
1808 begin
1809 TmpTreeNode := GikoForm.ClickNode;
1810 GikoForm.TreeView.Selected := GikoForm.ClickNode;
1811 if TObject(TmpTreeNode.Data) is TBoard then begin
1812 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
1813 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
1814 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
1815 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
1816 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
1817 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
1818 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
1819 end;
1820 Clipboard.AsText := s;
1821 end;
1822 // *************************************************************************
1823 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1824 // *************************************************************************
1825 procedure TGikoDM.TreeSelectFavoriteAddActionExecute(Sender: TObject);
1826 begin
1827 GikoForm.ShowFavoriteAddDialog(TObject(GikoForm.ClickNode.Data));
1828 end;
1829 // *************************************************************************
1830 //! 鐃緒申鐃緒申鐃緒申鐃緒申
1831 // *************************************************************************
1832 procedure TGikoDM.TreeSelectSearchBoardNameExecute(Sender: TObject);
1833 var
1834 s : String;
1835 msg : String;
1836 CurItem : TTreeNode;
1837 next : boolean;
1838 begin
1839 if InputQuery('鐃緒申鐃緒申鐃緒申鐃緒申','鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申',s) then begin
1840 next := true;
1841 while next do begin
1842 if GikoForm.TreeView.Selected = nil then
1843 CurItem := GikoForm.TreeView.Items.GetFirstNode
1844 else begin
1845 CurItem := GikoForm.TreeView.Selected.GetNext;
1846 if CurItem = nil then
1847 CurItem := GikoForm.TreeView.Items.GetFirstNode;
1848 end;
1849 while CurItem <> nil do begin
1850 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
1851 break;
1852 end;
1853 CurItem := CurItem.GetNext;
1854 end;
1855 try
1856 if CurItem = nil then begin
1857 msg := '鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1858 if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1859 CurItem := GikoForm.TreeView.Items.GetFirstNode;
1860 end else begin
1861 Exit;
1862 end;
1863 GikoForm.TreeView.Select(CurItem);
1864 GikoForm.TreeView.SetFocus;
1865 end else begin
1866 GikoForm.TreeView.Select(CurItem);
1867 GikoForm.TreeView.SetFocus;
1868 msg := '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1869 if MsgBox(GikoForm.Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
1870 next := true;
1871 end else begin
1872 next := false;
1873 end;
1874 end;
1875
1876 except
1877 Exit;
1878 end;
1879 end;
1880 end;
1881 end;
1882 // *************************************************************************
1883 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1884 // *************************************************************************
1885 procedure TGikoDM.TreeSelectNameCopyExecute(Sender: TObject);
1886 var
1887 s: string;
1888 begin
1889 GikoForm.TreeView.Selected := GikoForm.ClickNode;
1890 s := GikoForm.ClickNode.Text;
1891 Clipboard.AsText := s;
1892 end;
1893 ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
1894 // *************************************************************************
1895 //! 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1896 // *************************************************************************
1897 procedure TGikoDM.LoginActionExecute(Sender: TObject);
1898 var
1899 TmpCursor: TCursor;
1900 msg : String;
1901 begin
1902 if GikoSys.Dolib.Connected then begin
1903 //鐃緒申鐃?鐃?鐃?鐃?
1904 GikoSys.Dolib.Disconnect;
1905 LoginAction.Checked := False;
1906 GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogout)), nil, gmiOK);
1907 LoginAction.Caption := '鐃緒申鐃?鐃?鐃緒申(&L)';
1908 end else begin
1909 TmpCursor := GikoForm.ScreenCursor;
1910 GikoForm.ScreenCursor := crHourGlass;
1911 try
1912 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1913 if not GikoSys.Setting.ForcedLogin then begin
1914 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1915 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1916 GikoSys.Dolib.Password := GikoSys.Setting.Password;
1917 if GikoSys.Setting.ReadProxy then begin
1918 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1919 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1920 end else begin
1921 GikoSys.Dolib.ProxyAddress := '';
1922 GikoSys.Dolib.ProxyPort := 0;
1923 end;
1924 if GikoSys.Dolib.Connect then begin
1925 LoginAction.Checked := True;
1926 GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1927 LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1928 //LoginToolButton.Style := tbsCheck;
1929 end else begin
1930 // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1931 GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1932 GikoForm.PlaySound('Error');
1933 LoginAction.Checked := False;
1934 //LoginToolButton.Down := False;
1935 ///LoginToolButton.Style := tbsButton;
1936 end;
1937 end else begin
1938 msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1939 + '鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10
1940 + '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?' + #13#10;
1941 if MsgBox(GikoForm.Handle, msg, '鐃?鐃緒申', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
1942 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
1943 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
1944 GikoSys.Dolib.Password := GikoSys.Setting.Password;
1945 if GikoSys.Setting.ReadProxy then begin
1946 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
1947 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
1948 end else begin
1949 GikoSys.Dolib.ProxyAddress := '';
1950 GikoSys.Dolib.ProxyPort := 0;
1951 end;
1952 //SSL鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申
1953 GikoSys.Dolib.ForcedConnect;
1954 if GikoSys.Dolib.Connect then begin
1955 LoginAction.Checked := True;
1956 GikoForm.AddMessageList(GikoSys.Setting.GetMessage(Ord(gmForceLogin)) + GikoSys.Setting.UserID, nil, gmiOK);
1957 LoginAction.Caption := '鐃緒申鐃?鐃?鐃?鐃?(&L)';
1958 //LoginToolButton.Style := tbsCheck;
1959 end else begin
1960 // MsgBox(Handle, '鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申', '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1961 GikoForm.AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
1962 GikoForm.PlaySound('Error');
1963 LoginAction.Checked := False;
1964 //LoginToolButton.Down := False;
1965 //LoginToolButton.Style := tbsButton;
1966 end;
1967 end else begin
1968 LoginAction.Checked := False;
1969 //LoginToolButton.Down := False;
1970 //LoginToolButton.Style := tbsButton;
1971 end;
1972 end;
1973 finally
1974 GikoForm.ScreenCursor := TmpCursor;
1975 end;
1976 end;
1977 end;
1978 // *************************************************************************
1979 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1980 // *************************************************************************
1981 procedure TGikoDM.NewBoardActionExecute(Sender: TObject);
1982 var
1983 Dlg: TNewBoardDialog;
1984 Msg: string;
1985 begin
1986 if GikoForm.EditorFormExists then begin
1987 Msg := '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
1988 MsgBox(GikoForm.Handle, Msg, '鐃?鐃緒申鐃?', MB_OK or MB_ICONSTOP);
1989 Exit;
1990 end;
1991 Dlg := TNewBoardDialog.Create(GikoForm);
1992 try
1993 Dlg.ShowModal;
1994 finally
1995 Dlg.Release;
1996 end;
1997 end;
1998 // *************************************************************************
1999 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2000 // *************************************************************************
2001 procedure TGikoDM.LogDeleteActionExecute(Sender: TObject);
2002 const
2003 DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2004 DEL_SAME_MSG = '鐃緒申鐃緒申鐃緒申 ^0 鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2005 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2006 var
2007 ThreadItem: TThreadItem;
2008 TmpListItem: TListItem;
2009 List: TList;
2010 i: Integer;
2011 begin
2012 List := TList.Create;
2013 try
2014 TmpListItem := GikoForm.ListView.Selected;
2015 while TmpListItem <> nil do begin
2016 if TObject(TmpListItem.Data) is TThreadItem then begin
2017 ThreadItem := TThreadItem(TmpListItem.Data);
2018 if ThreadItem.IsLogFile then
2019 List.Add(ThreadItem);
2020 end;
2021 TmpListItem := GikoForm.ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
2022 end;
2023
2024 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
2025 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
2026 if List.Count = 1 then begin
2027 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
2028 Exit;
2029 end else begin
2030 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
2031 Exit;
2032 end;
2033 end;
2034 end;
2035
2036 for i := 0 to List.Count - 1 do begin
2037 ThreadItem := TThreadItem(List[i]);
2038 GikoForm.DeleteHistory(ThreadItem);
2039 GikoForm.DeleteTab(ThreadItem);
2040 ThreadItem.DeleteLogFile;
2041
2042 GikoForm.TreeView.Refresh; // UnRead 鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?
2043 end;
2044 GikoForm.ListView.Refresh;
2045 finally
2046 List.Free;
2047 end;
2048 end;
2049 // *************************************************************************
2050 //! ActiveList鐃緒申TBoard鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申Action鐃緒申鐃緒申鐃緒申
2051 // *************************************************************************
2052 procedure TGikoDM.LogDeleteActionUpdate(Sender: TObject);
2053 begin
2054 TAction(Sender).Enabled := (GikoForm.GetActiveList is TBoard)
2055 and (GikoForm.ListView.SelCount > 0);
2056 end;
2057 // *************************************************************************
2058 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2059 // *************************************************************************
2060 procedure TGikoDM.SelectTextClearActionExecute(Sender: TObject);
2061 const
2062 DEL_MSG = '鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2063 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2064 begin
2065 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2066 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2067 Exit;
2068 GikoSys.Setting.SelectTextList.Clear;
2069 GikoForm.SelectComboBox.Items.Clear;
2070 GikoForm.SelectComboBox.Text := '';
2071 GikoForm.SetListViewType( gvtAll );
2072 end;
2073 // *************************************************************************
2074 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2075 // *************************************************************************
2076 procedure TGikoDM.NameTextClearActionExecute(Sender: TObject);
2077 const
2078 DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2079 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2080 begin
2081 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2082 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2083 Exit;
2084 GikoSys.Setting.NameList.Clear;
2085 GikoForm.AllEditroFormNameTextClearClear;
2086 end;
2087 // *************************************************************************
2088 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2089 // *************************************************************************
2090 procedure TGikoDM.MailTextClearActionExecute(Sender: TObject);
2091 const
2092 DEL_MSG = '鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
2093 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
2094 begin
2095 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
2096 if MsgBox(GikoForm.Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
2097 Exit;
2098 GikoSys.Setting.MailList.Clear;
2099 GikoForm.AllEditroFormMailTextClearClear;
2100 end;
2101 // *************************************************************************
2102 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2103 // *************************************************************************
2104 procedure TGikoDM.ExitActionExecute(Sender: TObject);
2105 begin
2106 GikoForm.Close;
2107 end;
2108 // *************************************************************************
2109 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
2110 // *************************************************************************
2111 procedure TGikoDM.ExportFavoriteFileBeforeExecute(Sender: TObject);
2112 begin
2113 ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
2114 end;
2115 // *************************************************************************
2116 //! 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
2117 // *************************************************************************
2118 procedure TGikoDM.ExportFavoriteFileAccept(Sender: TObject);
2119 begin
2120 if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
2121 ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
2122 end else begin
2123 ShowMessage('鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申');
2124 end;
2125 end;
2126 // *************************************************************************
2127 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2128 // *************************************************************************
2129 procedure TGikoDM.SelectItemSaveForHTMLExecute(Sender: TObject);
2130 var
2131 List: TList;
2132 i: Integer;
2133 html: TStringList;
2134 title: string;
2135 begin
2136 List := TList.Create;
2137 try
2138 GikoForm.ScreenCursor := crHourGlass;
2139 GikoForm.SelectListItem(List);
2140 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2141 (GikoSys.Setting.ListHeightState = glsMax)) or
2142 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2143 (GikoSys.Setting.ListWidthState = glsMax)) then
2144 ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2145 else if(List.Count = 0) then
2146 ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2147 else begin
2148 FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申HTML鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2149 FileSaveAs1.Dialog.Filter := 'HTML鐃?鐃?鐃?鐃緒申(*.html)|*.html';
2150 for i := 0 to List.Count - 1 do begin
2151 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2152 FileSaveAs1.Dialog.FileName := ReplaseNoValidateChar(TThreadItem(List[i]).Title) + '.html';
2153 if FileSaveAs1.Dialog.Execute then begin
2154 html := TStringList.Create;
2155 title := TThreadItem(List[i]).Title;
2156 try
2157 HTMLCreater.CreateHTML3(html, TThreadItem(List[i]), title);
2158 html.SaveToFile(FileSaveAs1.Dialog.FileName);
2159 THTMLCreate.SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
2160 finally
2161 html.Free;
2162 end;
2163 end;
2164 end;
2165 end;
2166 end;
2167 finally
2168 GikoForm.ScreenCursor := crDefault;
2169 List.Free;
2170 end;
2171 end;
2172 // *************************************************************************
2173 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申DAT鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2174 // *************************************************************************
2175 procedure TGikoDM.SelectItemSaveForDatExecute(Sender: TObject);
2176 var
2177 List: TList;
2178 i: Integer;
2179 begin
2180 List := TList.Create;
2181 try
2182 GikoForm.ScreenCursor := crHourGlass;
2183 GikoForm.SelectListItem(List);
2184 if ((GikoSys.Setting.ListOrientation = gloVertical) and
2185 (GikoSys.Setting.ListHeightState = glsMax)) or
2186 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
2187 (GikoSys.Setting.ListWidthState = glsMax)) then
2188 ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2189 else if(List.Count = 0) then
2190 ShowMessage('鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2191 else begin
2192 FileSaveAs1.Dialog.Title := '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申dat鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2193 FileSaveAs1.Dialog.Filter := 'DAT鐃?鐃?鐃?鐃緒申(*.dat)|*.dat';
2194 for i := 0 to List.Count - 1 do begin
2195 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
2196 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
2197 if FileSaveAs1.Dialog.Execute then begin
2198 CopyFile(PChar(TThreadItem(List[i]).FilePath),
2199 PChar(FileSaveAs1.Dialog.FileName), true);
2200 end;
2201 end;
2202 end;
2203 end;
2204 finally
2205 GikoForm.ScreenCursor := crDefault;
2206 List.Free;
2207 end;
2208
2209 end;
2210 // *************************************************************************
2211 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2212 // *************************************************************************
2213 procedure TGikoDM.TabsSaveActionExecute(Sender: TObject);
2214 begin
2215 if not GikoForm.SaveTabURLs then begin
2216 if TabsSaveAction.Tag = 0 then
2217 ShowMessage('鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申')
2218 else if TabsSaveAction.Tag = 1 then
2219 GikoDM.TabsOpenAction.Tag := -1;
2220 end;
2221 end;
2222 // *************************************************************************
2223 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2224 // *************************************************************************
2225 procedure TGikoDM.TabsOpenActionExecute(Sender: TObject);
2226 begin
2227 if TabsOpenAction.Tag <> -1 then begin
2228 if not GikoForm.LoadTabURLs then begin
2229 if TabsOpenAction.Tag = 0 then
2230 ShowMessage('鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
2231 end;
2232 end;
2233 end;
2234 // *************************************************************************
2235 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2236 // *************************************************************************
2237 procedure TGikoDM.TabAutoSaveActionExecute(Sender: TObject);
2238 begin
2239 GikoForm.SaveTabURLs;
2240 end;
2241 // *************************************************************************
2242 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2243 // *************************************************************************
2244 procedure TGikoDM.TabAutoLoadActionExecute(Sender: TObject);
2245 begin
2246 GikoForm.LoadTabURLs;
2247 end;
2248 // *************************************************************************
2249 //! Be2ch鐃緒申鐃緒申鐃?鐃?鐃緒申/鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
2250 // *************************************************************************
2251 procedure TGikoDM.BeLogInOutActionExecute(Sender: TObject);
2252 begin
2253 GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
2254 end;
2255 // *************************************************************************
2256 //! Be2ch鐃緒申鐃緒申鐃?鐃?鐃緒申/鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
2257 // *************************************************************************
2258 procedure TGikoDM.BeLogInOutActionUpdate(Sender: TObject);
2259 begin
2260 if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
2261 if (GikoSys.Setting.BeLogin) then BeLogInOutAction.Checked := true
2262 else BeLogInOutAction.Checked := false;
2263 BeLogInOutAction.Enabled := true
2264 end else
2265 BeLogInOutAction.Enabled := false;
2266 end;
2267 ////////////////////////////////鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
2268 // *************************************************************************
2269 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2270 // *************************************************************************
2271 procedure TGikoDM.KokomadeActionExecute(Sender: TObject);
2272 var
2273 No: Integer;
2274 ThreadItem: TThreadItem;
2275 begin
2276 No := GikoForm.KokoPopupMenu.Tag;
2277 if No = 0 then Exit;
2278 ThreadItem := GikoForm.GetActiveContent;
2279 if ThreadItem = nil then Exit;
2280 ThreadItem.Kokomade := No;
2281 GikoForm.ActiveContent.Thread.ScrollTop :=
2282 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2283 GikoForm.ActiveContent.Repaint := true;
2284 GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2285 //INFO 2005/11/19 鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申GikoForm鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2286 //Application.ProcessMessages;
2287 end;
2288 // *************************************************************************
2289 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2290 // *************************************************************************
2291 procedure TGikoDM.ZenbuActionExecute(Sender: TObject);
2292 var
2293 ThreadItem: TThreadItem;
2294 begin
2295 ThreadItem := GikoForm.GetActiveContent;
2296 if ThreadItem = nil then Exit;
2297 ThreadItem.Kokomade := -1;
2298 GikoForm.ActiveContent.Thread.ScrollTop :=
2299 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2300 GikoForm.ActiveContent.Repaint := true;
2301 GikoForm.InsertBrowserTab(GikoForm.ActiveContent.Thread, true);
2302 //INFO 2005/11/19 鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申GikoForm鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2303 //Application.ProcessMessages;
2304 end;
2305 // *************************************************************************
2306 //! 鐃?鐃?鐃緒申鐃緒申鐃?
2307 // *************************************************************************
2308 procedure TGikoDM.KokoResActionExecute(Sender: TObject);
2309 var
2310 Editor: TEditorForm;
2311 Item: TThreadItem;
2312 Number: Integer;
2313 begin
2314 Number := GikoForm.KokoPopupMenu.Tag;
2315 if Number = 0 then Exit;
2316 Item := GikoForm.GetActiveContent;
2317 if Item = nil then Exit;
2318
2319 Editor := TEditorForm.Create(GikoForm);
2320 Editor.SetThreadItem(Item);
2321 GikoSys.LoadEditorKeySetting(Editor.ActionList);
2322 Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
2323 Editor.Show;
2324 Editor.BodyEdit.SetFocus;
2325 end;
2326 // *************************************************************************
2327 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
2328 // *************************************************************************
2329 procedure TGikoDM.KoreCopyExecute(Sender: TObject);
2330 begin
2331 GikoForm.KonoresCopy(GikoForm.KokoPopupMenu.Tag, true);
2332 end;
2333 // *************************************************************************
2334 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
2335 // *************************************************************************
2336 procedure TGikoDM.SameIDResAnchorActionExecute(Sender: TObject);
2337 var
2338 ThreadItem : TThreadItem;
2339 No, count, rc : Integer;
2340 body : string;
2341 limited: boolean;
2342 begin
2343 No := GikoForm.KokoPopupMenu.Tag;
2344 if No = 0 then Exit;
2345 ThreadItem := GikoForm.GetActiveContent;
2346 if ThreadItem = nil then Exit;
2347 count := GikoSys.GetSameIDResCount(No, GikoForm.ActiveContent.Thread);
2348 limited := false;
2349 if count > 20 then begin
2350 rc := GikoUtil.MsgBox(GikoForm.Handle,
2351 '20鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?',
2352 'ID鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申',
2353 MB_YESNO or MB_ICONQUESTION);
2354 limited := rc <> ID_YES;
2355 end;
2356 body := GikoSys.GetSameIDResAnchor(No, ThreadItem, limited);
2357 GikoForm.IDAnchorPopup(body);
2358 end;
2359 // *************************************************************************
2360 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
2361 // *************************************************************************
2362 procedure TGikoDM.IndividualAbon1ActionExecute(Sender: TObject);
2363 begin
2364 GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 1);
2365 end;
2366 // *************************************************************************
2367 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
2368 // *************************************************************************
2369 procedure TGikoDM.IndividualAbon0ActionExecute(Sender: TObject);
2370 begin
2371 GikoForm.IndividualAbon(GikoForm.KokoPopupMenu.Tag, 0);
2372 end;
2373 // *************************************************************************
2374 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2375 // *************************************************************************
2376 procedure TGikoDM.AntiIndividualAbonActionExecute(Sender: TObject);
2377 var
2378 IndividualForm :TIndividualAbonForm;
2379 ThreadItem : TThreadItem;
2380 msg : String;
2381 ReadList : TStringList;
2382 wordCount : TWordCount;
2383 begin
2384 IndividualForm := TIndividualAbonForm.Create(GikoForm);
2385 try
2386 ThreadItem := GikoForm.GetActiveContent;
2387 ThreadItem.ScrollTop :=
2388 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2389 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2390 if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2391 ReadList := TStringList.Create;
2392 wordCount := TWordCount.Create;
2393 try
2394 {$IFDEF SPAM_FILTER_ENABLED}
2395 // 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2396 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2397 GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
2398 GikoSys.SpamForget( wordCount, True ); // 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2399 GikoSys.SpamLearn( wordCount, False ); // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2400 {$ENDIF}
2401 if IndividualForm.DeleteNG(GikoForm.KokoPopupMenu.Tag) then begin
2402 GikoForm.ActiveContent.Repaint := true;
2403 GikoForm.InsertBrowserTab( ThreadItem, True );
2404 end;
2405 finally
2406 wordCount.Free;
2407 ReadList.Free;
2408 end;
2409 end else begin
2410 msg := '鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2411 MsgBox(GikoForm.Handle, msg, '鐃緒申鐃?鐃?鐃?鐃?', MB_OK);
2412 end;
2413 end;
2414 finally
2415 IndividualForm.Release;
2416 end;
2417 end;
2418 // *************************************************************************
2419 //! 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?
2420 // *************************************************************************
2421 procedure TGikoDM.AntiIndividualAbonDlgActionExecute(Sender: TObject);
2422 var
2423 IndividualForm :TIndividualAbonForm;
2424 ThreadItem : TThreadItem;
2425 msg : String;
2426 ReadList : TStringList;
2427 wordCount : TWordCount;
2428 {$IFDEF SPAM_FILTER_ENABLED}
2429 i : Integer;
2430 {$ENDIF}
2431 begin
2432 IndividualForm := TIndividualAbonForm.Create(GikoForm);
2433 try
2434 ThreadItem := GikoForm.GetActiveContent;
2435 ThreadItem.ScrollTop :=
2436 OleVariant(IHTMLDocument2(GikoForm.ActiveContent.Browser.Document)).Body.ScrollTop;
2437 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
2438 if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
2439 if (IndividualForm.ShowModal = mrOK) then begin
2440 ReadList := TStringList.Create;
2441 wordCount := TWordCount.Create;
2442 try
2443 {$IFDEF SPAM_FILTER_ENABLED}
2444 // 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2445 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
2446 for i := 0 to IndividualForm.DeleteList.Count - 1 do begin
2447 GikoSys.SpamCountWord( ReadList[ StrToInt(IndividualForm.DeleteList[i]) - 1 ], wordCount );
2448 GikoSys.SpamForget( wordCount, True ); // 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2449 GikoSys.SpamLearn( wordCount, False ); // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2450 end;
2451 {$ENDIF}
2452 if IndividualForm.FRepaint then begin
2453 GikoForm.ActiveContent.Repaint := true;
2454 GikoForm.InsertBrowserTab( ThreadItem, True );
2455 end;
2456 finally
2457 wordCount.Free;
2458 ReadList.Free;
2459 end;
2460 end;
2461 end else begin
2462 msg := '鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2463 MsgBox(GikoForm.Handle, msg, '鐃緒申鐃?鐃?鐃?鐃?', MB_OK);
2464 end;
2465 end;
2466 finally
2467 IndividualForm.Release;
2468 end;
2469 end;
2470 // *************************************************************************
2471 //! 鐃緒申鐃緒申ID鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申
2472 // *************************************************************************
2473 procedure TGikoDM.IndividualAbonID1ActionExecute(Sender: TObject);
2474 begin
2475 GikoForm.IndividualAbonID(1);
2476 end;
2477 // *************************************************************************
2478 //! 鐃緒申鐃緒申ID鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申
2479 // *************************************************************************
2480 procedure TGikoDM.IndividualAbonID0ActionExecute(Sender: TObject);
2481 begin
2482 GikoForm.IndividualAbonID(0);
2483 end;
2484 ////////////////////////////////鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
2485 // *************************************************************************
2486 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2487 // *************************************************************************
2488 procedure TGikoDM.GikoNaviWebPageActionExecute(Sender: TObject);
2489 begin
2490 GikoSys.OpenBrowser(URL_GIKONAVI, gbtAuto);
2491 end;
2492 // *************************************************************************
2493 //! 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2494 // *************************************************************************
2495 procedure TGikoDM.MonazillaWebPageActionExecute(Sender: TObject);
2496 begin
2497 GikoSys.OpenBrowser(URL_MONAZILLA, gbtAuto);
2498 end;
2499 // *************************************************************************
2500 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2501 // *************************************************************************
2502 procedure TGikoDM.BBS2chWebPageActionExecute(Sender: TObject);
2503 begin
2504 GikoSys.OpenBrowser(URL_2ch, gbtAuto);
2505 end;
2506 // *************************************************************************
2507 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申
2508 // *************************************************************************
2509 procedure TGikoDM.GikoFolderOpenActionExecute(Sender: TObject);
2510 begin
2511 GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
2512 end;
2513 // *************************************************************************
2514 //! 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2515 // *************************************************************************
2516 procedure TGikoDM.AboutActionExecute(Sender: TObject);
2517 var
2518 Dlg: TAboutDialog;
2519 begin
2520 Dlg := TAboutDialog.Create(GikoForm);
2521 try
2522 Dlg.ShowModal;
2523 finally
2524 Dlg.Release;
2525 end;
2526 end;
2527 // *************************************************************************
2528 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2529 // *************************************************************************
2530 procedure TGikoDM.GikoHelpActionExecute(Sender: TObject);
2531 var
2532 FileName: string;
2533 begin
2534 FileName := GikoSys.GetAppDir + 'batahlp.chm';
2535 if not FileExists(FileName) then begin
2536 MsgBox(
2537 GikoForm.Handle,
2538 '鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10 +
2539 '鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10 +
2540 '鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申',
2541 '鐃?鐃緒申鐃?',
2542 MB_ICONSTOP);
2543 Exit;
2544 end;
2545 ShellExecute(GikoForm.Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
2546 end;
2547 // *************************************************************************
2548 //! 鐃?鐃?鐃?鐃?Wiki鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2549 // *************************************************************************
2550 procedure TGikoDM.WikiFAQWebPageActionExecute(Sender: TObject);
2551 begin
2552 GikoSys.OpenBrowser(URL_Wiki, gbtAuto);
2553 end;
2554 ////////////////////////////////鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申/////////////////////
2555 // *************************************************************************
2556 //! 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申
2557 // *************************************************************************
2558 procedure TGikoDM.ListNumberVisibleActionExecute(Sender: TObject);
2559 begin
2560 GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
2561 GikoForm.ListView.Refresh;
2562 end;
2563 // *************************************************************************
2564 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2565 // *************************************************************************
2566 procedure TGikoDM.UpFolderActionExecute(Sender: TObject);
2567 begin
2568 if GikoForm.GetActiveList is TBoard then begin
2569 if TBoard(GikoForm.GetActiveList).ParentCategory <> nil then
2570 GikoForm.SelectTreeNode(TBoard(GikoForm.GetActiveList).ParentCategory, True);
2571 end else if GikoForm.GetActiveList is TCategory then begin
2572 GikoForm.SelectTreeNode(TCategory(GikoForm.GetActiveList).ParenTBBS, True);
2573 end;
2574 end;
2575 // *************************************************************************
2576 //! 鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申UpDate鐃?鐃?鐃緒申鐃?
2577 // *************************************************************************
2578 procedure TGikoDM.UpFolderActionUpdate(Sender: TObject);
2579 begin
2580 UpFolderAction.Enabled := not (GikoForm.GetActiveList is TBBS);
2581 end;
2582 // *************************************************************************
2583 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?
2584 // *************************************************************************
2585 procedure TGikoDM.IconStyleExecute(Sender: TObject);
2586 begin
2587 case GikoForm.ListView.ViewStyle of
2588 vsIcon: SmallIconAction.Execute;
2589 vsSmallIcon: ListIconAction.Execute;
2590 vsList: DetailIconAction.Execute;
2591 vsReport: LargeIconAction.Execute;
2592 end;
2593 end;
2594 // *************************************************************************
2595 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2596 // *************************************************************************
2597 procedure TGikoDM.AllItemActionExecute(Sender: TObject);
2598 begin
2599 try
2600 if GikoForm.ViewType <> gvtAll then
2601 GikoForm.SetListViewType(gvtAll);
2602 GikoSys.Setting.ThreadRange := gtrAll;
2603 AllItemAction.Checked := True;
2604 // SelectComboBox 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2605 GikoForm.ModifySelectList;
2606 // SelectComboBox 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
2607 if GikoForm.SelectComboBoxPanel.Visible then begin
2608 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2609 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2610 GikoForm.ListView.SetFocus;
2611 end;
2612 except
2613 end;
2614 end;
2615 // *************************************************************************
2616 //! 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2617 // *************************************************************************
2618 procedure TGikoDM.LogItemActionExecute(Sender: TObject);
2619 begin
2620 try
2621 if GikoForm.ViewType <> gvtLog then
2622 GikoForm.SetListViewType(gvtLog);
2623 GikoSys.Setting.ThreadRange := gtrLog;
2624 LogItemAction.Checked := True;
2625 // SelectComboBox 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2626 GikoForm.ModifySelectList;
2627 // SelectComboBox 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
2628 if GikoForm.SelectComboBoxPanel.Visible then begin
2629 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2630 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2631 GikoForm.ListView.SetFocus;
2632 end;
2633 except
2634 end;
2635 end;
2636 // *************************************************************************
2637 //! 鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2638 // *************************************************************************
2639 procedure TGikoDM.NewItemActionExecute(Sender: TObject);
2640 begin
2641 try
2642
2643 if GikoForm.ViewType <> gvtNew then
2644 GikoForm.SetListViewType(gvtNew);
2645 GikoSys.Setting.ThreadRange := gtrNew;
2646 NewItemAction.Checked := True;
2647 // SelectComboBox 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
2648 GikoForm.ModifySelectList;
2649 // SelectComboBox 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
2650 if GikoForm.SelectComboBoxPanel.Visible then begin
2651 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2652 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2653 GikoForm.ListView.SetFocus;
2654 end;
2655 except
2656 end;
2657 end;
2658 // *************************************************************************
2659 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2660 // *************************************************************************
2661 procedure TGikoDM.ThreadRangeActionExecute(Sender: TObject);
2662 begin
2663 case GikoSys.Setting.ThreadRange of
2664 gtrAll: AllItemAction.Execute;
2665 gtrLog: LogItemAction.Execute;
2666 gtrNew: NewItemAction.Execute;
2667 end;
2668 end;
2669 // *************************************************************************
2670 //! 鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2671 // *************************************************************************
2672 procedure TGikoDM.SelectItemActionExecute(Sender: TObject);
2673 var
2674 idx: Integer;
2675 Dlg: TListSelectDialog;
2676 begin
2677 try
2678 if GikoForm.SelectComboBoxPanel.Visible then begin
2679 if GikoForm.SelectComboBoxPanel.Left + GikoForm.SelectComboBoxPanel.Width < GikoForm.ListToolBar.Width then begin
2680 // SelectComboBox 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
2681 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
2682 if GikoSys.Setting.ListWidthState = glsMax then
2683 BrowserMinAction.Execute;
2684 end else begin
2685 if GikoSys.Setting.ListHeightState = glsMax then
2686 BrowserMinAction.Execute;
2687 end;
2688 GikoForm.SelectComboBox.SetFocus;
2689 exit;
2690 end;
2691 end;
2692 except
2693 end;
2694
2695 if GikoForm.SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
2696 GikoForm.SelectComboBox.Text := '';
2697 GikoForm.SelectComboBox.Color := clWindow;
2698 end;
2699
2700 AllItemAction.Checked := False;
2701 LogItemAction.Checked := False;
2702 NewItemAction.Checked := False;
2703 //SelectItemAction.Checked := True;
2704 GikoForm.ModifySelectList;
2705 Dlg := TListSelectDialog.Create(GikoForm);
2706 try
2707 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
2708 Dlg.SelectComboBox.Text := GikoForm.SelectComboBox.Text;
2709 Dlg.ShowModal;
2710 if Dlg.ModalResult = mrCancel then begin
2711 if Length( GikoForm.SelectComboBox.Text ) = 0 then begin
2712 AllItemAction.Checked := True;
2713 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2714 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2715 end;
2716
2717 if GikoForm.GetActiveList is TBoard then
2718 GikoForm.SetListViewType(gvtUser, TBoard(GikoForm.GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
2719 end else begin
2720 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
2721 if idx <> -1 then
2722 GikoSys.Setting.SelectTextList.Delete(idx);
2723 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
2724 while Dlg.SelectComboBox.Items.Count > 100 do begin
2725 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
2726 end;
2727
2728 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
2729 GikoForm.SelectComboBox.Text := SELECTCOMBOBOX_NAME;
2730 GikoForm.SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
2731 end else begin
2732 GikoForm.SelectComboBox.Text := Dlg.SelectComboBox.Text;
2733 GikoForm.SelectComboBox.Color := clWindow;
2734 end;
2735 GikoForm.SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
2736 end;
2737 finally
2738 Dlg.Release;
2739 end;
2740 end;
2741 // *************************************************************************
2742 //! 鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2743 // *************************************************************************
2744 procedure TGikoDM.ThreadEditorActionExecute(Sender: TObject);
2745 var
2746 Editor: TEditorForm;
2747 begin
2748 if not (GikoForm.GetActiveList is TBoard) then
2749 Exit;
2750 Editor := TEditorForm.Create(GikoForm);
2751 Editor.SetBoard(TBoard(GikoForm.GetActiveList));
2752 Editor.Show;
2753 Editor.BodyEdit.SetFocus;
2754 end;
2755 // *************************************************************************
2756 //! 鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
2757 // *************************************************************************
2758 procedure TGikoDM.BoardIEActionExecute(Sender: TObject);
2759 var
2760 URL: string;
2761 begin
2762 if GikoForm.GetActiveList is TBoard then begin
2763 URL := TBoard(GikoForm.GetActiveList).URL;
2764 GikoSys.OpenBrowser(URL, gbtAuto);
2765 end;
2766 end;
2767 // *************************************************************************
2768 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
2769 // *************************************************************************
2770 procedure TGikoDM.SelectItemURLCopyActionExecute(Sender: TObject);
2771 var
2772 List: TList;
2773 i: Integer;
2774 s: string;
2775 begin
2776 s := '';
2777 List := TList.Create;
2778 try
2779 GikoForm.SelectListItem(List);
2780 for i := 0 to List.Count - 1 do begin
2781 if TObject(List[i]) is TBoard then
2782 s := s + TBoard(List[i]).URL + #13#10
2783 else if TObject(List[i]) is TThreadItem then
2784 s := s + TThreadItem(List[i]).URL + #13#10;
2785 end;
2786 if s <> '' then
2787 Clipboard.AsText := s;
2788 finally
2789 List.Free;
2790 end;
2791 end;
2792 // *************************************************************************
2793 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
2794 // *************************************************************************
2795 procedure TGikoDM.SelectItemURLCopyActionUpdate(Sender: TObject);
2796 begin
2797 if ((GikoForm.GetActiveList is TBoard) or
2798 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2799 TAction(Sender).Enabled := True
2800 else
2801 TAction(Sender).Enabled := False;
2802 end;
2803 // *************************************************************************
2804 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
2805 // *************************************************************************
2806 procedure TGikoDM.SelectItemNameCopyActionExecute(Sender: TObject);
2807 var
2808 List: TList;
2809 i: Integer;
2810 s: string;
2811 begin
2812 s := '';
2813 List := TList.Create;
2814 try
2815 GikoForm.SelectListItem(List);
2816 for i := 0 to List.Count - 1 do begin
2817 if TObject(List[i]) is TBoard then
2818 s := s + TBoard(List[i]).Title + #13#10
2819 else if TObject(List[i]) is TThreadItem then
2820 s := s + TThreadItem(List[i]).Title + #13#10;
2821 end;
2822 if s <> '' then
2823 Clipboard.AsText := s;
2824 finally
2825 List.Free;
2826 end;
2827 end;
2828 // *************************************************************************
2829 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申Update鐃?鐃?鐃緒申鐃?
2830 // *************************************************************************
2831 procedure TGikoDM.SelectItemNameCopyActionUpdate(Sender: TObject);
2832 begin
2833 if ((GikoForm.GetActiveList is TBoard) or
2834 (GikoForm.GetActiveList is TCategory))and (GikoForm.ListView.SelCount > 0) then
2835 TAction(Sender).Enabled := True
2836 else
2837 TAction(Sender).Enabled := False;
2838 end;
2839 // *************************************************************************
2840 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申URL鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
2841 // *************************************************************************
2842 procedure TGikoDM.SelectItemNameURLCopyActionExecute(Sender: TObject);
2843 var
2844 List: TList;
2845 i: Integer;
2846 s: string;
2847 begin
2848 s := '';
2849 List := TList.Create;
2850 try
2851 GikoForm.SelectListItem(List);
2852 for i := 0 to List.Count - 1 do begin
2853 if TObject(List[i]) is TBoard then
2854 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
2855 else if TObject(List[i]) is TThreadItem then
2856 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
2857 end;
2858 if s <> '' then
2859 Clipboard.AsText := s;
2860 finally
2861 List.Free;
2862 end;
2863 end;
2864 // *************************************************************************
2865 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
2866 // *************************************************************************
2867 procedure TGikoDM.SelectListReloadActionExecute(Sender: TObject);
2868 var
2869 i: Integer;
2870 List: TList;
2871 msg: string;
2872 shiftDown: Boolean;
2873 begin
2874 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
2875 if GikoForm.GetActiveList is TCategory then begin
2876 List := TList.Create;
2877 try
2878 GikoForm.SelectListItem(List);
2879 if List.Count > 5 then begin
2880 msg := '5鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10
2881 + '鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申';
2882 MsgBox(GikoForm.Handle, msg, '鐃?鐃緒申', MB_ICONEXCLAMATION);
2883 Exit;
2884