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.598 - (hide annotations) (download) (as text)
Sat Mar 4 12:31:45 2006 UTC (18 years, 1 month ago) by h677
Branch: MAIN
CVS Tags: v1_52_0_651
Changes since 1.597: +27 -23 lines
File MIME type: text/x-pascal
スレ一覧の絞込みで、生前スレ&DAT落ちスレの解除がしない不具合の修正

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 yoffy 1.236 if ( GikoSys.Setting.ShowDialogForEnd ) and
1469     (MessageDlg('鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1470     CanClose := false;
1471     Exit;
1472     end else begin
1473     CanClose := True;
1474 yoffy 1.398 if GikoSys.Setting.TabAutoLoadSave then begin
1475 h677 1.539 GikoDM.TabAutoSaveAction.Execute;
1476 yoffy 1.398 end;
1477 yoffy 1.236 end;
1478 h677 1.498 { //2ch鐃緒申鐃緒申鐃緒申鐃緒申Free
1479 h677 1.462 if GikoSys.Setting.Gengo <> nil then begin
1480     GikoSys.Setting.Gengo.Free;
1481 genyakun 1.458 end;
1482 h677 1.498 }
1483 h677 1.241 Application.UnhookMainWindow(Hook);
1484     Application.Terminate;
1485     end;
1486    
1487     procedure TGikoForm.FormDestroy(Sender: TObject);
1488     var
1489 yoffy 1.376 i : Integer;
1490 h677 1.241 // CoolSet: TCoolSet;
1491 yoffy 1.376 wp : TWindowPlacement;
1492     tmpBool : Boolean;
1493 h677 1.241 begin
1494 yoffy 1.460 // 鐃?鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申
1495 yoffy 1.456 try
1496     MouseGesture.UnHook;
1497     except
1498     end;
1499 yoffy 1.236 try
1500 yoffy 1.410 ActiveListColumnSave;
1501 yoffy 1.236 except
1502     end;
1503     try
1504 h677 1.234 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申
1505     wp.length := sizeof(wp);
1506     GetWindowPlacement(Handle, @wp);
1507     GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1508     GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1509     GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1510     GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1511     GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1512    
1513     GikoSys.Setting.ListStyle := ListView.ViewStyle;
1514 h677 1.539 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1515 h677 1.234 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1516     GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1517     GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1518 h677 1.539 if GikoDM.ArrangeAction.Checked then
1519 h677 1.234 GikoSys.Setting.ListOrientation := gloVertical
1520     else
1521     GikoSys.Setting.ListOrientation := gloHorizontal;
1522     GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1523 yoffy 1.236 except
1524 yoffy 1.2 end;
1525 yoffy 1.378
1526     try
1527     // 鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申
1528     if not GikoSys.Setting.ResRangeHold then
1529 yoffy 1.380 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1530 yoffy 1.378 except
1531     end;
1532 h677 1.483 if WindowState <> wsNormal then
1533     WindowState := wsNormal;
1534     SaveCoolBarSettings;
1535     try
1536     GikoSys.Setting.WriteWindowSettingFile;
1537     GikoSys.Setting.WriteNameMailSettingFile;
1538     except
1539     end;
1540 yoffy 1.378 // 鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃緒申 CoolBar 鐃緒申鐃緒申
1541 yoffy 1.216 // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1542 h677 1.482
1543 yoffy 1.263 // 鐃緒申FormDestroy鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?2004/04/09鐃?
1544 yoffy 1.216 // CoolBar 鐃緒申鐃緒申
1545 h677 1.482 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1546 h677 1.483
1547 h677 1.583 //鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1548     InputAssistDM.SaveToFile(GikoSys.GetInputAssistFileName);
1549 yoffy 1.2
1550     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1551 hi_ 1.1 try
1552 yoffy 1.236 //FavoriteDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1553 yoffy 1.2 FavoriteDM.WriteFavorite;
1554 yoffy 1.236 FavoriteDM.Clear;
1555 hi_ 1.1 except
1556     end;
1557 h677 1.483 LockWindowUpdate(Self.Handle);
1558 hi_ 1.1 try
1559     //鐃?鐃?鐃?鐃緒申鐃?鐃?
1560 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1561     GikoSys.Setting.ShowDialogForAllTabClose := false;
1562 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1563 h677 1.483 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1564 h677 1.299 except
1565     end;
1566 h677 1.321 try
1567     for i := FBrowsers.Count - 1 downto 0 do begin
1568     TWebBrowser(FBrowsers[i]).Free;
1569     end;
1570     FBrowsers.Clear;
1571     FBrowsers.Capacity := 0;
1572     finally
1573     FBrowsers.Free;
1574 h677 1.303 end;
1575 h677 1.299 try
1576     if BrowserNullTab <> nil then begin
1577     BrowserNullTab.Browser := nil; {*BrowserNullTab鐃緒申Browser鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?
1578     *鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申Free鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1579     *}
1580     BrowserNullTab.Free;
1581 hi_ 1.1 end;
1582     except
1583     end;
1584 h677 1.483
1585 h677 1.224 try
1586 yoffy 1.236 TreeView.Items.BeginUpdate;
1587 yoffy 1.380 TreeView.Items.GetFirstNode.Free;
1588 yoffy 1.236 TreeView.Items.Clear;
1589     TreeView.Items.EndUpdate;
1590 h677 1.224 except
1591     end;
1592 h677 1.230
1593 hi_ 1.1 //鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1594     try
1595 yoffy 1.236 //AddressHistoryDM鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1596 h677 1.513 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1597 hi_ 1.1 except
1598     end;
1599    
1600 h677 1.234 //鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1601 hi_ 1.1 try
1602 h677 1.234 SaveHistory;
1603 hi_ 1.1 except
1604     end;
1605 yoffy 1.236 try
1606     try
1607     ClearHistory;
1608     except
1609     end;
1610     finally
1611     FHistoryList.Free;
1612     end;
1613 h677 1.221
1614 h677 1.182 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申&鐃?鐃緒申
1615     try
1616     RoundList.SaveRoundFile;
1617     except
1618     end;
1619 yoffy 1.236 try
1620 h677 1.234 try
1621 yoffy 1.236 RoundList.Clear;
1622 h677 1.234 except
1623     end;
1624 yoffy 1.236 finally
1625     RoundList.Free;
1626     end;
1627 h677 1.182
1628 yoffy 1.236 try
1629 h677 1.234 try
1630     FControlThread.Terminate;
1631 yoffy 1.236 FControlThread.WaitFor;
1632 h677 1.234 except
1633 h677 1.219 end;
1634 yoffy 1.236 finally
1635     FControlThread.Free;
1636     end;
1637 h677 1.230
1638 yoffy 1.155 // TBBS 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申 TCategory, TBoard, TThreadItem 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1639     // TBoard, TThreadItem 鐃緒申鐃?鐃?鐃?鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申
1640     // BoardPluteIns 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1641 h677 1.550 for i := Length(BoardGroups) - 1 downto 0 do begin
1642 h677 1.517 //BoardGroups[i].Clear;
1643     BoardGroups[i].Free;
1644 h677 1.550 end;
1645 h677 1.514
1646 yoffy 1.126 try
1647 h677 1.220 for i := Length( BBSs ) - 1 downto 0 do begin
1648 h677 1.153 if BBSs[ i ] <> nil then
1649     BBSs[ i ].Free;
1650     BBSs[ i ] := nil;
1651     end;
1652     except
1653     end;
1654 yoffy 1.155
1655 h677 1.234 try
1656 yoffy 1.236 if FEvent <> nil then
1657     FEvent.Free;
1658 h677 1.181
1659 yoffy 1.2 //Hint鐃?鐃緒申
1660     if FHint <> nil then begin
1661     FHint.ReleaseHandle;
1662     FHint.Free;
1663     FHint := nil;
1664     end;
1665     //Preview鐃?鐃緒申
1666     if TPreviewBrowser <> nil then begin
1667     FPreviewBrowser.Free;
1668     FPreviewBrowser := nil;
1669     end;
1670     except
1671     end;
1672 h677 1.550 LockWindowUpdate(0);
1673 hi_ 1.1 end;
1674    
1675 yoffy 1.289 // 鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃? BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?
1676     procedure TGikoForm.SetBBSMenu;
1677 yoffy 1.123 var
1678     i : Integer;
1679 yoffy 1.149 item : TBBSMenuItem;
1680 hi_ 1.1 begin
1681    
1682 yoffy 1.148 // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1683     for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1684     try
1685     if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1686 yoffy 1.155 CabinetSelectPopupMenu.Items[ i ].Free;
1687     CabinetMenu.Items[ i ].Free;
1688 yoffy 1.289 BBSSelectPopupMenu.Items[ i ].Free;
1689 yoffy 1.148 end;
1690     except
1691     end;
1692     end;
1693 yoffy 1.289
1694     // 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申
1695 yoffy 1.148 for i := Length( BBSs ) - 1 downto 0 do begin
1696     try
1697     item := TBBSMenuItem.Create( PopupMenu );
1698     item.Caption := BBSs[ i ].Title;
1699     item.Data := BBSs[ i ];
1700     item.OnClick := BBSMenuItemOnClick;
1701     CabinetSelectPopupMenu.Items.Insert( 0, item );
1702     item := TBBSMenuItem.Create( PopupMenu );
1703     item.Caption := BBSs[ i ].Title;
1704     item.Data := BBSs[ i ];
1705     item.OnClick := BBSMenuItemOnClick;
1706     CabinetMenu.Insert( 0, item );
1707 yoffy 1.289 item := TBBSMenuItem.Create( PopupMenu );
1708     item.Caption := BBSs[ i ].Title;
1709     item.Data := BBSs[ i ];
1710     item.OnClick := BBSMenuItemOnClick;
1711     BBSSelectPopupMenu.Items.Insert( 0, Item );
1712 yoffy 1.148 except
1713     end;
1714     end;
1715 yoffy 1.289
1716     end;
1717    
1718     procedure TGikoForm.ReloadBBS;
1719     var
1720     i : Integer;
1721 h677 1.321 tmpBool: Boolean;
1722 yoffy 1.289 begin
1723 h677 1.517 LockWindowUpdate(Self.Handle);
1724    
1725 yoffy 1.289 //鐃?鐃?鐃?鐃緒申鐃?鐃?
1726 h677 1.321 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1727     GikoSys.Setting.ShowDialogForAllTabClose := false;
1728 h677 1.539 GikoDM.AllTabCloseAction.Execute;
1729 h677 1.321 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1730 h677 1.320 SetContent(BrowserNullTab);
1731 yoffy 1.289 //TreeView鐃?鐃緒申鐃?鐃?BBS2ch.Free鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申XP鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃?
1732     TreeView.Items.Clear;
1733    
1734 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申
1735     try
1736     RoundList.SaveRoundFile;
1737     except
1738     end;
1739     //鐃緒申鐃緒申鐃緒申鐃?鐃?鐃緒申鐃?鐃緒申
1740     try
1741     RoundList.Clear;
1742     except
1743     end;
1744    
1745     //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1746 h677 1.517 try
1747     SaveHistory;
1748     ClearHistory;
1749     except
1750     end;
1751 h677 1.515
1752     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申
1753 h677 1.517 try
1754     FavoriteDM.WriteFavorite;
1755     FavoriteDM.Clear;
1756     except
1757     end;
1758 h677 1.515
1759 h677 1.516 //鐃緒申鐃?鐃?鐃緒申鐃?PLUGIN鐃緒申鐃?鐃緒申
1760     for i := Length(BoardGroups) - 1 downto 0 do begin
1761 h677 1.517 try
1762     BoardGroups[i].Free;
1763     except
1764     end;
1765 h677 1.516 end;
1766 yoffy 1.289 //BBS鐃?鐃緒申
1767     try
1768     for i := Length( BBSs ) - 1 downto 0 do begin
1769     if BBSs[ i ] <> nil then
1770     BBSs[ i ].Free;
1771     BBSs[ i ] := nil;
1772     end;
1773     except
1774     end;
1775    
1776     ActiveList := nil;
1777    
1778     FTreeType := gttNone;
1779 h677 1.516
1780     //============鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申================================//
1781    
1782     // 鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?(ReadBoardFile, LoadHistory 鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申)
1783     InitializeBoardPlugIns;
1784    
1785 yoffy 1.289 GikoSys.ListBoardFile; //鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申
1786    
1787 h677 1.515 // 鐃緒申鐃緒申鐃緒申鐃緒申BBS鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1788     for i := Length(BBSs) - 1 downto 0 do begin
1789     if not BBSs[i].IsBoardFileRead then
1790     GikoSys.ReadBoardFile(BBSs[i]);
1791     end;
1792    
1793 yoffy 1.289 // BBS 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?
1794     SetBBSMenu;
1795    
1796 yoffy 1.123 ShowBBSTree( BBSs[ 0 ] );
1797 yoffy 1.143
1798     // 鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1799     LoadHistory;
1800    
1801     //鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1802     FavoriteDM.ReadFavorite;
1803 yoffy 1.279
1804 yoffy 1.143 SetLinkBar;
1805    
1806 h677 1.515 //鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
1807 h677 1.514 RoundList.LoadRoundBoardFile;
1808     RoundList.LoadRoundThreadFile;
1809    
1810 h677 1.517 LockWindowUpdate(0);
1811 h677 1.476 //
1812 h677 1.539 GikoDM.TabsOpenAction.Execute;
1813 hi_ 1.1 end;
1814    
1815    
1816     procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1817     var
1818     p: TPoint;
1819     s: string;
1820     tmp2: string;
1821     URL: string;
1822     ATitle: Boolean;
1823    
1824 yoffy 1.130 threadItem : TThreadItem;
1825     board : TBoard;
1826 yoffy 1.163 Protocol, Host, Path, Document, Port, Bookmark: string;
1827 yoffy 1.130
1828 h677 1.333 wkInt: Integer;
1829 hi_ 1.1 wkIntSt: Integer;
1830     wkIntTo: Integer;
1831     ActiveFileName: string;
1832     e: IHTMLElement;
1833     Ext: string;
1834     PathRec: TPathRec;
1835     begin
1836 h677 1.316 if not( TObject(Sender) is TWebBrowser )then
1837     Exit;
1838 hi_ 1.1 try
1839     try
1840 h677 1.316 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1841     if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1842     OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1843 h677 1.306 end;
1844 hi_ 1.1 end;
1845     except
1846     end;
1847     finally
1848     end;
1849     if PreviewTimer.Enabled then
1850     PreviewTimer.Enabled := False;
1851     Application.CancelHint;
1852 h677 1.333 try
1853     if GetActiveContent <> nil then
1854     ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1855     else
1856     ActiveFileName := '';
1857     except
1858     FActiveContent := nil;
1859     Exit;
1860     end;
1861 hi_ 1.1
1862     StatusBar.Panels[1].Text := Text;
1863    
1864     if FHint <> nil then begin
1865     FHint.ReleaseHandle;
1866     FHint.ClearAllRes;
1867     end;
1868     if FPreviewBrowser <> nil then
1869     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1870    
1871     if not GikoSys.Setting.UnActivePopup then
1872     if not GikoForm.Active then
1873     Exit;
1874    
1875     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1876     //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1877    
1878     s := '';
1879     Ext := AnsiLowerCase(ExtractFileExt(Text));
1880     if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
1881     ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1882     if FPreviewBrowser = nil then begin
1883     FPreviewBrowser := TPreviewBrowser.Create(Self);
1884     ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1885     TOleControl(FPreviewBrowser).Parent := nil;
1886     end;
1887 h677 1.316 FPreviewBrowser.Navigate(BLANK_HTML);//鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1888 hi_ 1.1 FPreviewURL := Text;
1889     PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1890     PreviewTimer.Enabled := True;
1891     end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
1892     if Pos('mailto:', Text) = 1 then begin
1893     s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
1894     //鐃?鐃?鐃?鐃?鐃?鐃緒申 鐃?鐃?鐃?3鐃緒申466鐃緒申鐃緒申鐃緒申鐃緒申
1895     GetCursorPos(p);
1896     p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1897     p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1898     e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1899     if (Assigned(e)) then begin
1900 h677 1.297 tmp2 := ZenToHan(e.Get_outerText);
1901 hi_ 1.1 if (GikoSys.IsNumeric(tmp2)) then begin
1902     //鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1903     wkIntSt := StrToInt(tmp2);
1904     wkIntTo := StrToInt(tmp2);
1905     //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1906     FHint.PopupType := gptThread;
1907 h677 1.530 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1908 hi_ 1.1 end else begin
1909     FHint.PopupType := gptRaw;
1910     FHint.Caption := s;
1911     end;
1912     end;
1913     end else begin
1914 h677 1.319 threadItem := GetActiveContent;
1915 h677 1.530 URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
1916 yoffy 1.274 PathRec := Gikosys.Parse2chURL2(URL);
1917 q9_ 1.354 if (PathRec.FNoParam) then begin
1918     PathRec.FSt := 1;
1919     PathRec.FTo := 1;
1920 h677 1.447 end else begin
1921 q9_ 1.352 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1922 h677 1.447 end;
1923 yoffy 1.163 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1924 hi_ 1.1
1925 h677 1.168 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1926 yoffy 1.162
1927 yoffy 1.163 URL := GikoSys.GetBrowsableThreadURL( URL );
1928 yoffy 1.274 wkIntSt := PathRec.FSt;
1929     wkIntTo := PathRec.FTo;
1930 hi_ 1.1
1931     if (wkIntSt = 0) and (wkIntTo = 0) then begin
1932     wkIntSt := 1;
1933     wkIntTo := 1;
1934     end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1935     wkIntSt := wkIntTo;
1936     end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1937     wkIntTo := wkIntSt;
1938     end else if wkIntSt > wkIntTo then begin
1939 h677 1.333 wkInt := wkIntTo;
1940 hi_ 1.1 wkIntTo := wkIntSt;
1941 h677 1.333 wkIntSt := wkInt;
1942 hi_ 1.1 end;
1943 h677 1.299 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1944 yoffy 1.274 ATitle := false
1945     else
1946     ATitle := true;
1947 hi_ 1.1
1948 yoffy 1.160 threadItem := BBSsFindThreadFromURL( URL );
1949 h677 1.170
1950 yoffy 1.163 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1951     board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1952 yoffy 1.274 if board <> nil then begin
1953     if not board.IsThreadDatRead then
1954     GikoSys.ReadSubjectFile( board );
1955 yoffy 1.270 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1956 yoffy 1.274 end;
1957 yoffy 1.130 end;
1958 h677 1.319
1959 yoffy 1.130 if threadItem <> nil then begin
1960 yoffy 1.127 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1961 h677 1.512 //URL鐃緒申鐃緒申鐃緒申鐃緒申/鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?
1962     if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1963     wkIntSt := 1;
1964     wkIntTo := 1;
1965     end;
1966 yoffy 1.127 FHint.PopupType := gptThread;
1967 h677 1.530 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1968 yoffy 1.127 end;
1969 hi_ 1.1 end;
1970 h677 1.168 end;
1971 hi_ 1.1
1972     if FHint.PopupType = gptRaw then begin
1973     if FHint.Caption <> '' then
1974     ShowTextPopup;
1975     end else begin
1976 yoffy 1.2 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
1977 hi_ 1.1 ShowTextPopup;
1978     end;
1979     end;
1980     end;
1981    
1982     procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
1983     var
1984     SysMenu: HMenu;
1985     begin
1986     FEnabledCloseButton := Enabled;
1987     SysMenu := GetSystemMenu(Handle, False);
1988    
1989     if Enabled then begin
1990     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
1991     end else begin
1992     EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
1993     end;
1994    
1995     DrawMenuBar(Handle);
1996     end;
1997    
1998     procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
1999     var AllowChange: Boolean);
2000     begin
2001 q9_ 1.369 //鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申
2002     // if FTreeType = gtt2ch then
2003     // FSortIndex := -1;
2004 hi_ 1.1 end;
2005    
2006     procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2007     Shift: TShiftState);
2008 yoffy 1.428 var
2009     pos : TPoint;
2010 hi_ 1.1 begin
2011 yoffy 1.236 if GetActiveList is TBoard then begin
2012 yoffy 1.428 case Key of
2013     VK_BACK:; // UpFolderButtonClick(Sender);
2014     VK_SPACE: ListDoubleClick(Shift);
2015     VK_RETURN: ListClick;
2016     VK_APPS:
2017     begin
2018     if ListView.Selected <> nil then begin
2019     pos.X := ListView.Column[ 0 ].Width;
2020     pos.Y := ListView.Selected.Top;
2021     end else begin
2022     pos.X := ListView.Left;
2023     pos.Y := ListView.Top;
2024     end;
2025     Windows.ClientToScreen( ListView.Handle, pos );
2026     ListPopupMenu.Popup( pos.X, pos.Y );
2027     end;
2028 yoffy 1.236 end;
2029     end else begin // TBBS, TCategory
2030 yoffy 1.428 case Key of
2031     VK_BACK:; // UpFolderButtonClick(Sender);
2032     VK_SPACE: ListClick;
2033     VK_RETURN: ListDoubleClick(Shift);
2034     VK_APPS:
2035     begin
2036     if ListView.Selected <> nil then begin
2037     pos.X := ListView.Column[ 0 ].Width;
2038     pos.Y := ListView.Selected.Top;
2039     end else begin
2040     pos.X := ListView.Left;
2041     pos.Y := ListView.Top;
2042     end;
2043     Windows.ClientToScreen( ListView.Handle, pos );
2044     ListPopupMenu.Popup( pos.X, pos.Y );
2045     end;
2046 yoffy 1.236 end;
2047 hi_ 1.1 end;
2048     end;
2049    
2050     function TGikoForm.GetHttpState: Boolean;
2051     begin
2052     Result := FHttpState;
2053     end;
2054    
2055     procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2056     Column: TListColumn);
2057 yoffy 1.413 var
2058     id, idx : Integer;
2059     orderList : TList;
2060 h677 1.570 vSortIndex : Integer;
2061     vSortOrder : Boolean;
2062 hi_ 1.1 begin
2063 h677 1.530 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2064 h677 1.570 if TObject( FActiveList ) is TBBS then begin
2065     orderList := GikoSys.Setting.BBSColumnOrder;
2066     vSortIndex := GikoSys.Setting.BBSSortIndex;
2067     vSortOrder := GikoSys.Setting.BBSSortOrder;
2068     end else if TObject( FActiveList ) is TCategory then begin
2069     orderList := GikoSys.Setting.CategoryColumnOrder;
2070     vSortIndex := GikoSys.Setting.CategorySortIndex;
2071     vSortOrder := GikoSys.Setting.CategorySortOrder;
2072     end else if TObject( FActiveList ) is TBoard then begin
2073     orderList := GikoSys.Setting.BoardColumnOrder;
2074     vSortIndex := GikoSys.Setting.BoardSortIndex;
2075     vSortOrder := GikoSys.Setting.BoardSortOrder;
2076     end else
2077 yoffy 1.413 Exit;
2078    
2079     id := Integer( orderList[ idx ] );
2080    
2081 h677 1.570
2082     if vSortIndex = id then
2083     vSortOrder := not vSortOrder
2084 h677 1.464 else begin
2085 h677 1.572 vSortOrder := id = 0;
2086 h677 1.570 end;
2087 h677 1.572
2088 h677 1.570 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2089 hi_ 1.1 end;
2090    
2091     procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2092     Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2093     var
2094     ARect: TRect;
2095     begin
2096 yoffy 1.2 DefaultDraw := True;
2097     Exit;
2098 hi_ 1.1 DefaultDraw := False;
2099     if (cdsSelected in State) or (cdsHot in State) then begin
2100     Sender.Canvas.Brush.Color := clHighlight;
2101     Sender.Canvas.Font.Color := clHighlightText;
2102     end else begin
2103     Sender.Canvas.Brush.Color := clBtnFace;
2104     Sender.Canvas.Font.Color := clBtnText;
2105     end;
2106     ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2107     Sender.Canvas.FillRect(ARect);
2108     DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2109     end;
2110    
2111     function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2112     var
2113     Nodes: TTreeNodes;
2114     i: integer;
2115     begin
2116     Nodes := TreeView.Items;
2117    
2118     for i := 0 to Nodes.Count - 1 do begin
2119     if Nodes.Item[i].Data = Data then begin
2120     Result := Nodes.Item[i];
2121     Exit;
2122     end;
2123     end;
2124     Result := nil;
2125     end;
2126    
2127     procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2128     const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2129     Headers: OleVariant; var Cancel: WordBool);
2130     var
2131     sNo: string;
2132     p: TPoint;
2133 yoffy 1.56 const
2134     kMenuName: string = 'menu:';
2135 hi_ 1.1 begin
2136 yoffy 1.56
2137     if Pos(kMenuName, URL) <> 0 then begin
2138 yoffy 1.100 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2139    
2140 hi_ 1.1 if not GikoSys.IsNumeric(sNo) then Exit;
2141    
2142     Cancel := True;
2143     GetCursorpos(p);
2144     KokoPopupMenu.Tag := StrToInt(sNo);
2145     KokoPopupMenu.Popup(p.x, p.y);
2146     end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2147     Cancel := not GikoSys.Setting.OpenMailer;
2148     end;
2149 yoffy 1.56
2150 hi_ 1.1 end;
2151    
2152     procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2153     const ARect: TRect; var DefaultDraw: Boolean);
2154     var
2155     NodeRect: TRect;
2156     i, j: Integer;
2157     IsBoardNode: Boolean;
2158     Cnt: Integer;
2159     CntText: string;
2160     TextWidth: Integer;
2161     TextRect: TRect;
2162     Board: TBoard;
2163     Category: TCategory;
2164     Bitmap: TBitmap;
2165     NodeWidth: Integer;
2166     begin
2167     DefaultDraw := True;
2168    
2169     if FTreeType = gttHistory then Exit;
2170    
2171     TreeView.Canvas.Font.Color := clBlue;
2172     IsBoardNode := False;
2173 h677 1.95 for i := 0 to TreeView.Items.Count - 1 do begin
2174 yoffy 1.51 Cnt := 0;
2175 hi_ 1.1 if not TreeView.Items[i].IsVisible then
2176     continue;
2177    
2178     if TObject(TreeView.Items[i].Data) is TCategory then begin
2179     if TreeView.Items[i].Expanded then
2180     continue;
2181    
2182     IsBoardNode := False;
2183     Category := TCategory(TreeView.Items[i].Data);
2184     for j := 0 to Category.Count - 1 do begin
2185     Board := Category.Items[j];
2186     if Board <> nil then begin
2187     if Board.UnRead > 0 then begin
2188     Cnt := 1;
2189     Break;
2190     end;
2191     end;
2192     end;
2193     if Cnt <> 1 then
2194     continue;
2195     end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2196     IsBoardNode := True;
2197     Board := TBoard(TreeView.Items[i].Data);
2198 h677 1.514
2199 hi_ 1.1 Cnt := Board.UnRead;
2200     if Cnt <= 0 then
2201     continue;
2202     end else
2203     continue;
2204    
2205     Bitmap := TBitmap.Create;
2206     try
2207     Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2208     Bitmap.Canvas.Font.Style := [fsBold];
2209     NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2210     finally
2211     Bitmap.Free;
2212     end;
2213    
2214     NodeRect := TreeView.Items[i].DisplayRect(True);
2215    
2216     if IsBoardNode then
2217     CntText := '(' + IntToStr(Cnt) + ')'
2218 h677 1.95 else if Cnt = 1 then
2219 hi_ 1.1 CntText := '(+)';
2220 h677 1.95
2221 hi_ 1.1
2222     TextWidth := TreeView.Canvas.TextWidth(CntText);
2223    
2224     TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2225     NodeRect.Top,
2226     NodeRect.Left + NodeWidth + TextWidth + 8,
2227     NodeRect.Bottom);
2228     DrawText(TreeView.Canvas.Handle,
2229     PChar(CntText),
2230     -1,
2231     TextRect,
2232     DT_SINGLELINE or DT_VCENTER);
2233     end;
2234     TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
2235     end;
2236    
2237     procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
2238     Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
2239     var
2240     Board: TBoard;
2241     Category: TCategory;
2242     i: Integer;
2243