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.613 - (hide annotations) (download) (as text)
Sun Jul 30 17:25:32 2006 UTC (17 years, 8 months ago) by h677
Branch: MAIN
Changes since 1.612: +11 -5 lines
File MIME type: text/x-pascal
リンクで飛んだときの履歴をとって移動できるような機能を追加
(バタ54に既になっています)

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