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.16 - (show annotations) (download) (as text)
Sat Dec 10 06:13:31 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
Changes since 1.15: +31 -92 lines
File MIME type: text/x-pascal
リファクタリング中

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