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.591 - (hide annotations) (download) (as text)
Tue Feb 21 15:35:49 2006 UTC (18 years, 2 months ago) by h677
Branch: MAIN
Changes since 1.590: +65 -61 lines
File MIME type: text/x-pascal
マウスジェスチャー-の不具合とレス番指定URLを踏んだときの処理用に
TThreadItemを拡張

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