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.599 - (hide annotations) (download) (as text)
Mon Apr 24 16:12:53 2006 UTC (17 years, 11 months ago) by h677
Branch: MAIN
CVS Tags: v1_52_0_652
Changes since 1.598: +19 -8 lines
File MIME type: text/x-pascal
検索中のフォームのクローズでのキャンセル処理追加。
ログ検索フォームを消さずに、終了したときのAccesViolation対策

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 yoffy 1.251 procedure FormCreate(Sender: TObject);
412 hi_ 1.1 procedure FormDestroy(Sender: TObject);
413     procedure BrowserStatusTextChange(Sender: TObject;
414     const Text: WideString);
415     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
416     procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
417     var AllowChange: Boolean);
418     procedure ListViewKeyDown(Sender: TObject; var Key: Word;
419     Shift: TShiftState);
420     procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
421     procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
422     Button: TToolButton; State: TCustomDrawState;
423     var DefaultDraw: Boolean);
424     procedure BrowserBeforeNavigate2(Sender: TObject;
425     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
426     Headers: OleVariant; var Cancel: WordBool);
427     procedure TreeViewCustomDraw(Sender: TCustomTreeView;
428     const ARect: TRect; var DefaultDraw: Boolean);
429     procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
430     Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
431     procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
432     procedure ListViewCustomDraw(Sender: TCustomListView;
433     const ARect: TRect; var DefaultDraw: Boolean);
434     procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
435     Shift: TShiftState; X, Y: Integer);
436     procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
437     procedure MessageListViewResize(Sender: TObject);
438 yoffy 1.138 procedure CabinetVisible( isVisible : Boolean );
439 hi_ 1.1 procedure FormResize(Sender: TObject);
440     procedure ListPopupMenuPopup(Sender: TObject);
441     procedure TreePopupMenuPopup(Sender: TObject);
442     procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
443     var Cancel: WordBool);
444     procedure ListSplitterMoved(Sender: TObject);
445     procedure BrowserTabChange(Sender: TObject);
446     procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
447     Shift: TShiftState; X, Y: Integer);
448     procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
449     State: TDragState; var Accept: Boolean);
450     procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
451     procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
452     Y: Integer);
453     procedure BrowserDocumentComplete(Sender: TObject;
454     const pDisp: IDispatch; var URL: OleVariant);
455     procedure RoundNamePopupMenuPopup(Sender: TObject);
456     procedure FormShow(Sender: TObject);
457     procedure BrowserTabToolBarResize(Sender: TObject);
458     procedure FavoriteMenuClick(Sender: TObject);
459 yoffy 1.2 procedure MainCoolBarResize(Sender: TObject);
460     procedure AddressToolBarResize(Sender: TObject);
461 hi_ 1.1 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
462     Shift: TShiftState);
463 yoffy 1.2 procedure BrowserEnter(Sender: TObject);
464 hi_ 1.1 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
465     procedure PreviewTimerTimer(Sender: TObject);
466     procedure MessageHideButtonClick(Sender: TObject);
467 h677 1.541 procedure HistoryAllClearToolButtonClick(Sender: TObject);
468 yoffy 1.2 procedure MainCoolBarBandInfo(Sender: TObject;
469     var BandInfo: PReBarBandInfoA);
470     procedure MainCoolBarChevronClick(Sender: TObject;
471 yoffy 1.51 RebarChevron: PNMRebarChevron);
472     procedure ListCoolBarBandInfo(Sender: TObject;
473     var BandInfo: PReBarBandInfoA);
474     procedure ListCoolBarChevronClick(Sender: TObject;
475     RebarChevron: PNMRebarChevron);
476     procedure BrowserCoolBarBandInfo(Sender: TObject;
477     var BandInfo: PReBarBandInfoA);
478 yoffy 1.2 procedure BrowserCoolBarChevronClick(Sender: TObject;
479 yoffy 1.51 RebarChevron: PNMRebarChevron);
480     procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
481     procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
482     WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
483     procedure SelectComboBoxChange(Sender: TObject);
484     procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
485     Shift: TShiftState);
486     procedure SelectComboBoxExit(Sender: TObject);
487     procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
488     Shift: TShiftState; X, Y: Integer);
489     procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
490     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
491     procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
492     Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
493     procedure StatusBarResize(Sender: TObject);
494     procedure SelectComboBoxEnter(Sender: TObject);
495 yoffy 1.100 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
496     Y: Integer);
497 yoffy 1.71 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
498 yoffy 1.100 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
499     var S: String);
500     procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
501     Shift: TShiftState);
502     procedure FavoriteTreePopupMenuPopup(Sender: TObject);
503     procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
504     procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
505     Shift: TShiftState; X, Y: Integer);
506     procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
507     State: TDragState; var Accept: Boolean);
508     procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
509     Y: Integer);
510     procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
511     var Handled: Boolean);
512     procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
513     var Handled: Boolean);
514     procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
515     var Handled: Boolean);
516 yoffy 1.142 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
517 h677 1.174 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
518     var Handled: Boolean);
519 h677 1.187 procedure BrowserTabPopupMenuPopup(Sender: TObject);
520 yoffy 1.216 procedure BrowserTabResize(Sender: TObject);
521 yoffy 1.236 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
522     Shift: TShiftState);
523 yoffy 1.246 procedure FavoriteTreeViewMouseDown(Sender: TObject;
524 yoffy 1.248 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
525 yoffy 1.250 procedure MessagePanelResize(Sender: TObject);
526 yoffy 1.276 procedure OnResized;
527 h677 1.539 procedure SelectTimerTimer(Sender: TObject);
528 yoffy 1.425 procedure ListViewColumnRightClick(Sender: TObject;
529 yoffy 1.415 Column: TListColumn; Point: TPoint);
530 h677 1.478 procedure ListViewCustomDrawItem(Sender: TCustomListView;
531 h677 1.463 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
532     procedure FormActivate(Sender: TObject);
533 h677 1.472 procedure BrowserPanelResize(Sender: TObject);
534 h677 1.482 procedure MenuToolBarResize(Sender: TObject);
535     procedure ListToolBarResize(Sender: TObject);
536     procedure BrowserToolBarResize(Sender: TObject);
537 h677 1.539 procedure KokoPopupMenuPopup(Sender: TObject);
538 h677 1.517 procedure ListViewKeyUp(Sender: TObject; var Key: Word;
539     Shift: TShiftState);
540     procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
541     var AllowEdit: Boolean);
542 h677 1.570 procedure CabinetCloseSpeedButtonClick(Sender: TObject);
543 h677 1.541 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
544 h677 1.542 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
545     var Handled: Boolean);
546     procedure GikoApplicationEventsDeactivate(Sender: TObject);
547     procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
548 h677 1.574 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
549 h677 1.548 Shift: TShiftState; X, Y: Integer);
550 h677 1.585 procedure GetResURLMenuClick(Sender: TObject);
551 hi_ 1.1 private
552     { Private 鐃緒申鐃緒申 }
553     FEnabledCloseButton: Boolean;
554     FClickNode: TTreeNode;
555     FHttpState: Boolean;
556     FHint: TResPopup;
557 h677 1.453 FPreviewBrowser: TWebBrowser;
558 hi_ 1.1 FPreviewURL: string;
559     FBrowserSizeHeight: Integer;
560     FBrowserSizeWidth: Integer;
561     FTabHintIndex: Integer;
562     FListStyle: TViewStyle; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申
563     FItemNoVisible: Boolean; //鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?
564     FViewType: TGikoViewType; //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?
565 h677 1.517 FActiveList: TObject;
566 h677 1.299 FActiveContent: TBrowserRecord; //
567 yoffy 1.133 FActiveBBS : TBBS;
568 hi_ 1.1 FHistoryList: TList; //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?
569     FTreeType: TGikoTreeType;
570     FWorkCount: Integer;
571     FNameCookie: string;
572     FMailCookie: string;
573     FDownloadTitle: string; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
574     FDownloadMax: Integer; //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
575     FEvent: THTMLDocumentEventSink;//鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?
576 yoffy 1.51 IsDraggingSelectComboBox : Boolean;
577     DraggingSelectComboBoxPosition : TPoint;
578 yoffy 1.54 FSearchDialog: TSearchDialog;
579 yoffy 1.100 FDropSpaceNode: TTreeNode;
580 yoffy 1.424 FDragTime : Cardinal; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?
581     FDragButton : TToolButton; ///< 鐃緒申鐃緒申鐃?鐃緒申D&D鐃?鐃緒申Drag鐃緒申鐃緒申鐃緒申Button鐃緒申鐃緒申
582     FDragWFirst : Boolean; ///< WebTab鐃緒申D&D鐃?
583     FListViewBackGroundColor : TColor; ///< ListView鐃緒申BackGroundColor
584     FUseOddResOddColor : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申
585     FOddColor : TColor; ///< 鐃緒申鐃緒申鐃?
586     FSelectResWord : string; ///< 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
587     FIsIgnoreResize : TResizeType; ///< 鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
588     FIsMinimize : TMinimizeType; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
589     FOldFormWidth : Integer; ///< 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
590     FToolBarSettingSender : TToolBarSettingSenderType; ///< 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?
591     FMouseDownPos : TPoint; ///< 鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
592 h677 1.303 FBrowsers: TList;
593 yoffy 1.424 FResRangeMenuSelect : Longint; ///< ResRangeButton 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 (鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申 ResRange 鐃緒申鐃緒申)
594 h677 1.423 FStartUp : Boolean;
595 yoffy 1.427 FIsHandledWheel : Boolean; ///< 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 WM_MOUSEWHEEL 鐃緒申鐃緒申鐃緒申鐃緒申
596 h677 1.517 DiffComp: Boolean; //Add by Genyakun 鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申True鐃緒申鐃緒申鐃緒申
597 h677 1.548 FOrigenCaption: String; //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
598 h677 1.581 FPreviewBrowserRect: TRect; ///< 鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
599     FActionListGroupIndexes: array of Integer; ///<GikoDM鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
600 hi_ 1.1 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
601     procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
602 q9_ 1.233 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
603 hi_ 1.1 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
604     procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
605     procedure ListClick;
606 h677 1.295 procedure ListDoubleClick(Shift: TShiftState);
607 hi_ 1.1 function Hook(var Message: TMessage): Boolean;
608     procedure AddRoundNameMenu(MenuItem: TMenuItem);
609     procedure SetMenuFont;
610     procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
611 yoffy 1.62 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
612     procedure FavoriteClick(Sender: TObject); overload;
613 yoffy 1.100 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
614 hi_ 1.1 function OnDocumentContextMenu(Sender: TObject): WordBool;
615     procedure ShowTextPopup;
616     function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
617 yoffy 1.2 procedure MenuBarChevronMenu;
618     procedure LinkBarChevronMenu;
619     procedure ToolBarChevronMenu(ToolBar: TToolBar);
620 yoffy 1.100 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
621     procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
622     procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
623     procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
624 yoffy 1.85 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
625 yoffy 1.72 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
626 yoffy 1.100 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
627     procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
628 yoffy 1.72 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
629 yoffy 1.236 //
630 yoffy 1.143 procedure SetListViewBackGroundColor(value: TColor);
631 yoffy 1.123 procedure BBSMenuItemOnClick( Sender : TObject );
632 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
633 yoffy 1.216 procedure SaveCoolBarSettings;
634 h677 1.471 procedure SaveMainCoolBarSettings;
635     procedure SaveBoardCoolBarSettings;
636     procedure SaveBrowserCoolBarSettings;
637 yoffy 1.424 /// CoolBar 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
638 yoffy 1.216 procedure LoadCoolBarSettings;
639 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
640 yoffy 1.276 procedure OnMinimize;
641 yoffy 1.424 /// 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
642 yoffy 1.248 procedure OnMinimized;
643 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
644 yoffy 1.236 procedure TreeClick( Node : TTreeNode );
645 yoffy 1.424 /// TreeView 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
646 yoffy 1.236 procedure TreeDoubleClick( Node : TTreeNode );
647 yoffy 1.424 /// 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
648 yoffy 1.289 procedure SetBBSMenu;
649 yoffy 1.424 /// 鐃?鐃?鐃緒申鐃緒申
650 yoffy 1.397 function GetTabURLs(AStringList: TStringList) : Boolean;
651 yoffy 1.415 /// ListColumnPopupMenu 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?
652     procedure ListColumnPopupMenuOnClick( Sender : TObject );
653 yoffy 1.480 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
654     procedure SetSelectWord( const text : string );
655 h677 1.535 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
656     function GetScreenCursor(): TCursor;
657     //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
658     procedure SetScreenCursor(Cursor : TCursor);
659 h677 1.550 //! 鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
660     procedure CreateControlThread();
661     //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
662     procedure CreateBrowsers(count: Integer);
663 h677 1.581 //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
664     procedure GetGroupIndex(ActionList: TActionList);
665     //! ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申
666     procedure SetGroupIndex(ActionList: TActionList);
667 h677 1.585 //! 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申(鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 or 鐃?鐃緒申JUMP鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申DL鐃緒申鐃緒申)
668     procedure OpenThreadItem(Thread: TThreadItem; URL: String);
669 h677 1.596 //! ListView鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
670     procedure RefreshListView(Thread: TThreadItem);
671 h677 1.598 //! 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
672     procedure ClearThreadRengeAction;
673 hi_ 1.1 protected
674     procedure CreateParams(var Params: TCreateParams); override;
675 yoffy 1.2 procedure WndProc(var Message: TMessage); override;
676 hi_ 1.1 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
677     procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
678     procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
679 yoffy 1.216
680 hi_ 1.1 public
681     { Public 鐃緒申鐃緒申 }
682 h677 1.533 LastRoundTime: TDateTime;
683     BrowserNullTab: TBrowserRecord;
684 hi_ 1.1 FControlThread: TThreadControl;
685 yoffy 1.444 procedure MoveToURL(const inURL: string);
686 h677 1.530 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
687 hi_ 1.1 procedure ReloadBBS;
688     function GetHttpState: Boolean;
689     procedure SetEnabledCloseButton(Enabled: Boolean);
690     function GetTreeNode(Data: TObject): TTreeNode;
691     procedure ListViewAllSelect;
692     property ListStyle: TViewStyle read FListStyle write FListStyle;
693     property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
694     property ViewType: TGikoViewType read FViewType write FViewType;
695     property NameCookie: string read FNameCookie write FNameCookie;
696     property MailCookie: string read FMailCookie write FMailCookie;
697 h677 1.532 property ClickNode: TTreeNode read FClickNode write FClickNode;
698 h677 1.538 property TreeType: TGikoTreeType read FTreeType write FTreeType;
699 h677 1.534 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
700 h677 1.533 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
701 h677 1.534 property SelectResWord : string read FSelectResWord write FSelectResWord;
702     property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
703     property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
704     property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
705     property ToolBarSettingSender : TToolBarSettingSenderType
706     read FToolBarSettingSender write FToolBarSettingSender;
707 h677 1.535 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
708 h677 1.538 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
709     property WorkCount: Integer read FWorkCount write FWorkCount;
710 h677 1.299 procedure SetContent(inThread: TBrowserRecord);
711 hi_ 1.1 function GetActiveContent: TThreadItem;
712     function GetActiveList: TObject;
713 h677 1.533
714 hi_ 1.1 procedure SetListViewType(AViewType: TGikoViewType); overload;
715     procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
716     procedure PlaySound(SoundEventName: string);
717 yoffy 1.136 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
718 hi_ 1.1 procedure ClearHistory;
719 yoffy 1.135 procedure SaveHistory;
720     procedure LoadHistory;
721 yoffy 1.123 procedure ShowBBSTree( inBBS : TBBS );
722 yoffy 1.248 procedure ShowBBSTreeOld( inBBS : TBBS );
723 hi_ 1.1 procedure ShowHistoryTree;
724     procedure SetHistoryTreeNode;
725     procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
726     procedure SetBrowserTabState;
727 yoffy 1.2 procedure SetToolBarPopup;
728 yoffy 1.100 procedure ShowFavoriteAddDialog( Item : TObject );
729 h677 1.433 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
730     procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
731 yoffy 1.143 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
732     property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
733     property OddColor : TColor read FOddColor write FOddColor;
734 yoffy 1.209 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
735 yoffy 1.218 procedure OnPlugInMenuItem( Sender : TObject );
736 h677 1.433 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
737     /// ListView 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申 KuroutSetting鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
738     procedure ActiveListColumnSave;
739     procedure SetActiveList(Obj: TObject);
740     property ActiveList: TObject read GetActiveList write SetActiveList;
741 h677 1.482 /// CoolBar 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
742     procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
743 h677 1.485 //鐃緒申鐃緒申ID鐃緒申鐃緒申鐃緒申鐃?鐃緒申
744     procedure IndividualAbonID(Atype : Integer);
745     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申
746     procedure IndividualAbon(Atag, Atype : Integer);
747 h677 1.532 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申 true:鐃?鐃緒申鐃緒申鐃?鐃? false:鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
748     procedure RepaintAllTabsBrowser();
749     //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
750     procedure SetLinkBar;
751     procedure FavoriteBrowseFolder( node: TTreeNode );
752     //鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
753     procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
754     //鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?
755     procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
756     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
757     procedure DeleteHistory( threadItem: TThreadItem );
758     //鐃?鐃?鐃緒申鐃緒申鐃緒申
759     procedure DeleteTab(ThreadItem: TThreadItem); overload;
760 h677 1.533 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
761     //鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
762 h677 1.552 procedure BrowserMovement(const AName: string);
763 h677 1.533 //Application鐃緒申MainForm鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
764 h677 1.534 function GetMainForm(): TComponent;
765 h677 1.533 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
766 h677 1.534 //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?
767     procedure OnGestureStart(Sender: TObject);
768     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申
769     procedure OnGestureMove(Sender: TObject);
770     //! 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
771     procedure OnGestureEnd(Sender: TObject);
772     /// 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
773     procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
774 h677 1.535 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃緒申
775     function EditorFormExists(): boolean;
776     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
777     procedure AllEditroFormNameTextClearClear();
778     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申EditorForm鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
779     procedure AllEditroFormMailTextClearClear();
780     //ListView鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
781     procedure SelectListItem(List: TList);
782     /// 鐃?鐃?鐃緒申鐃緒申
783     function SaveTabURLs : Boolean;
784     /// 鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申
785     function LoadTabURLs : Boolean;
786 h677 1.536 //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
787     procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
788 h677 1.537 //
789     procedure ModifySelectList;
790     //
791     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
792     //
793     procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
794 h677 1.538 //
795 h677 1.537 procedure SetSelectRoundName(Sender: TObject);
796 h677 1.538 //
797     function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
798     //
799     function WebBrowserClick(Sender: TObject): WordBool;
800 h677 1.550 //! 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
801     procedure SetSelectComboBox();
802 h677 1.585
803 hi_ 1.1 published
804     property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
805     end;
806    
807     TFavoriteMenuItem = class(TMenuItem)
808     private
809     FData : Pointer;
810     public
811     property Data: Pointer read FData write FData;
812     end;
813    
814 yoffy 1.123 TBBSMenuItem = class(TMenuItem)
815     private
816     FData : Pointer;
817     public
818     property Data: Pointer read FData write FData;
819     end;
820    
821 hi_ 1.1 TLinkToolButton = class(TToolButton)
822     private
823     FData : Pointer;
824     public
825     property Data: Pointer read FData write FData;
826     end;
827    
828     var
829     GikoForm: TGikoForm;
830    
831     implementation
832    
833     uses
834 h677 1.536 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
835     YofUtils, ShellAPI, ToolBarUtil, ToolBarSetting,
836     GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
837 h677 1.542 FavoriteArrange, AddressHistory, Preview, Gesture,
838 yoffy 1.480 About, Option, Round, Splash, Sort, ListSelect, Imm,
839 h677 1.521 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
840 h677 1.583 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage,
841     InputAssistDataModule;
842 hi_ 1.1
843     const
844     BLANK_HTML: string = 'about:blank';
845 h677 1.542 BROWSER_COUNT = 5; //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申
846     //D&D鐃緒申鐃?
847     DandD_THRESHOLD = 5; //D&D鐃緒申鐃緒申鐃?鐃?pixcel)
848     //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
849     HTML_FILE_NAME = 'temp_preview.html';
850     ITEM_ICON_THREADLOG1 = 6; //鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
851     ITEM_ICON_THREADLOG2 = 7; //鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
852     //鐃緒申鐃?鐃?鐃?鐃?ID
853 yoffy 1.278 USER_TREECLICK = WM_USER + 2000;
854     USER_RESIZED = WM_USER + 2001;
855     USER_MINIMIZED = WM_USER + 2002;
856     USER_SETLINKBAR = WM_USER + 2003;
857 yoffy 1.434 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
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.303
905 h677 1.514 //鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃?
906     SetMenuFont;
907 yoffy 1.216
908 hi_ 1.1 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申
909     Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
910    
911     //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
912 h677 1.513 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
913 hi_ 1.1
914     EnabledCloseButton := True;
915 h677 1.176
916 hi_ 1.1 //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
917     ListView.ViewStyle := GikoSys.Setting.ListStyle;
918    
919     //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?
920     AnimePanel.Top := 0;
921     AnimePanel.Left := 0;
922    
923     //鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
924    
925     //鐃?鐃緒申鐃?鐃?鐃?鐃?
926     CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
927    
928     //鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
929 h677 1.539 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
930     GikoDM.MsgBarVisibleActionExecute(nil);
931 hi_ 1.1 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
932    
933     //鐃?鐃?鐃?鐃?鐃?鐃?鐃?
934 h677 1.539 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
935     GikoDM.StatusBarVisibleActionExecute(nil);
936 hi_ 1.1
937     //鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
938     TreeView.Items.BeginUpdate;
939 yoffy 1.100 FavoriteTreeView.Items.BeginUpdate;
940 hi_ 1.1 ListView.Items.BeginUpdate;
941     try
942     TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
943     TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
944     TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
945     TreeView.Color := GikoSys.Setting.CabinetBackColor;
946 h677 1.473 FavoriteTreeView.Font.Assign(TreeView.Font);
947 yoffy 1.67 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
948    
949 hi_ 1.1 ListView.Font.Name := GikoSys.Setting.ListFontName;
950     ListView.Font.Size := GikoSys.Setting.ListFontSize;
951     ListView.Font.Color := GikoSys.Setting.ListFontColor;
952 h677 1.473 ListView.Font.Style := [];
953     if GikoSys.Setting.ListFontBold then
954     ListView.Font.Style := [fsbold];
955     if GikoSys.Setting.ListFontItalic then
956     ListView.Font.Style := ListView.Font.Style + [fsitalic];
957    
958 yoffy 1.418 ListViewBackGroundColor := clWhite; // 鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
959     ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // 鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?
960 yoffy 1.236 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
961     FOddColor := GikoSys.Setting.OddColor;
962 h677 1.109
963 hi_ 1.1 finally
964     TreeView.Items.EndUpdate;
965 yoffy 1.100 FavoriteTreeView.Items.EndUpdate;
966 hi_ 1.1 ListView.Items.EndUpdate;
967     end;
968     //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
969 h677 1.539 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
970 hi_ 1.1
971 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
972     GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
973    
974     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
975     FResRangeMenuSelect := GikoSys.ResRange;
976     case GikoSys.ResRange of
977     Ord( grrAll ):
978     begin
979     GikoDM.AllResAction.Execute;
980     end;
981     Ord( grrSelect ):
982     begin
983     SelectComboBox.Text := SelectComboBox.Items[ 1 ];
984     GikoDM.SelectResAction.Checked := True;
985     end;
986     else
987     case FResRangeMenuSelect of
988     Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
989     Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
990     100: GikoDM.OnlyAHundredResAction.Checked := True;
991     end;
992     end;
993    
994     // 鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
995     case GikoSys.Setting.ThreadRange of
996     gtrAll:
997     begin
998     GikoDM.AllItemAction.Checked := True;
999     ViewType := gvtAll;
1000     end;
1001     gtrLog:
1002     begin
1003     GikoDM.LogItemAction.Checked := True;
1004     ViewType := gvtLog;
1005     end;
1006     gtrNew:
1007     begin
1008     GikoDM.NewItemAction.Checked := True;
1009     ViewType := gvtNew;
1010     end;
1011 h677 1.592 gtrLive:
1012     begin
1013     GikoDM.LiveItemAction.Checked := True;
1014     ViewType := gvtLive;
1015     end;
1016     gtrArch:
1017     begin
1018     GikoDM.ArchiveItemAction.Checked := True;
1019     ViewType := gvtArch;
1020     end;
1021 h677 1.581 end;
1022    
1023    
1024 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1025     BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1026     BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1027 h677 1.473 BrowserTab.Font.Style := [];
1028     if GikoSys.Setting.BrowserTabFontBold then
1029     BrowserTab.Font.Style := [fsBold];
1030     if GikoSys.Setting.BrowserTabFontItalic then
1031     BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1032 h677 1.582 BrowserTab.DoubleBuffered := True;
1033 yoffy 1.133 FDragWFirst := false;
1034 h677 1.299 SetContent(BrowserNullTab); //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1035    
1036 h677 1.581 //鐃?鐃緒申鐃?鐃?鐃?鐃?
1037     GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1038    
1039     if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1040     GikoDM.BrowserTabTopAction.Checked := True;
1041     end else begin
1042     GikoDM.BrowserTabBottomAction.Checked := True;
1043     end;
1044    
1045     if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1046     GikoDM.BrowserTabTabStyleAction.Checked := True;
1047     end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1048     GikoDM.BrowserTabButtonStyleAction.Checked := True;
1049     end else begin
1050     GikoDM.BrowserTabFlatStyleAction.Checked := True;
1051     end;
1052    
1053 h677 1.514 //鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1054     ProgressBar.Parent := StatusBar;
1055     ProgressBar.Top := 2;
1056     ProgressBar.Left := 0;
1057     ProgressBar.Width := StatusBar.Panels[0].Width;
1058     ProgressBar.Height := StatusBar.Height - 2;
1059     ProgressBar.Position := 0;
1060    
1061     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1062     InitializeBoardPlugIns;
1063    
1064     // 鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申(ReadFavorite 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1065     GikoSys.ListBoardFile;
1066 h677 1.580 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申
1067     try
1068 h677 1.514 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1069 h677 1.580 if (SplashWindow <> nil) then begin
1070     SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1071     end;
1072     except
1073     end;
1074 h677 1.514 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1075     for i := Length(BBSs) - 1 downto 0 do begin
1076     if not BBSs[i].IsBoardFileRead then
1077     GikoSys.ReadBoardFile(BBSs[i]);
1078    
1079     if SplashWindow <> nil then begin
1080     SplashWindow.ProgressBar.StepBy(20);
1081     SplashWindow.Update;
1082     end;
1083     end;
1084 h677 1.580
1085 h677 1.514 //鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1086     RoundList := TRoundList.Create;
1087     RoundList.LoadRoundBoardFile;
1088     RoundList.LoadRoundThreadFile;
1089    
1090     //TreeView鐃緒申鐃緒申鐃緒申鐃?鐃緒申ToolTip鐃緒申鐃緒申鐃?鐃緒申
1091     Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1092     Style := Style or TVS_NOTOOLTIPS;
1093     SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1094    
1095     // 鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1096     TreeView.Align := alClient;
1097     FavoriteTreeView.Align := alClient;
1098     FavoriteTreeView.Visible := False;
1099    
1100     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1101     SetBBSMenu;
1102 hi_ 1.1
1103     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1104     wp.length := sizeof(wp);
1105     wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1106     wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1107     wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1108     wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1109     wp.showCmd := SW_HIDE;
1110     SetWindowPlacement(Handle, @wp);
1111 h677 1.514 //Self.Update;
1112 hi_ 1.1
1113     if GikoSys.Setting.WindowMax then
1114 h677 1.514 WindowState := wsMaximized;
1115 hi_ 1.1
1116     //鐃?鐃?鐃?鐃?鐃緒申
1117     try
1118     FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1119     if FileExists(FileName) then
1120     Animate.FileName := FileName;
1121     except
1122     end;
1123    
1124     //鐃?鐃?鐃?鐃?
1125     FNameCookie := '';
1126     FMailCookie := '';
1127    
1128     //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1129     FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1130     FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1131    
1132 yoffy 1.420
1133     // 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?(LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1134     FHistoryList := TList.Create;
1135    
1136     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1137     LoadHistory;
1138    
1139     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1140     FavoriteDM.SetFavTreeView(FavoriteTreeView);
1141     FavoriteDM.ReadFavorite;
1142    
1143 h677 1.539 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1144     GikoDM.ArrangeAction.Execute;
1145 hi_ 1.1
1146     if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1147     case GikoSys.Setting.ListWidthState of
1148     glsMax: begin
1149     ViewPanel.Width := 1;
1150 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1151     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1152 hi_ 1.1 end;
1153     glsMin: begin
1154     ViewPanel.Width := GikoSys.Setting.ListWidth;
1155 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1156     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1157 hi_ 1.1 end;
1158     else begin
1159     ViewPanel.Width := GikoSys.Setting.ListWidth;
1160 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1161     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1162 hi_ 1.1 end;
1163     end;
1164     end else begin
1165     case GikoSys.Setting.ListHeightState of
1166     glsMax: begin
1167     ViewPanel.Height := 1;
1168 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1169     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1170 hi_ 1.1 end;
1171     glsMin: begin
1172     ViewPanel.Height := GikoSys.Setting.ListHeight;
1173 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1174     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1175 hi_ 1.1 end;
1176     else begin
1177     ViewPanel.Height := GikoSys.Setting.ListHeight;
1178 h677 1.558 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1179     GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1180 hi_ 1.1 end;
1181     end;
1182     end;
1183    
1184     //鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃?
1185 h677 1.550 CreateControlThread();
1186 hi_ 1.1
1187 yoffy 1.51 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1188     SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1189 yoffy 1.2
1190 hi_ 1.1 //鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申
1191     SetBrowserTabState;
1192    
1193     BrowserBoardNameLabel.Caption := '';
1194     BrowserNameLabel.Caption := '';
1195     FWorkCount := 0;
1196    
1197     FTabHintIndex := -1;
1198    
1199     //鐃?鐃?鐃緒申鐃?鐃?Wrapable
1200     ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1201     BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1202    
1203 yoffy 1.236 MakeDefaultINIFile();
1204 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1205 h677 1.539 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1206     ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1207     ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1208 yoffy 1.2 SetToolBarPopup;
1209 yoffy 1.375
1210 h677 1.517 //ListToolBar鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申ComboBox鐃緒申鐃?鐃?
1211 h677 1.550 SetSelectComboBox();
1212 h677 1.514
1213     //鐃?鐃?鐃緒申鐃?鐃?鐃?
1214     AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1215    
1216     //鐃緒申鐃緒申鐃?鐃?鐃?
1217     SetLinkBar;
1218 yoffy 1.2 //鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申FormShow鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1219    
1220     //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申
1221     if not FileExists(GikoSys.GetBoardFileName) then begin
1222     msg := '鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申' + #13#10#13#10
1223     + '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申' + #13#10
1224     + '鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
1225     MsgBox(SplashWindow.Handle, msg, '鐃?鐃?鐃?鐃?', MB_OK or MB_ICONINFORMATION);
1226 h677 1.539 GikoDM.NewBoardAction.Execute;
1227 yoffy 1.2 end;
1228    
1229     //鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1230 h677 1.560 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1231 yoffy 1.2
1232     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1233     // FLastRoundTime := 0;
1234    
1235     //ResHint
1236     FHint := TResPopup.Create(Self);
1237    
1238 h677 1.547 ListView.OnData := TListViewUtils.ListViewData;
1239 h677 1.529
1240 yoffy 1.100 // 鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1241 h677 1.299 CabinetVisible( False );
1242 yoffy 1.141 if GikoSys.Setting.CabinetVisible then begin
1243     i := CabinetSelectPopupMenu.Items.Count - 1;
1244     if GikoSys.Setting.CabinetIndex = i - 1 then
1245 h677 1.539 GikoDM.CabinetHistoryAction.Execute
1246 yoffy 1.141 else if GikoSys.Setting.CabinetIndex = i then
1247 h677 1.539 GikoDM.CabinetFavoriteAction.Execute
1248 yoffy 1.141 else begin
1249     if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1250     ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1251 yoffy 1.265 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 2
1252 yoffy 1.424 FIsIgnoreResize := rtResizing;
1253 h677 1.539 GikoDM.CabinetBBSAction.Execute;
1254 yoffy 1.141 end;
1255     end else begin
1256 yoffy 1.248 ShowBBSTreeOld( BBSs[ 0 ] );
1257     PostMessage( Handle, USER_TREECLICK, 0, 0 );
1258 yoffy 1.141 end;
1259 yoffy 1.67
1260 yoffy 1.2 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃?
1261     for i := 1 to ParamCount do begin
1262     MoveToURL(ParamStr(i));
1263     end;
1264 h677 1.22
1265 h677 1.567 GikoDM.RepaintStatusBar;
1266 hi_ 1.32 StatusBarResize(Sender);
1267 h677 1.187
1268 yoffy 1.236 dummy1.Caption := ItemReservPMenu.Caption;
1269     dummy1.Hint := ItemReservPMenu.Hint;
1270 yoffy 1.216
1271 yoffy 1.236 //Samba24鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?
1272     GikoSys.SambaFileExists();
1273 h677 1.299
1274 yoffy 1.500 {$IFDEF SPAM_FILTER_ENABLED}
1275 yoffy 1.468 // 鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申
1276     GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1277 yoffy 1.500 {$ENDIF}
1278 yoffy 1.468
1279 yoffy 1.456 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?
1280     MouseGesture := TMouseGesture.Create;
1281     GikoSys.Setting.Gestures.LoadGesture(
1282 h677 1.539 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1283 yoffy 1.456 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1284     MouseGesture.OnGestureStart := OnGestureStart;
1285     MouseGesture.OnGestureMove := OnGestureMove;
1286     MouseGesture.OnGestureEnd := OnGestureEnd;
1287 yoffy 1.457 if GikoSys.Setting.GestureEnabled then
1288     MouseGesture.SetHook( Handle );
1289 genyakun 1.458
1290 h677 1.483 //2ch鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1291 h677 1.562 GikoSys.SetGikoMessage;
1292 h677 1.514
1293 genyakun 1.497 //鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1294     if GikoSys.Setting.AutoLogin then
1295 h677 1.539 GikoDM.LoginAction.Execute;
1296 genyakun 1.497
1297 h677 1.514 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1298 h677 1.541
1299     //鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1300     FavoriteAddToolButton.Caption := '鐃緒申鐃緒申...';
1301 h677 1.547 AntiIndivAbonMenuItem.Caption := '鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申';
1302 h677 1.541
1303 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1304     InputAssistDM.Init(GikoSys.GetInputAssistFileName);
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.539 GikoDM.TabAutoLoadAction.Execute;
1455 h677 1.423 end;
1456 h677 1.581
1457     //ActionList鐃緒申GroupIndex鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1458     SetGroupIndex(GikoDM.GikoFormActionList);
1459 h677 1.547
1460 h677 1.471 FStartUp := false;
1461 yoffy 1.397 end;
1462 yoffy 1.239 end;
1463 yoffy 1.216
1464 hi_ 1.1 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1465     begin
1466 yoffy 1.331 // if GikoForm.WindowState <> wsMinimized then
1467     // SaveCoolBarSettings;
1468 h677 1.599 CanClose := True;
1469 yoffy 1.236 if ( GikoSys.Setting.ShowDialogForEnd ) and
1470     (MessageDlg('鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1471     CanClose := false;
1472     Exit;
1473 h677 1.599 end;
1474    
1475     if GikoSys.Setting.TabAutoLoadSave then begin
1476     GikoDM.TabAutoSaveAction.Execute;
1477     end;
1478    
1479     if (SearchDialog <> nil) then begin
1480     if (SearchDialog.Visible) then begin
1481     SearchDialog.Close;
1482     try
1483     SearchDialog.Release;
1484     except
1485     end;
1486     SearchDialog := nil;
1487 yoffy 1.398 end;
1488 yoffy 1.236 end;
1489 h677 1.599 { //2ch鐃緒申鐃緒申鐃緒申鐃緒申Free
1490 h677 1.462 if GikoSys.Setting.Gengo <> nil then begin
1491     GikoSys.Setting.Gengo.Free;
1492 genyakun 1.458 end;
1493 h677 1.599 }
1494 h677 1.241 Application.UnhookMainWindow(Hook);
1495     Application.Terminate;
1496     end;
1497    
1498     procedure TGikoForm.FormDestroy(Sender: TObject);
1499     var
1500 yoffy 1.376 i : Integer;
1501 h677 1.241 // CoolSet: TCoolSet;
1502 yoffy 1.376 wp : TWindowPlacement;
1503     tmpBool : Boolean;
1504 h677 1.241 begin
1505 yoffy 1.460 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1506 yoffy 1.456 try
1507     MouseGesture.UnHook;
1508     except
1509     end;
1510 yoffy 1.236 try
1511 yoffy 1.410 ActiveListColumnSave;
1512 yoffy 1.236 except
1513     end;
1514     try
1515 h677 1.234 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1516     wp.length := sizeof(wp);
1517     GetWindowPlacement(Handle, @wp);
1518     GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1519     GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1520     GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1521     GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1522     GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1523    
1524     GikoSys.Setting.ListStyle := ListView.ViewStyle;
1525 h677 1.539 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1526 h677 1.234 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1527     GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1528     GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1529 h677 1.539 if GikoDM.ArrangeAction.Checked then
1530 h677 1.234 GikoSys.Setting.ListOrientation := gloVertical
1531     else
1532     GikoSys.Setting.ListOrientation := gloHorizontal;
1533     GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1534 yoffy 1.236 except
1535 yoffy 1.2 end;
1536 yoffy 1.378
1537     try
1538     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
1539     if not GikoSys.Setting.ResRangeHold then
1540 yoffy 1.380 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1541 yoffy 1.378 except
1542     end;
1543 h677 1.483 if WindowState <> wsNormal then
1544     WindowState := wsNormal;
1545     SaveCoolBarSettings;
1546     try
1547     GikoSys.Setting.WriteWindowSettingFile;
1548     GikoSys.Setting.WriteNameMailSettingFile;
1549     except
1550     end;
1551 yoffy 1.378 // 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申 CoolBar 鐃緒申鐃緒申
1552 yoffy 1.216 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1553 h677 1.482
1554 yoffy 1.263 // 鐃緒申FormDestroy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?2004/04/09鐃?
1555 yoffy 1.216 // CoolBar 鐃緒申鐃緒申
1556 h677 1.482 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1557 h677 1.483
1558 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1559     InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1560 yoffy 1.2
1561     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1562 hi_ 1.1 try
1563 yoffy 1.236 //FavoriteDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1564 yoffy 1.2 FavoriteDM.WriteFavorite;
1565 yoffy 1.236 FavoriteDM.Clear;
1566 hi_ 1.1 except
1567     end;
1568 h677 1.483 LockWindowUpdate(Self.Handle);
1569 hi_ 1.1 try
1570     //鐃?鐃?鐃?鐃緒申鐃?鐃?
1571 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1572     GikoSys.Setting.ShowDialogForAllTabClose := false;
1573 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1574 h677 1.483 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1575 h677 1.299 except
1576     end;
1577 h677 1.321 try
1578     for i := FBrowsers.Count - 1 downto 0 do begin
1579     TWebBrowser(FBrowsers[i]).Free;
1580     end;
1581     FBrowsers.Clear;
1582     FBrowsers.Capacity := 0;
1583     finally
1584     FBrowsers.Free;
1585 h677 1.303 end;
1586 h677 1.299 try
1587     if BrowserNullTab <> nil then begin
1588     BrowserNullTab.Browser := nil; {*BrowserNullTab鐃緒申Browser鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
1589     *鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Free鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1590     *}
1591     BrowserNullTab.Free;
1592 hi_ 1.1 end;
1593     except
1594     end;
1595 h677 1.483
1596 h677 1.224 try
1597 yoffy 1.236 TreeView.Items.BeginUpdate;
1598 yoffy 1.380 TreeView.Items.GetFirstNode.Free;
1599 yoffy 1.236 TreeView.Items.Clear;
1600     TreeView.Items.EndUpdate;
1601 h677 1.224 except
1602     end;
1603 h677 1.230
1604 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1605     try
1606 yoffy 1.236 //AddressHistoryDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1607 h677 1.513 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1608 hi_ 1.1 except
1609     end;
1610    
1611 h677 1.234 //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1612 hi_ 1.1 try
1613 h677 1.234 SaveHistory;
1614 hi_ 1.1 except
1615     end;
1616 yoffy 1.236 try
1617     try
1618     ClearHistory;
1619     except
1620     end;
1621     finally
1622     FHistoryList.Free;
1623     end;
1624 h677 1.221
1625 h677 1.182 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申&鐃?鐃緒申
1626     try
1627     RoundList.SaveRoundFile;
1628     except
1629     end;
1630 yoffy 1.236 try
1631 h677 1.234 try
1632 yoffy 1.236 RoundList.Clear;
1633 h677 1.234 except
1634     end;
1635 yoffy 1.236 finally
1636     RoundList.Free;
1637     end;
1638 h677 1.182
1639 yoffy 1.236 try
1640 h677 1.234 try
1641     FControlThread.Terminate;
1642 yoffy 1.236 FControlThread.WaitFor;
1643 h677 1.234 except
1644 h677 1.219 end;
1645 yoffy 1.236 finally
1646     FControlThread.Free;
1647     end;
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    
1827     procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1828     var
1829     p: TPoint;
1830     s: string;
1831     tmp2: string;
1832     URL: string;
1833     ATitle: Boolean;
1834    
1835 yoffy 1.130 threadItem : TThreadItem;
1836     board : TBoard;
1837 yoffy 1.163 Protocol, Host, Path, Document, Port, Bookmark: string;
1838 yoffy 1.130
1839 h677 1.333 wkInt: Integer;
1840 hi_ 1.1 wkIntSt: Integer;
1841     wkIntTo: Integer;
1842     ActiveFileName: string;
1843     e: IHTMLElement;
1844     Ext: string;
1845     PathRec: TPathRec;
1846     begin
1847 h677 1.316 if not( TObject(Sender) is TWebBrowser )then
1848     Exit;
1849 hi_ 1.1 try
1850     try
1851 h677 1.316 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1852     if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1853     OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1854 h677 1.306 end;
1855 hi_ 1.1 end;
1856     except
1857     end;
1858     finally
1859     end;
1860     if PreviewTimer.Enabled then
1861     PreviewTimer.Enabled := False;
1862     Application.CancelHint;
1863 h677 1.333 try
1864     if GetActiveContent <> nil then
1865     ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1866     else
1867     ActiveFileName := '';
1868     except
1869     FActiveContent := nil;
1870     Exit;
1871     end;
1872 hi_ 1.1
1873     StatusBar.Panels[1].Text := Text;
1874    
1875     if FHint <> nil then begin
1876     FHint.ReleaseHandle;
1877     FHint.ClearAllRes;
1878     end;
1879     if FPreviewBrowser <> nil then
1880     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1881    
1882     if not GikoSys.Setting.UnActivePopup then
1883     if not GikoForm.Active then
1884     Exit;
1885    
1886     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1887     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1888    
1889     s := '';
1890     Ext := AnsiLowerCase(ExtractFileExt(Text));
1891     if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
1892     ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1893     if FPreviewBrowser = nil then begin
1894     FPreviewBrowser := TPreviewBrowser.Create(Self);
1895     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1896     TOleControl(FPreviewBrowser).Parent := nil;
1897     end;
1898 h677 1.316 FPreviewBrowser.Navigate(BLANK_HTML);//鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1899 hi_ 1.1 FPreviewURL := Text;
1900     PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1901     PreviewTimer.Enabled := True;
1902     end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
1903     if Pos('mailto:', Text) = 1 then begin
1904     s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
1905     //鐃?鐃?鐃?鐃?鐃?鐃緒申 鐃?鐃?鐃?3鐃緒申466鐃緒申鐃緒申鐃緒申鐃緒申
1906     GetCursorPos(p);
1907     p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1908     p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1909     e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1910     if (Assigned(e)) then begin
1911 h677 1.297 tmp2 := ZenToHan(e.Get_outerText);
1912 hi_ 1.1 if (GikoSys.IsNumeric(tmp2)) then begin
1913     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1914     wkIntSt := StrToInt(tmp2);
1915     wkIntTo := StrToInt(tmp2);
1916     //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1917     FHint.PopupType := gptThread;
1918 h677 1.530 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1919 hi_ 1.1 end else begin
1920     FHint.PopupType := gptRaw;
1921     FHint.Caption := s;
1922     end;
1923     end;
1924     end else begin
1925 h677 1.319 threadItem := GetActiveContent;
1926 h677 1.530 URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
1927 yoffy 1.274 PathRec := Gikosys.Parse2chURL2(URL);
1928 q9_ 1.354 if (PathRec.FNoParam) then begin
1929     PathRec.FSt := 1;
1930     PathRec.FTo := 1;
1931 h677 1.447 end else begin
1932 q9_ 1.352 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1933 h677 1.447 end;
1934 yoffy 1.163 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1935 hi_ 1.1
1936 h677 1.168 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1937 yoffy 1.162
1938 yoffy 1.163 URL := GikoSys.GetBrowsableThreadURL( URL );
1939 yoffy 1.274 wkIntSt := PathRec.FSt;
1940     wkIntTo := PathRec.FTo;
1941 hi_ 1.1
1942     if (wkIntSt = 0) and (wkIntTo = 0) then begin
1943     wkIntSt := 1;
1944     wkIntTo := 1;
1945     end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1946     wkIntSt := wkIntTo;
1947     end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1948     wkIntTo := wkIntSt;
1949     end else if wkIntSt > wkIntTo then begin
1950 h677 1.333 wkInt := wkIntTo;
1951 hi_ 1.1 wkIntTo := wkIntSt;
1952 h677 1.333 wkIntSt := wkInt;
1953 hi_ 1.1 end;
1954 h677 1.299 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1955 yoffy 1.274 ATitle := false
1956     else
1957     ATitle := true;
1958 hi_ 1.1
1959 yoffy 1.160 threadItem := BBSsFindThreadFromURL( URL );
1960 h677 1.170
1961 yoffy 1.163 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1962     board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1963 yoffy 1.274 if board <> nil then begin
1964     if not board.IsThreadDatRead then
1965     GikoSys.ReadSubjectFile( board );
1966 yoffy 1.270 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1967 yoffy 1.274 end;
1968 yoffy 1.130 end;
1969 h677 1.319
1970 yoffy 1.130 if threadItem <> nil then begin
1971 yoffy 1.127 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1972 h677 1.512 //URL鐃緒申鐃緒申鐃緒申鐃緒申/鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1973     if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1974     wkIntSt := 1;
1975     wkIntTo := 1;
1976     end;
1977 yoffy 1.127 FHint.PopupType := gptThread;
1978 h677 1.530 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1979 yoffy 1.127 end;
1980 hi_ 1.1 end;
1981 h677 1.168 end;
1982 hi_ 1.1
1983     if FHint.PopupType = gptRaw then begin
1984     if FHint.Caption <> '' then
1985     ShowTextPopup;
1986     end else begin
1987 yoffy 1.2 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
1988 hi_ 1.1 ShowTextPopup;
1989     end;
1990     end;
1991     end;
1992    
1993     procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
1994     var
1995     SysMenu: HMenu;
1996     begin
1997     FEnabledCloseButton := Enabled;
1998     SysMenu := GetSystemMenu(Handle, False);
1999    
2000     if Enabled then begin
2001     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2002     end else begin
2003     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2004     end;
2005    
2006     DrawMenuBar(Handle);
2007     end;
2008    
2009     procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2010     var AllowChange: Boolean);
2011     begin
2012 q9_ 1.369 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2013     // if FTreeType = gtt2ch then
2014     // FSortIndex := -1;
2015 hi_ 1.1 end;
2016    
2017     procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2018     Shift: TShiftState);
2019 yoffy 1.428 var
2020     pos : TPoint;
2021 hi_ 1.1 begin
2022 yoffy 1.236 if GetActiveList is TBoard then begin
2023 yoffy 1.428 case Key of
2024     VK_BACK:; // UpFolderButtonClick(Sender);
2025     VK_SPACE: ListDoubleClick(Shift);
2026     VK_RETURN: ListClick;
2027     VK_APPS:
2028     begin
2029     if ListView.Selected <> nil then begin
2030     pos.X := ListView.Column[ 0 ].Width;
2031     pos.Y := ListView.Selected.Top;
2032     end else begin
2033     pos.X := ListView.Left;
2034     pos.Y := ListView.Top;
2035     end;
2036     Windows.ClientToScreen( ListView.Handle, pos );
2037     ListPopupMenu.Popup( pos.X, pos.Y );
2038     end;
2039 yoffy 1.236 end;
2040     end else begin // TBBS, TCategory
2041 yoffy 1.428 case Key of
2042     VK_BACK:; // UpFolderButtonClick(Sender);
2043     VK_SPACE: ListClick;
2044     VK_RETURN: ListDoubleClick(Shift);
2045     VK_APPS:
2046     begin
2047     if ListView.Selected <> nil then begin
2048     pos.X := ListView.Column[ 0 ].Width;
2049     pos.Y := ListView.Selected.Top;
2050     end else begin
2051     pos.X := ListView.Left;
2052     pos.Y := ListView.Top;
2053     end;
2054     Windows.ClientToScreen( ListView.Handle, pos );
2055     ListPopupMenu.Popup( pos.X, pos.Y );
2056     end;
2057 yoffy 1.236 end;
2058 hi_ 1.1 end;
2059     end;
2060    
2061     function TGikoForm.GetHttpState: Boolean;
2062     begin
2063     Result := FHttpState;
2064     end;
2065    
2066     procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2067     Column: TListColumn);
2068 yoffy 1.413 var
2069     id, idx : Integer;
2070     orderList : TList;
2071 h677 1.570 vSortIndex : Integer;
2072     vSortOrder : Boolean;
2073 hi_ 1.1 begin
2074 h677 1.530 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2075 h677 1.570 if TObject( FActiveList ) is TBBS then begin
2076     orderList := GikoSys.Setting.BBSColumnOrder;
2077     vSortIndex := GikoSys.Setting.BBSSortIndex;
2078     vSortOrder := GikoSys.Setting.BBSSortOrder;
2079     end else if TObject( FActiveList ) is TCategory then begin
2080     orderList := GikoSys.Setting.CategoryColumnOrder;
2081     vSortIndex := GikoSys.Setting.CategorySortIndex;
2082     vSortOrder := GikoSys.Setting.CategorySortOrder;
2083     end else if TObject( FActiveList ) is TBoard then begin
2084     orderList := GikoSys.Setting.BoardColumnOrder;
2085     vSortIndex := GikoSys.Setting.BoardSortIndex;
2086     vSortOrder := GikoSys.Setting.BoardSortOrder;
2087     end else
2088 yoffy 1.413 Exit;
2089    
2090     id := Integer( orderList[ idx ] );
2091    
2092 h677 1.570
2093     if vSortIndex = id then
2094     vSortOrder := not vSortOrder
2095 h677 1.464 else begin
2096 h677 1.572 vSortOrder := id = 0;
2097 h677 1.570 end;
2098 h677 1.572
2099 h677 1.570 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2100 hi_ 1.1 end;
2101    
2102     procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2103     Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2104     var
2105     ARect: TRect;
2106     begin
2107 yoffy 1.2 DefaultDraw := True;
2108     Exit;
2109 hi_ 1.1 DefaultDraw := False;
2110     if (cdsSelected in State) or (cdsHot in State) then begin
2111     Sender.Canvas.Brush.Color := clHighlight;
2112     Sender.Canvas.Font.Color := clHighlightText;
2113     end else begin
2114     Sender.Canvas.Brush.Color := clBtnFace;
2115     Sender.Canvas.Font.Color := clBtnText;
2116     end;
2117     ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2118     Sender.Canvas.FillRect(ARect);
2119     DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2120     end;
2121    
2122     function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2123     var
2124     Nodes: TTreeNodes;
2125     i: integer;
2126     begin
2127     Nodes := TreeView.Items;
2128    
2129     for i := 0 to Nodes.Count - 1 do begin
2130     if Nodes.Item[i].Data = Data then begin
2131     Result := Nodes.Item[i];
2132     Exit;
2133     end;
2134     end;
2135     Result := nil;
2136     end;
2137    
2138     procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2139     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2140     Headers: OleVariant; var Cancel: WordBool);
2141     var
2142     sNo: string;
2143     p: TPoint;
2144 yoffy 1.56 const
2145     kMenuName: string = 'menu:';
2146 hi_ 1.1 begin
2147 yoffy 1.56
2148     if Pos(kMenuName, URL) <> 0 then begin
2149 yoffy 1.100 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2150    
2151 hi_ 1.1 if not GikoSys.IsNumeric(sNo) then Exit;
2152    
2153     Cancel := True;
2154     GetCursorpos(p);
2155     KokoPopupMenu.Tag := StrToInt(sNo);
2156     KokoPopupMenu.Popup(p.x, p.y);
2157     end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2158     Cancel := not GikoSys.Setting.OpenMailer;
2159     end;
2160 yoffy 1.56
2161 hi_ 1.1 end;
2162    
2163     procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2164     const ARect: TRect; var DefaultDraw: Boolean);
2165     var
2166     NodeRect: TRect;
2167     i, j: Integer;
2168     IsBoardNode: Boolean;
2169     Cnt: Integer;
2170     CntText: string;
2171     TextWidth: Integer;
2172     TextRect: TRect;
2173     Board: TBoard;
2174     Category: TCategory;
2175     Bitmap: TBitmap;
2176     NodeWidth: Integer;
2177     begin
2178     DefaultDraw := True;
2179    
2180     if FTreeType = gttHistory then Exit;
2181    
2182     TreeView.Canvas.Font.Color := clBlue;
2183     IsBoardNode := False;
2184 h677 1.95 for i := 0 to TreeView.Items.Count - 1 do begin
2185 yoffy 1.51 Cnt := 0;
2186 hi_ 1.1 if not TreeView.Items[i].IsVisible then
2187     continue;
2188    
2189     if TObject(TreeView.Items[i].Data) is TCategory then begin
2190     if TreeView.Items[i].Expanded then
2191     continue;
2192    
2193     IsBoardNode := False;
2194     Category := TCategory(TreeView.Items[i].Data);
2195     for j := 0 to Category.Count - 1 do begin
2196     Board := Category.Items[j];
2197     if Board <> nil then begin
2198     if Board.UnRead > 0 then begin
2199     Cnt := 1;
2200     Break;
2201     end;
2202     end;
2203     end;
2204     if Cnt <> 1 then
2205     continue;
2206     end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2207     IsBoardNode := True;
2208     Board := TBoard(TreeView.Items[i].Data);
2209 h677 1.514
2210 hi_ 1.1 Cnt := Board.UnRead;
2211     if Cnt <= 0 then
2212     continue;
2213     end else
2214     continue;
2215    
2216     Bitmap := TBitmap.Create;
2217     try
2218     Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2219     Bitmap.Canvas.Font.Style := [fsBold];
2220     NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2221     finally
2222     Bitmap.Free;
2223     end;
2224    
2225     NodeRect := TreeView.Items[i].DisplayRect(True);
2226    
2227     if IsBoardNode then
2228     CntText := '(' + IntToStr(Cnt) + ')'
2229 h677 1.95 else if Cnt = 1 then
2230 hi_ 1.1 CntText := '(+)';
2231 h677 1.95
2232 hi_ 1.1
2233     TextWidth := TreeView.Canvas.TextWidth(CntText);
2234    
2235     TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2236     NodeRect.Top,
2237     NodeRect.Left + NodeWidth + TextWidth + 8,
2238     NodeRect.Bottom);
2239     DrawText(TreeView.Canvas.Handle,
2240     PChar(CntText),
2241     -1,
2242     TextRect,
2243     DT_SINGLELINE or DT_VCENTER);
2244     end;