Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/Giko.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.581 - (show annotations) (download) (as text)
Wed Jan 4 04:41:39 2006 UTC (18 years, 3 months ago) by h677
Branch: MAIN
Changes since 1.580: +113 -107 lines
File MIME type: text/x-pascal
Bb51、ォ、鬢ホ・゙。シ・ク

1 unit Giko;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils,
8 {$IF Defined(DELPRO) }
9 SHDocVw,
10 MSHTML,
11 {$ELSE}
12 SHDocVw_TLB,
13 MSHTML_TLB,
14 {$IFEND}
15 IdHTTP, ActiveX, ActnList, ImgList,
16 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 IdBaseComponent, IdTCPClient, AppEvnts, BrowserRecord;
22
23 const
24 NGWORDNAME_PANEL = 3;
25 THREADSIZE_PANEL = 2;
26
27 type
28 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
29 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
30 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
31 TResizeType = (rtNone, rtResizing);
32
33 // TBrowserRecord = class;
34
35 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 ListView: TGikoListView;
46 ThreadPanel: TPanel;
47 MessagePanel: TPanel;
48 MessageBar: TPanel;
49 MessageHideButton: TSpeedButton;
50 MessageListView: TListView;
51 MessageSplitter: TSplitter;
52 Panel3: TPanel;
53 CabinetCloseSpeedButton: TSpeedButton;
54 ToolBar1: TToolBar;
55 CabinetSelectToolButton: TToolButton;
56 HistoryToolBar: TToolBar;
57 HistoryShowToolButton: TToolButton;
58 HistoryAllClearToolButton: TToolButton;
59 ItemIcon16: TImageList;
60 ItemIcon32: TImageList;
61 HotToobarImageList: TImageList;
62 ItemImageList: TImageList;
63 MainMenu: TMainMenu;
64 FileMenu: TMenuItem;
65 DeleteMenu: TMenuItem;
66 ExitMenu: TMenuItem;
67 KidokuMenu: TMenuItem;
68 MidokuMenu: TMenuItem;
69 AllSelectMenu: TMenuItem;
70 ViewMenu: TMenuItem;
71 StdToolBarMenu: TMenuItem;
72 CabinetMenu: TMenuItem;
73 H1: TMenuItem;
74 N4: TMenuItem;
75 CabinetVisibleMenu: TMenuItem;
76 MessageMenu: TMenuItem;
77 StatusBarMenu: TMenuItem;
78 MMSep03: TMenuItem;
79 LargeIconMenu: TMenuItem;
80 SmallIconMenu: TMenuItem;
81 ListMenu: TMenuItem;
82 DetailMenu: TMenuItem;
83 ToolMenu: TMenuItem;
84 Find1: TMenuItem;
85 RoundMenu: TMenuItem;
86 MMSep04: TMenuItem;
87 OptionMenu: TMenuItem;
88 HelpMenu: TMenuItem;
89 G1: TMenuItem;
90 N1: TMenuItem;
91 AboutMenu: TMenuItem;
92 BrowserPopupMenu: TPopupMenu;
93 ShowThreadMenu: TMenuItem;
94 ShowBoardMenu: TMenuItem;
95 ListIconPopupMenu: TPopupMenu;
96 LargeIconPMenu: TMenuItem;
97 SmallIconPMenu: TMenuItem;
98 ListPMenu: TMenuItem;
99 DetailPMenu: TMenuItem;
100 ClosePopupMenu: TPopupMenu;
101 CloseMenu: TMenuItem;
102 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 ListRoundPMenu: TMenuItem;
113 ListReservPMenu: TMenuItem;
114 LPMSep01: TMenuItem;
115 ItemRoundPMenu: TMenuItem;
116 LPMSep02: TMenuItem;
117 KidokuPMenu: TMenuItem;
118 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 URLC1: TMenuItem;
133 N9: TMenuItem;
134 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 AllPMenu: TMenuItem;
149 MenuItem1: TMenuItem;
150 MenuItem2: TMenuItem;
151 BrowserTabPopupMenu: TPopupMenu;
152 Close1: TMenuItem;
153 A3: TMenuItem;
154 N16: TMenuItem;
155 A4: TMenuItem;
156 TreePopupMenu: TPopupMenu;
157 TreeSelectThreadPupupMenu: TMenuItem;
158 TreeSelectBoardPupupMenu: TMenuItem;
159 TPMSep01: TMenuItem;
160 TreeSelectURLPupupMenu: TMenuItem;
161 T2: TMenuItem;
162 L3: TMenuItem;
163 B3: TMenuItem;
164 BrowserBottomPanel: TGikoPanel;
165 CabinetSelectPopupMenu: TPopupMenu;
166 H2: TMenuItem;
167 ItemReservPMenu: TMenuItem;
168 RoundNamePopupMenu: TPopupMenu;
169 N7: TMenuItem;
170 B4: TMenuItem;
171 L4: TMenuItem;
172 K2: TMenuItem;
173 A5: TMenuItem;
174 A6: TMenuItem;
175 C1: TMenuItem;
176 V1: TMenuItem;
177 N19: TMenuItem;
178 D1: TMenuItem;
179 D2: TMenuItem;
180 MessageImageList: TImageList;
181 ProgressBar: TProgressBar;
182 URL1: TMenuItem;
183 NameUrlCopyPMenu: TMenuItem;
184 URLC2: TMenuItem;
185 URLN1: TMenuItem;
186 N21: TMenuItem;
187 URLC3: TMenuItem;
188 URLN2: TMenuItem;
189 N23: TMenuItem;
190 ListCoolBar: TGikoCoolBar;
191 ListToolBar: TToolBar;
192 BrowserCoolBar: TGikoCoolBar;
193 BrowserToolBar: TToolBar;
194 ToolButton3: TToolButton;
195 ToolButton9: TToolButton;
196 ToolButton11: TToolButton;
197 ToolButton5: TToolButton;
198 ListNameToolBar: TToolBar;
199 ListNameLabel: TLabel;
200 FolderImage: TImage;
201 BrowserNameToolBar: TToolBar;
202 ItemBoardImage: TImage;
203 BrowserBoardNameLabel: TLabel;
204 ItemImage: TImage;
205 BrowserNameLabel: TLabel;
206 D3: TMenuItem;
207 N25: TMenuItem;
208 N26: TMenuItem;
209 D4: TMenuItem;
210 S3: TMenuItem;
211 R2: TMenuItem;
212 TreeSelectNameURLPupupMenu: TMenuItem;
213 N27: TMenuItem;
214 H3: TMenuItem;
215 I1: TMenuItem;
216 BrowserTabToolBar: TToolBar;
217 BrowserTab: TTabControl;
218 About1: TMenuItem;
219 N28: TMenuItem;
220 S4: TMenuItem;
221 N29: TMenuItem;
222 N30: TMenuItem;
223 N31: TMenuItem;
224 L5: TMenuItem;
225 L6: TMenuItem;
226 A7: TMenuItem;
227 R3: TMenuItem;
228 FavoriteMenu: TMenuItem;
229 N32: TMenuItem;
230 BoardFavoriteAddMenu: TMenuItem;
231 ThreadFavoriteAddMenu: TMenuItem;
232 N33: TMenuItem;
233 TreeSelectFavoriteAddPupupMenu: TMenuItem;
234 FavoriteTreeView: TTreeView;
235 StateIconImageList: TImageList;
236 TopPanel: TPanel;
237 TopRightPanel: TPanel;
238 AnimePanel: TPanel;
239 Animate: TAnimate;
240 TopCoolPanel: TPanel;
241 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 T5: TMenuItem;
253 B5: TMenuItem;
254 N35: TMenuItem;
255 A8: TMenuItem;
256 U2: TMenuItem;
257 F1: TMenuItem;
258 PreviewTimer: TTimer;
259 MonazillaWebPageAction1: TMenuItem;
260 N36: TMenuItem;
261 H4: TMenuItem;
262 K3: TMenuItem;
263 L7: TMenuItem;
264 N37: TMenuItem;
265 A9: TMenuItem;
266 ChevronPopupMenu: TPopupMenu;
267 N2N1: TMenuItem;
268 N38: TMenuItem;
269 F2: TMenuItem;
270 LinkToolBar: TToolBar;
271 a10: TMenuItem;
272 N39: TMenuItem;
273 T6: TMenuItem;
274 N40: TMenuItem;
275 LinkBarPopupMenu: TPopupMenu;
276 T7: TMenuItem;
277 ThreadPopupMenu: TPopupMenu;
278 MenuItem4: TMenuItem;
279 MenuItem5: TMenuItem;
280 MenuItem6: TMenuItem;
281 T8: TMenuItem;
282 URLN3: TMenuItem;
283 SelectItemNameCopyAction1: TMenuItem;
284 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 AntiIndivAbonMenuItem: TMenuItem;
323 AntiIndividualAbon: TMenuItem;
324 N49: TMenuItem;
325 N51: TMenuItem;
326 N52: TMenuItem;
327 SearchBoardName: TMenuItem;
328 TreeSelectLogDeleteSeparator: TMenuItem;
329 N54: TMenuItem;
330 A13: TMenuItem;
331 FavoriteTreePopupMenu: TPopupMenu;
332 FavoriteTreeRenamePopupMenu: TMenuItem;
333 FavoriteTreeNewFolderPopupMenu: TMenuItem;
334 N56: TMenuItem;
335 FavoriteTreeDeletePopupMenu: TMenuItem;
336 FavoriteToolBar: TToolBar;
337 FavoriteAddToolButton: TToolButton;
338 FavoriteArrangeToolButton: TToolButton;
339 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 ExportFavoriteFileAction1: TMenuItem;
351 N6: TMenuItem;
352 N17: TMenuItem;
353 N18: TMenuItem;
354 N20: TMenuItem;
355 N24: TMenuItem;
356 N62: TMenuItem;
357 N61: TMenuItem;
358 N63: TMenuItem;
359 N64: TMenuItem;
360 dummy1: TMenuItem;
361 TreeSelectLogDeletePopupMenu: TMenuItem;
362 N65: TMenuItem;
363 BBSSelectPopupMenu: TPopupMenu;
364 PlugInMenu: TMenuItem;
365 TreeSelectNamePupupMenu: TMenuItem;
366 BrowserPanel: TPanel;
367 SelectTimer: TTimer;
368 SelectThreadSave: TMenuItem;
369 N55: TMenuItem;
370 N66: TMenuItem;
371 dat1: TMenuItem;
372 OpenLogFolder: TMenuItem;
373 Browser: TWebBrowser;
374 TabSave: TMenuItem;
375 TabOpen: TMenuItem;
376 ResRangePopupMenu: TPopupMenu;
377 ResRangeHundPMenuItem: TMenuItem;
378 ResRangeKokoPMenuItem: TMenuItem;
379 ResRangeNewPMenuItem: TMenuItem;
380 ResRangeAllPMenuItem: TMenuItem;
381 BrowsBoradHeadAction1: TMenuItem;
382 ThreadRangePopupMenu: TPopupMenu;
383 A15: TMenuItem;
384 L8: TMenuItem;
385 N67: TMenuItem;
386 N68: TMenuItem;
387 S6: TMenuItem;
388 N69: TMenuItem;
389 ResRangeSelectPMenuItem: TMenuItem;
390 ListColumnPopupMenu: TPopupMenu;
391 N70: TMenuItem;
392 ID1: TMenuItem;
393 ID2: TMenuItem;
394 N53: TMenuItem;
395 ID3: TMenuItem;
396 N71: TMenuItem;
397 N72: TMenuItem;
398 N73: TMenuItem;
399 SelectComboBoxPanel: TPanel;
400 SelectComboBoxSplitter: TImage;
401 ToolButton1: TToolButton;
402 N74: TMenuItem;
403 WikiFAQ: TMenuItem;
404 GikoApplicationEvents: TApplicationEvents;
405 procedure FormCreate(Sender: TObject);
406 procedure FormDestroy(Sender: TObject);
407 procedure BrowserStatusTextChange(Sender: TObject;
408 const Text: WideString);
409 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
410 procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
411 var AllowChange: Boolean);
412 procedure ListViewKeyDown(Sender: TObject; var Key: Word;
413 Shift: TShiftState);
414 procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
415 procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
416 Button: TToolButton; State: TCustomDrawState;
417 var DefaultDraw: Boolean);
418 procedure BrowserBeforeNavigate2(Sender: TObject;
419 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
420 Headers: OleVariant; var Cancel: WordBool);
421 procedure TreeViewCustomDraw(Sender: TCustomTreeView;
422 const ARect: TRect; var DefaultDraw: Boolean);
423 procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
424 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
425 procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
426 procedure ListViewCustomDraw(Sender: TCustomListView;
427 const ARect: TRect; var DefaultDraw: Boolean);
428 procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
429 Shift: TShiftState; X, Y: Integer);
430 procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
431 procedure MessageListViewResize(Sender: TObject);
432 procedure CabinetVisible( isVisible : Boolean );
433 procedure FormResize(Sender: TObject);
434 procedure ListPopupMenuPopup(Sender: TObject);
435 procedure TreePopupMenuPopup(Sender: TObject);
436 procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
437 var Cancel: WordBool);
438 procedure ListSplitterMoved(Sender: TObject);
439 procedure BrowserTabChange(Sender: TObject);
440 procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
441 Shift: TShiftState; X, Y: Integer);
442 procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
443 State: TDragState; var Accept: Boolean);
444 procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
445 procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
446 Y: Integer);
447 procedure BrowserDocumentComplete(Sender: TObject;
448 const pDisp: IDispatch; var URL: OleVariant);
449 procedure RoundNamePopupMenuPopup(Sender: TObject);
450 procedure FormShow(Sender: TObject);
451 procedure BrowserTabToolBarResize(Sender: TObject);
452 procedure FavoriteMenuClick(Sender: TObject);
453 procedure MainCoolBarResize(Sender: TObject);
454 procedure AddressToolBarResize(Sender: TObject);
455 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
456 Shift: TShiftState);
457 procedure BrowserEnter(Sender: TObject);
458 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
459 procedure PreviewTimerTimer(Sender: TObject);
460 procedure MessageHideButtonClick(Sender: TObject);
461 procedure HistoryAllClearToolButtonClick(Sender: TObject);
462 procedure MainCoolBarBandInfo(Sender: TObject;
463 var BandInfo: PReBarBandInfoA);
464 procedure MainCoolBarChevronClick(Sender: TObject;
465 RebarChevron: PNMRebarChevron);
466 procedure ListCoolBarBandInfo(Sender: TObject;
467 var BandInfo: PReBarBandInfoA);
468 procedure ListCoolBarChevronClick(Sender: TObject;
469 RebarChevron: PNMRebarChevron);
470 procedure BrowserCoolBarBandInfo(Sender: TObject;
471 var BandInfo: PReBarBandInfoA);
472 procedure BrowserCoolBarChevronClick(Sender: TObject;
473 RebarChevron: PNMRebarChevron);
474 procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
475 procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
476 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
477 procedure SelectComboBoxChange(Sender: TObject);
478 procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
479 Shift: TShiftState);
480 procedure SelectComboBoxExit(Sender: TObject);
481 procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
482 Shift: TShiftState; X, Y: Integer);
483 procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
484 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
485 procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
486 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
487 procedure StatusBarResize(Sender: TObject);
488 procedure SelectComboBoxEnter(Sender: TObject);
489 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
490 Y: Integer);
491 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
492 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
493 var S: String);
494 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
495 Shift: TShiftState);
496 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
497 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
498 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
499 Shift: TShiftState; X, Y: Integer);
500 procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
501 State: TDragState; var Accept: Boolean);
502 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
503 Y: Integer);
504 procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
505 var Handled: Boolean);
506 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
507 var Handled: Boolean);
508 procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
509 var Handled: Boolean);
510 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
511 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
512 var Handled: Boolean);
513 procedure BrowserTabPopupMenuPopup(Sender: TObject);
514 procedure BrowserTabResize(Sender: TObject);
515 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
516 Shift: TShiftState);
517 procedure FavoriteTreeViewMouseDown(Sender: TObject;
518 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
519 procedure MessagePanelResize(Sender: TObject);
520 procedure OnResized;
521 procedure SelectTimerTimer(Sender: TObject);
522 procedure ListViewColumnRightClick(Sender: TObject;
523 Column: TListColumn; Point: TPoint);
524 procedure ListViewCustomDrawItem(Sender: TCustomListView;
525 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
526 procedure FormActivate(Sender: TObject);
527 procedure BrowserPanelResize(Sender: TObject);
528 procedure MenuToolBarResize(Sender: TObject);
529 procedure ListToolBarResize(Sender: TObject);
530 procedure BrowserToolBarResize(Sender: TObject);
531 procedure KokoPopupMenuPopup(Sender: TObject);
532 procedure ListViewKeyUp(Sender: TObject; var Key: Word;
533 Shift: TShiftState);
534 procedure FavoriteTreeViewEditing(Sender: TObject; Node: TTreeNode;
535 var AllowEdit: Boolean);
536 procedure CabinetCloseSpeedButtonClick(Sender: TObject);
537 procedure FavoriteArrangeToolButtonClick(Sender: TObject);
538 procedure GikoApplicationEventsMessage(var Msg: tagMSG;
539 var Handled: Boolean);
540 procedure GikoApplicationEventsDeactivate(Sender: TObject);
541 procedure GikoApplicationEventsException(Sender: TObject; E: Exception);
542 procedure TreeViewMouseDown(Sender: TObject; Button: TMouseButton;
543 Shift: TShiftState; X, Y: Integer);
544 private
545 { Private ?ス?ス?ス?ス }
546 FEnabledCloseButton: Boolean;
547 FClickNode: TTreeNode;
548 FHttpState: Boolean;
549 FHint: TResPopup;
550 FPreviewBrowser: TWebBrowser;
551 FPreviewURL: string;
552 FBrowserSizeHeight: Integer;
553 FBrowserSizeWidth: Integer;
554 FTabHintIndex: Integer;
555 FListStyle: TViewStyle; //?ス?ス?スX?スg?スA?スC?スR?ス?ス?スX?ス^?スC?ス?ス
556 FItemNoVisible: Boolean; //?ス?ス?スX?スg?ス?ス?ス?ス?ス\?ス?ス?スt?ス?ス?スO
557 FViewType: TGikoViewType; //?ス?ス?スX?スg?スA?スC?スe?ス?ス?ス\?ス?ス?ス^?スC?スv
558 FActiveList: TObject;
559 FActiveContent: TBrowserRecord; //
560 FActiveBBS : TBBS;
561 FHistoryList: TList; //?スq?スX?スg?ス?ス?ス?ス?スX?スg
562 FTreeType: TGikoTreeType;
563 FWorkCount: Integer;
564 FNameCookie: string;
565 FMailCookie: string;
566 FDownloadTitle: string; //?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス^?スC?スg?ス?ス?ス?ス
567 FDownloadMax: Integer; //?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?スT?スC?スY
568 FEvent: THTMLDocumentEventSink;//?スu?ス?ス?スE?スU?スh?スL?ス?ス?ス?ス?ス?ス?スg?スC?スx?ス?ス?スg
569 IsDraggingSelectComboBox : Boolean;
570 DraggingSelectComboBoxPosition : TPoint;
571 FSearchDialog: TSearchDialog;
572 FDropSpaceNode: TTreeNode;
573 FDragTime : Cardinal; ///< ?ス?ス?ス?ス?スN?ス?スD&D?スp
574 FDragButton : TToolButton; ///< ?ス?ス?ス?ス?スN?ス?スD&D?スp?ス?スDrag?ス?ス?ス?ス?ス?スButton?ス?ス?ス?ス
575 FDragWFirst : Boolean; ///< WebTab?ス?スD&D?スp
576 FListViewBackGroundColor : TColor; ///< ListView?ス?スBackGroundColor
577 FUseOddResOddColor : Boolean; ///< ?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スF?ス?ス?ス\?ス?ス
578 FOddColor : TColor; ///< ?ス?ス?ス?ス?スF
579 FSelectResWord : string; ///< ?ス?ス?スX?スi?ス?ス?ス?ス?ス[?スh
580 FIsIgnoreResize : TResizeType; ///< ?ス?ス?スT?スC?スY?スC?スx?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
581 FIsMinimize : TMinimizeType; ///< ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
582 FOldFormWidth : Integer; ///< ?ス?ス?スO?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス
583 FToolBarSettingSender : TToolBarSettingSenderType; ///< ?スc?ス[?ス?ス?スo?ス[?ス?ス?ス?ス?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?スN?ス[?ス?ス?スo?ス[
584 FMouseDownPos : TPoint; ///< ?スu?ス?ス?スE?スU?ス^?スu?ス?ス?ス}?スE?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スW
585 FBrowsers: TList;
586 FResRangeMenuSelect : Longint; ///< ResRangeButton ?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス (?スt?スH?ス[?ス}?スb?スg?ス?ス ResRange ?ス?ス?ス?ス)
587 FStartUp : Boolean;
588 FIsHandledWheel : Boolean; ///< ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス WM_MOUSEWHEEL ?ス?ス?ス?ス?ス?ス?ス?ス
589 DiffComp: Boolean; //Add by Genyakun ?スX?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スTrue?ス?ス?ス?ス?ス?ス
590 FOrigenCaption: String; //?ス?ス?スC?ス?ス?ス?ス?ス?ス?スc?ス?ス?ス[?ス?ス?スA?スC?スe?ス?ス?ス?ス?スW?ス?ス?ス?ス?ス?ス?スW?スO?ス?ス?ス?ス?ス?ス?ス?ス
591 FPreviewBrowserRect: TRect; ///< ?スv?ス?ス?スr?ス?ス?ス[?ス?ス?ス\?ス?ス?ス?ス?スu?ス?ス?スL?ス?ス?ス?ス?ス?ス
592 FActionListGroupIndexes: array of Integer; ///<GikoDM?ス?ス?ス?ス?スA?スN?スV?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?スe?スA?スN?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スz?ス?ス
593 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
594 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
595 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
596 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
597 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
598 procedure ListClick;
599 procedure ListDoubleClick(Shift: TShiftState);
600 function Hook(var Message: TMessage): Boolean;
601 procedure AddRoundNameMenu(MenuItem: TMenuItem);
602 procedure SetMenuFont;
603 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
604 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
605 procedure FavoriteClick(Sender: TObject); overload;
606 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
607 function OnDocumentContextMenu(Sender: TObject): WordBool;
608 procedure ShowTextPopup;
609 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
610 procedure MenuBarChevronMenu;
611 procedure LinkBarChevronMenu;
612 procedure ToolBarChevronMenu(ToolBar: TToolBar);
613 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
614 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
615 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
616 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
617 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
618 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
619 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
620 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
621 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
622 //
623 procedure SetListViewBackGroundColor(value: TColor);
624 procedure BBSMenuItemOnClick( Sender : TObject );
625 /// CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
626 procedure SaveCoolBarSettings;
627 procedure SaveMainCoolBarSettings;
628 procedure SaveBoardCoolBarSettings;
629 procedure SaveBrowserCoolBarSettings;
630 /// CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
631 procedure LoadCoolBarSettings;
632 /// ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
633 procedure OnMinimize;
634 /// ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
635 procedure OnMinimized;
636 /// TreeView ?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス
637 procedure TreeClick( Node : TTreeNode );
638 /// TreeView ?ス?ス?ス_?スu?ス?ス?スN?ス?ス?スb?スN?ス?ス?ス?ス?ス?ス
639 procedure TreeDoubleClick( Node : TTreeNode );
640 /// ?スe?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?スE BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スZ?スb?スg?ス^?スX?スV
641 procedure SetBBSMenu;
642 /// ?ス^?スu?ス?ス?ス?ス
643 function GetTabURLs(AStringList: TStringList) : Boolean;
644 /// ListColumnPopupMenu ?スA?スC?スe?ス?ス?ス?ス?スN?ス?ス?スb?スN?スC?スx?ス?ス?スg
645 procedure ListColumnPopupMenuOnClick( Sender : TObject );
646 //! ?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
647 procedure SetSelectWord( const text : string );
648 //?ス?ス?ス?ス?ス?ス?スJ?ス[?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
649 function GetScreenCursor(): TCursor;
650 //?スJ?ス[?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
651 procedure SetScreenCursor(Cursor : TCursor);
652 //! ?ス_?スE?ス?ス?ス?ス?ス[?スh?スR?ス?ス?スg?ス?ス?ス[?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス
653 procedure CreateControlThread();
654 //! ?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス
655 procedure CreateBrowsers(count: Integer);
656 //! ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス
657 procedure GetGroupIndex(ActionList: TActionList);
658 //! ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス
659 procedure SetGroupIndex(ActionList: TActionList);
660 protected
661 procedure CreateParams(var Params: TCreateParams); override;
662 procedure WndProc(var Message: TMessage); override;
663 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
664 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
665 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
666
667 public
668 { Public ?ス?ス?ス?ス }
669 LastRoundTime: TDateTime;
670 BrowserNullTab: TBrowserRecord;
671 FControlThread: TThreadControl;
672 procedure MoveToURL(const inURL: string);
673 function InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True) : TBrowserRecord;
674 procedure ReloadBBS;
675 function GetHttpState: Boolean;
676 procedure SetEnabledCloseButton(Enabled: Boolean);
677 function GetTreeNode(Data: TObject): TTreeNode;
678 procedure ListViewAllSelect;
679 property ListStyle: TViewStyle read FListStyle write FListStyle;
680 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
681 property ViewType: TGikoViewType read FViewType write FViewType;
682 property NameCookie: string read FNameCookie write FNameCookie;
683 property MailCookie: string read FMailCookie write FMailCookie;
684 property ClickNode: TTreeNode read FClickNode write FClickNode;
685 property TreeType: TGikoTreeType read FTreeType write FTreeType;
686 property ActiveContent: TBrowserRecord read FActiveContent write FActiveContent;
687 property ResRangeMenuSelect: Longint read FResRangeMenuSelect write FResRangeMenuSelect;
688 property SelectResWord : string read FSelectResWord write FSelectResWord;
689 property BrowserSizeWidth: Integer read FBrowserSizeWidth write FBrowserSizeWidth;
690 property BrowserSizeHeight: Integer read FBrowserSizeHeight write FBrowserSizeHeight;
691 property SearchDialog: TSearchDialog read FSearchDialog write FSearchDialog;
692 property ToolBarSettingSender : TToolBarSettingSenderType
693 read FToolBarSettingSender write FToolBarSettingSender;
694 property ScreenCursor : TCursor read GetScreenCursor write SetScreenCursor;
695 property ActiveBBS : TBBS read FActiveBBS write FActiveBBS;
696 property WorkCount: Integer read FWorkCount write FWorkCount;
697 procedure SetContent(inThread: TBrowserRecord);
698 function GetActiveContent: TThreadItem;
699 function GetActiveList: TObject;
700
701 procedure SetListViewType(AViewType: TGikoViewType); overload;
702 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
703 procedure PlaySound(SoundEventName: string);
704 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
705 procedure ClearHistory;
706 procedure SaveHistory;
707 procedure LoadHistory;
708 procedure ShowBBSTree( inBBS : TBBS );
709 procedure ShowBBSTreeOld( inBBS : TBBS );
710 procedure ShowHistoryTree;
711 procedure SetHistoryTreeNode;
712 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
713 procedure SetBrowserTabState;
714 procedure SetToolBarPopup;
715 procedure ShowFavoriteAddDialog( Item : TObject );
716 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
717 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
718 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
719 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
720 property OddColor : TColor read FOddColor write FOddColor;
721 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
722 procedure OnPlugInMenuItem( Sender : TObject );
723 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
724 /// ListView ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スu?ス?ス?ス?ス?ス?ス KuroutSetting?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
725 procedure ActiveListColumnSave;
726 procedure SetActiveList(Obj: TObject);
727 property ActiveList: TObject read GetActiveList write SetActiveList;
728 /// CoolBar ?ス?ス?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス
729 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
730 //?ス?ス?ス?スID?ス?ス?ス?ス?ス?ス?ス`?ス?ス
731 procedure IndividualAbonID(Atype : Integer);
732 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス`?ス?ス
733 procedure IndividualAbon(Atag, Atype : Integer);
734 //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス`?ス?ス true:?スS?ス?ス?ス?ス?ス^?スu false:?スA?スN?スe?スB?スu?ス?ス?ス^?スu?ス?ス?ス?ス
735 procedure RepaintAllTabsBrowser();
736 //?ス?ス?ス?ス?スN?スo?ス[?ス?ス?ス?ス
737 procedure SetLinkBar;
738 procedure FavoriteBrowseFolder( node: TTreeNode );
739 //?スX?ス?ス?スb?スh?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
740 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
741 //?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh
742 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
743 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
744 procedure DeleteHistory( threadItem: TThreadItem );
745 //?ス^?スu?ス?ス?ス?ス?ス?ス
746 procedure DeleteTab(ThreadItem: TThreadItem); overload;
747 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
748 //?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?スX?スN?ス?ス?ス[?ス?ス
749 procedure BrowserMovement(const AName: string);
750 //Application?ス?スMainForm?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
751 function GetMainForm(): TComponent;
752 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
753 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?スn
754 procedure OnGestureStart(Sender: TObject);
755 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?ス?ス
756 procedure OnGestureMove(Sender: TObject);
757 //! ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スI?ス?ス
758 procedure OnGestureEnd(Sender: TObject);
759 /// ?スo?ス?ス?スh?ス?ス?ス?ス?ス?ス?スv?スZ?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
760 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
761 //?スX?スN?ス?ス?ス[?ス?ス?ス?ス?ス?スEditorForm?ス?ス?ス?ス?ス?ス?ス?ス
762 function EditorFormExists(): boolean;
763 //?スX?スN?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スEditorForm?ス?ス?ス?ス?ス?ス?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
764 procedure AllEditroFormNameTextClearClear();
765 //?スX?スN?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スEditorForm?ス?ス?ス?ス?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
766 procedure AllEditroFormMailTextClearClear();
767 //ListView?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
768 procedure SelectListItem(List: TList);
769 /// ?ス^?スu?ス?ス?ス?ス
770 function SaveTabURLs : Boolean;
771 /// ?ス^?スu?ス?ス?ス?ス?スo?ス?ス
772 function LoadTabURLs : Boolean;
773 //?スw?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?スR?スs?ス[?ス?ス?ス?ス
774 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
775 //
776 procedure ModifySelectList;
777 //
778 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
779 //
780 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
781 //
782 procedure SetSelectRoundName(Sender: TObject);
783 //
784 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
785 //
786 function WebBrowserClick(Sender: TObject): WordBool;
787 //! ?スc?ス[?ス?ス?スo?ス[?ス?ス?スX?ス?ス?スi?ス?ス?ス?ス?スR?ス?ス?ス{?ス{?スb?スN?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
788 procedure SetSelectComboBox();
789 published
790 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
791 end;
792
793 TFavoriteMenuItem = class(TMenuItem)
794 private
795 FData : Pointer;
796 public
797 property Data: Pointer read FData write FData;
798 end;
799
800 TBBSMenuItem = class(TMenuItem)
801 private
802 FData : Pointer;
803 public
804 property Data: Pointer read FData write FData;
805 end;
806
807 TLinkToolButton = class(TToolButton)
808 private
809 FData : Pointer;
810 public
811 property Data: Pointer read FData write FData;
812 end;
813
814 var
815 GikoForm: TGikoForm;
816
817 implementation
818
819 uses
820 GikoUtil, IndividualAbon, Math, Kotehan, KeySetting,
821 YofUtils, ShellAPI, ToolBarUtil, ToolBarSetting,
822 GikoXMLDoc, RoundName, IniFiles, FavoriteAdd,
823 FavoriteArrange, AddressHistory, Preview, Gesture,
824 About, Option, Round, Splash, Sort, ListSelect, Imm,
825 NewBoard, MojuUtils, Clipbrd, GikoBayesian,Y_TextConverter,
826 HTMLCreate, ListViewUtils, GikoDataModule, GikoMessage;
827
828 const
829 BLANK_HTML: string = 'about:blank';
830 BROWSER_COUNT = 5; //?スu?ス?ス?スE?スU?ス?ス?ス?ス
831 //D&D?ス?ス?スl
832 DandD_THRESHOLD = 5; //D&D?ス?ス?ス?ス?スl?スipixcel)
833 //?スv?ス?ス?スr?ス?ス?ス[?スt?ス@?スC?ス?ス?ス?ス
834 HTML_FILE_NAME = 'temp_preview.html';
835 ITEM_ICON_THREADLOG1 = 6; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
836 ITEM_ICON_THREADLOG2 = 7; //?スX?ス?ス?スA?スC?スR?ス?ス?スi?ス?ス?スO?ス?ス?ス?ス?スj
837 //?ス?ス?スb?スZ?ス[?スWID
838 USER_TREECLICK = WM_USER + 2000;
839 USER_RESIZED = WM_USER + 2001;
840 USER_MINIMIZED = WM_USER + 2002;
841 USER_SETLINKBAR = WM_USER + 2003;
842 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
843 {$R *.DFM}
844
845 procedure TGikoForm.CreateParams(var Params: TCreateParams);
846 begin
847 inherited;
848 if FormStyle in [fsNormal, fsStayOnTop] then begin
849 if BorderStyle in [bsSingle, bsSizeable] then begin
850 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
851 Params.WndParent := 0;
852 end;
853 end;
854 end;
855
856 procedure TGikoForm.FormCreate(Sender: TObject);
857 const
858 TVS_NOTOOLTIPS = $0080;
859 var
860 FileName: string;
861 Style: DWORD;
862 msg: string;
863 i: Integer;
864 wp: TWindowPlacement;
865 begin
866 {$IFDEF DEBUG}
867 AllocConsole;
868 Writeln('============================================================');
869 Writeln(' ?スM?スR?スi?スr?スf?スo?スb?スO ?スR?ス?ス?ス\?ス[?ス?ス');
870 Writeln('');
871 Writeln(' ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB');
872 Writeln(' ?スI?ス?ス?ス?ス?ス?ス?スA?スM?スR?スi?スr?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス');
873 Writeln('============================================================');
874 {$ENDIF}
875 //try
876 FTreeType := gttNone;
877 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
878 FStartUp := true;
879 Application.HookMainWindow(Hook);
880 FIsIgnoreResize := rtResizing;
881 //ActionList?ス?スGuoupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA0?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?スB
882 //(?スN?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?スDown?スv?ス?ス?スp?スe?スB?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス)
883 //?ス?ス?ス?ス?ス?ス?ス?スSet?ス`?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スAAction?ス?スChecked?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI
884 GetGroupIndex(GikoDM.GikoFormActionList);
885 FSearchDialog := nil;
886 CreateBrowsers(BROWSER_COUNT);
887
888 //?ス?ス?スj?ス?ス?ス[?スt?スH?ス?ス?スg
889 SetMenuFont;
890
891 //?ス?ス?ス?ス?スJ?ス[?ス\?ス?ス
892 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
893
894 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
895 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
896
897 EnabledCloseButton := True;
898
899 //?ス?ス?スX?スg?スX?ス^?スC?ス?ス
900 ListView.ViewStyle := GikoSys.Setting.ListStyle;
901
902 //?スA?スj?ス?ス?スp?スl?ス?ス?ス?ス?スu
903 AnimePanel.Top := 0;
904 AnimePanel.Left := 0;
905
906 //?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
907
908 //?スL?ス?ス?スr?スl?スb?スg
909 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
910
911 //?ス?ス?スb?スZ?ス[?スW?スo?ス[
912 GikoDM.MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
913 GikoDM.MsgBarVisibleActionExecute(nil);
914 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
915
916 //?スX?スe?ス[?ス^?スX?スo?ス[
917 GikoDM.StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
918 GikoDM.StatusBarVisibleActionExecute(nil);
919
920 //?スt?スH?ス?ス?スg?スE?スF?ス?ス?ス?ス
921 TreeView.Items.BeginUpdate;
922 FavoriteTreeView.Items.BeginUpdate;
923 ListView.Items.BeginUpdate;
924 try
925 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
926 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
927 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
928 TreeView.Color := GikoSys.Setting.CabinetBackColor;
929 FavoriteTreeView.Font.Assign(TreeView.Font);
930 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
931
932 ListView.Font.Name := GikoSys.Setting.ListFontName;
933 ListView.Font.Size := GikoSys.Setting.ListFontSize;
934 ListView.Font.Color := GikoSys.Setting.ListFontColor;
935 ListView.Font.Style := [];
936 if GikoSys.Setting.ListFontBold then
937 ListView.Font.Style := [fsbold];
938 if GikoSys.Setting.ListFontItalic then
939 ListView.Font.Style := ListView.Font.Style + [fsitalic];
940
941 ListViewBackGroundColor := clWhite; // ?スf?スt?スH?ス?ス?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
942 ListViewBackGroundColor := GikoSys.Setting.ListBackColor; // ?ス?ス?ス[?スU?ス?ス?ス`?ス?ス?ス?ス?スX
943 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
944 FOddColor := GikoSys.Setting.OddColor;
945
946 finally
947 TreeView.Items.EndUpdate;
948 FavoriteTreeView.Items.EndUpdate;
949 ListView.Items.EndUpdate;
950 end;
951 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
952 GikoDM.ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
953
954 //?ス~?ス?ス?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
955 GikoDM.MuteAction.Checked := GikoSys.Setting.Mute;
956
957 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
958 FResRangeMenuSelect := GikoSys.ResRange;
959 case GikoSys.ResRange of
960 Ord( grrAll ):
961 begin
962 GikoDM.AllResAction.Execute;
963 end;
964 Ord( grrSelect ):
965 begin
966 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
967 GikoDM.SelectResAction.Checked := True;
968 end;
969 else
970 case FResRangeMenuSelect of
971 Ord( grrKoko ): GikoDM.OnlyKokoResAction.Checked := True;
972 Ord( grrNew ): GikoDM.OnlyNewResAction.Checked := True;
973 100: GikoDM.OnlyAHundredResAction.Checked := True;
974 end;
975 end;
976
977 // ?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス
978 case GikoSys.Setting.ThreadRange of
979 gtrAll:
980 begin
981 GikoDM.AllItemAction.Checked := True;
982 ViewType := gvtAll;
983 end;
984 gtrLog:
985 begin
986 GikoDM.LogItemAction.Checked := True;
987 ViewType := gvtLog;
988 end;
989 gtrNew:
990 begin
991 GikoDM.NewItemAction.Checked := True;
992 ViewType := gvtNew;
993 end;
994 end;
995
996
997 //?スu?ス?ス?スE?スU?ス^?スu?スt?スH?ス?ス?スg
998 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
999 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1000 BrowserTab.Font.Style := [];
1001 if GikoSys.Setting.BrowserTabFontBold then
1002 BrowserTab.Font.Style := [fsBold];
1003 if GikoSys.Setting.BrowserTabFontItalic then
1004 BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1005 FDragWFirst := false;
1006 SetContent(BrowserNullTab); //?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス\?ス?ス
1007
1008 //?スu?ス?ス?スE?スU?ス^?スu
1009 GikoDM.BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1010
1011 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1012 GikoDM.BrowserTabTopAction.Checked := True;
1013 end else begin
1014 GikoDM.BrowserTabBottomAction.Checked := True;
1015 end;
1016
1017 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1018 GikoDM.BrowserTabTabStyleAction.Checked := True;
1019 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1020 GikoDM.BrowserTabButtonStyleAction.Checked := True;
1021 end else begin
1022 GikoDM.BrowserTabFlatStyleAction.Checked := True;
1023 end;
1024
1025 //?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス?ス?ス
1026 ProgressBar.Parent := StatusBar;
1027 ProgressBar.Top := 2;
1028 ProgressBar.Left := 0;
1029 ProgressBar.Width := StatusBar.Panels[0].Width;
1030 ProgressBar.Height := StatusBar.Height - 2;
1031 ProgressBar.Position := 0;
1032
1033 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1034 InitializeBoardPlugIns;
1035
1036 // ?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス(ReadFavorite ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1037 GikoSys.ListBoardFile;
1038 //?ス@?スA?ス?ス?スN?ス?ス?ス?ス?ス?ス?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス
1039 try
1040 // ?スX?スv?ス?ス?スb?スV?ス?ス?スE?スB?ス?ス?スh?スE?ス?ス?スv?ス?ス?スO?ス?ス?スX?スo?ス[?ス?ス?ス?ス?ス?ス
1041 if (SplashWindow <> nil) then begin
1042 SplashWindow.ProgressBar.Max := Length(BBSs) * 20;
1043 end;
1044 except
1045 end;
1046 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1047 for i := Length(BBSs) - 1 downto 0 do begin
1048 if not BBSs[i].IsBoardFileRead then
1049 GikoSys.ReadBoardFile(BBSs[i]);
1050
1051 if SplashWindow <> nil then begin
1052 SplashWindow.ProgressBar.StepBy(20);
1053 SplashWindow.Update;
1054 end;
1055 end;
1056
1057 //?ス?ス?ス?ス?スf?ス[?ス^?ス?ス?ス?ス?ス?ス?ス?ス
1058 RoundList := TRoundList.Create;
1059 RoundList.LoadRoundBoardFile;
1060 RoundList.LoadRoundThreadFile;
1061
1062 //TreeView?ス?ス?ス?ス?ス?ス?スL?ス?スToolTip?ス?ス?ス?ス?ス\?ス?ス
1063 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1064 Style := Style or TVS_NOTOOLTIPS;
1065 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1066
1067 // ?スc?ス?ス?ス[?ス?ス?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1068 TreeView.Align := alClient;
1069 FavoriteTreeView.Align := alClient;
1070 FavoriteTreeView.Visible := False;
1071
1072 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1073 SetBBSMenu;
1074
1075 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1076 wp.length := sizeof(wp);
1077 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1078 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1079 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1080 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1081 wp.showCmd := SW_HIDE;
1082 SetWindowPlacement(Handle, @wp);
1083 //Self.Update;
1084
1085 if GikoSys.Setting.WindowMax then
1086 WindowState := wsMaximized;
1087
1088 //?スM?スR?スA?スj?ス?ス
1089 try
1090 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1091 if FileExists(FileName) then
1092 Animate.FileName := FileName;
1093 except
1094 end;
1095
1096 //?スN?スb?スL?ス[
1097 FNameCookie := '';
1098 FMailCookie := '';
1099
1100 //?スu?ス?ス?スE?スU?スT?スC?スY?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1101 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1102 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1103
1104
1105 // ?スq?スX?スg?ス?ス?ス?ス?スX?スg(LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1106 FHistoryList := TList.Create;
1107
1108 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1109 LoadHistory;
1110
1111 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1112 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1113 FavoriteDM.ReadFavorite;
1114
1115 GikoDM.ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1116 GikoDM.ArrangeAction.Execute;
1117
1118 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1119 case GikoSys.Setting.ListWidthState of
1120 glsMax: begin
1121 ViewPanel.Width := 1;
1122 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1123 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1124 end;
1125 glsMin: begin
1126 ViewPanel.Width := GikoSys.Setting.ListWidth;
1127 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1128 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_NORMAL;
1129 end;
1130 else begin
1131 ViewPanel.Width := GikoSys.Setting.ListWidth;
1132 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MAX;
1133 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_WIDTH_MIN;
1134 end;
1135 end;
1136 end else begin
1137 case GikoSys.Setting.ListHeightState of
1138 glsMax: begin
1139 ViewPanel.Height := 1;
1140 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1141 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1142 end;
1143 glsMin: begin
1144 ViewPanel.Height := GikoSys.Setting.ListHeight;
1145 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1146 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_NORMAL;
1147 end;
1148 else begin
1149 ViewPanel.Height := GikoSys.Setting.ListHeight;
1150 GikoDM.BrowserMaxAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MAX;
1151 GikoDM.BrowserMinAction.ImageIndex := GikoDataModule.TOOL_ICON_HEIGHT_MIN;
1152 end;
1153 end;
1154 end;
1155
1156 //?ス_?スE?ス?ス?ス?ス?ス[?スh?スI?スu?スW?スF?スN?スg
1157 CreateControlThread();
1158
1159 // ?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1160 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1161
1162 //?スu?ス?ス?スE?スU?ス^?スu?ス?ス?ス?ス
1163 SetBrowserTabState;
1164
1165 BrowserBoardNameLabel.Caption := '';
1166 BrowserNameLabel.Caption := '';
1167 FWorkCount := 0;
1168
1169 FTabHintIndex := -1;
1170
1171 //?スc?ス[?ス?ス?スo?ス[Wrapable
1172 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1173 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1174
1175 MakeDefaultINIFile();
1176 //?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1177 ReadToolBarSetting(GikoDM.GikoFormActionList, StdToolBar);
1178 ReadToolBarSetting(GikoDM.GikoFormActionList, ListToolBar);
1179 ReadToolBarSetting(GikoDM.GikoFormActionList, BrowserToolBar);
1180 SetToolBarPopup;
1181
1182 //ListToolBar?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スi?ス?ス?ス?スComboBox?ス?ス?スz?スu
1183 SetSelectComboBox();
1184
1185 //?スA?スh?ス?ス?スX?スo?ス[
1186 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1187
1188 //?ス?ス?ス?ス?スN?スo?ス[
1189 SetLinkBar;
1190 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1191
1192 //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス\?ス?ス
1193 if not FileExists(GikoSys.GetBoardFileName) then begin
1194 msg := '?ス?ス?ス?ス?ス?ス?スb?スZ?ス[?スW?ス?ス?スM?スR?スi?スr?ス?ス?ス?ス?ス?ス?ス?ス?スg?スp?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス' + #13#10#13#10
1195 + '?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スQ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス' + #13#10
1196 + '?ス?ス?ス?ス?スo?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?スu?スX?スV?スv?ス{?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
1197 MsgBox(SplashWindow.Handle, msg, '?スM?スR?スi?スr', MB_OK or MB_ICONINFORMATION);
1198 GikoDM.NewBoardAction.Execute;
1199 end;
1200
1201 //?スL?ス[?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1202 GikoSys.LoadKeySetting(GikoDM.GikoFormActionList, GikoSys.GetMainKeyFileName);
1203
1204 //?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1205 // FLastRoundTime := 0;
1206
1207 //ResHint
1208 FHint := TResPopup.Create(Self);
1209
1210 ListView.OnData := TListViewUtils.ListViewData;
1211
1212 // ?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?ス?ス?ス?ス?ス?ス
1213 CabinetVisible( False );
1214 if GikoSys.Setting.CabinetVisible then begin
1215 i := CabinetSelectPopupMenu.Items.Count - 1;
1216 if GikoSys.Setting.CabinetIndex = i - 1 then
1217 GikoDM.CabinetHistoryAction.Execute
1218 else if GikoSys.Setting.CabinetIndex = i then
1219 GikoDM.CabinetFavoriteAction.Execute
1220 else begin
1221 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1222 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1223 // ?スN?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス 2
1224 FIsIgnoreResize := rtResizing;
1225 GikoDM.CabinetBBSAction.Execute;
1226 end;
1227 end else begin
1228 ShowBBSTreeOld( BBSs[ 0 ] );
1229 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1230 end;
1231
1232 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スJ?ス?ス?スi?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?スj
1233 for i := 1 to ParamCount do begin
1234 MoveToURL(ParamStr(i));
1235 end;
1236
1237 GikoDM.RepaintStatusBar;
1238 StatusBarResize(Sender);
1239
1240 dummy1.Caption := ItemReservPMenu.Caption;
1241 dummy1.Hint := ItemReservPMenu.Hint;
1242
1243 //Samba24?ス?ス?スt?ス@?スC?ス?ス?ス`?スF?スb?スN
1244 GikoSys.SambaFileExists();
1245
1246 {$IFDEF SPAM_FILTER_ENABLED}
1247 // ?スX?スp?ス?ス?スt?スB?ス?ス?ス^?スw?スK?ス?ス?ス?ス
1248 GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1249 {$ENDIF}
1250
1251 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[
1252 MouseGesture := TMouseGesture.Create;
1253 GikoSys.Setting.Gestures.LoadGesture(
1254 GikoSys.Setting.GetGestureFileName, GikoDM.GikoFormActionList );
1255 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1256 MouseGesture.OnGestureStart := OnGestureStart;
1257 MouseGesture.OnGestureMove := OnGestureMove;
1258 MouseGesture.OnGestureEnd := OnGestureEnd;
1259 if GikoSys.Setting.GestureEnabled then
1260 MouseGesture.SetHook( Handle );
1261
1262 //2ch?ス?ス?ス?ス?ス?ス?ス?ス?スo?ス?ス
1263 GikoSys.SetGikoMessage;
1264
1265 //?スI?ス[?スg?ス?ス?スO?スC?ス?ス
1266 if GikoSys.Setting.AutoLogin then
1267 GikoDM.LoginAction.Execute;
1268
1269 GikoSys.Setting.BeLogin := GikoSys.Setting.BeAutoLogin;
1270
1271 //?スL?ス?ス?スv?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1272 FavoriteAddToolButton.Caption := '?ス?ス?ス?ス...';
1273 AntiIndivAbonMenuItem.Caption := '?ス?ス?ス?ス?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス';
1274
1275
1276 end;
1277
1278 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1279 procedure TGikoForm.SaveCoolBarSettings;
1280 begin
1281
1282 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1283 Exit;
1284 SaveMainCoolBarSettings;
1285 SaveBoardCoolBarSettings;
1286 SaveBrowserCoolBarSettings;
1287
1288 end;
1289 procedure TGikoForm.SaveMainCoolBarSettings;
1290 var
1291 i : Integer;
1292 CoolSet : TCoolSet;
1293 begin
1294 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1295 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1296 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1297 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1298 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1299 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1300 end;
1301 end;
1302 procedure TGikoForm.SaveBoardCoolBarSettings;
1303 var
1304 i : Integer;
1305 CoolSet : TCoolSet;
1306 begin
1307 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1308 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1309 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1310 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1311 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1312 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1313 end;
1314 end;
1315 procedure TGikoForm.SaveBrowserCoolBarSettings;
1316 var
1317 i : Integer;
1318 CoolSet : TCoolSet;
1319 begin
1320 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1321 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1322 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1323 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1324 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1325 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1326 end;
1327 end;
1328 // CoolBar ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1329 procedure TGikoForm.LoadCoolBarSettings;
1330 var
1331 i : Integer;
1332 CoolSet : TCoolSet;
1333 begin
1334
1335 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Main)
1336 MainCoolBar.Bands.BeginUpdate;
1337 try
1338 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1339 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1340 CoolSet := GikoSys.Setting.MainCoolSet[i];
1341 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1342 FIsIgnoreResize := rtNone;
1343 SaveCoolBarSettings;
1344 Exit;
1345 end;
1346 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1347 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1348 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1349 end;
1350 finally
1351 MainCoolBar.Bands.EndUpdate;
1352 end;
1353
1354 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Board)
1355 ListCoolBar.Bands.BeginUpdate;
1356 try
1357 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1358 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1359 CoolSet := GikoSys.Setting.ListCoolSet[i];
1360 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1361 FIsIgnoreResize := rtNone;
1362 SaveCoolBarSettings;
1363 Exit;
1364 end;
1365 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1366 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1367 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1368 end;
1369 finally
1370 ListCoolBar.Bands.EndUpdate;
1371 end;
1372
1373 //?スN?ス[?ス?ス?スo?ス[?ス?ス?ス?ス(Browser)
1374 BrowserCoolBar.Bands.BeginUpdate;
1375 try
1376 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1377 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1378 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1379 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1380 FIsIgnoreResize := rtNone;
1381 SaveCoolBarSettings;
1382 Exit;
1383 end;
1384 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1385 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1386 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1387 end;
1388 finally
1389 BrowserCoolBar.Bands.EndUpdate;
1390 end;
1391
1392 end;
1393 //
1394 procedure TGikoForm.FormShow(Sender: TObject);
1395 begin
1396 if FStartUp then begin
1397 ShowWindow(Application.Handle, SW_HIDE);
1398
1399 //FormCreate?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スf?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFormShow?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1400 //?スc?ス[?ス?ス?スo?ス[?ス\?ス?ス
1401 GikoDM.StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1402 GikoDM.StdToolBarVisibleActionExecute( nil );
1403 GikoDM.AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1404 GikoDM.AddressBarVisibleActionExecute( nil );
1405 GikoDM.LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1406 GikoDM.LinkBarVisibleActionExecute( nil );
1407 GikoDM.ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1408 GikoDM.ListToolBarVisibleActionExecute( nil );
1409 GikoDM.ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1410 GikoDM.ListNameBarVisibleActionExecute( nil );
1411 GikoDM.BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1412 GikoDM.BrowserToolBarVisibleActionExecute( nil );
1413 GikoDM.BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1414 GikoDM.BrowserNameBarVisibleActionExecute( nil );
1415
1416 // CoolBar ?ス?ス?ス?ス
1417 LoadCoolBarSettings;
1418
1419 //?スd?スv?ス@?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スc?ス[?ス?ス?ス{?ス^?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1420 // ResetBandInfo( ListCoolBar, ListToolBar );
1421 FIsIgnoreResize := rtNone;
1422
1423 //FormCrete?ス?ス?ス?ス?ス?ス?ス?ス?スB
1424 if GikoSys.Setting.TabAutoLoadSave then begin
1425 GikoDM.TabAutoLoadAction.Execute;
1426 end;
1427
1428 //ActionList?ス?スGroupIndex?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1429 SetGroupIndex(GikoDM.GikoFormActionList);
1430
1431 FStartUp := false;
1432 end;
1433 end;
1434
1435 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1436 begin
1437 // if GikoForm.WindowState <> wsMinimized then
1438 // SaveCoolBarSettings;
1439 if ( GikoSys.Setting.ShowDialogForEnd ) and
1440 (MessageDlg('?スM?スR?スi?スr?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スH', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1441 CanClose := false;
1442 Exit;
1443 end else begin
1444 CanClose := True;
1445 if GikoSys.Setting.TabAutoLoadSave then begin
1446 GikoDM.TabAutoSaveAction.Execute;
1447 end;
1448 end;
1449 { //2ch?ス?ス?ス?ス?ス?ス?ス?スFree
1450 if GikoSys.Setting.Gengo <> nil then begin
1451 GikoSys.Setting.Gengo.Free;
1452 end;
1453 }
1454 Application.UnhookMainWindow(Hook);
1455 Application.Terminate;
1456 end;
1457
1458 procedure TGikoForm.FormDestroy(Sender: TObject);
1459 var
1460 i : Integer;
1461 // CoolSet: TCoolSet;
1462 wp : TWindowPlacement;
1463 tmpBool : Boolean;
1464 begin
1465 // ?ス}?スE?スX?スW?スF?スX?ス`?ス?ス?ス[?スJ?ス?ス
1466 try
1467 MouseGesture.UnHook;
1468 except
1469 end;
1470 try
1471 ActiveListColumnSave;
1472 except
1473 end;
1474 try
1475 //?ス?ス?ス?ス?ス?ス?スE?スE?スB?ス?ス?スh?スE?ス?ス?スu?ス?ス?ス?ス
1476 wp.length := sizeof(wp);
1477 GetWindowPlacement(Handle, @wp);
1478 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1479 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1480 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1481 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1482 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1483
1484 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1485 GikoSys.Setting.CabinetVisible := GikoDM.CabinetVisibleAction.Checked;
1486 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1487 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1488 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1489 if GikoDM.ArrangeAction.Checked then
1490 GikoSys.Setting.ListOrientation := gloVertical
1491 else
1492 GikoSys.Setting.ListOrientation := gloHorizontal;
1493 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1494 except
1495 end;
1496
1497 try
1498 // ?ス?ス?スX?ス\?ス?ス?ス?ス?ス?ス
1499 if not GikoSys.Setting.ResRangeHold then
1500 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1501 except
1502 end;
1503 if WindowState <> wsNormal then
1504 WindowState := wsNormal;
1505 SaveCoolBarSettings;
1506 try
1507 GikoSys.Setting.WriteWindowSettingFile;
1508 GikoSys.Setting.WriteNameMailSettingFile;
1509 except
1510 end;
1511 // ?ス?ス?スA?ス?ス?ス^?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?スA?スE?スB?ス?ス?スh?スE?スT?スC?スY?ス?ス CoolBar ?ス?ス?ス?ス
1512 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スl?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1513
1514 // ?ス?スFormDestroy?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スv?ス?ス?スB?スi?ス?ス?ス?ス?ス?ス?ス@2004/04/09?スj
1515 // CoolBar ?ス?ス?ス?ス
1516 //if (GikoForm.WindowState <> wsMinimized) and (GikoForm.WindowState <> wsMaximized) then
1517
1518
1519 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1520 try
1521 //FavoriteDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス
1522 FavoriteDM.WriteFavorite;
1523 FavoriteDM.Clear;
1524 except
1525 end;
1526 LockWindowUpdate(Self.Handle);
1527 try
1528 //?ス^?スu?スN?ス?ス?ス[?スY
1529 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1530 GikoSys.Setting.ShowDialogForAllTabClose := false;
1531 GikoDM.AllTabCloseAction.Execute;
1532 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1533 except
1534 end;
1535 try
1536 for i := FBrowsers.Count - 1 downto 0 do begin
1537 TWebBrowser(FBrowsers[i]).Free;
1538 end;
1539 FBrowsers.Clear;
1540 FBrowsers.Capacity := 0;
1541 finally
1542 FBrowsers.Free;
1543 end;
1544 try
1545 if BrowserNullTab <> nil then begin
1546 BrowserNullTab.Browser := nil; {*BrowserNullTab?ス?スBrowser?ス?ス?ス?ス?スv?ス?ス?ス?ス?ス\?ス?ス?スt?ス?ス?ス?ス?ス?ス?スz
1547 *?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スFree?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1548 *}
1549 BrowserNullTab.Free;
1550 end;
1551 except
1552 end;
1553
1554 try
1555 TreeView.Items.BeginUpdate;
1556 TreeView.Items.GetFirstNode.Free;
1557 TreeView.Items.Clear;
1558 TreeView.Items.EndUpdate;
1559 except
1560 end;
1561
1562 //?スA?スh?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス
1563 try
1564 //AddressHistoryDM?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スt?スH?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スI?ス?ス?ス?ス?ス?ス?ス?ス?スB
1565 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.MaxRecordCount);
1566 except
1567 end;
1568
1569 //?スq?スX?スg?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1570 try
1571 SaveHistory;
1572 except
1573 end;
1574 try
1575 try
1576 ClearHistory;
1577 except
1578 end;
1579 finally
1580 FHistoryList.Free;
1581 end;
1582
1583 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス&?スj?ス?ス
1584 try
1585 RoundList.SaveRoundFile;
1586 except
1587 end;
1588 try
1589 try
1590 RoundList.Clear;
1591 except
1592 end;
1593 finally
1594 RoundList.Free;
1595 end;
1596
1597 try
1598 try
1599 FControlThread.Terminate;
1600 FControlThread.WaitFor;
1601 except
1602 end;
1603 finally
1604 FControlThread.Free;
1605 end;
1606
1607 // TBBS ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス TCategory, TBoard, TThreadItem ?ス?ス?ス?ス?ス?ス?ス?ス?スJ?ス?ス?ス?ス?ス?ス
1608 // TBoard, TThreadItem ?ス?ス?スf?スX?スg?ス?ス?スN?ス^?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?スj?ス?ス?ス?ス?ス`?ス?ス?ス?ス?ス?ス?ス?ス
1609 // BoardPluteIns ?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス
1610 for i := Length(BoardGroups) - 1 downto 0 do begin
1611 //BoardGroups[i].Clear;
1612 BoardGroups[i].Free;
1613 end;
1614
1615 try
1616 for i := Length( BBSs ) - 1 downto 0 do begin
1617 if BBSs[ i ] <> nil then
1618 BBSs[ i ].Free;
1619 BBSs[ i ] := nil;
1620 end;
1621 except
1622 end;
1623
1624 try
1625 if FEvent <> nil then
1626 FEvent.Free;
1627
1628 //Hint?スj?ス?ス
1629 if FHint <> nil then begin
1630 FHint.ReleaseHandle;
1631 FHint.Free;
1632 FHint := nil;
1633 end;
1634 //Preview?スj?ス?ス
1635 if TPreviewBrowser <> nil then begin
1636 FPreviewBrowser.Free;
1637 FPreviewBrowser := nil;
1638 end;
1639 except
1640 end;
1641 LockWindowUpdate(0);
1642 end;
1643
1644 // ?スe?ス?ス?ス?ス?ス?ス?ス?ス?スL?ス?ス?スr?スl?スb?スg?スE BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スZ?スb?スg?ス^?スX?スV
1645 procedure TGikoForm.SetBBSMenu;
1646 var
1647 i : Integer;
1648 item : TBBSMenuItem;
1649 begin
1650
1651 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1652 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
1653 try
1654 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
1655 CabinetSelectPopupMenu.Items[ i ].Free;
1656 CabinetMenu.Items[ i ].Free;
1657 BBSSelectPopupMenu.Items[ i ].Free;
1658 end;
1659 except
1660 end;
1661 end;
1662
1663 // ?ス?ス?スj?ス?ス?ス[?ス?ス?ス?ス?ス?ス
1664 for i := Length( BBSs ) - 1 downto 0 do begin
1665 try
1666 item := TBBSMenuItem.Create( PopupMenu );
1667 item.Caption := BBSs[ i ].Title;
1668 item.Data := BBSs[ i ];
1669 item.OnClick := BBSMenuItemOnClick;
1670 CabinetSelectPopupMenu.Items.Insert( 0, item );
1671 item := TBBSMenuItem.Create( PopupMenu );
1672 item.Caption := BBSs[ i ].Title;
1673 item.Data := BBSs[ i ];
1674 item.OnClick := BBSMenuItemOnClick;
1675 CabinetMenu.Insert( 0, item );
1676 item := TBBSMenuItem.Create( PopupMenu );
1677 item.Caption := BBSs[ i ].Title;
1678 item.Data := BBSs[ i ];
1679 item.OnClick := BBSMenuItemOnClick;
1680 BBSSelectPopupMenu.Items.Insert( 0, Item );
1681 except
1682 end;
1683 end;
1684
1685 end;
1686
1687 procedure TGikoForm.ReloadBBS;
1688 var
1689 i : Integer;
1690 tmpBool: Boolean;
1691 begin
1692 LockWindowUpdate(Self.Handle);
1693
1694 //?ス^?スu?スN?ス?ス?ス[?スY
1695 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1696 GikoSys.Setting.ShowDialogForAllTabClose := false;
1697 GikoDM.AllTabCloseAction.Execute;
1698 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1699 SetContent(BrowserNullTab);
1700 //TreeView?スN?ス?ス?スA?スiBBS2ch.Free?ス?ス?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス?ス?スXP?スX?ス^?スC?ス?ス?ス?ス?ス?ス?スG?ス?ス?ス[?スo?ス?ス?スj
1701 TreeView.Items.Clear;
1702
1703 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?ス?ス
1704 try
1705 RoundList.SaveRoundFile;
1706 except
1707 end;
1708 //?ス?ス?ス?ス?ス?ス?スX?スg?ス?ス?スj?ス?ス
1709 try
1710 RoundList.Clear;
1711 except
1712 end;
1713
1714 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1715 try
1716 SaveHistory;
1717 ClearHistory;
1718 except
1719 end;
1720
1721 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スj?ス?ス
1722 try
1723 FavoriteDM.WriteFavorite;
1724 FavoriteDM.Clear;
1725 except
1726 end;
1727
1728 //?ス?ス?スE?スX?ス?ス?スEPLUGIN?ス?ス?スj?ス?ス
1729 for i := Length(BoardGroups) - 1 downto 0 do begin
1730 try
1731 BoardGroups[i].Free;
1732 except
1733 end;
1734 end;
1735 //BBS?スj?ス?ス
1736 try
1737 for i := Length( BBSs ) - 1 downto 0 do begin
1738 if BBSs[ i ] <> nil then
1739 BBSs[ i ].Free;
1740 BBSs[ i ] := nil;
1741 end;
1742 except
1743 end;
1744
1745 ActiveList := nil;
1746
1747 FTreeType := gttNone;
1748
1749 //============?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?ス?ス================================//
1750
1751 // ?スO?ス?ス?ス?ス?スv?ス?ス?スO?スC?ス?ス?ス?ス?ス?ス?ス[?スh(ReadBoardFile, LoadHistory ?ス?ス?ス?ス?ス?ス?ス?ス?スs?ス?ス?ス?ス?ス?ス)
1752 InitializeBoardPlugIns;
1753
1754 GikoSys.ListBoardFile; //?ス{?ス[?スh?スt?ス@?スC?ス?ス?ス?ス?ス?ス
1755
1756 // ?ス?ス?ス?ス?ス?ス?ス?スBBS?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1757 for i := Length(BBSs) - 1 downto 0 do begin
1758 if not BBSs[i].IsBoardFileRead then
1759 GikoSys.ReadBoardFile(BBSs[i]);
1760 end;
1761
1762 // BBS ?ス?ス?スj?ス?ス?ス[?ス?ス?スX?スV
1763 SetBBSMenu;
1764
1765 ShowBBSTree( BBSs[ 0 ] );
1766
1767 // ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1768 LoadHistory;
1769
1770 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1771 FavoriteDM.ReadFavorite;
1772
1773 SetLinkBar;
1774
1775 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1776 RoundList.LoadRoundBoardFile;
1777 RoundList.LoadRoundThreadFile;
1778
1779 LockWindowUpdate(0);
1780 //
1781 GikoDM.TabsOpenAction.Execute;
1782 end;
1783
1784
1785 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
1786 var
1787 p: TPoint;
1788 s: string;
1789 tmp2: string;
1790 URL: string;
1791 ATitle: Boolean;
1792
1793 threadItem : TThreadItem;
1794 board : TBoard;
1795 Protocol, Host, Path, Document, Port, Bookmark: string;
1796
1797 wkInt: Integer;
1798 wkIntSt: Integer;
1799 wkIntTo: Integer;
1800 ActiveFileName: string;
1801 e: IHTMLElement;
1802 Ext: string;
1803 PathRec: TPathRec;
1804 begin
1805 if not( TObject(Sender) is TWebBrowser )then
1806 Exit;
1807 try
1808 try
1809 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
1810 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
1811 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
1812 end;
1813 end;
1814 except
1815 end;
1816 finally
1817 end;
1818 if PreviewTimer.Enabled then
1819 PreviewTimer.Enabled := False;
1820 Application.CancelHint;
1821 try
1822 if GetActiveContent <> nil then
1823 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
1824 else
1825 ActiveFileName := '';
1826 except
1827 FActiveContent := nil;
1828 Exit;
1829 end;
1830
1831 StatusBar.Panels[1].Text := Text;
1832
1833 if FHint <> nil then begin
1834 FHint.ReleaseHandle;
1835 FHint.ClearAllRes;
1836 end;
1837 if FPreviewBrowser <> nil then
1838 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1839
1840 if not GikoSys.Setting.UnActivePopup then
1841 if not GikoForm.Active then
1842 Exit;
1843
1844 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
1845 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
1846
1847 s := '';
1848 Ext := AnsiLowerCase(ExtractFileExt(Text));
1849 if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
1850 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
1851 if FPreviewBrowser = nil then begin
1852 FPreviewBrowser := TPreviewBrowser.Create(Self);
1853 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
1854 TOleControl(FPreviewBrowser).Parent := nil;
1855 end;
1856 FPreviewBrowser.Navigate(BLANK_HTML);//?スO?ス?ス?ス?ス?スv?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?ス?ス?ス?ス?スp
1857 FPreviewURL := Text;
1858 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
1859 PreviewTimer.Enabled := True;
1860 end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
1861 if Pos('mailto:', Text) = 1 then begin
1862 s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
1863 //?スM?スR?スi?スr?スX?ス?ス ?スp?ス[?スg3?ス?ス466?ス?ス?ス?ス?ス?ス?ス?ス
1864 GetCursorPos(p);
1865 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
1866 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
1867 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
1868 if (Assigned(e)) then begin
1869 tmp2 := ZenToHan(e.Get_outerText);
1870 if (GikoSys.IsNumeric(tmp2)) then begin
1871 //?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
1872 wkIntSt := StrToInt(tmp2);
1873 wkIntTo := StrToInt(tmp2);
1874 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
1875 FHint.PopupType := gptThread;
1876 HTMLCreater.SetResPopupText(FHint, GetActiveContent, wkIntSt, wkIntTo, False, False);
1877 end else begin
1878 FHint.PopupType := gptRaw;
1879 FHint.Caption := s;
1880 end;
1881 end;
1882 end else begin
1883 threadItem := GetActiveContent;
1884 URL := THTMLCreate.GetRespopupURL(Text, threadItem.URL);
1885 PathRec := Gikosys.Parse2chURL2(URL);
1886 if (PathRec.FNoParam) then begin
1887 PathRec.FSt := 1;
1888 PathRec.FTo := 1;
1889 end else begin
1890 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
1891 end;
1892 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
1893
1894 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
1895
1896 URL := GikoSys.GetBrowsableThreadURL( URL );
1897 wkIntSt := PathRec.FSt;
1898 wkIntTo := PathRec.FTo;
1899
1900 if (wkIntSt = 0) and (wkIntTo = 0) then begin
1901 wkIntSt := 1;
1902 wkIntTo := 1;
1903 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
1904 wkIntSt := wkIntTo;
1905 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
1906 wkIntTo := wkIntSt;
1907 end else if wkIntSt > wkIntTo then begin
1908 wkInt := wkIntTo;
1909 wkIntTo := wkIntSt;
1910 wkIntSt := wkInt;
1911 end;
1912 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
1913 ATitle := false
1914 else
1915 ATitle := true;
1916
1917 threadItem := BBSsFindThreadFromURL( URL );
1918
1919 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
1920 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
1921 if board <> nil then begin
1922 if not board.IsThreadDatRead then
1923 GikoSys.ReadSubjectFile( board );
1924 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
1925 end;
1926 end;
1927
1928 if threadItem <> nil then begin
1929 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
1930 //URL?ス?ス?ス?ス?ス?ス?ス?ス/?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スp
1931 if ( IntToStr(wkIntSt) = ChangeFileExt(threadItem.FileName, '') ) then begin
1932 wkIntSt := 1;
1933 wkIntTo := 1;
1934 end;
1935 FHint.PopupType := gptThread;
1936 HTMLCreater.SetResPopupText(FHint, threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
1937 end;
1938 end;
1939 end;
1940
1941 if FHint.PopupType = gptRaw then begin
1942 if FHint.Caption <> '' then
1943 ShowTextPopup;
1944 end else begin
1945 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
1946 ShowTextPopup;
1947 end;
1948 end;
1949 end;
1950
1951 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
1952 var
1953 SysMenu: HMenu;
1954 begin
1955 FEnabledCloseButton := Enabled;
1956 SysMenu := GetSystemMenu(Handle, False);
1957
1958 if Enabled then begin
1959 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
1960 end else begin
1961 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
1962 end;
1963
1964 DrawMenuBar(Handle);
1965 end;
1966
1967 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
1968 var AllowChange: Boolean);
1969 begin
1970 //?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
1971 // if FTreeType = gtt2ch then
1972 // FSortIndex := -1;
1973 end;
1974
1975 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
1976 Shift: TShiftState);
1977 var
1978 pos : TPoint;
1979 begin
1980 if GetActiveList is TBoard then begin
1981 case Key of
1982 VK_BACK:; // UpFolderButtonClick(Sender);
1983 VK_SPACE: ListDoubleClick(Shift);
1984 VK_RETURN: ListClick;
1985 VK_APPS:
1986 begin
1987 if ListView.Selected <> nil then begin
1988 pos.X := ListView.Column[ 0 ].Width;
1989 pos.Y := ListView.Selected.Top;
1990 end else begin
1991 pos.X := ListView.Left;
1992 pos.Y := ListView.Top;
1993 end;
1994 Windows.ClientToScreen( ListView.Handle, pos );
1995 ListPopupMenu.Popup( pos.X, pos.Y );
1996 end;
1997 end;
1998 end else begin // TBBS, TCategory
1999 case Key of
2000 VK_BACK:; // UpFolderButtonClick(Sender);
2001 VK_SPACE: ListClick;
2002 VK_RETURN: ListDoubleClick(Shift);
2003 VK_APPS:
2004 begin
2005 if ListView.Selected <> nil then begin
2006 pos.X := ListView.Column[ 0 ].Width;
2007 pos.Y := ListView.Selected.Top;
2008 end else begin
2009 pos.X := ListView.Left;
2010 pos.Y := ListView.Top;
2011 end;
2012 Windows.ClientToScreen( ListView.Handle, pos );
2013 ListPopupMenu.Popup( pos.X, pos.Y );
2014 end;
2015 end;
2016 end;
2017 end;
2018
2019 function TGikoForm.GetHttpState: Boolean;
2020 begin
2021 Result := FHttpState;
2022 end;
2023
2024 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2025 Column: TListColumn);
2026 var
2027 id, idx : Integer;
2028 orderList : TList;
2029 vSortIndex : Integer;
2030 vSortOrder : Boolean;
2031 begin
2032 idx := TListViewUtils.ActiveListTrueColumn( Column ).Tag;
2033 if TObject( FActiveList ) is TBBS then begin
2034 orderList := GikoSys.Setting.BBSColumnOrder;
2035 vSortIndex := GikoSys.Setting.BBSSortIndex;
2036 vSortOrder := GikoSys.Setting.BBSSortOrder;
2037 end else if TObject( FActiveList ) is TCategory then begin
2038 orderList := GikoSys.Setting.CategoryColumnOrder;
2039 vSortIndex := GikoSys.Setting.CategorySortIndex;
2040 vSortOrder := GikoSys.Setting.CategorySortOrder;
2041 end else if TObject( FActiveList ) is TBoard then begin
2042 orderList := GikoSys.Setting.BoardColumnOrder;
2043 vSortIndex := GikoSys.Setting.BoardSortIndex;
2044 vSortOrder := GikoSys.Setting.BoardSortOrder;
2045 end else
2046 Exit;
2047
2048 id := Integer( orderList[ idx ] );
2049
2050
2051 if vSortIndex = id then
2052 vSortOrder := not vSortOrder
2053 else begin
2054 vSortOrder := id = 0;
2055 end;
2056
2057 TListViewUtils.ListViewSort(Sender, ListView, Column, GikoDM.ListNumberVisibleAction.Checked, vSortOrder);
2058 end;
2059
2060 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
2061 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
2062 var
2063 ARect: TRect;
2064 begin
2065 DefaultDraw := True;
2066 Exit;
2067 DefaultDraw := False;
2068 if (cdsSelected in State) or (cdsHot in State) then begin
2069 Sender.Canvas.Brush.Color := clHighlight;
2070 Sender.Canvas.Font.Color := clHighlightText;
2071 end else begin
2072 Sender.Canvas.Brush.Color := clBtnFace;
2073 Sender.Canvas.Font.Color := clBtnText;
2074 end;
2075 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
2076 Sender.Canvas.FillRect(ARect);
2077 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
2078 end;
2079
2080 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
2081 var
2082 Nodes: TTreeNodes;
2083 i: integer;
2084 begin
2085 Nodes := TreeView.Items;
2086
2087 for i := 0 to Nodes.Count - 1 do begin
2088 if Nodes.Item[i].Data = Data then begin
2089 Result := Nodes.Item[i];
2090 Exit;
2091 end;
2092 end;
2093 Result := nil;
2094 end;
2095
2096 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
2097 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
2098 Headers: OleVariant; var Cancel: WordBool);
2099 var
2100 sNo: string;
2101 p: TPoint;
2102 const
2103 kMenuName: string = 'menu:';
2104 begin
2105
2106 if Pos(kMenuName, URL) <> 0 then begin
2107 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
2108
2109 if not GikoSys.IsNumeric(sNo) then Exit;
2110
2111 Cancel := True;
2112 GetCursorpos(p);
2113 KokoPopupMenu.Tag := StrToInt(sNo);
2114 KokoPopupMenu.Popup(p.x, p.y);
2115 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
2116 Cancel := not GikoSys.Setting.OpenMailer;
2117 end;
2118
2119 end;
2120
2121 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
2122 const ARect: TRect; var DefaultDraw: Boolean);
2123 var
2124 NodeRect: TRect;
2125 i, j: Integer;
2126 IsBoardNode: Boolean;
2127 Cnt: Integer;
2128 CntText: string;
2129 TextWidth: Integer;
2130 TextRect: TRect;
2131 Board: TBoard;
2132 Category: TCategory;
2133 Bitmap: TBitmap;
2134 NodeWidth: Integer;
2135 begin
2136 DefaultDraw := True;
2137
2138 if FTreeType = gttHistory then Exit;
2139
2140 TreeView.Canvas.Font.Color := clBlue;
2141 IsBoardNode := False;
2142 for i := 0 to TreeView.Items.Count - 1 do begin
2143 Cnt := 0;
2144 if not TreeView.Items[i].IsVisible then
2145 continue;
2146
2147 if TObject(TreeView.Items[i].Data) is TCategory then begin
2148 if TreeView.Items[i].Expanded then
2149 continue;
2150
2151 IsBoardNode := False;
2152 Category := TCategory(TreeView.Items[i].Data);
2153 for j := 0 to Category.Count - 1 do begin
2154 Board := Category.Items[j];
2155 if Board <> nil then begin
2156 if Board.UnRead > 0 then begin
2157 Cnt := 1;
2158 Break;
2159 end;
2160 end;
2161 end;
2162 if Cnt <> 1 then
2163 continue;
2164 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
2165 IsBoardNode := True;
2166 Board := TBoard(TreeView.Items[i].Data);
2167
2168 Cnt := Board.UnRead;
2169 if Cnt <= 0 then
2170 continue;
2171 end else
2172 continue;
2173
2174 Bitmap := TBitmap.Create;
2175 try
2176 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
2177 Bitmap.Canvas.Font.Style := [fsBold];
2178 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
2179 finally
2180 Bitmap.Free;
2181 end;
2182
2183 NodeRect := TreeView.Items[i].DisplayRect(True);
2184
2185 if IsBoardNode then
2186 CntText := '(' + IntToStr(Cnt) + ')'
2187 else if Cnt = 1 then
2188 CntText := '(+)';
2189
2190
2191 TextWidth := TreeView.Canvas.TextWidth(CntText);
2192
2193 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
2194 NodeRect.Top,
2195 NodeRect.Left + NodeWidth + TextWidth + 8,
2196 NodeRect.Bottom);
2197 DrawText(TreeView.Canvas.Handle,
2198 PChar(CntText),
2199 -1,
2200 TextRect,
2201 DT_SINGLELINE or DT_VCENTER);
2202 end;
2203 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
2204 end;
2205
2206 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
2207 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
2208 var
2209 Board: TBoard;
2210 Category: TCategory;
2211 i: Integer;
2212 begin
2213 DefaultDraw := True;
2214
2215 if FTreeType = gttHistory then Exit;
2216
2217 TreeView.Canvas.Font.Style := [];
2218 if Node <> nil then begin
2219 if TObject(Node.Data) is TCategory then begin
2220 Category := TCategory(Node.Data);
2221 for i := 0 to Category.Count - 1 do begin
2222 Board := Category.Items[i];
2223 if Board <> nil then begin
2224 if Board.UnRead > 0 then begin
2225 TreeView.Canvas.Font.Style := [fsBold];
2226 Break;
2227 end;
2228 end;
2229 end;
2230 end else if TObject(Node.Data) is TBoard then begin
2231 Board := TBoard(Node.Data);
2232 if Board.UnRead > 0 then
2233 TreeView.Canvas.Font.Style := [fsBold];
2234 end;
2235 end;
2236 end;
2237
2238 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
2239 begin
2240 TreeView.Invalidate;
2241
2242 if TObject(Node.Data) is TBBS then begin
2243 TBBS(Node.Data).NodeExpand := True;
2244 end else if TObject(Node.Data) is TCategory then begin
2245 TCategory(Node.Data).NodeExpand := True;
2246 end else if TObject(Node.Data) is TBoard then begin
2247 TBoard(Node.Data).NodeExpand := True;
2248 end;
2249 end;
2250
2251 procedure TGikoForm.ListViewAllSelect;
2252 begin
2253 ListView.SetFocus;
2254 ListView.SelectAll;
2255 end;
2256 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
2257 begin
2258 AddMessageList(Msg, nil, Icon);
2259 end;
2260 // *************************************************************************
2261 //! ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スC?スx?ス?ス?スg
2262 // *************************************************************************
2263 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
2264 var
2265 ATitle: string;
2266 s: string;
2267 boardPlugIn : TBoardPlugIn;
2268 i: Integer;
2269 browserRec : TBrowserRecord;
2270 Res : TResRec;
2271 begin
2272 try
2273 if Item.DownType = gdtBoard then
2274 ATitle := Item.Board.Title
2275 else
2276 ATitle := Item.ThreadItem.Title;
2277 if ATitle = '' then
2278 ATitle := GikoSys.GetGikoMessage(gmUnKnown);
2279
2280 if Item.State in [gdsComplete, gdsDiffComplete] then begin
2281 //?ス?ス?ス?ス?スI?ス?ス
2282 if Item.DownType = gdtBoard then begin
2283 //?ス?ス
2284 Item.SaveListFile;
2285 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureItiran), nil, gmiOK);
2286 if GetActiveList = Item.Board then begin
2287 FActiveList := nil;
2288 //?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス[?スg?ス?ス?ス?ス?スN?ス?ス?スA?ス?ス?ス?ス
2289 if (GikoSys.Setting.AutoSortThreadList) then begin
2290 GikoSys.Setting.BoardSortIndex := 0;
2291 GikoSys.Setting.BoardSortOrder := True;
2292 end;
2293 SetActiveList(Item.Board);
2294 end;
2295 Item.Board.Modified := True;
2296 Item.Board.IsThreadDatRead := True;
2297 PlaySound('New');
2298 end else if Item.DownType = gdtThread then begin
2299 //?スX?ス?ス
2300 Item.SaveItemFile;
2301 Item.ThreadItem.NewArrival := True;
2302 //if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2303 if (Item.ThreadItem.ParentBoard.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
2304 //boardPlugIn := Item.ThreadItem.BoardPlugIn;
2305 boardPlugIn := Item.ThreadItem.ParentBoard.BoardPlugIn;
2306 THTMLCreate.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 ), @Res);
2307 Item.ThreadItem.Title := Res.FTitle;
2308 ATitle := Item.ThreadItem.Title;
2309 end else if ATitle = '?スi?ス?ス?ス?ス?スs?ス?ス?スj' then begin
2310 THTMLCreate.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1), @Res);
2311 ATitle := Res.FTitle;
2312 end;
2313 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2314 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin
2315 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2316 break;
2317 end;
2318 end;
2319 if GikoSys.Setting.BrowserTabVisible then begin
2320 if GetActiveContent = Item.ThreadItem then
2321 browserRec := InsertBrowserTab(Item.ThreadItem)
2322 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
2323 browserRec := InsertBrowserTab(Item.ThreadItem, True)
2324 else
2325 browserRec := InsertBrowserTab(Item.ThreadItem, False);
2326 if browserRec.Thread = BrowserNullTab.Thread then begin
2327 browserRec.Movement := BrowserNullTab.Movement;
2328 BrowserNullTab.Movement := '';
2329 end;
2330 end else begin
2331 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
2332 InsertBrowserTab(Item.ThreadItem);
2333 end;
2334
2335 Application.ProcessMessages;
2336
2337 if Item.State = gdsComplete then begin
2338 PlaySound('New');
2339 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureSyutoku), nil, gmiOK);
2340 //Add by Genyakun
2341 DiffComp := True;
2342 end else begin
2343 PlaySound('NewDiff');
2344 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmSureDiff), nil, gmiOK);
2345 //Add by Genyakun
2346 DiffComp := True;
2347 end;
2348
2349 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スP?スO?スO?スO?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2350 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
2351 Item.ThreadItem.Round := False;
2352 //Item.ThreadItem.RoundName := '';
2353 AddMessageList('?ス?ス1000?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス - [' + Item.ThreadItem.Title + ']', nil, gmiOK);
2354 end;
2355 TreeView.Refresh;
2356 //ListView?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス
2357 if (ActiveList <> nil) and (ActiveList is TBoard) then begin
2358 TBoard(ActiveList).LogThreadCount := TBoard(ActiveList).GetLogThreadCount;
2359 TBoard(ActiveList).NewThreadCount := TBoard(ActiveList).GetNewThreadCount;
2360 TBoard(ActiveList).UserThreadCount:= TBoard(ActiveList).GetUserThreadCount;
2361 //ListView?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV
2362 case GikoForm.ViewType of
2363 gvtAll: ListView.Items.Count := TBoard(ActiveList).Count;
2364 gvtLog: ListView.Items.Count := TBoard(ActiveList).LogThreadCount;
2365 gvtNew: ListView.Items.Count := TBoard(ActiveList).NewThreadCount;
2366 gvtUser: ListView.Items.Count := TBoard(ActiveList).UserThreadCount;
2367 end;
2368 end;
2369 end;
2370 ListView.Refresh;
2371 end else if Item.State = gdsNotModify then begin
2372 //?ス?ス?スX?スi?スV
2373 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
2374 //SetContent(Item.ThreadItem);
2375 InsertBrowserTab(Item.ThreadItem);
2376 end;}
2377 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmNotMod), nil, gmiSAD);
2378 PlaySound('NoChange');
2379 Screen.Cursor := crDefault;
2380 end else if Item.State = gdsAbort then begin
2381 //?ス?ス?スf
2382 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
2383 end else if Item.State = gdsError then begin
2384 //?スG?ス?ス?ス[
2385 s := Item.ErrText;
2386 if s <> '' then
2387 s := ':' + s;
2388 AddMessageList(ATitle + ' ' + GikoSys.GetGikoMessage(gmError) + ' (' + IntToStr(Item.ResponseCode) + ')' + s, nil, gmiNG);
2389 // if Item.ResponseCode = 302 then
2390 // AddMessageList('?ス?ス?ス?ス?ス?ス?ス]?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?スV?ス?ス?スs?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB', nil, gmiNG);
2391 PlaySound('Error');
2392 end;
2393 finally
2394 Item.Free;
2395 Dec(FWorkCount);
2396 if FWorkCount < 0 then FWorkCount := 0;
2397 if FWorkCount = 0 then begin
2398 try
2399 Animate.Active := False;
2400 finally
2401 Screen.Cursor := crDefault;
2402 end;
2403 end;
2404
2405 end;
2406 end;
2407
2408 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
2409 begin
2410 // SetProgressValue(Number, 0, AWorkCountMax);
2411 // ProgressBar.Visible := True;
2412 ProgressBar.Position := 0;
2413 ProgressBar.Max := AWorkCountMax;
2414 FDownloadTitle := AWorkTitle;
2415 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?スJ?スn?ス?ス?ス?ス?ス?ス';
2416 FDownloadMax := AWorkCountMax;
2417 end;
2418
2419 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
2420 begin
2421 ProgressBar.Position := 0;
2422 if FDownloadMax <> 0 then
2423 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス';
2424 end;
2425
2426 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
2427 begin
2428 ProgressBar.Position := AWorkCount;
2429 // SetProgressValue(Number, AWorkCount);
2430 StatusBar.Panels[1].Text := FDownloadTitle + ' - ?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
2431 end;
2432
2433 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
2434 var
2435 ListItem: TListItem;
2436 begin
2437 MessageListView.Items.BeginUpdate;
2438 try
2439 ListItem := MessageListView.Items.Add;
2440 ListItem.Caption := ACaption;
2441 ListItem.Data := AObject;
2442 ListItem.MakeVisible(False);
2443 case Icon of
2444 gmiOK: ListItem.ImageIndex := 0;
2445 gmiSAD: ListItem.ImageIndex := 1;
2446 gmiNG: ListItem.ImageIndex := 2;
2447 gmiWhat: ListItem.ImageIndex := 3;
2448 end;
2449 finally
2450 MessageListView.Items.EndUpdate;
2451 end;
2452 end;
2453
2454
2455 function TGikoForm.InsertBrowserTab(
2456 ThreadItem : TThreadItem;
2457 ActiveTab : Boolean = True
2458 ) : TBrowserRecord;
2459 var
2460 i, j, idx : Integer;
2461 favItem : TFavoriteThreadItem;
2462 newBrowser : TBrowserRecord;
2463 begin
2464
2465 Result := nil;
2466 if Threaditem = nil then Exit;
2467
2468 if ThreadItem.IsLogFile then begin
2469 //?ス?ス?スC?ス?ス?ス?ス?ス?ス?ス?ス?スS?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スA?ス?ス?スJ?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?スbrowser?ス?ス?スt?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2470 //?ス?ス?ス?ス?スS?ス?ス?ス?ス?ス?スActive?ス?ス?スu?ス?ス?スE?スU?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2471 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
2472 (FActiveContent.Browser <> BrowserNullTab.Browser)then begin
2473 j := FBrowsers.IndexOf(FActiveContent.Browser);
2474 if j = BROWSER_COUNT - 1 then
2475 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2476 end;
2477 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
2478 if not AddHistory( favItem ) then
2479 favItem.Free;
2480
2481 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
2482 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
2483 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
2484 Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] );
2485 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = nil then begin
2486 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2487 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2488 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2489 break;
2490 end;
2491 end;
2492 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2493 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
2494 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2495 end;
2496 if ActiveTab then begin
2497 BrowserTab.TabIndex := i;
2498 BrowserTab.OnChange(nil);
2499 BrowserTab.Repaint;
2500 end;
2501 Exit;
2502 end;
2503 end;
2504 end;
2505 idx := BrowserTab.TabIndex;
2506 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
2507 newBrowser := TBrowserRecord.Create;
2508 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2509 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2510 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2511 break;
2512 end;
2513 end;
2514 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2515 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2516 //newBrowser.Browser.Navigate(BLANK_HTML);
2517 newBrowser.thread := ThreadItem;
2518 newBrowser.Repaint := true;
2519 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2520
2521 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2522 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2523 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
2524 end;// else begin
2525 //end;
2526 BrowserTab.Repaint;
2527 if ActiveTab then begin
2528 BrowserTab.TabIndex := 0;
2529 end;
2530
2531 end else begin
2532 newBrowser := TBrowserRecord.Create;
2533 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
2534 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2535 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
2536 break;
2537 end;
2538 end;
2539 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2540 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2541 //newBrowser.Browser.Navigate(BLANK_HTML);
2542 newBrowser.thread := ThreadItem;
2543 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
2544 newBrowser.Repaint := true;
2545
2546 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
2547 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
2548 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
2549 end;
2550 //end;
2551 BrowserTab.Repaint;
2552 if ActiveTab then begin
2553 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
2554 BrowserTab.TabIndex := 0
2555 else
2556 BrowserTab.TabIndex := i;
2557 end;
2558 end;
2559 Result := newBrowser;
2560 if(ActiveTab) or (idx = -1) then begin
2561 BrowserTab.OnChange(nil);
2562 end;
2563 end else begin
2564 if BrowserNullTab = nil then begin
2565 BrowserNullTab := TBrowserRecord.Create;
2566 BrowserNullTab.Browser := Browser;
2567 end;
2568 if BrowserNullTab.thread <> ThreadItem then begin
2569 BrowserNullTab.Movement := '';
2570 end;
2571 BrowserNullTab.thread := ThreadItem;
2572 Result := BrowserNullTab;
2573 BrowserTab.TabIndex := -1;
2574 SetContent(BrowserNullTab);
2575 end;
2576
2577 if GikoSys.Setting.URLDisplay then
2578 AddressComboBox.Text := ThreadItem.URL;
2579
2580 end;
2581
2582 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
2583 var
2584 BBSID: string;
2585 FileName: string;
2586 sTitle: string;
2587 doc: Variant;
2588 s: string;
2589 i: Integer;
2590 idx: Integer;
2591 ThreadItem: TThreadItem;
2592 Thread: TBrowserRecord;
2593 ThreadTitle, ThreadPTitle: string;
2594 ThreadIsLog, {ThreadUnRead,} ThreadNewArraical: boolean;
2595 begin
2596 Thread := inThread;
2597 idx := BrowserTab.TabIndex;
2598 if (FActiveContent <> nil) and
2599 (FActiveContent.Thread <> Thread.Thread) and
2600 (FActiveContent.Browser <> nil) and
2601 (Assigned(FActiveContent.Browser.Document)) then begin
2602 try
2603 try
2604 Sleep(1);
2605 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
2606 except
2607 on E: Exception do
2608 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
2609 end;
2610 finally
2611 end;
2612 end;
2613 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
2614 Thread.Browser.Navigate(BLANK_HTML);
2615 BrowserBoardNameLabel.Caption := '';
2616 ItemBoardImage.Picture := nil;
2617 BrowserNameLabel.Caption := '';
2618 ItemImage.Picture := nil;
2619 BrowserNullTab.Thread := nil;
2620 //TOleControl(BrowserNullTab.Browser).Visible := true;
2621 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
2622 FActiveContent := nil;
2623 Exit;
2624 end else if Thread.Browser = nil then begin
2625 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
2626 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2627 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
2628 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
2629 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
2630 break;
2631 end;
2632 end;
2633 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
2634 FBrowsers.Move(BROWSER_COUNT - 1, 0);
2635 end;
2636
2637 ThreadTitle := Thread.Thread.Title;
2638 ThreadPTitle := Thread.Thread.ParentBoard.Title;
2639 //ThreadScrollTop := Thread.Thread.ScrollTop;
2640 ThreadIsLog := Thread.Thread.IsLogFile;
2641 ThreadItem := Thread.Thread;
2642 ThreadNewArraical := Thread.Thread.NewArrival;
2643 //ThreadUnRead := Thread.Thread.UnRead;
2644 BBSID := ThreadItem.ParentBoard.BBSID;
2645 FileName := ThreadItem.FileName;
2646
2647 if GetCapture = ListView.Handle then
2648 ReleaseCapture;
2649
2650 Screen.Cursor := crHourGlass;
2651
2652
2653 try
2654 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
2655 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
2656 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
2657 end;
2658 ShowWindow(Thread.Browser.Handle, SW_SHOW);
2659 if (not Assigned(Thread.Browser.Document)) then begin
2660 Thread.Browser.Navigate('about:blank');
2661 end;
2662
2663 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
2664 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
2665 Application.ProcessMessages;
2666 if idx <> BrowserTab.TabIndex then begin
2667 Exit;
2668 end;
2669 end;
2670
2671 //ActiveContent?ス@?ス?ス?スX?スV
2672 FActiveContent := Thread;
2673
2674 if not ThreadIsLog then begin
2675 Self.Caption := GikoDataModule.CAPTION_NAME ;
2676 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス?ス?ス?ス
2677 StatusBar.Panels[THREADSIZE_PANEL].Text := '';
2678 try
2679 s := '<HTML><BODY><CENTER>?ス?ス?ス?ス?スX?ス?ス?スb?スh?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス</CENTER></BODY></HTML>';
2680 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
2681 doc.open;
2682 doc.charset := 'Shift_JIS';
2683 doc.Write(s);
2684 doc.Close;
2685 finally
2686 end;
2687 end else begin
2688 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + ThreadTitle + ']';
2689 //?スX?スe?ス[?ス^?スX?スo?ス[?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?スe?ス?ス?ス?ス?ス\?ス?ス
2690 StatusBar.Panels[THREADSIZE_PANEL].Text := Format('%6.2f kB', [ThreadItem.Size / 1024]);
2691 StatusBar.Panels[THREADSIZE_PANEL].Width :=
2692 Max(StatusBar.Canvas.TextWidth(StatusBar.Panels[THREADSIZE_PANEL].Text), 70);
2693 //Thread.Repaint?ス?ス?スA?スX?スL?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スX?ス?ス?ス?ス?ス?ス?ス?ス?スAThread?ス?ス?ス_?スE?ス?ス?ス?ス?ス[?スh?ス?ス?ス?ス?ス?ス?ス?ス
2694 //?スV?スK?ス?スThread?ス?ス?スJ?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス^?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB
2695 if Thread.Repaint then begin
2696 Thread.Repaint := false;
2697
2698 Thread.Browser.OnStatusTextChange := nil;
2699 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
2700
2701 //GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
2702 HTMLCreater.CreateHTML2(doc, ThreadItem, sTitle);
2703 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
2704
2705 if ThreadItem = nil then begin
2706 FActiveContent := nil;
2707 BrowserTab.Repaint;
2708 Exit;
2709 end;
2710 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
2711 end;
2712 end;
2713 if (Thread <> nil) and (ThreadItem <>nil) then begin
2714 BrowserBoardNameLabel.Caption := ThreadPTitle;
2715 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
2716 BrowserNameLabel.Caption := ThreadTitle;
2717 ItemImage.Picture := nil;
2718 if ThreadIsLog then
2719 if ThreadNewArraical then
2720 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
2721 else
2722 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
2723 else
2724 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
2725
2726 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
2727 BrowserNameLabel.Left := ItemImage.Left + 20;
2728
2729 //Thread?ス?ス?ス?ス?ス?ス?ス\?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス`?ス?ス?ス?ス?スX?スV?ス?ス?ス?ス
2730 if (FActiveList is TBoard) and (TBoard(ActiveList) = ThreadItem.ParentBoard) then
2731 ListView.Refresh;
2732 end else begin
2733 FActiveContent := nil;
2734 end;
2735 finally
2736 Screen.Cursor := crDefault;
2737 end;
2738 end;
2739
2740 function TGikoForm.GetActiveContent: TThreadItem;
2741 begin
2742 try
2743 if FActiveContent <> nil then
2744 Result := FActiveContent.Thread
2745 else
2746 Result := nil;
2747 except
2748 Result := nil;
2749 end;
2750
2751 end;
2752
2753 procedure TGikoForm.SetActiveList(Obj: TObject);
2754 var
2755 idx : Integer;
2756 begin
2757 // if FActiveList <> Obj then begin
2758 FActiveList := Obj;
2759 try
2760 if ListView.Selected <> nil then
2761 idx := ListView.Selected.Index
2762 else
2763 idx := -1;
2764 except
2765 idx := -1;
2766 end;
2767 ListView.Items.Count := 0;
2768 ListView.Items.Clear;
2769 ListView.Selected := nil;
2770 // ListView.Columns.Clear;
2771 if (FActiveContent <> nil) and (FActiveContent.Thread <> nil)
2772 and (FActiveContent.Thread.IsLogFile) then begin
2773 try
2774 Self.Caption := GikoDataModule.CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']'
2775 except
2776 on E: Exception do begin
2777 //?スX?ス?ス?ス?ス?ス?スDL?ス?ス?ス?ス?ス?ス?ス?スFActiveContent?ス?ス?ス?ス?ス?スThread?ス?ス
2778 //?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス
2779 ReleaseBrowser(FActiveContent);
2780 FActiveContent.Thread := nil;
2781 Self.Caption := GikoDataModule.CAPTION_NAME;
2782 end;
2783 end;
2784 end else
2785 Self.Caption := GikoDataModule.CAPTION_NAME;
2786 //Application.Title := CAPTION_NAME;
2787
2788 // ActiveListColumnSave;
2789
2790 Screen.Cursor := crHourGlass;
2791 try
2792 if Obj is TBBS then begin
2793 TListViewUtils.SetCategoryListItem(TBBS(obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2794 end else if Obj is TCategory then begin
2795 TListViewUtils.SetBoardListItem(TCategory(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2796 end else if Obj is TBoard then begin
2797 TListViewUtils.SetThreadListItem(TBoard(Obj), ListView, GikoDM.ListNumberVisibleAction.Checked);
2798 end;
2799 finally
2800 Screen.Cursor := crDefault;
2801 end;
2802
2803 if idx >= 0 then begin
2804 if idx >= ListView.Items.Count then
2805 idx := ListView.Items.Count - 1;
2806 ListView.ItemIndex := idx;
2807 ListView.ItemFocused := ListView.Items.Item[ idx ];
2808 end;
2809 // end;
2810 end;
2811
2812
2813 //?ス?ス?ス?ス?スq?ス?ス?ス?ス?スL?ス?ス?ス?ス
2814 //?ス?ス?ス?ス?ス?ス?ス?スinterface?ス?ス?スg?ス?ス
2815 function TGikoForm.GetActiveList: TObject;
2816 begin
2817 Result := FActiveList;
2818 end;
2819
2820 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
2821 begin
2822 SetListViewType(AViewType, '', False);
2823 end;
2824
2825 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
2826 var
2827 Board: TBoard;
2828 i: Integer;
2829 begin
2830 for i := Length( BBSs ) - 1 downto 0 do begin
2831 BBSs[i].SelectText := SelectText;
2832 BBSs[i].KubetsuChk := KubetsuChk;
2833 end;
2834 ViewType := AViewType;
2835 if ActiveList is TBoard then begin
2836 Board := TBoard(ActiveList);
2837 case ViewType of
2838 //gvtAll: ListView.Items.Count := Board.Count;
2839 gvtLog: Board.LogThreadCount := Board.GetLogThreadCount;
2840 gvtNew: Board.NewThreadCount := Board.GetNewThreadCount;
2841 gvtUser: Board.UserThreadCount:= Board.GetUserThreadCount;
2842 end;
2843
2844 SetActiveList(Board);
2845 end;
2846 end;
2847
2848 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
2849 const ARect: TRect; var DefaultDraw: Boolean);
2850 var
2851 s: string;
2852 p: TPoint;
2853 // Board: TBoard;
2854 begin
2855 if ListView.Items.Count = 0 then begin
2856 DefaultDraw := true;
2857 ListView.Canvas.Brush.Color := ListView.Color;
2858 ListView.Canvas.FillRect(ARect);
2859
2860 case ViewType of
2861 gvtAll: begin
2862 ListView.Canvas.Font.Color := clWindowText;
2863 s := '?ス?ス?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
2864 end;
2865 gvtLog: begin
2866 ListView.Canvas.Font.Color := clBlue;
2867 s := '?ス?ス?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?ス?ス?スO?スL?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
2868 end;
2869 gvtNew: begin
2870 ListView.Canvas.Font.Color := clGreen;
2871 s := '?ス?ス?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?スV?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
2872 end;
2873 gvtUser: begin
2874 ListView.Canvas.Font.Color := clNavy;
2875 s := '?ス?ス?ス?ス?スr?ス?ス?ス[?ス?ス?ス?ス?ス^?スC?スg?ス?ス?ス?ス?スu%s?スv?ス?ス?ス?ス?ス?ス?スA?スC?スe?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?ス?スB';
2876 if GetActiveList is TBoard then
2877 s := Format(s, [TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText]);
2878 // SelectText]);
2879 end;
2880 else begin
2881 s := '';
2882 end;
2883 end;
2884
2885 p := Point((ListView.ClientWidth div 2) - (ListView.Canvas.TextWidth(s) div 2),
2886 (ListView.ClientHeight div 2) - (ListView.Canvas.TextHeight(s) div 2));
2887 ListView.Canvas.TextOut(p.X, p.Y, s);
2888 end else begin
2889 DefaultDraw := True;
2890 end;
2891 end;
2892
2893 procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
2894 var
2895 Item: TDownloadItem;
2896 begin
2897 if not Board.IsThreadDatRead then
2898 GikoSys.ReadSubjectFile(Board);
2899 Item := TDownloadItem.Create;
2900 try
2901 Item.Board := Board;
2902 Item.DownType := gdtBoard;
2903 Item.ForceDownload := ForceDownload;
2904 FControlThread