Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/Giko.pas

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


Revision 1.629 - (hide annotations) (download) (as text)
Tue Feb 13 15:58:59 2007 UTC (17 years, 2 months ago) by h677
Branch: MAIN
CVS Tags: v1_55_0_692, v1_55_0_693
Changes since 1.628: +2 -2 lines
File MIME type: text/x-pascal
スレッドの最後に関連キーワードのリンクを加えるオプションを追加
スレッド一覧にカテゴリを表示しているときの名前をコピーを有効にした。

1 hi_ 1.1 unit Giko;
2    
3     interface
4    
5     uses
6     Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 h677 1.536 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils,
8 hi_ 1.4 {$IF Defined(DELPRO) }
9 yoffy 1.138 SHDocVw,
10 hi_ 1.4 MSHTML,
11     {$ELSE}
12     SHDocVw_TLB,
13     MSHTML_TLB,
14     {$IFEND}
15 h677 1.183 IdHTTP, ActiveX, ActnList, ImgList,
16 h677 1.536 ToolWin, Buttons, IdComponent, UrlMon, Tabs, IdGlobal, StrUtils,
17     CommCtrl, Dialogs, GikoSystem, Setting, BoardGroup, ThreadControl, ItemDownload,
18     Editor, RoundData, GikoPanel, Favorite, HTMLDocumentEvent,
19     HintWindow, GikoCoolBar, GikoListView, Search, ExternalBoardManager,
20     ExternalBoardPlugInMain, StdActns, Variants, ExtActns,IdTCPConnection,
21 h677 1.614 IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord, MoveHistoryItem,
22 h677 1.623 ShellAPI,Preview, HistoryList;
23 hi_ 1.1
24 h677 1.567 const
25     NGWORDNAME_PANEL = 3;
26     THREADSIZE_PANEL = 2;
27    
28 hi_ 1.1 type
29 h677 1.623
30 yoffy 1.258 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
31 yoffy 1.280 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
32 yoffy 1.424 TResizeType = (rtNone, rtResizing);
33 hi_ 1.1
34 h677 1.551 // TBrowserRecord = class;
35 h677 1.299
36 hi_ 1.1 TGikoForm = class(TForm)
37     StatusBar: TStatusBar;
38     MainPanel: TPanel;
39     ClientPanel: TPanel;
40     TreeSplitter: TSplitter;
41     CabinetPanel: TPanel;
42     TreeView: TTreeView;
43     ThreadMainPanel: TPanel;
44     ListSplitter: TSplitter;
45     ViewPanel: TPanel;
46 yoffy 1.51 ListView: TGikoListView;
47 hi_ 1.1 ThreadPanel: TPanel;
48     MessagePanel: TPanel;
49     MessageBar: TPanel;
50     MessageHideButton: TSpeedButton;
51     MessageListView: TListView;
52     MessageSplitter: TSplitter;
53     Panel3: TPanel;
54 h677 1.541 CabinetCloseSpeedButton: TSpeedButton;
55 hi_ 1.1 ToolBar1: TToolBar;
56     CabinetSelectToolButton: TToolButton;
57     HistoryToolBar: TToolBar;
58 h677 1.541 HistoryShowToolButton: TToolButton;
59     HistoryAllClearToolButton: TToolButton;
60 hi_ 1.1 ItemIcon16: TImageList;
61     ItemIcon32: TImageList;
62 yoffy 1.2 HotToobarImageList: TImageList;
63 hi_ 1.1 ItemImageList: TImageList;
64     MainMenu: TMainMenu;
65     FileMenu: TMenuItem;
66 yoffy 1.51 DeleteMenu: TMenuItem;
67     ExitMenu: TMenuItem;
68     KidokuMenu: TMenuItem;
69 hi_ 1.1 MidokuMenu: TMenuItem;
70 yoffy 1.51 AllSelectMenu: TMenuItem;
71 hi_ 1.1 ViewMenu: TMenuItem;
72     StdToolBarMenu: TMenuItem;
73     CabinetMenu: TMenuItem;
74 yoffy 1.51 H1: TMenuItem;
75 hi_ 1.1 N4: TMenuItem;
76 yoffy 1.51 CabinetVisibleMenu: TMenuItem;
77 hi_ 1.1 MessageMenu: TMenuItem;
78     StatusBarMenu: TMenuItem;
79     MMSep03: TMenuItem;
80 yoffy 1.51 LargeIconMenu: TMenuItem;
81 hi_ 1.1 SmallIconMenu: TMenuItem;
82     ListMenu: TMenuItem;
83     DetailMenu: TMenuItem;
84 yoffy 1.51 ToolMenu: TMenuItem;
85 hi_ 1.1 Find1: TMenuItem;
86     RoundMenu: TMenuItem;
87     MMSep04: TMenuItem;
88     OptionMenu: TMenuItem;
89     HelpMenu: TMenuItem;
90     G1: TMenuItem;
91 yoffy 1.51 N1: TMenuItem;
92 hi_ 1.1 AboutMenu: TMenuItem;
93     BrowserPopupMenu: TPopupMenu;
94 yoffy 1.51 ShowThreadMenu: TMenuItem;
95 yoffy 1.2 ShowBoardMenu: TMenuItem;
96 hi_ 1.1 ListIconPopupMenu: TPopupMenu;
97     LargeIconPMenu: TMenuItem;
98     SmallIconPMenu: TMenuItem;
99     ListPMenu: TMenuItem;
100 yoffy 1.51 DetailPMenu: TMenuItem;
101 hi_ 1.1 ClosePopupMenu: TPopupMenu;
102 yoffy 1.51 CloseMenu: TMenuItem;
103 hi_ 1.1 U1: TMenuItem;
104     N3: TMenuItem;
105     B1: TMenuItem;
106     S1: TMenuItem;
107     N2: TMenuItem;
108     A1: TMenuItem;
109     L1: TMenuItem;
110     N5: TMenuItem;
111     S2: TMenuItem;
112     ListPopupMenu: TPopupMenu;
113 yoffy 1.51 ListRoundPMenu: TMenuItem;
114 hi_ 1.1 ListReservPMenu: TMenuItem;
115     LPMSep01: TMenuItem;
116 yoffy 1.51 ItemRoundPMenu: TMenuItem;
117 hi_ 1.1 LPMSep02: TMenuItem;
118 yoffy 1.2 KidokuPMenu: TMenuItem;
119 hi_ 1.1 MidokuPMenu: TMenuItem;
120     AllSelectPMenu: TMenuItem;
121     UrlCopyPMenu: TMenuItem;
122     LPMSep05: TMenuItem;
123     DeletePMenu: TMenuItem;
124     LPMSep06: TMenuItem;
125     ViewPMenu: TMenuItem;
126     LargeIconLPMenu: TMenuItem;
127     SmallIconLPMenu: TMenuItem;
128     ListLPMenu: TMenuItem;
129     DetailLPMenu: TMenuItem;
130     T1: TMenuItem;
131     B2: TMenuItem;
132     N8: TMenuItem;
133 yoffy 1.51 URLC1: TMenuItem;
134     N9: TMenuItem;
135 hi_ 1.1 N10: TMenuItem;
136     G2: TMenuItem;
137     N11: TMenuItem;
138     T3: TMenuItem;
139     L2: TMenuItem;
140     N12: TMenuItem;
141     K1: TMenuItem;
142     N13: TMenuItem;
143     N14: TMenuItem;
144     R1: TMenuItem;
145     A2: TMenuItem;
146     N15: TMenuItem;
147     KokoPopupMenu: TPopupMenu;
148     KokomadePMenu: TMenuItem;
149 yoffy 1.2 AllPMenu: TMenuItem;
150 hi_ 1.1 MenuItem1: TMenuItem;
151     MenuItem2: TMenuItem;
152     BrowserTabPopupMenu: TPopupMenu;
153 yoffy 1.51 Close1: TMenuItem;
154 hi_ 1.1 A3: TMenuItem;
155 yoffy 1.51 N16: TMenuItem;
156 hi_ 1.1 A4: TMenuItem;
157     TreePopupMenu: TPopupMenu;
158     TreeSelectThreadPupupMenu: TMenuItem;
159 yoffy 1.51 TreeSelectBoardPupupMenu: TMenuItem;
160 hi_ 1.1 TPMSep01: TMenuItem;
161     TreeSelectURLPupupMenu: TMenuItem;
162     T2: TMenuItem;
163 yoffy 1.2 L3: TMenuItem;
164 hi_ 1.1 B3: TMenuItem;
165     BrowserBottomPanel: TGikoPanel;
166     CabinetSelectPopupMenu: TPopupMenu;
167     H2: TMenuItem;
168 yoffy 1.51 ItemReservPMenu: TMenuItem;
169     RoundNamePopupMenu: TPopupMenu;
170 yoffy 1.2 N7: TMenuItem;
171 hi_ 1.1 B4: TMenuItem;
172     L4: TMenuItem;
173     K2: TMenuItem;
174 yoffy 1.51 A5: TMenuItem;
175 hi_ 1.1 A6: TMenuItem;
176 yoffy 1.51 C1: TMenuItem;
177     V1: TMenuItem;
178     N19: TMenuItem;
179 hi_ 1.1 D1: TMenuItem;
180 yoffy 1.51 D2: TMenuItem;
181     MessageImageList: TImageList;
182     ProgressBar: TProgressBar;
183     URL1: TMenuItem;
184 hi_ 1.1 NameUrlCopyPMenu: TMenuItem;
185     URLC2: TMenuItem;
186 yoffy 1.51 URLN1: TMenuItem;
187     N21: TMenuItem;
188     URLC3: TMenuItem;
189 yoffy 1.2 URLN2: TMenuItem;
190 yoffy 1.51 N23: TMenuItem;
191 yoffy 1.2 ListCoolBar: TGikoCoolBar;
192 hi_ 1.1 ListToolBar: TToolBar;
193 yoffy 1.2 BrowserCoolBar: TGikoCoolBar;
194 hi_ 1.1 BrowserToolBar: TToolBar;
195     ToolButton3: TToolButton;
196 yoffy 1.51 ToolButton9: TToolButton;
197 hi_ 1.1 ToolButton11: TToolButton;
198 yoffy 1.51 ToolButton5: TToolButton;
199 hi_ 1.1 ListNameToolBar: TToolBar;
200 yoffy 1.51 ListNameLabel: TLabel;
201 hi_ 1.1 FolderImage: TImage;
202     BrowserNameToolBar: TToolBar;
203     ItemBoardImage: TImage;
204     BrowserBoardNameLabel: TLabel;
205 yoffy 1.51 ItemImage: TImage;
206     BrowserNameLabel: TLabel;
207     D3: TMenuItem;
208     N25: TMenuItem;
209 hi_ 1.1 N26: TMenuItem;
210     D4: TMenuItem;
211     S3: TMenuItem;
212 yoffy 1.51 R2: TMenuItem;
213     TreeSelectNameURLPupupMenu: TMenuItem;
214     N27: TMenuItem;
215 hi_ 1.1 H3: TMenuItem;
216 yoffy 1.51 I1: TMenuItem;
217     BrowserTabToolBar: TToolBar;
218     BrowserTab: TTabControl;
219     About1: TMenuItem;
220     N28: TMenuItem;
221     S4: TMenuItem;
222 yoffy 1.2 N29: TMenuItem;
223     N30: TMenuItem;
224     N31: TMenuItem;
225 hi_ 1.1 L5: TMenuItem;
226 yoffy 1.51 L6: TMenuItem;
227 hi_ 1.1 A7: TMenuItem;
228 yoffy 1.51 R3: TMenuItem;
229 hi_ 1.1 FavoriteMenu: TMenuItem;
230 yoffy 1.51 N32: TMenuItem;
231 hi_ 1.1 BoardFavoriteAddMenu: TMenuItem;
232     ThreadFavoriteAddMenu: TMenuItem;
233 yoffy 1.2 N33: TMenuItem;
234 hi_ 1.1 TreeSelectFavoriteAddPupupMenu: TMenuItem;
235     FavoriteTreeView: TTreeView;
236 yoffy 1.51 StateIconImageList: TImageList;
237     TopPanel: TPanel;
238     TopRightPanel: TPanel;
239     AnimePanel: TPanel;
240 hi_ 1.1 Animate: TAnimate;
241     TopCoolPanel: TPanel;
242 yoffy 1.51 MainCoolBar: TGikoCoolBar;
243     MenuToolBar: TToolBar;
244     StdToolBar: TToolBar;
245     AddressToolBar: TToolBar;
246     AddressComboBox: TComboBox;
247     MoveToToolButton: TToolButton;
248     AddressImageList: TImageList;
249     AddressToolBarMenu: TMenuItem;
250     T4: TMenuItem;
251     Show1: TMenuItem;
252     N34: TMenuItem;
253 hi_ 1.1 T5: TMenuItem;
254     B5: TMenuItem;
255 yoffy 1.51 N35: TMenuItem;
256     A8: TMenuItem;
257     U2: TMenuItem;
258 hi_ 1.1 F1: TMenuItem;
259     PreviewTimer: TTimer;
260 yoffy 1.51 MonazillaWebPageAction1: TMenuItem;
261     N36: TMenuItem;
262     H4: TMenuItem;
263     K3: TMenuItem;
264     L7: TMenuItem;
265     N37: TMenuItem;
266     A9: TMenuItem;
267 yoffy 1.2 ChevronPopupMenu: TPopupMenu;
268     N2N1: TMenuItem;
269 hi_ 1.1 N38: TMenuItem;
270 yoffy 1.2 F2: TMenuItem;
271 yoffy 1.51 LinkToolBar: TToolBar;
272     a10: TMenuItem;
273     N39: TMenuItem;
274     T6: TMenuItem;
275     N40: TMenuItem;
276 yoffy 1.2 LinkBarPopupMenu: TPopupMenu;
277 yoffy 1.51 T7: TMenuItem;
278     ThreadPopupMenu: TPopupMenu;
279     MenuItem4: TMenuItem;
280     MenuItem5: TMenuItem;
281     MenuItem6: TMenuItem;
282 yoffy 1.2 T8: TMenuItem;
283 yoffy 1.51 URLN3: TMenuItem;
284 yoffy 1.2 SelectItemNameCopyAction1: TMenuItem;
285 yoffy 1.51 B6: TMenuItem;
286     T9: TMenuItem;
287 h677 1.629 NameCopyPMenu: TMenuItem;
288 yoffy 1.51 SelectComboBox: TComboBox;
289     MainCoolBarPopupMenu: TPopupMenu;
290     StdToolBarVisiblePMenu: TMenuItem;
291     AddressToolBarVisiblePMenu: TMenuItem;
292     LinkToolBarVisiblePMenu: TMenuItem;
293     NG1: TMenuItem;
294     NG2: TMenuItem;
295     N43: TMenuItem;
296     N44: TMenuItem;
297     L9: TMenuItem;
298     I3: TMenuItem;
299     N45: TMenuItem;
300     B9: TMenuItem;
301     R5: TMenuItem;
302     T12: TMenuItem;
303     Show3: TMenuItem;
304     N46: TMenuItem;
305     T13: TMenuItem;
306     B10: TMenuItem;
307     N47: TMenuItem;
308     A12: TMenuItem;
309     U4: TMenuItem;
310     F4: TMenuItem;
311     N48: TMenuItem;
312     T14: TMenuItem;
313     ToolButton16: TToolButton;
314     N50: TMenuItem;
315     A11: TMenuItem;
316     S5: TMenuItem;
317     Reload: TMenuItem;
318     GoBack: TMenuItem;
319     GoFoward: TMenuItem;
320     IndividualAbon1: TMenuItem;
321     N41: TMenuItem;
322     IndividualAbon2: TMenuItem;
323 h677 1.543 AntiIndivAbonMenuItem: TMenuItem;
324 yoffy 1.51 AntiIndividualAbon: TMenuItem;
325     N49: TMenuItem;
326     N51: TMenuItem;
327     N52: TMenuItem;
328     SearchBoardName: TMenuItem;
329 yoffy 1.205 TreeSelectLogDeleteSeparator: TMenuItem;
330 yoffy 1.100 N54: TMenuItem;
331     A13: TMenuItem;
332     FavoriteTreePopupMenu: TPopupMenu;
333     FavoriteTreeRenamePopupMenu: TMenuItem;
334     FavoriteTreeNewFolderPopupMenu: TMenuItem;
335     N56: TMenuItem;
336     FavoriteTreeDeletePopupMenu: TMenuItem;
337     FavoriteToolBar: TToolBar;
338 h677 1.541 FavoriteAddToolButton: TToolButton;
339     FavoriteArrangeToolButton: TToolButton;
340 yoffy 1.100 FavoriteTreeBrowseFolderPopupMenu: TMenuItem;
341     N57: TMenuItem;
342     FavoriteTreeReloadPopupMenu: TMenuItem;
343     N58: TMenuItem;
344     FavoriteTreeURLCopyPopupMenu: TMenuItem;
345     FavoriteTreeNameCopyPopupMenu: TMenuItem;
346     FavoriteTreeLogDeletePopupMenu: TMenuItem;
347     N59: TMenuItem;
348     FavoriteTreeNameURLCopyPopupMenu: TMenuItem;
349     ToolButton20: TToolButton;
350     N60: TMenuItem;
351 yoffy 1.107 ExportFavoriteFileAction1: TMenuItem;
352 yoffy 1.142 N6: TMenuItem;
353     N17: TMenuItem;
354 h677 1.174 N18: TMenuItem;
355     N20: TMenuItem;
356 h677 1.532 N24: TMenuItem;
357 h677 1.174 N62: TMenuItem;
358 h677 1.514 N61: TMenuItem;
359 h677 1.478 N63: TMenuItem;
360 h677 1.183 N64: TMenuItem;
361 h677 1.187 dummy1: TMenuItem;
362 h677 1.570 TreeSelectLogDeletePopupMenu: TMenuItem;
363 h677 1.485 N65: TMenuItem;
364 yoffy 1.209 BBSSelectPopupMenu: TPopupMenu;
365 yoffy 1.218 PlugInMenu: TMenuItem;
366 h677 1.542 TreeSelectNamePupupMenu: TMenuItem;
367 h677 1.299 BrowserPanel: TPanel;
368 h677 1.514 SelectTimer: TTimer;
369 h677 1.340 SelectThreadSave: TMenuItem;
370 h677 1.342 N55: TMenuItem;
371 h677 1.343 N66: TMenuItem;
372     dat1: TMenuItem;
373 yoffy 1.397 OpenLogFolder: TMenuItem;
374 h677 1.346 Browser: TWebBrowser;
375 genyakun 1.353 TabSave: TMenuItem;
376 h677 1.407 TabOpen: TMenuItem;
377 yoffy 1.375 ResRangePopupMenu: TPopupMenu;
378 h677 1.547 ResRangeHundPMenuItem: TMenuItem;
379     ResRangeKokoPMenuItem: TMenuItem;
380     ResRangeNewPMenuItem: TMenuItem;
381     ResRangeAllPMenuItem: TMenuItem;
382 h677 1.570 BrowsBoradHeadAction1: TMenuItem;
383 yoffy 1.390 ThreadRangePopupMenu: TPopupMenu;
384     A15: TMenuItem;
385     L8: TMenuItem;
386 h677 1.542 N67: TMenuItem;
387 yoffy 1.390 N68: TMenuItem;
388     S6: TMenuItem;
389     N69: TMenuItem;
390 h677 1.547 ResRangeSelectPMenuItem: TMenuItem;
391 yoffy 1.415 ListColumnPopupMenu: TPopupMenu;
392 h677 1.485 N70: TMenuItem;
393     ID1: TMenuItem;
394     ID2: TMenuItem;
395     N53: TMenuItem;
396     ID3: TMenuItem;
397     N71: TMenuItem;
398 h677 1.487 N72: TMenuItem;
399     N73: TMenuItem;
400 h677 1.517 SelectComboBoxPanel: TPanel;
401     SelectComboBoxSplitter: TImage;
402 h677 1.570 ToolButton1: TToolButton;
403 h677 1.517 N74: TMenuItem;
404 genyakun 1.527 WikiFAQ: TMenuItem;
405 h677 1.542 GikoApplicationEvents: TApplicationEvents;
406 h677 1.583 N22: TMenuItem;
407     N42: TMenuItem;
408 h677 1.592 DAT2: TMenuItem;
409     N75: TMenuItem;
410     DAT3: TMenuItem;
411     N76: TMenuItem;
412 h677 1.600 FavoriteTreeItemNameCopyPopupMenu: TMenuItem;
413 h677 1.615 N77: TMenuItem;
414     N78: TMenuItem;
415 h677 1.618 SaveThreadFile: TMenuItem;
416     N79: TMenuItem;
417     HTML1: TMenuItem;
418     DAT4: TMenuItem;
419 h677 1.625 N80: TMenuItem;
420 yoffy 1.251 procedure FormCreate(Sender: TObject);
421 hi_ 1.1 procedure FormDestroy(Sender: TObject);
422     procedure BrowserStatusTextChange(Sender: TObject;
423     const Text: WideString);
424     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
425     procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
426     var AllowChange: Boolean);
427     procedure ListViewKeyDown(Sender: TObject; var Key: Word;
428     Shift: TShiftState);
429     procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
430     procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
431     Button: TToolButton; State: TCustomDrawState;
432     var DefaultDraw: Boolean);
433     procedure BrowserBeforeNavigate2(Sender: TObject;
434     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
435     Headers: OleVariant; var Cancel: WordBool);
436     procedure TreeViewCustomDraw(Sender: TCustomTreeView;
437     const ARect: TRect; var DefaultDraw: Boolean);
438     procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
439     Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
440     procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
441     procedure ListViewCustomDraw(Sender: TCustomListView;
442     const ARect: TRect; var DefaultDraw: Boolean);
443     procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
444     Shift: TShiftState; X, Y: Integer);
445     procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
446     procedure MessageListViewResize(Sender: TObject);
447 yoffy 1.138 procedure CabinetVisible( isVisible : Boolean );
448 hi_ 1.1 procedure FormResize(Sender: TObject);
449     procedure ListPopupMenuPopup(Sender: TObject);
450     procedure TreePopupMenuPopup(Sender: TObject);
451     procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
452     var Cancel: WordBool);
453     procedure ListSplitterMoved(Sender: TObject);
454     procedure BrowserTabChange(Sender: TObject);
455     procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
456     Shift: TShiftState; X, Y: Integer);
457     procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
458     State: TDragState; var Accept: Boolean);
459     procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
460     procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
461     Y: Integer);
462     procedure BrowserDocumentComplete(Sender: TObject;
463     const pDisp: IDispatch; var URL: OleVariant);
464     procedure RoundNamePopupMenuPopup(Sender: TObject);
465     procedure FormShow(Sender: TObject);
466     procedure BrowserTabToolBarResize(Sender: TObject);
467     procedure FavoriteMenuClick(Sender: TObject);
468 yoffy 1.2 procedure MainCoolBarResize(Sender: TObject);
469     procedure AddressToolBarResize(Sender: TObject);
470 hi_ 1.1 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
471     Shift: TShiftState);
472 yoffy 1.2 procedure BrowserEnter(Sender: TObject);
473 hi_ 1.1 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
474     procedure PreviewTimerTimer(Sender: TObject);
475     procedure MessageHideButtonClick(Sender: TObject);
476 h677 1.541 procedure HistoryAllClearToolButtonClick(Sender: TObject);
477 yoffy 1.2 procedure MainCoolBarBandInfo(Sender: TObject;
478     var BandInfo: PReBarBandInfoA);
479     procedure MainCoolBarChevronClick(Sender: TObject;
480 yoffy 1.51 RebarChevron: PNMRebarChevron);
481     procedure ListCoolBarBandInfo(Sender: TObject;
482     var BandInfo: PReBarBandInfoA);
483     procedure ListCoolBarChevronClick(Sender: TObject;
484     RebarChevron: PNMRebarChevron);
485     procedure BrowserCoolBarBandInfo(Sender: TObject;
486     var BandInfo: PReBarBandInfoA);
487 yoffy 1.2 procedure BrowserCoolBarChevronClick(Sender: TObject;
488 yoffy 1.51 RebarChevron: PNMRebarChevron);
489     procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
490     procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
491     WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
492     procedure SelectComboBoxChange(Sender: TObject);
493     procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
494     Shift: TShiftState);
495     procedure SelectComboBoxExit(Sender: TObject);
496     procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
497     Shift: TShiftState; X, Y: Integer);
498     procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
499     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
500     procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
501     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
502     procedure StatusBarResize(Sender: TObject);
503     procedure SelectComboBoxEnter(Sender: TObject);
504 yoffy 1.100 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
505     Y: Integer);
506 yoffy 1.71 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
507 yoffy 1.100 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
508     var S: String);
509     procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
510     Shift: TShiftState);
511     procedure FavoriteTreePopupMenuPopup(Sender: TObject);
512     procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
513     procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
514     Shift: TShiftState; X, Y: Integer);
515     procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
516     State: TDragState; var Accept: Boolean);
517     procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
518     Y: Integer);
519 yoffy 1.142 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
520 h677 1.174 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
521     var Handled: Boolean);
522 h677 1.187 procedure BrowserTabPopupMenuPopup(Sender: TObject);
523 yoffy 1.216 procedure BrowserTabResize(Sender: TObject);
524 yoffy 1.236 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
525     Shift: TShiftState);
526 yoffy 1.246 procedure FavoriteTreeViewMouseDown(Sender: TObject;
527 yoffy 1.248 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
528 yoffy 1.250 procedure MessagePanelResize(Sender: TObject);
529 yoffy 1.276 procedure OnResized;
530 h677 1.539 procedure SelectTimerTimer(Sender: TObject);
531 yoffy 1.425 procedure ListViewColumnRightClick(Sender: TObject;
532 yoffy 1.415 Column: TListColumn; Point: TPoint);
533 h677 1.478 procedure ListViewCustomDrawItem(Sender: TCustomListView;
534 h677 1.463 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
535     procedure FormActivate(Sender: TObject);
536 h677 1.472 procedure BrowserPanelResize(Sender: TObject);
537 h677 1.482 procedure MenuToolBarResize(Sender: TObject);
538     procedure ListToolBarResize(Sender: TObject);
539     procedure BrowserToolBarResize(Sender: TObject);
540 h677 1.539 procedure KokoPopupMenuPopup(Sender: TObject);
541 h677 1.517 procedure ListViewKeyUp(Sender: TObject; var Key: Word;
542     Shift: TShiftState);
543     procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
544     var AllowEdit: Boolean);
545 h677 1.570 procedure CabinetCloseSpeedButtonClick(Sender: TObject);
546 h677 1.541 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
547 h677 1.542 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
548     var Handled: Boolean);
549     procedure GikoApplicationEventsDeactivate(Sender: TObject);
550     procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
551 h677 1.574 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
552 h677 1.548 Shift: TShiftState; X, Y: Integer);
553 h677 1.585 procedure GetResURLMenuClick(Sender: TObject);
554 h677 1.612 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
555     var Handled: Boolean);
556 hi_ 1.1 private
557     { Private 鐃緒申鐃緒申 }
558     FEnabledCloseButton: Boolean;
559     FClickNode: TTreeNode;
560     FHttpState: Boolean;
561     FHint: TResPopup;
562 h677 1.619 FPreviewBrowser: TPreviewBrowser;
563 hi_ 1.1 FPreviewURL: string;
564     FBrowserSizeHeight: Integer;
565     FBrowserSizeWidth: Integer;
566     FTabHintIndex: Integer;
567     FListStyle: TViewStyle; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
568     FItemNoVisible: Boolean; //鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
569     FViewType: TGikoViewType; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?
570 h677 1.517 FActiveList: TObject;
571 h677 1.299 FActiveContent: TBrowserRecord; //
572 yoffy 1.133 FActiveBBS : TBBS;
573 h677 1.623 FHistoryList: THistoryList; //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?
574 hi_ 1.1 FTreeType: TGikoTreeType;
575     FWorkCount: Integer;
576     FNameCookie: string;
577     FMailCookie: string;
578     FDownloadTitle: string; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
579     FDownloadMax: Integer; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
580     FEvent: THTMLDocumentEventSink;//鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?
581 yoffy 1.51 IsDraggingSelectComboBox : Boolean;
582     DraggingSelectComboBoxPosition : TPoint;
583 yoffy 1.54 FSearchDialog: TSearchDialog;
584 yoffy 1.100 FDropSpaceNode: TTreeNode;
585 yoffy 1.424 FDragTime : Cardinal; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?
586     FDragButton : TToolButton; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?鐃緒申Drag鐃緒申鐃緒申鐃緒申Button鐃緒申鐃緒申
587     FDragWFirst : Boolean; ///< WebTab鐃緒申D&D鐃?
588     FListViewBackGroundColor : TColor; ///< ListView鐃緒申BackGroundColor
589     FUseOddResOddColor : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
590     FOddColor : TColor; ///< 鐃緒申鐃緒申鐃?
591     FSelectResWord : string; ///< 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
592     FIsIgnoreResize : TResizeType; ///< 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
593     FIsMinimize : TMinimizeType; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
594     FOldFormWidth : Integer; ///< 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
595     FToolBarSettingSender : TToolBarSettingSenderType; ///< 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?
596     FMouseDownPos : TPoint; ///< 鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
597 h677 1.303 FBrowsers: TList;
598 yoffy 1.424 FResRangeMenuSelect : Longint; ///< ResRangeButton 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 (鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申 ResRange 鐃緒申鐃緒申)
599 h677 1.423 FStartUp : Boolean;
600 yoffy 1.427 FIsHandledWheel : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 WM_MOUSEWHEEL 鐃緒申鐃緒申鐃緒申鐃緒申
601 h677 1.517 DiffComp: Boolean; //Add by Genyakun 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申True鐃緒申鐃緒申鐃緒申
602 h677 1.548 FOrigenCaption: String; //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
603 h677 1.581 FPreviewBrowserRect: TRect; ///< 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
604     FActionListGroupIndexes: array of Integer; ///<GikoDM鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
605 h677 1.613
606 hi_ 1.1 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
607     procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
608 q9_ 1.233 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
609 hi_ 1.1 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
610     procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
611     procedure ListClick;
612 h677 1.295 procedure ListDoubleClick(Shift: TShiftState);
613 hi_ 1.1 function Hook(var Message: TMessage): Boolean;
614     procedure AddRoundNameMenu(MenuItem: TMenuItem);
615     procedure SetMenuFont;
616     procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
617 yoffy 1.62 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
618     procedure FavoriteClick(Sender: TObject); overload;
619 yoffy 1.100 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
620 hi_ 1.1 function OnDocumentContextMenu(Sender: TObject): WordBool;
621     procedure ShowTextPopup;
622     function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
623 yoffy 1.2 procedure MenuBarChevronMenu;
624     procedure LinkBarChevronMenu;
625     procedure ToolBarChevronMenu(ToolBar: TToolBar);
626 yoffy 1.100 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
627     procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
628     procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
629     procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
630 yoffy 1.85 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
631 yoffy 1.72 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
632 yoffy 1.100 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
633     procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
634 yoffy 1.72 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
635 yoffy 1.236 //
636 yoffy 1.143 procedure SetListViewBackGroundColor(value: TColor);
637 yoffy 1.123 procedure BBSMenuItemOnClick( Sender : TObject );
638 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
639 yoffy 1.216 procedure SaveCoolBarSettings;
640 h677 1.471 procedure SaveMainCoolBarSettings;
641     procedure SaveBoardCoolBarSettings;
642     procedure SaveBrowserCoolBarSettings;
643 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
644 yoffy 1.216 procedure LoadCoolBarSettings;
645 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
646 yoffy 1.276 procedure OnMinimize;
647 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
648 yoffy 1.248 procedure OnMinimized;
649 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
650 yoffy 1.236 procedure TreeClick( Node : TTreeNode );
651 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
652 yoffy 1.236 procedure TreeDoubleClick( Node : TTreeNode );
653 yoffy 1.424 /// 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
654 yoffy 1.289 procedure SetBBSMenu;
655 yoffy 1.415 /// ListColumnPopupMenu 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?
656     procedure ListColumnPopupMenuOnClick( Sender : TObject );
657 yoffy 1.480 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
658     procedure SetSelectWord( const text : string );
659 h677 1.535 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
660     function GetScreenCursor(): TCursor;
661     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
662     procedure SetScreenCursor(Cursor : TCursor);
663 h677 1.550 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
664     procedure CreateControlThread();
665     //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
666     procedure CreateBrowsers(count: Integer);
667 h677 1.581 //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
668     procedure GetGroupIndex(ActionList: TActionList);
669     //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
670     procedure SetGroupIndex(ActionList: TActionList);
671 h677 1.585 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申(鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 or 鐃?鐃緒申JUMP鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申DL鐃緒申鐃緒申)
672     procedure OpenThreadItem(Thread: TThreadItem; URL: String);
673 h677 1.596 //! ListView鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
674     procedure RefreshListView(Thread: TThreadItem);
675 h677 1.598 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
676     procedure ClearThreadRengeAction;
677 h677 1.614 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申
678     procedure UnStoredTaskTray;
679 h677 1.617 //! 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
680     procedure ShowEditors(nCmdShow: Integer);
681 hi_ 1.1 protected
682     procedure CreateParams(var Params: TCreateParams); override;
683 yoffy 1.2 procedure WndProc(var Message: TMessage); override;
684 hi_ 1.1 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
685     procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
686     procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
687 yoffy 1.216
688 hi_ 1.1 public
689     { Public 鐃緒申鐃緒申 }
690 h677 1.533 LastRoundTime: TDateTime;
691     BrowserNullTab: TBrowserRecord;
692 hi_ 1.1 FControlThread: TThreadControl;
693 h677 1.614 FIconData : TNotifyIconData;
694 yoffy 1.444 procedure MoveToURL(const inURL: string);
695 h677 1.530 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
696 hi_ 1.1 procedure ReloadBBS;
697     function GetHttpState: Boolean;
698     procedure SetEnabledCloseButton(Enabled: Boolean);
699     function GetTreeNode(Data: TObject): TTreeNode;
700     procedure ListViewAllSelect;
701     property ListStyle: TViewStyle read FListStyle write FListStyle;
702     property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
703     property ViewType: TGikoViewType read FViewType write FViewType;
704     property NameCookie: string read FNameCookie write FNameCookie;
705     property MailCookie: string read FMailCookie write FMailCookie;
706 h677 1.532 property ClickNode: TTreeNode read FClickNode write FClickNode;
707 h677 1.538 property TreeType: TGikoTreeType read FTreeType write FTreeType;
708 h677 1.534 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
709 h677 1.533 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
710 h677 1.534 property SelectResWord : string read FSelectResWord write FSelectResWord;
711     property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
712     property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
713     property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
714     property ToolBarSettingSender : TToolBarSettingSenderType
715     read FToolBarSettingSender write FToolBarSettingSender;
716 h677 1.535 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
717 h677 1.538 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
718     property WorkCount: Integer read FWorkCount write FWorkCount;
719 h677 1.299 procedure SetContent(inThread: TBrowserRecord);
720 hi_ 1.1 function GetActiveContent: TThreadItem;
721     function GetActiveList: TObject;
722 h677 1.533
723 hi_ 1.1 procedure SetListViewType(AViewType: TGikoViewType); overload;
724     procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
725     procedure PlaySound(SoundEventName: string);
726 yoffy 1.123 procedure ShowBBSTree( inBBS : TBBS );
727 yoffy 1.248 procedure ShowBBSTreeOld( inBBS : TBBS );
728 hi_ 1.1 procedure ShowHistoryTree;
729     procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
730     procedure SetBrowserTabState;
731 yoffy 1.2 procedure SetToolBarPopup;
732 yoffy 1.100 procedure ShowFavoriteAddDialog( Item : TObject );
733 h677 1.433 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
734     procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
735 yoffy 1.143 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
736     property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
737     property OddColor : TColor read FOddColor write FOddColor;
738 yoffy 1.209 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
739 yoffy 1.218 procedure OnPlugInMenuItem( Sender : TObject );
740 h677 1.433 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
741     /// ListView 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申 KuroutSetting鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
742     procedure ActiveListColumnSave;
743     procedure SetActiveList(Obj: TObject);
744     property ActiveList: TObject read GetActiveList write SetActiveList;
745 h677 1.482 /// CoolBar 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
746     procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
747 h677 1.485 //鐃緒申鐃緒申ID鐃緒申鐃緒申鐃緒申鐃?鐃緒申
748     procedure IndividualAbonID(Atype : Integer);
749     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
750     procedure IndividualAbon(Atag, Atype : Integer);
751 h677 1.532 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申 true:鐃?鐃緒申鐃緒申鐃?鐃? false:鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
752     procedure RepaintAllTabsBrowser();
753     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
754     procedure SetLinkBar;
755     procedure FavoriteBrowseFolder( node: TTreeNode );
756     //鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
757     procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
758     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
759     procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
760     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
761     procedure DeleteHistory( threadItem: TThreadItem );
762 h677 1.606 //鐃?鐃?鐃緒申鐃緒申鐃緒申 鐃?鐃緒申鐃?鐃?鐃?鐃緒申
763 h677 1.532 procedure DeleteTab(ThreadItem: TThreadItem); overload;
764 h677 1.606 //鐃?鐃?鐃緒申鐃緒申鐃緒申 鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申
765 h677 1.533 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
766 h677 1.606 // 鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
767     procedure DeleteTab(index, selectIndex: Integer); overload;
768 h677 1.533 //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
769 h677 1.552 procedure BrowserMovement(const AName: string);
770 h677 1.533 //Application鐃緒申MainForm鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
771 h677 1.534 function GetMainForm(): TComponent;
772 h677 1.533 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
773 h677 1.534 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?
774     procedure OnGestureStart(Sender: TObject);
775     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申
776     procedure OnGestureMove(Sender: TObject);
777     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
778     procedure OnGestureEnd(Sender: TObject);
779     /// 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
780     procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
781 h677 1.535 //ListView鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
782     procedure SelectListItem(List: TList);
783 h677 1.536 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
784     procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
785 h677 1.537 //
786     procedure ModifySelectList;
787     //
788     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
789     //
790     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
791 h677 1.538 //
792 h677 1.537 procedure SetSelectRoundName(Sender: TObject);
793 h677 1.538 //
794     function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
795     //
796     function WebBrowserClick(Sender: TObject): WordBool;
797 h677 1.550 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
798     procedure SetSelectComboBox();
799 h677 1.585
800 h677 1.614 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
801     procedure TaskTrayIconMessage(var Msg : TMsg); message WM_USER + 2010;
802 h677 1.615 //! 鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申
803     procedure StoredTaskTray;
804 hi_ 1.1 published
805     property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
806     end;
807    
808     TFavoriteMenuItem = class(TMenuItem)
809     private
810     FData : Pointer;
811     public
812     property Data: Pointer read FData write FData;
813     end;
814    
815 yoffy 1.123 TBBSMenuItem = class(TMenuItem)
816     private
817     FData : Pointer;
818     public
819     property Data: Pointer read FData write FData;
820     end;
821    
822 hi_ 1.1 TLinkToolButton = class(TToolButton)
823     private
824     FData : Pointer;
825     public
826     property Data: Pointer read FData write FData;
827     end;
828    
829     var
830     GikoForm: TGikoForm;
831    
832     implementation
833    
834     uses
835 h677 1.536 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
836 h677 1.614 YofUtils, ToolBarUtil, ToolBarSetting,
837 h677 1.536 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
838 h677 1.619 FavoriteArrange, AddressHistory, Gesture,
839 yoffy 1.480 About, Option, Round, Splash, Sort, ListSelect, Imm,
840 h677 1.521 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
841 h677 1.583 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
842 h677 1.619 InputAssistDataModule, Types;
843 hi_ 1.1
844     const
845     BLANK_HTML: string = 'about:blank';
846 h677 1.542 BROWSER_COUNT = 5; //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
847     //D&D鐃緒申鐃?
848     DandD_THRESHOLD = 5; //D&D鐃緒申鐃緒申鐃?鐃?pixcel)
849     //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
850     HTML_FILE_NAME = 'temp_preview.html';
851     //鐃緒申鐃?鐃?鐃?鐃?ID
852 yoffy 1.278 USER_TREECLICK = WM_USER + 2000;
853     USER_RESIZED = WM_USER + 2001;
854     USER_MINIMIZED = WM_USER + 2002;
855     USER_SETLINKBAR = WM_USER + 2003;
856 yoffy 1.434 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
857 h677 1.614 USER_TASKTRAY = WM_USER + 2010;
858 hi_ 1.1 {$R *.DFM}
859    
860     procedure TGikoForm.CreateParams(var Params: TCreateParams);
861     begin
862     inherited;
863     if FormStyle in [fsNormal, fsStayOnTop] then begin
864     if BorderStyle in [bsSingle, bsSizeable] then begin
865     Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
866     Params.WndParent := 0;
867     end;
868     end;
869     end;
870    
871     procedure TGikoForm.FormCreate(Sender: TObject);
872     const
873     TVS_NOTOOLTIPS = $0080;
874     var
875     FileName: string;
876     Style: DWORD;
877     msg: string;
878     i: Integer;
879     wp: TWindowPlacement;
880     begin
881     {$IFDEF DEBUG}
882     AllocConsole;
883     Writeln('============================================================');
884     Writeln(' 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃? 鐃?鐃緒申鐃?鐃?鐃緒申');
885     Writeln('');
886     Writeln(' 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?');
887     Writeln(' 鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申');
888     Writeln('============================================================');
889     {$ENDIF}
890 h677 1.580 //try
891 h677 1.586 Sort.SetSortDate(Now());
892    
893 h677 1.514 FTreeType := gttNone;
894     // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
895 h677 1.471 FStartUp := true;
896 hi_ 1.1 Application.HookMainWindow(Hook);
897 h677 1.514 FIsIgnoreResize := rtResizing;
898 h677 1.581 //ActionList鐃緒申GuoupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?0鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
899     //(鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申Down鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)
900     //鐃緒申鐃緒申鐃緒申鐃緒申Set鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?Action鐃緒申Checked鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
901     GetGroupIndex(GikoDM.GikoFormActionList);
902 yoffy 1.51 FSearchDialog := nil;
903 h677 1.550 CreateBrowsers(BROWSER_COUNT);
904 h677 1.615 FIconData.uID := 0;
905    
906 h677 1.514 //鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?
907     SetMenuFont;
908 yoffy 1.216
909 hi_ 1.1 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
910     Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
911    
912     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
913 h677 1.513 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
914 hi_ 1.1
915     EnabledCloseButton := True;
916 h677 1.176
917 hi_ 1.1 //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
918     ListView.ViewStyle := GikoSys.Setting.ListStyle;
919    
920     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
921     AnimePanel.Top := 0;
922     AnimePanel.Left := 0;
923    
924     //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
925    
926     //鐃?鐃緒申鐃?鐃?鐃?鐃?
927     CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
928    
929     //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
930 h677 1.539 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
931     GikoDM.MsgBarVisibleActionExecute(nil);
932 hi_ 1.1 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
933    
934     //鐃?鐃?鐃?鐃?鐃?鐃?鐃?
935 h677 1.539 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
936     GikoDM.StatusBarVisibleActionExecute(nil);
937 hi_ 1.1
938     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
939     TreeView.Items.BeginUpdate;
940 yoffy 1.100 FavoriteTreeView.Items.BeginUpdate;
941 hi_ 1.1 ListView.Items.BeginUpdate;
942     try
943     TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
944     TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
945     TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
946     TreeView.Color := GikoSys.Setting.CabinetBackColor;
947 h677 1.473 FavoriteTreeView.Font.Assign(TreeView.Font);
948 yoffy 1.67 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
949    
950 hi_ 1.1 ListView.Font.Name := GikoSys.Setting.ListFontName;
951     ListView.Font.Size := GikoSys.Setting.ListFontSize;
952     ListView.Font.Color := GikoSys.Setting.ListFontColor;
953 h677 1.473 ListView.Font.Style := [];
954     if GikoSys.Setting.ListFontBold then
955     ListView.Font.Style := [fsbold];
956     if GikoSys.Setting.ListFontItalic then
957     ListView.Font.Style := ListView.Font.Style + [fsitalic];
958    
959 yoffy 1.418 ListViewBackGroundColor := clWhite; // 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
960     ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
961 yoffy 1.236 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
962     FOddColor := GikoSys.Setting.OddColor;
963 h677 1.109
964 hi_ 1.1 finally
965     TreeView.Items.EndUpdate;
966 yoffy 1.100 FavoriteTreeView.Items.EndUpdate;
967 hi_ 1.1 ListView.Items.EndUpdate;
968     end;
969     //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
970 h677 1.539 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
971 hi_ 1.1
972 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
973     GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
974    
975     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
976     FResRangeMenuSelect := GikoSys.ResRange;
977     case GikoSys.ResRange of
978     Ord( grrAll ):
979     begin
980     GikoDM.AllResAction.Execute;
981     end;
982     Ord( grrSelect ):
983     begin
984     SelectComboBox.Text := SelectComboBox.Items[ 1 ];
985     GikoDM.SelectResAction.Checked := True;
986     end;
987     else
988     case FResRangeMenuSelect of
989     Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
990     Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
991     100: GikoDM.OnlyAHundredResAction.Checked := True;
992     end;
993     end;
994    
995     // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
996     case GikoSys.Setting.ThreadRange of
997     gtrAll:
998     begin
999     GikoDM.AllItemAction.Checked := True;
1000     ViewType := gvtAll;
1001     end;
1002     gtrLog:
1003     begin
1004     GikoDM.LogItemAction.Checked := True;
1005     ViewType := gvtLog;
1006     end;
1007     gtrNew:
1008     begin
1009     GikoDM.NewItemAction.Checked := True;
1010     ViewType := gvtNew;
1011     end;
1012 h677 1.592 gtrLive:
1013     begin
1014     GikoDM.LiveItemAction.Checked := True;
1015     ViewType := gvtLive;
1016     end;
1017     gtrArch:
1018     begin
1019     GikoDM.ArchiveItemAction.Checked := True;
1020     ViewType := gvtArch;
1021     end;
1022 h677 1.581 end;
1023    
1024    
1025 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1026     BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1027     BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1028 h677 1.473 BrowserTab.Font.Style := [];
1029     if GikoSys.Setting.BrowserTabFontBold then
1030     BrowserTab.Font.Style := [fsBold];
1031     if GikoSys.Setting.BrowserTabFontItalic then
1032     BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1033 h677 1.582 BrowserTab.DoubleBuffered := True;
1034 yoffy 1.133 FDragWFirst := false;
1035 h677 1.299 SetContent(BrowserNullTab); //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1036    
1037 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃?鐃?
1038     GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1039    
1040     if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1041     GikoDM.BrowserTabTopAction.Checked := True;
1042     end else begin
1043     GikoDM.BrowserTabBottomAction.Checked := True;
1044     end;
1045    
1046     if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1047     GikoDM.BrowserTabTabStyleAction.Checked := True;
1048     end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1049     GikoDM.BrowserTabButtonStyleAction.Checked := True;
1050     end else begin
1051     GikoDM.BrowserTabFlatStyleAction.Checked := True;
1052     end;
1053    
1054 h677 1.514 //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1055     ProgressBar.Parent := StatusBar;
1056     ProgressBar.Top := 2;
1057     ProgressBar.Left := 0;
1058     ProgressBar.Width := StatusBar.Panels[0].Width;
1059     ProgressBar.Height := StatusBar.Height - 2;
1060     ProgressBar.Position := 0;
1061    
1062     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1063     InitializeBoardPlugIns;
1064    
1065     // 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申(ReadFavorite 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1066     GikoSys.ListBoardFile;
1067 h677 1.580 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申
1068     try
1069 h677 1.514 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1070 h677 1.580 if (SplashWindow <> nil) then begin
1071     SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1072     end;
1073     except
1074     end;
1075 h677 1.514 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1076     for i := Length(BBSs) - 1 downto 0 do begin
1077     if not BBSs[i].IsBoardFileRead then
1078     GikoSys.ReadBoardFile(BBSs[i]);
1079    
1080     if SplashWindow <> nil then begin
1081     SplashWindow.ProgressBar.StepBy(20);
1082     SplashWindow.Update;
1083     end;
1084     end;
1085 h677 1.580
1086 h677 1.514 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1087     RoundList := TRoundList.Create;
1088     RoundList.LoadRoundBoardFile;
1089     RoundList.LoadRoundThreadFile;
1090    
1091     //TreeView鐃緒申鐃緒申鐃緒申鐃?鐃緒申ToolTip鐃緒申鐃緒申鐃?鐃緒申
1092     Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1093     Style := Style or TVS_NOTOOLTIPS;
1094     SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1095    
1096     // 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1097     TreeView.Align := alClient;
1098     FavoriteTreeView.Align := alClient;
1099     FavoriteTreeView.Visible := False;
1100    
1101     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1102     SetBBSMenu;
1103 hi_ 1.1
1104     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1105     wp.length := sizeof(wp);
1106     wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1107     wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1108     wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1109     wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1110     wp.showCmd := SW_HIDE;
1111     SetWindowPlacement(Handle, @wp);
1112 h677 1.514 //Self.Update;
1113 hi_ 1.1
1114     if GikoSys.Setting.WindowMax then
1115 h677 1.514 WindowState := wsMaximized;
1116 hi_ 1.1
1117     //鐃?鐃?鐃?鐃?鐃緒申
1118     try
1119     FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1120     if FileExists(FileName) then
1121     Animate.FileName := FileName;
1122     except
1123     end;
1124    
1125     //鐃?鐃?鐃?鐃?
1126     FNameCookie := '';
1127     FMailCookie := '';
1128    
1129     //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1130     FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1131     FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1132    
1133 yoffy 1.420
1134     // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?(LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1135 h677 1.623 FHistoryList := THistoryList.Create;
1136 yoffy 1.420
1137     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1138 h677 1.623 FHistoryList.LoadFromFile(GikoSys.GetConfigDir + 'History.xml',
1139     TreeView, FTreeType);
1140 yoffy 1.420
1141     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1142     FavoriteDM.SetFavTreeView(FavoriteTreeView);
1143     FavoriteDM.ReadFavorite;
1144    
1145 h677 1.539 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1146     GikoDM.ArrangeAction.Execute;
1147 hi_ 1.1
1148     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1149     case GikoSys.Setting.ListWidthState of
1150     glsMax: begin
1151     ViewPanel.Width := 1;
1152 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1153     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1154 hi_ 1.1 end;
1155     glsMin: begin
1156     ViewPanel.Width := GikoSys.Setting.ListWidth;
1157 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1158     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1159 hi_ 1.1 end;
1160     else begin
1161     ViewPanel.Width := GikoSys.Setting.ListWidth;
1162 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1163     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1164 hi_ 1.1 end;
1165     end;
1166     end else begin
1167     case GikoSys.Setting.ListHeightState of
1168     glsMax: begin
1169     ViewPanel.Height := 1;
1170 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1171     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1172 hi_ 1.1 end;
1173     glsMin: begin
1174     ViewPanel.Height := GikoSys.Setting.ListHeight;
1175 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1176     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1177 hi_ 1.1 end;
1178     else begin
1179     ViewPanel.Height := GikoSys.Setting.ListHeight;
1180 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1181     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1182 hi_ 1.1 end;
1183     end;
1184     end;
1185    
1186     //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?
1187 h677 1.550 CreateControlThread();
1188 hi_ 1.1
1189 yoffy 1.51 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1190     SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1191 yoffy 1.2
1192 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
1193     SetBrowserTabState;
1194    
1195     BrowserBoardNameLabel.Caption := '';
1196     BrowserNameLabel.Caption := '';
1197     FWorkCount := 0;
1198    
1199     FTabHintIndex := -1;
1200    
1201     //鐃?鐃?鐃緒申鐃?鐃?Wrapable
1202     ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1203     BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1204    
1205 yoffy 1.236 MakeDefaultINIFile();
1206 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1207 h677 1.539 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1208     ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1209     ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1210 yoffy 1.2 SetToolBarPopup;
1211 yoffy 1.375
1212 h677 1.517 //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1213 h677 1.550 SetSelectComboBox();
1214 h677 1.514
1215     //鐃?鐃?鐃緒申鐃?鐃?鐃?
1216     AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1217    
1218     //鐃緒申鐃緒申鐃?鐃?鐃?
1219     SetLinkBar;
1220 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1221    
1222     //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
1223     if not FileExists(GikoSys.GetBoardFileName) then begin
1224     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10#13#10
1225     + '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申' + #13#10
1226     + '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1227     MsgBox(SplashWindow.Handle, msg, '鐃?鐃?鐃?鐃?', MB_OK or MB_ICONINFORMATION);
1228 h677 1.539 GikoDM.NewBoardAction.Execute;
1229 yoffy 1.2 end;
1230    
1231     //鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1232 h677 1.560 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1233 yoffy 1.2
1234     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1235     // FLastRoundTime := 0;
1236    
1237     //ResHint
1238     FHint := TResPopup.Create(Self);
1239    
1240 h677 1.547 ListView.OnData := TListViewUtils.ListViewData;
1241 h677 1.529
1242 yoffy 1.100 // 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1243 h677 1.299 CabinetVisible( False );
1244 yoffy 1.141 if GikoSys.Setting.CabinetVisible then begin
1245     i := CabinetSelectPopupMenu.Items.Count - 1;
1246     if GikoSys.Setting.CabinetIndex = i - 1 then
1247 h677 1.539 GikoDM.CabinetHistoryAction.Execute
1248 yoffy 1.141 else if GikoSys.Setting.CabinetIndex = i then
1249 h677 1.539 GikoDM.CabinetFavoriteAction.Execute
1250 yoffy 1.141 else begin
1251     if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1252     ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1253 yoffy 1.265 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 2
1254 yoffy 1.424 FIsIgnoreResize := rtResizing;
1255 h677 1.539 GikoDM.CabinetBBSAction.Execute;
1256 yoffy 1.141 end;
1257     end else begin
1258 yoffy 1.248 ShowBBSTreeOld( BBSs[ 0 ] );
1259     PostMessage( Handle, USER_TREECLICK, 0, 0 );
1260 yoffy 1.141 end;
1261 yoffy 1.67
1262 yoffy 1.2 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
1263     for i := 1 to ParamCount do begin
1264     MoveToURL(ParamStr(i));
1265     end;
1266 h677 1.22
1267 h677 1.567 GikoDM.RepaintStatusBar;
1268 hi_ 1.32 StatusBarResize(Sender);
1269 h677 1.187
1270 yoffy 1.236 dummy1.Caption := ItemReservPMenu.Caption;
1271     dummy1.Hint := ItemReservPMenu.Hint;
1272 yoffy 1.216
1273 yoffy 1.500 {$IFDEF SPAM_FILTER_ENABLED}
1274 yoffy 1.468 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1275     GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1276 yoffy 1.500 {$ENDIF}
1277 yoffy 1.468
1278 yoffy 1.456 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1279     MouseGesture := TMouseGesture.Create;
1280     GikoSys.Setting.Gestures.LoadGesture(
1281 h677 1.539 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1282 yoffy 1.456 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1283     MouseGesture.OnGestureStart := OnGestureStart;
1284     MouseGesture.OnGestureMove := OnGestureMove;
1285     MouseGesture.OnGestureEnd := OnGestureEnd;
1286 yoffy 1.457 if GikoSys.Setting.GestureEnabled then
1287     MouseGesture.SetHook( Handle );
1288 genyakun 1.458
1289 h677 1.483 //2ch鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1290 h677 1.562 GikoSys.SetGikoMessage;
1291 h677 1.514
1292 genyakun 1.497 //鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1293     if GikoSys.Setting.AutoLogin then
1294 h677 1.539 GikoDM.LoginAction.Execute;
1295 genyakun 1.497
1296 h677 1.514 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1297 h677 1.541
1298     //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1299     FavoriteAddToolButton.Caption := '鐃緒申鐃緒申...';
1300 h677 1.547 AntiIndivAbonMenuItem.Caption := '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申';
1301 h677 1.541
1302 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1303     InputAssistDM.Init(GikoSys.GetInputAssistFileName);
1304 h677 1.613
1305 yoffy 1.2 end;
1306    
1307 yoffy 1.216 // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1308     procedure TGikoForm.SaveCoolBarSettings;
1309 yoffy 1.2 begin
1310    
1311 yoffy 1.424 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1312 yoffy 1.216 Exit;
1313 h677 1.471 SaveMainCoolBarSettings;
1314     SaveBoardCoolBarSettings;
1315     SaveBrowserCoolBarSettings;
1316 yoffy 1.2
1317 h677 1.471 end;
1318     procedure TGikoForm.SaveMainCoolBarSettings;
1319     var
1320     i : Integer;
1321     CoolSet : TCoolSet;
1322     begin
1323 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1324     for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1325     CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1326     CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1327     CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1328     GikoSys.Setting.MainCoolSet[i] := CoolSet;
1329     end;
1330 h677 1.471 end;
1331     procedure TGikoForm.SaveBoardCoolBarSettings;
1332     var
1333     i : Integer;
1334     CoolSet : TCoolSet;
1335     begin
1336 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1337     for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1338     CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1339     CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1340     CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1341     GikoSys.Setting.ListCoolSet[i] := CoolSet;
1342     end;
1343 h677 1.471 end;
1344     procedure TGikoForm.SaveBrowserCoolBarSettings;
1345     var
1346     i : Integer;
1347     CoolSet : TCoolSet;
1348     begin
1349 yoffy 1.216 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1350     for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1351     CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1352     CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1353     CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1354     GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1355 yoffy 1.2 end;
1356 yoffy 1.216 end;
1357     // CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1358     procedure TGikoForm.LoadCoolBarSettings;
1359     var
1360     i : Integer;
1361     CoolSet : TCoolSet;
1362     begin
1363 yoffy 1.2
1364 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Main)
1365     MainCoolBar.Bands.BeginUpdate;
1366     try
1367 yoffy 1.216 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1368     for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1369 hi_ 1.1 CoolSet := GikoSys.Setting.MainCoolSet[i];
1370 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1371 yoffy 1.424 FIsIgnoreResize := rtNone;
1372 yoffy 1.263 SaveCoolBarSettings;
1373     Exit;
1374     end;
1375 hi_ 1.1 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1376     MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1377 yoffy 1.264 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1378 hi_ 1.1 end;
1379     finally
1380     MainCoolBar.Bands.EndUpdate;
1381     end;
1382    
1383     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Board)
1384     ListCoolBar.Bands.BeginUpdate;
1385     try
1386 yoffy 1.216 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1387     for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1388 hi_ 1.1 CoolSet := GikoSys.Setting.ListCoolSet[i];
1389 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1390 yoffy 1.424 FIsIgnoreResize := rtNone;
1391 yoffy 1.263 SaveCoolBarSettings;
1392     Exit;
1393     end;
1394 hi_ 1.1 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1395     ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1396     ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1397     end;
1398     finally
1399     ListCoolBar.Bands.EndUpdate;
1400     end;
1401    
1402     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申(Browser)
1403     BrowserCoolBar.Bands.BeginUpdate;
1404     try
1405 yoffy 1.216 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1406 h677 1.514 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1407 hi_ 1.1 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1408 yoffy 1.263 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1409 yoffy 1.424 FIsIgnoreResize := rtNone;
1410 yoffy 1.263 SaveCoolBarSettings;
1411     Exit;
1412     end;
1413 hi_ 1.1 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1414     BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1415     BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1416     end;
1417     finally
1418     BrowserCoolBar.Bands.EndUpdate;
1419     end;
1420    
1421     end;
1422 yoffy 1.216 //
1423     procedure TGikoForm.FormShow(Sender: TObject);
1424     begin
1425 h677 1.471 if FStartUp then begin
1426 h677 1.423 ShowWindow(Application.Handle, SW_HIDE);
1427    
1428     //FormCreate鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1429     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
1430 h677 1.539 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1431     GikoDM.StdToolBarVisibleActionExecute( nil );
1432     GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1433     GikoDM.AddressBarVisibleActionExecute( nil );
1434     GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1435     GikoDM.LinkBarVisibleActionExecute( nil );
1436     GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1437     GikoDM.ListToolBarVisibleActionExecute( nil );
1438     GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1439     GikoDM.ListNameBarVisibleActionExecute( nil );
1440     GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1441     GikoDM.BrowserToolBarVisibleActionExecute( nil );
1442     GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1443     GikoDM.BrowserNameBarVisibleActionExecute( nil );
1444 h677 1.423
1445     // CoolBar 鐃緒申鐃緒申
1446     LoadCoolBarSettings;
1447 yoffy 1.265
1448 h677 1.514 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1449 h677 1.517 // ResetBandInfo( ListCoolBar, ListToolBar );
1450 yoffy 1.424 FIsIgnoreResize := rtNone;
1451 genyakun 1.382
1452 h677 1.423 //FormCrete鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1453     if GikoSys.Setting.TabAutoLoadSave then begin
1454 h677 1.611 GikoDM.TabsOpenAction.Tag := 1;
1455     GikoDM.TabsOpenAction.Execute;
1456     GikoDM.TabsOpenAction.Tag := 0;
1457 h677 1.423 end;
1458 h677 1.581
1459     //ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1460     SetGroupIndex(GikoDM.GikoFormActionList);
1461 h677 1.547
1462 h677 1.471 FStartUp := false;
1463 yoffy 1.397 end;
1464 yoffy 1.239 end;
1465 yoffy 1.216
1466 hi_ 1.1 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1467     begin
1468 yoffy 1.331 // if GikoForm.WindowState <> wsMinimized then
1469     // SaveCoolBarSettings;
1470 h677 1.599 CanClose := True;
1471 yoffy 1.236 if ( GikoSys.Setting.ShowDialogForEnd ) and
1472     (MessageDlg('鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1473     CanClose := false;
1474     Exit;
1475 h677 1.599 end;
1476    
1477     if GikoSys.Setting.TabAutoLoadSave then begin
1478 h677 1.611 GikoDM.TabsSaveAction.Execute;
1479 h677 1.599 end;
1480    
1481     if (SearchDialog <> nil) then begin
1482     if (SearchDialog.Visible) then begin
1483     SearchDialog.Close;
1484     try
1485     SearchDialog.Release;
1486     except
1487     end;
1488     SearchDialog := nil;
1489 yoffy 1.398 end;
1490 yoffy 1.236 end;
1491 h677 1.609
1492     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?EditorForm鐃緒申鐃緒申鐃緒申鐃緒申
1493     GikoDM.CloseAllEditorAction.Execute;
1494    
1495 h677 1.241 Application.UnhookMainWindow(Hook);
1496     Application.Terminate;
1497     end;
1498    
1499     procedure TGikoForm.FormDestroy(Sender: TObject);
1500     var
1501 yoffy 1.376 i : Integer;
1502 h677 1.241 // CoolSet: TCoolSet;
1503 yoffy 1.376 wp : TWindowPlacement;
1504     tmpBool : Boolean;
1505 h677 1.241 begin
1506 yoffy 1.460 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1507 yoffy 1.456 try
1508     MouseGesture.UnHook;
1509     except
1510     end;
1511 yoffy 1.236 try
1512 yoffy 1.410 ActiveListColumnSave;
1513 yoffy 1.236 except
1514     end;
1515     try
1516 h677 1.234 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1517     wp.length := sizeof(wp);
1518     GetWindowPlacement(Handle, @wp);
1519     GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1520     GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1521     GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1522     GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1523     GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1524    
1525     GikoSys.Setting.ListStyle := ListView.ViewStyle;
1526 h677 1.539 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1527 h677 1.234 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1528     GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1529     GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1530 h677 1.539 if GikoDM.ArrangeAction.Checked then
1531 h677 1.234 GikoSys.Setting.ListOrientation := gloVertical
1532     else
1533     GikoSys.Setting.ListOrientation := gloHorizontal;
1534     GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1535 yoffy 1.236 except
1536 yoffy 1.2 end;
1537 yoffy 1.378
1538     try
1539     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
1540     if not GikoSys.Setting.ResRangeHold then
1541 yoffy 1.380 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1542 yoffy 1.378 except
1543     end;
1544 h677 1.483 if WindowState <> wsNormal then
1545     WindowState := wsNormal;
1546     SaveCoolBarSettings;
1547     try
1548     GikoSys.Setting.WriteWindowSettingFile;
1549     GikoSys.Setting.WriteNameMailSettingFile;
1550     except
1551     end;
1552 yoffy 1.378 // 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申 CoolBar 鐃緒申鐃緒申
1553 yoffy 1.216 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1554 h677 1.482
1555 yoffy 1.263 // 鐃緒申FormDestroy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?2004/04/09鐃?
1556 yoffy 1.216 // CoolBar 鐃緒申鐃緒申
1557 h677 1.482 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1558 h677 1.483
1559 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1560     InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1561 yoffy 1.2
1562     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1563 hi_ 1.1 try
1564 yoffy 1.236 //FavoriteDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1565 yoffy 1.2 FavoriteDM.WriteFavorite;
1566 yoffy 1.236 FavoriteDM.Clear;
1567 hi_ 1.1 except
1568     end;
1569 h677 1.483 LockWindowUpdate(Self.Handle);
1570 hi_ 1.1 try
1571     //鐃?鐃?鐃?鐃緒申鐃?鐃?
1572 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1573     GikoSys.Setting.ShowDialogForAllTabClose := false;
1574 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1575 h677 1.483 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1576 h677 1.299 except
1577     end;
1578 h677 1.321 try
1579     for i := FBrowsers.Count - 1 downto 0 do begin
1580     TWebBrowser(FBrowsers[i]).Free;
1581     end;
1582     FBrowsers.Clear;
1583     FBrowsers.Capacity := 0;
1584     finally
1585     FBrowsers.Free;
1586 h677 1.303 end;
1587 h677 1.299 try
1588     if BrowserNullTab <> nil then begin
1589     BrowserNullTab.Browser := nil; {*BrowserNullTab鐃緒申Browser鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
1590     *鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Free鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1591     *}
1592     BrowserNullTab.Free;
1593 hi_ 1.1 end;
1594     except
1595     end;
1596 h677 1.483
1597 h677 1.224 try
1598 yoffy 1.236 TreeView.Items.BeginUpdate;
1599 yoffy 1.380 TreeView.Items.GetFirstNode.Free;
1600 yoffy 1.236 TreeView.Items.Clear;
1601     TreeView.Items.EndUpdate;
1602 h677 1.224 except
1603     end;
1604 h677 1.230
1605 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1606     try
1607 yoffy 1.236 //AddressHistoryDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1608 h677 1.513 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1609 hi_ 1.1 except
1610     end;
1611    
1612 h677 1.234 //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1613 hi_ 1.1 try
1614 h677 1.623 FHistoryList.SaveToFile(GikoSys.GetConfigDir + 'History.xml');
1615 hi_ 1.1 except
1616     end;
1617 yoffy 1.236 try
1618     try
1619 h677 1.623 FHistoryList.Clear;
1620 yoffy 1.236 except
1621     end;
1622     finally
1623     FHistoryList.Free;
1624     end;
1625 h677 1.221
1626 h677 1.182 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申&鐃?鐃緒申
1627     try
1628     RoundList.SaveRoundFile;
1629     except
1630     end;
1631 yoffy 1.236 try
1632 h677 1.234 try
1633 yoffy 1.236 RoundList.Clear;
1634 h677 1.234 except
1635     end;
1636 yoffy 1.236 finally
1637     RoundList.Free;
1638     end;
1639 h677 1.182
1640 yoffy 1.236 try
1641 h677 1.234 try
1642     FControlThread.Terminate;
1643 yoffy 1.236 FControlThread.WaitFor;
1644 h677 1.234 except
1645 h677 1.219 end;
1646 yoffy 1.236 finally
1647     FControlThread.Free;
1648     end;
1649 h677 1.609 // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1650     for i := GikoForm.PlugInMenu.Count - 1 downto 0 do begin
1651     GikoForm.PlugInMenu.items[i].Free;
1652     end;
1653     GikoForm.PlugInMenu.Clear;
1654    
1655 h677 1.230
1656 yoffy 1.155 // TBBS 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 TCategory, TBoard, TThreadItem 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1657     // TBoard, TThreadItem 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1658     // BoardPluteIns 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1659 h677 1.550 for i := Length(BoardGroups) - 1 downto 0 do begin
1660 h677 1.517 //BoardGroups[i].Clear;
1661     BoardGroups[i].Free;
1662 h677 1.550 end;
1663 h677 1.514
1664 yoffy 1.126 try
1665 h677 1.220 for i := Length( BBSs ) - 1 downto 0 do begin
1666 h677 1.153 if BBSs[ i ] <> nil then
1667     BBSs[ i ].Free;
1668     BBSs[ i ] := nil;
1669     end;
1670     except
1671     end;
1672 yoffy 1.155
1673 h677 1.234 try
1674 yoffy 1.236 if FEvent <> nil then
1675     FEvent.Free;
1676 h677 1.181
1677 yoffy 1.2 //Hint鐃?鐃緒申
1678     if FHint <> nil then begin
1679     FHint.ReleaseHandle;
1680     FHint.Free;
1681     FHint := nil;
1682     end;
1683     //Preview鐃?鐃緒申
1684     if TPreviewBrowser <> nil then begin
1685     FPreviewBrowser.Free;
1686     FPreviewBrowser := nil;
1687     end;
1688     except
1689     end;
1690 h677 1.550 LockWindowUpdate(0);
1691 hi_ 1.1 end;
1692    
1693 yoffy 1.289 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
1694     procedure TGikoForm.SetBBSMenu;
1695 yoffy 1.123 var
1696     i : Integer;
1697 yoffy 1.149 item : TBBSMenuItem;
1698 hi_ 1.1 begin
1699    
1700 yoffy 1.148 // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1701     for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1702     try
1703     if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1704 yoffy 1.155 CabinetSelectPopupMenu.Items[ i ].Free;
1705     CabinetMenu.Items[ i ].Free;
1706 yoffy 1.289 BBSSelectPopupMenu.Items[ i ].Free;
1707 yoffy 1.148 end;
1708     except
1709     end;
1710     end;
1711 yoffy 1.289
1712     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1713 yoffy 1.148 for i := Length( BBSs ) - 1 downto 0 do begin
1714     try
1715     item := TBBSMenuItem.Create( PopupMenu );
1716     item.Caption := BBSs[ i ].Title;
1717     item.Data := BBSs[ i ];
1718     item.OnClick := BBSMenuItemOnClick;
1719     CabinetSelectPopupMenu.Items.Insert( 0, item );
1720     item := TBBSMenuItem.Create( PopupMenu );
1721     item.Caption := BBSs[ i ].Title;
1722     item.Data := BBSs[ i ];
1723     item.OnClick := BBSMenuItemOnClick;
1724     CabinetMenu.Insert( 0, item );
1725 yoffy 1.289 item := TBBSMenuItem.Create( PopupMenu );
1726     item.Caption := BBSs[ i ].Title;
1727     item.Data := BBSs[ i ];
1728     item.OnClick := BBSMenuItemOnClick;
1729     BBSSelectPopupMenu.Items.Insert( 0, Item );
1730 yoffy 1.148 except
1731     end;
1732     end;
1733 yoffy 1.289
1734     end;
1735    
1736     procedure TGikoForm.ReloadBBS;
1737     var
1738     i : Integer;
1739 h677 1.321 tmpBool: Boolean;
1740 yoffy 1.289 begin
1741 h677 1.517 LockWindowUpdate(Self.Handle);
1742    
1743 yoffy 1.289 //鐃?鐃?鐃?鐃緒申鐃?鐃?
1744 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1745     GikoSys.Setting.ShowDialogForAllTabClose := false;
1746 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1747 h677 1.321 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1748 h677 1.320 SetContent(BrowserNullTab);
1749 yoffy 1.289 //TreeView鐃?鐃緒申鐃?鐃?BBS2ch.Free鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申XP鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?
1750     TreeView.Items.Clear;
1751    
1752 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1753     try
1754     RoundList.SaveRoundFile;
1755     except
1756     end;
1757     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
1758     try
1759     RoundList.Clear;
1760     except
1761     end;
1762    
1763     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1764 h677 1.517 try
1765 h677 1.623 FHistoryList.SaveToFile(GikoSys.GetConfigDir + 'History.xml');
1766     FHistoryList.Clear;
1767 h677 1.517 except
1768     end;
1769 h677 1.515
1770     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1771 h677 1.517 try
1772     FavoriteDM.WriteFavorite;
1773     FavoriteDM.Clear;
1774     except
1775     end;
1776 h677 1.515
1777 h677 1.516 //鐃緒申鐃?鐃?鐃緒申鐃?PLUGIN鐃緒申鐃?鐃緒申
1778     for i := Length(BoardGroups) - 1 downto 0 do begin
1779 h677 1.517 try
1780     BoardGroups[i].Free;
1781     except
1782     end;
1783 h677 1.516 end;
1784 yoffy 1.289 //BBS鐃?鐃緒申
1785     try
1786     for i := Length( BBSs ) - 1 downto 0 do begin
1787     if BBSs[ i ] <> nil then
1788     BBSs[ i ].Free;
1789     BBSs[ i ] := nil;
1790     end;
1791     except
1792     end;
1793    
1794     ActiveList := nil;
1795    
1796     FTreeType := gttNone;
1797 h677 1.516
1798     //============鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申================================//
1799    
1800     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1801     InitializeBoardPlugIns;
1802    
1803 yoffy 1.289 GikoSys.ListBoardFile; //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1804    
1805 h677 1.515 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1806     for i := Length(BBSs) - 1 downto 0 do begin
1807     if not BBSs[i].IsBoardFileRead then
1808     GikoSys.ReadBoardFile(BBSs[i]);
1809     end;
1810    
1811 yoffy 1.289 // BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?
1812     SetBBSMenu;
1813    
1814 yoffy 1.123 ShowBBSTree( BBSs[ 0 ] );
1815 yoffy 1.143
1816     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1817 h677 1.623 FHistoryList.LoadFromFile(GikoSys.GetConfigDir + 'History.xml',
1818     TreeView, FTreeType);
1819 yoffy 1.143
1820     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1821     FavoriteDM.ReadFavorite;
1822 yoffy 1.279
1823 yoffy 1.143 SetLinkBar;
1824    
1825 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1826 h677 1.514 RoundList.LoadRoundBoardFile;
1827     RoundList.LoadRoundThreadFile;
1828    
1829 h677 1.517 LockWindowUpdate(0);
1830 hi_ 1.1 end;
1831    
1832 yoffy 1.602 {!
1833     \todo 鐃緒申鐃緒申 IE 7 鐃緒申鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1834     (IE 7 鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申)
1835     鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1836     }
1837 hi_ 1.1 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1838     var
1839     p: TPoint;
1840     s: string;
1841     tmp2: string;
1842     URL: string;
1843     ATitle: Boolean;
1844    
1845 yoffy 1.130 threadItem : TThreadItem;
1846     board : TBoard;
1847 yoffy 1.163 Protocol, Host, Path, Document, Port, Bookmark: string;
1848 yoffy 1.130
1849 h677 1.333 wkInt: Integer;
1850 hi_ 1.1 wkIntSt: Integer;
1851     wkIntTo: Integer;
1852     ActiveFileName: string;
1853     e: IHTMLElement;
1854     Ext: string;
1855     PathRec: TPathRec;
1856 yoffy 1.602 Text2: string;
1857 hi_ 1.1 begin
1858 yoffy 1.602 // 鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申 about:blank.. 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1859     // IE 7 鐃緒申鐃緒申 about:blank.. 鐃緒申鐃緒申鐃緒申鐃緒申 about:.. 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申(鐃緒申鐃緒申鐃緒申鐃緒申)
1860     if Pos('about:..', Text) = 1 then
1861 yoffy 1.603 Text2 := 'about:blank..' + Copy( Text, Length('about:..')+1, Length(Text) )
1862     else
1863     Text2 := Text;
1864 h677 1.316 if not( TObject(Sender) is TWebBrowser )then
1865     Exit;
1866 hi_ 1.1 try
1867     try
1868 h677 1.316 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1869     if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1870     OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1871 h677 1.306 end;
1872 hi_ 1.1 end;
1873     except
1874     end;
1875     finally
1876     end;
1877     if PreviewTimer.Enabled then
1878     PreviewTimer.Enabled := False;
1879     Application.CancelHint;
1880 h677 1.333 try
1881     if GetActiveContent <> nil then
1882     ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1883     else
1884     ActiveFileName := '';
1885     except
1886     FActiveContent := nil;
1887     Exit;
1888     end;
1889 h677 1.628 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1890     if (StatusBar.Panels[1].Text = Text2) then begin
1891     {$IFDEF DEBUG}
1892     Writeln('Status Text is not changed!');
1893     {$ENDIF}
1894     Exit;
1895     end;
1896 yoffy 1.602 StatusBar.Panels[1].Text := Text2;
1897 hi_ 1.1
1898     if FHint <> nil then begin
1899     FHint.ReleaseHandle;
1900     FHint.ClearAllRes;
1901     end;
1902     if FPreviewBrowser <> nil then
1903     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1904    
1905     if not GikoSys.Setting.UnActivePopup then
1906     if not GikoForm.Active then
1907     Exit;
1908    
1909 h677 1.628
1910    
1911 hi_ 1.1 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1912     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1913    
1914     s := '';
1915 yoffy 1.602 Ext := AnsiLowerCase(ExtractFileExt(Text2));
1916     if (Pos('http://', Text2) = 1) and (GikoSys.Setting.PreviewVisible) and
1917 hi_ 1.1 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1918     if FPreviewBrowser = nil then begin
1919     FPreviewBrowser := TPreviewBrowser.Create(Self);
1920     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1921     TOleControl(FPreviewBrowser).Parent := nil;
1922     end;
1923 h677 1.316 FPreviewBrowser.Navigate(BLANK_HTML);//鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1924 yoffy 1.602 FPreviewURL := Text2;
1925 hi_ 1.1 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1926     PreviewTimer.Enabled := True;
1927 yoffy 1.602 end else if (Pos('about:blank', Text2) = 1) or (Pos('http://', Text2) = 1) or (Pos('mailto:', Text2) = 1) then begin
1928     if Pos('mailto:', Text2) = 1 then begin
1929     s := StringReplace(Text2, 'mailto:', '', [rfIgnoreCase]);
1930 hi_ 1.1 //鐃?鐃?鐃?鐃?鐃?鐃緒申 鐃?鐃?鐃?3鐃緒申466鐃緒申鐃緒申鐃緒申鐃緒申
1931     GetCursorPos(p);
1932     p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1933     p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1934     e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1935     if (Assigned(e)) then begin
1936 h677 1.297 tmp2 := ZenToHan(e.Get_outerText);
1937 hi_ 1.1 if (GikoSys.IsNumeric(tmp2)) then begin
1938     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1939 h677 1.600 wkIntSt := StrToInt64(tmp2);
1940     wkIntTo := StrToInt64(tmp2);
1941 hi_ 1.1 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1942     FHint.PopupType := gptThread;
1943 h677 1.530 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1944 hi_ 1.1 end else begin
1945     FHint.PopupType := gptRaw;
1946     FHint.Caption := s;
1947     end;
1948     end;
1949     end else begin
1950 h677 1.319 threadItem := GetActiveContent;
1951 yoffy 1.602 URL := THTMLCreate.GetRespopupURL(Text2, threadItem.URL);
1952 yoffy 1.274 PathRec := Gikosys.Parse2chURL2(URL);
1953 q9_ 1.354 if (PathRec.FNoParam) then begin
1954     PathRec.FSt := 1;
1955     PathRec.FTo := 1;
1956 h677 1.447 end else begin
1957 q9_ 1.352 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1958 h677 1.447 end;
1959 yoffy 1.163 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1960 hi_ 1.1
1961 h677 1.168 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1962 yoffy 1.162
1963 yoffy 1.163 URL := GikoSys.GetBrowsableThreadURL( URL );
1964 yoffy 1.274 wkIntSt := PathRec.FSt;
1965     wkIntTo := PathRec.FTo;
1966 hi_ 1.1
1967     if (wkIntSt = 0) and (wkIntTo = 0) then begin
1968     wkIntSt := 1;
1969     wkIntTo := 1;
1970     end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1971     wkIntSt := wkIntTo;
1972     end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1973     wkIntTo := wkIntSt;
1974     end else if wkIntSt > wkIntTo then begin
1975 h677 1.333 wkInt := wkIntTo;
1976 hi_ 1.1 wkIntTo := wkIntSt;
1977 h677 1.333 wkIntSt := wkInt;
1978 hi_ 1.1 end;
1979 h677 1.299 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1980 yoffy 1.274 ATitle := false
1981     else
1982     ATitle := true;
1983 hi_ 1.1
1984 yoffy 1.160 threadItem := BBSsFindThreadFromURL( URL );
1985 h677 1.170
1986 yoffy 1.163 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1987     board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1988 yoffy 1.274 if board <> nil then begin
1989     if not board.IsThreadDatRead then
1990     GikoSys.ReadSubjectFile( board );
1991 yoffy 1.270 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1992 yoffy 1.274 end;
1993 yoffy 1.130 end;
1994 h677 1.319
1995 yoffy 1.130 if threadItem <> nil then begin
1996 yoffy 1.127 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1997 h677 1.512 //URL鐃緒申鐃緒申鐃緒申鐃緒申/鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1998     if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1999     wkIntSt := 1;
2000     wkIntTo := 1;
2001     end;
2002 yoffy 1.127 FHint.PopupType := gptThread;
2003 h677 1.530 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
2004 yoffy 1.127 end;
2005 hi_ 1.1 end;
2006 h677 1.168 end;
2007 hi_ 1.1
2008     if FHint.PopupType = gptRaw then begin
2009     if FHint.Caption <> '' then
2010     ShowTextPopup;
2011     end else begin
2012 yoffy 1.2 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2013 hi_ 1.1 ShowTextPopup;
2014     end;
2015     end;
2016     end;
2017    
2018     procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2019     var
2020     SysMenu: HMenu;
2021     begin
2022     FEnabledCloseButton := Enabled;
2023     SysMenu := GetSystemMenu(Handle, False);
2024    
2025     if Enabled then begin
2026     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2027     end else begin
2028     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2029     end;
2030    
2031     DrawMenuBar(Handle);
2032     end;
2033    
2034     procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2035     var AllowChange: Boolean);
2036     begin
2037 q9_ 1.369 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2038     // if FTreeType = gtt2ch then
2039     // FSortIndex := -1;
2040 hi_ 1.1 end;
2041    
2042     procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2043     Shift: TShiftState);
2044 yoffy 1.428 var
2045     pos : TPoint;
2046 hi_ 1.1 begin
2047 yoffy 1.236 if GetActiveList is TBoard then begin
2048 yoffy 1.428 case Key of
2049     VK_BACK:; // UpFolderButtonClick(Sender);
2050     VK_SPACE: ListDoubleClick(Shift);
2051     VK_RETURN: ListClick;
2052     VK_APPS:
2053     begin
2054     if ListView.Selected <> nil then begin
2055     pos.X := ListView.Column[ 0 ].Width;
2056     pos.Y := ListView.Selected.Top;
2057     end else begin
2058     pos.X := ListView.Left;
2059     pos.Y := ListView.Top;
2060     end;
2061     Windows.ClientToScreen( ListView.Handle, pos );
2062     ListPopupMenu.Popup( pos.X, pos.Y );
2063     end;
2064 yoffy 1.236 end;
2065     end else begin // TBBS, TCategory
2066 yoffy 1.428 case Key of
2067     VK_BACK:; // UpFolderButtonClick(Sender);
2068     VK_SPACE: ListClick;
2069     VK_RETURN: ListDoubleClick(Shift);
2070     VK_APPS:
2071     begin
2072     if ListView.Selected <> nil then begin
2073     pos.X := ListView.Column[ 0 ].Width;
2074     pos.Y := ListView.Selected.Top;
2075     end else begin
2076     pos.X := ListView.Left;
2077     pos.Y := ListView.Top;
2078     end;
2079     Windows.ClientToScreen( ListView.Handle, pos );
2080     ListPopupMenu.Popup( pos.X, pos.Y );
2081     end;
2082 yoffy 1.236 end;
2083 hi_ 1.1 end;
2084     end;
2085    
2086     function TGikoForm.GetHttpState: Boolean;
2087     begin
2088     Result := FHttpState;
2089     end;
2090    
2091     procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2092     Column: TListColumn);
2093 yoffy 1.413 var
2094     id, idx : Integer;
2095     orderList : TList;
2096 h677 1.570 vSortIndex : Integer;
2097     vSortOrder : Boolean;
2098 hi_ 1.1 begin
2099 h677 1.530 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2100 h677 1.570 if TObject( FActiveList ) is TBBS then begin
2101     orderList := GikoSys.Setting.BBSColumnOrder;
2102     vSortIndex := GikoSys.Setting.BBSSortIndex;
2103     vSortOrder := GikoSys.Setting.BBSSortOrder;
2104     end else if TObject( FActiveList ) is TCategory then begin
2105     orderList := GikoSys.Setting.CategoryColumnOrder;
2106     vSortIndex := GikoSys.Setting.CategorySortIndex;
2107     vSortOrder := GikoSys.Setting.CategorySortOrder;
2108     end else if TObject( FActiveList ) is TBoard then begin
2109     orderList := GikoSys.Setting.BoardColumnOrder;
2110     vSortIndex := GikoSys.Setting.BoardSortIndex;
2111     vSortOrder := GikoSys.Setting.BoardSortOrder;
2112     end else
2113 yoffy 1.413 Exit;
2114    
2115     id := Integer( orderList[ idx ] );
2116    
2117 h677 1.570
2118     if vSortIndex = id then
2119     vSortOrder := not vSortOrder
2120 h677 1.464 else begin
2121 h677 1.572 vSortOrder := id = 0;
2122 h677 1.570 end;
2123 h677 1.572
2124 h677 1.570 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2125 hi_ 1.1 end;
2126    
2127     procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2128     Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2129     var
2130     ARect: TRect;
2131     begin
2132 yoffy 1.2 DefaultDraw := True;
2133     Exit;
2134 hi_ 1.1 DefaultDraw := False;
2135     if (cdsSelected in State) or (cdsHot in State) then begin
2136     Sender.Canvas.Brush.Color := clHighlight;
2137     Sender.Canvas.Font.Color := clHighlightText;
2138     end else begin
2139     Sender.Canvas.Brush.Color := clBtnFace;
2140     Sender.Canvas.Font.Color := clBtnText;
2141     end;
2142     ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2143     Sender.Canvas.FillRect(ARect);
2144     DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2145     end;
2146    
2147     function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2148     var
2149     Nodes: TTreeNodes;
2150     i: integer;
2151     begin
2152     Nodes := TreeView.Items;
2153    
2154     for i := 0 to Nodes.Count - 1 do begin
2155     if Nodes.Item[i].Data = Data then begin
2156     Result := Nodes.Item[i];
2157     Exit;
2158     end;
2159     end;
2160     Result := nil;
2161     end;
2162    
2163     procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2164     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2165     Headers: OleVariant; var Cancel: WordBool);
2166     var
2167     sNo: string;
2168     p: TPoint;
2169 yoffy 1.56 const
2170     kMenuName: string = 'menu:';
2171 hi_ 1.1 begin
2172 yoffy 1.56
2173     if Pos(kMenuName, URL) <> 0 then begin
2174 yoffy 1.100 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2175    
2176 hi_ 1.1 if not GikoSys.IsNumeric(sNo) then Exit;
2177    
2178     Cancel := True;
2179     GetCursorpos(p);
2180     KokoPopupMenu.Tag := StrToInt(sNo);
2181     KokoPopupMenu.Popup(p.x, p.y);
2182     end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2183     Cancel := not GikoSys.Setting.OpenMailer;
2184     end;
2185 yoffy 1.56
2186 hi_ 1.1 end;
2187    
2188     procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2189     const ARect: TRect; var DefaultDraw: Boolean);
2190     var
2191     NodeRect: TRect;
2192     i, j: Integer;
2193     IsBoardNode: Boolean;
2194     Cnt: Integer;
2195     CntText: string;
2196     TextWidth: Integer;
2197     TextRect: TRect;
2198     Board: TBoard;
2199     Category: TCategory;
2200     Bitmap: TBitmap;
2201     NodeWidth: Integer;
2202     begin
2203     DefaultDraw := True;
2204    
2205     if FTreeType = gttHistory then Exit;
2206    
2207     TreeView.Canvas.Font.Color := clBlue;
2208     IsBoardNode := False;
2209 h677 1.95 for i := 0 to TreeView.Items.Count - 1 do begin
2210 yoffy 1.51 Cnt := 0;
2211 hi_ 1.1 if not TreeView.Items[i].IsVisible then
2212     continue;
2213    
2214     if TObject(TreeView.Items[i].Data) is TCategory then begin
2215     if TreeView.Items[i].Expanded then
2216     continue;
2217    
2218     IsBoardNode := False;
2219     Category := TCategory(TreeView.Items[i].Data);
2220     for j := 0 to Category.Count - 1 do begin
2221     Board := Category.Items[j];
2222     if Board <> nil then begin
2223     if Board.UnRead > 0 then begin
2224     Cnt := 1;
2225     Break;
2226     end;
2227     end;
2228     end;
2229     if Cnt <> 1 then
2230     continue;
2231     end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2232     IsBoardNode := True;
2233     Board := TBoard(TreeView.Items[i].Data);
2234 h677 1.514
2235 hi_ 1.1 Cnt := Board.UnRead;
2236     if Cnt <= 0 then
2237     continue;
2238     end else
2239     continue;
2240    
2241     Bitmap := TBitmap.Create;
2242     try
2243     Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2244     Bitmap.Canvas.Font.