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.624 - (hide annotations) (download) (as text)
Sun Dec 31 04:23:28 2006 UTC (17 years, 3 months ago) by h677
Branch: MAIN
Changes since 1.623: +1 -36 lines
File MIME type: text/x-pascal
HistoryListにメソッドを移動

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