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.12 - (show annotations) (download) (as text)
Wed Nov 23 05:56:19 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
CVS Tags: v1_51_0_620, v1_51_0_619, v1_51_0_621
Changes since 1.11: +14 -15 lines
File MIME type: text/x-pascal
GikoDMの内部から呼び出すフォームの親をGikoFormに戻した。
(Selfのままだったので、これだとGikoDMが親になっていた)

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