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.609 - (hide annotations) (download) (as text)
Mon Jul 17 13:29:33 2006 UTC (17 years, 9 months ago) by h677
Branch: MAIN
CVS Tags: v1_53_0_667, v1_53_0_668
Changes since 1.608: +10 -51 lines
File MIME type: text/x-pascal
レスエディタを開いたままにして終了するとAcessViolationが発生する場合が
ある不具合の修正

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