6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils, Math,
15 IdHTTP, ActiveX, ActnList, ImgList,
16 ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
17 ShellAPI, UrlMon, Tabs, IdGlobal, StrUtils,
18 CommCtrl, IniFiles, Dialogs,
19 GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
20 Editor, RoundData, RoundName, KeySetting, GikoPanel, Favorite, FavoriteAdd,
21 FavoriteArrange, AddressHistory, Preview, HTMLDocumentEvent, Kotehan,
22 HintWindow, GikoCoolBar, GikoListView, ToolBarSetting, ToolBarUtil,
23 IndividualAbon, Search, ExternalBoardManager, ExternalBoardPlugInMain,
24 StdActns, GikoXMLDoc, Variants, ExtActns,IdTCPConnection, IdBaseComponent,
28 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
29 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
30 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
31 TResizeType = (rtNone, rtResizing);
33 TBrowserRecord = class;
35 TGikoForm = class(TForm)
36 StatusBar: TStatusBar;
39 TreeSplitter: TSplitter;
42 ThreadMainPanel: TPanel;
43 ListSplitter: TSplitter;
45 ListView: TGikoListView;
49 MessageHideButton: TSpeedButton;
50 MessageListView: TListView;
51 MessageSplitter: TSplitter;
53 SpeedButton1: TSpeedButton;
55 CabinetSelectToolButton: TToolButton;
56 HistoryToolBar: TToolBar;
57 ToolButton15: TToolButton;
58 ToolButton18: TToolButton;
59 ItemIcon16: TImageList;
60 ItemIcon32: TImageList;
61 HotToobarImageList: TImageList;
62 ToobarImageList: TImageList;
63 ItemImageList: TImageList;
64 ActionList: TActionList;
65 LogDeleteAction: TAction;
66 KidokuAction: TAction;
67 StdToolBarVisibleAction: TAction;
68 SearchAction: TAction;
69 GikoNaviWebPageAction: TAction;
72 MsgBarVisibleAction: TAction;
73 StatusBarVisibleAction: TAction;
74 LargeIconAction: TAction;
75 SmallIconAction: TAction;
76 ListIconAction: TAction;
77 DetailIconAction: TAction;
78 CabinetBBSAction: TAction;
79 CabinetHistoryAction: TAction;
80 CabinetVisibleAction: TAction;
81 MidokuAction: TAction;
82 AllSelectAction: TAction;
83 UpFolderAction: TAction;
84 ListNumberVisibleAction: TAction;
85 AllItemAction: TAction;
86 LogItemAction: TAction;
87 NewItemAction: TAction;
88 SelectItemAction: TAction;
89 ShowThreadAction: TAction;
93 DeleteMenu: TMenuItem;
95 KidokuMenu: TMenuItem;
96 MidokuMenu: TMenuItem;
97 AllSelectMenu: TMenuItem;
99 StdToolBarMenu: TMenuItem;
100 CabinetMenu: TMenuItem;
103 CabinetVisibleMenu: TMenuItem;
104 MessageMenu: TMenuItem;
105 StatusBarMenu: TMenuItem;
107 LargeIconMenu: TMenuItem;
108 SmallIconMenu: TMenuItem;
110 DetailMenu: TMenuItem;
113 RoundMenu: TMenuItem;
115 OptionMenu: TMenuItem;
119 AboutMenu: TMenuItem;
121 BrowserPopupMenu: TPopupMenu;
122 ShowThreadMenu: TMenuItem;
123 ShowBoardMenu: TMenuItem;
124 ShowBoardAction: TAction;
125 ListIconPopupMenu: TPopupMenu;
126 LargeIconPMenu: TMenuItem;
127 SmallIconPMenu: TMenuItem;
128 ListPMenu: TMenuItem;
129 DetailPMenu: TMenuItem;
130 CabinetCloseAction: TAction;
131 ClosePopupMenu: TPopupMenu;
132 CloseMenu: TMenuItem;
133 OptionAction: TAction;
143 RoundAction: TAction;
144 ListPopupMenu: TPopupMenu;
145 ListRoundPMenu: TMenuItem;
146 ListReservPMenu: TMenuItem;
148 ItemRoundPMenu: TMenuItem;
150 KidokuPMenu: TMenuItem;
151 MidokuPMenu: TMenuItem;
152 AllSelectPMenu: TMenuItem;
153 UrlCopyPMenu: TMenuItem;
155 DeletePMenu: TMenuItem;
157 ViewPMenu: TMenuItem;
158 LargeIconLPMenu: TMenuItem;
159 SmallIconLPMenu: TMenuItem;
160 ListLPMenu: TMenuItem;
161 DetailLPMenu: TMenuItem;
165 URLCopyAction: TAction;
169 MsgBarCloseAction: TAction;
170 ScrollTopAction: TAction;
171 ScrollLastAction: TAction;
172 ScrollNewAction: TAction;
173 ScrollKokoAction: TAction;
174 EditorAction: TAction;
176 ItemReloadAction: TAction;
177 BrowserMaxAction: TAction;
189 SelectListReloadAction: TAction;
190 SelectThreadReloadAction: TAction;
191 KokoPopupMenu: TPopupMenu;
192 KokomadePMenu: TMenuItem;
194 MenuItem1: TMenuItem;
195 MenuItem2: TMenuItem;
196 BrowserTabCloseAction: TAction;
197 BrowserTabPopupMenu: TPopupMenu;
199 KokomadeAction: TAction;
200 ZenbuAction: TAction;
201 KokoResAction: TAction;
202 SelectItemURLCopyAction: TAction;
203 SelectReservAction: TAction;
204 NotSelectTabCloseAction: TAction;
208 TreePopupMenu: TPopupMenu;
209 TreeSelectThreadPupupMenu: TMenuItem;
210 TreeSelectBoardPupupMenu: TMenuItem;
212 TreeSelectURLPupupMenu: TMenuItem;
213 TreeSelectBoradReload: TAction;
214 TreeSelectThreadReload: TAction;
215 TreeSelectURLCopy: TAction;
216 ListToolBarVisibleAction: TAction;
217 BrowserToolBarVisibleAction: TAction;
221 BrowserBottomPanel: TGikoPanel;
222 CabinetSelectPopupMenu: TPopupMenu;
224 ItemReservPMenu: TMenuItem;
225 RoundNamePopupMenu: TPopupMenu;
226 SelectNewRoundName: TAction;
227 SelectDeleteRound: TAction;
228 NewBoardAction: TAction;
231 LoginAction: TAction;
233 KeySettingAction: TAction;
235 AllTabCloseAction: TAction;
243 MessageImageList: TImageList;
244 ProgressBar: TProgressBar;
245 ArrangeAction: TAction;
247 NameURLCopyAction: TAction;
248 SelectItemNameURLCopyAction: TAction;
249 NameUrlCopyPMenu: TMenuItem;
256 ListCoolBar: TGikoCoolBar;
257 ListToolBar: TToolBar;
258 ViewNoButton: TToolButton;
259 IconToolButton: TToolButton;
260 UpFolderButton: TToolButton;
261 Sepa01ToolButton: TToolButton;
262 AllItemToolButton: TToolButton;
263 LogItemToolButton: TToolButton;
264 NewItemToolButton: TToolButton;
265 ListDownloadToolButton: TToolButton;
266 ListThreadDownloadToolButton: TToolButton;
267 ToolButton2: TToolButton;
268 ToolButton1: TToolButton;
269 BrowserCoolBar: TGikoCoolBar;
270 BrowserToolBar: TToolBar;
271 BrowserSizeButton: TToolButton;
272 ToolButton3: TToolButton;
273 TopButton: TToolButton;
274 LastBotton: TToolButton;
275 NewButton: TToolButton;
276 KokoButton: TToolButton;
277 ToolButton9: TToolButton;
278 EditorButton: TToolButton;
279 ToolButton11: TToolButton;
280 IEButton: TToolButton;
281 ToolButton5: TToolButton;
282 ItemReloadButton: TToolButton;
283 ListNameToolBar: TToolBar;
284 ListNameLabel: TLabel;
286 BrowserNameToolBar: TToolBar;
287 ItemBoardImage: TImage;
288 BrowserBoardNameLabel: TLabel;
290 BrowserNameLabel: TLabel;
291 ActiveLogDeleteAction: TAction;
295 ListNameBarVisibleAction: TAction;
297 BrowserNameBarVisibleAction: TAction;
300 TreeSelectNameURLCopy: TAction;
301 TreeSelectNameURLPupupMenu: TMenuItem;
304 PaneInitAction: TAction;
306 BrowserTabToolBar: TToolBar;
307 BrowserTab: TTabControl;
308 ToolButton7: TToolButton;
309 BrowserMinAction: TAction;
312 SelectTextClearAction: TAction;
313 MailTextClearAction: TAction;
314 NameTextClearAction: TAction;
318 LeftmostTabSelectAction: TAction;
319 LeftTabSelectAction: TAction;
320 RightTabSelectAction: TAction;
321 RightmostTabSelectAction: TAction;
327 FavoriteMenu: TMenuItem;
328 FavoriteAddAction: TAction;
330 BoardFavoriteAddMenu: TMenuItem;
331 BoardFavoriteAddAction: TAction;
332 ThreadFavoriteAddAction: TAction;
333 ThreadFavoriteAddMenu: TMenuItem;
334 TreeSelectFavoriteAddAction: TAction;
336 TreeSelectFavoriteAddPupupMenu: TMenuItem;
337 FavoriteArrangeAction: TAction;
338 FavoriteTreeView: TTreeView;
339 StateIconImageList: TImageList;
341 TopRightPanel: TPanel;
344 TopCoolPanel: TPanel;
345 MainCoolBar: TGikoCoolBar;
346 MenuToolBar: TToolBar;
347 StdToolBar: TToolBar;
348 RoundToolButton: TToolButton;
349 ToolButton6: TToolButton;
350 ToolButton4: TToolButton;
351 ToolButton13: TToolButton;
352 AbortToolButton: TToolButton;
353 LoginToolButton: TToolButton;
354 AddressToolBar: TToolBar;
355 AddressComboBox: TComboBox;
356 MoveToToolButton: TToolButton;
357 MoveToAction: TAction;
358 AddressImageList: TImageList;
359 AddressBarVisibleAction: TAction;
360 AddressToolBarMenu: TMenuItem;
362 BrowserTabVisibleAction: TAction;
365 BrowserTabTopAction: TAction;
366 BrowserTabBottomAction: TAction;
370 BrowserTabTabStyleAction: TAction;
371 BrowserTabButtonStyleAction: TAction;
372 BrowserTabFlatStyleAction: TAction;
376 PreviewTimer: TTimer;
377 MonazillaWebPageAction: TAction;
378 MonazillaWebPageAction1: TMenuItem;
379 GikoHelpAction: TAction;
382 KotehanAction: TAction;
384 LinkBarVisibleAction: TAction;
388 ChevronPopupMenu: TPopupMenu;
389 BBS2chWebPageAction: TAction;
392 GikoFolderOpenAction: TAction;
394 LinkToolBar: TToolBar;
396 ToolButton8: TToolButton;
397 ToolButton10: TToolButton;
398 ThreadEditorAction: TAction;
402 LinkBarPopupMenu: TPopupMenu;
403 ToolBarSettingAction: TAction;
405 ToolButton12: TToolButton;
406 ToolButton14: TToolButton;
407 ThreadPopupMenu: TPopupMenu;
408 MenuItem4: TMenuItem;
409 MenuItem5: TMenuItem;
410 MenuItem6: TMenuItem;
412 NameCopyAction: TAction;
413 BoardIEAction: TAction;
415 SelectItemNameCopyAction: TAction;
416 SelectItemNameCopyAction1: TMenuItem;
420 SelectComboBox: TComboBox;
421 MainCoolBarPopupMenu: TPopupMenu;
422 StdToolBarVisiblePMenu: TMenuItem;
423 AddressToolBarVisiblePMenu: TMenuItem;
424 LinkToolBarVisiblePMenu: TMenuItem;
445 SelectItemToolButton: TToolButton;
446 SelectResToolButton: TToolButton;
447 SelectResAction: TAction;
448 ToolButton16: TToolButton;
449 AllResAction: TAction;
456 EditNGAction: TAction;
457 ReloadAction: TAction;
458 GoFowardAction: TAction;
459 GoBackAction: TAction;
460 SelectComboBoxSplitter: TImage;
461 IndividualAbon1: TMenuItem;
463 IndividualAbon2: TMenuItem;
465 CancellIndividualAbon: TAction;
466 AntiIndividualAbon: TMenuItem;
471 SearchBoardName: TMenuItem;
472 TreeSelectLogDeleteSeparator: TMenuItem;
473 TreeSelectSearchBoardName: TAction;
474 CabinetFavoriteAction: TAction;
477 FavoriteTreePopupMenu: TPopupMenu;
478 FavoriteTreeViewRenameAction: TAction;
479 FavoriteTreeRenamePopupMenu: TMenuItem;
480 FavoriteTreeViewNewFolderAction: TAction;
481 FavoriteTreeNewFolderPopupMenu: TMenuItem;
483 FavoriteTreeViewDeleteAction: TAction;
484 FavoriteTreeDeletePopupMenu: TMenuItem;
485 FavoriteToolBar: TToolBar;
486 ToolButton17: TToolButton;
487 ToolButton19: TToolButton;
488 FavoriteTreeViewBrowseFolderAction: TAction;
489 FavoriteTreeBrowseFolderPopupMenu: TMenuItem;
491 FavoriteTreeReloadPopupMenu: TMenuItem;
493 FavoriteTreeURLCopyPopupMenu: TMenuItem;
494 FavoriteTreeNameCopyPopupMenu: TMenuItem;
495 FavoriteTreeLogDeletePopupMenu: TMenuItem;
497 FavoriteTreeNameURLCopyPopupMenu: TMenuItem;
498 FavoriteTreeViewReloadAction: TAction;
499 FavoriteTreeViewURLCopyAction: TAction;
500 FavoriteTreeViewNameCopyAction: TAction;
501 FavoriteTreeViewNameURLCopyAction: TAction;
502 FavoriteTreeViewLogDeleteAction: TAction;
503 ResRangeAction: TAction;
504 ToolButton20: TToolButton;
505 ResRangeButton: TToolButton;
507 ExportFavoriteFileAction1: TMenuItem;
508 ExportFavoriteFile: TFileSaveAs;
509 ToolButton21: TToolButton;
510 CabinetBBSToolButton: TToolButton;
511 ToolButton23: TToolButton;
512 ToolButton24: TToolButton;
515 FavoriteTreeViewBrowseBoardAction: TAction;
516 FavoriteTreeViewBrowseThreadAction: TAction;
517 UpBoardAction: TAction;
527 TreeSelectLogDeletePopupMenu: TMenuItem;
529 BBSSelectPopupMenu: TPopupMenu;
530 PlugInMenu: TMenuItem;
531 TmpToolBar: TToolBar;
532 TreeSelectNameCopy: TAction;
533 TreeSelectNamePupupMenu: TMenuItem;
534 BrowserPanel: TPanel;
535 SetFocusForBrowserAction: TAction;
536 SetFocusForThreadListAction: TAction;
537 SetFocusForCabinetAction: TAction;
539 ThreadlistMaxAndFocusAction: TAction;
540 BrowserMaxAndFocusAction: TAction;
541 UpBoardButton: TToolButton;
543 SelectThreadSave: TMenuItem;
544 SelectItemSaveForHTML: TAction;
545 FileSaveAs1: TFileSaveAs;
549 SelectItemSaveForDat: TAction;
550 LogFolderOpenAction: TAction;
551 OpenLogFolder: TMenuItem;
552 Browser: TWebBrowser;
555 TabsSaveAction: TAction;
556 TabsOpenAction: TAction;
557 ResRangePopupMenu: TPopupMenu;
561 OnlyAHundredResAction: TAction;
562 OnlyNewResAction: TAction;
563 OnlyKokoResAction: TAction;
565 BrowsBoradHeadAction: TAction;
566 BrowsBoradHeadAction1: TMenuItem;
567 ThreadRangeAction: TAction;
568 ThreadRangePopupMenu: TPopupMenu;
576 ThreadRangeButton: TToolButton;
577 TabAutoSaveAction: TAction;
578 TabAutoLoadAction: TAction;
579 ListColumnPopupMenu: TPopupMenu;
580 JumpToNumOfResAction: TAction;
581 FavoriteTreeViewCollapseAction: TAction;
582 procedure FormCreate(Sender: TObject);
583 procedure FormDestroy(Sender: TObject);
584 procedure CabinetPanelHide(Sender: TObject);
585 procedure ListViewData(Sender: TObject; Item: TListItem);
586 procedure ListViewDataFind(Sender: TObject; Find: TItemFind;
587 const FindString: String; const FindPosition: TPoint;
588 FindData: Pointer; StartIndex: Integer; Direction: TSearchDirection;
589 Wrap: Boolean; var Index: Integer);
590 procedure ListViewDataHint(Sender: TObject; StartIndex,
592 procedure ListViewDataStateChange(Sender: TObject; StartIndex,
593 EndIndex: Integer; OldState, NewState: TItemStates);
594 procedure BrowserStatusTextChange(Sender: TObject;
595 const Text: WideString);
596 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
597 procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
598 var AllowChange: Boolean);
599 procedure ListViewKeyDown(Sender: TObject; var Key: Word;
601 procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
602 procedure ListViewSort(Sender: TObject; Column: TListColumn);
603 procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
604 Button: TToolButton; State: TCustomDrawState;
605 var DefaultDraw: Boolean);
606 procedure BrowserBeforeNavigate2(Sender: TObject;
607 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
608 Headers: OleVariant; var Cancel: WordBool);
609 procedure TreeViewCustomDraw(Sender: TCustomTreeView;
610 const ARect: TRect; var DefaultDraw: Boolean);
611 procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
612 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
613 procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
614 procedure TreeViewDblClick(Sender: TObject);
615 procedure ListViewCustomDraw(Sender: TCustomListView;
616 const ARect: TRect; var DefaultDraw: Boolean);
617 procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
618 Shift: TShiftState; X, Y: Integer);
619 procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
620 procedure MessageListViewResize(Sender: TObject);
621 procedure ExitActionExecute(Sender: TObject);
622 procedure AllSelectActionExecute(Sender: TObject);
623 procedure StdToolBarVisibleActionExecute(Sender: TObject);
624 procedure MsgBarVisibleActionExecute(Sender: TObject);
625 procedure StatusBarVisibleActionExecute(Sender: TObject);
626 procedure LargeIconActionExecute(Sender: TObject);
627 procedure SmallIconActionExecute(Sender: TObject);
628 procedure ListIconActionExecute(Sender: TObject);
629 procedure DetailIconActionExecute(Sender: TObject);
630 procedure SearchActionExecute(Sender: TObject);
631 procedure OptionActionExecute(Sender: TObject);
632 procedure GikoNaviWebPageActionExecute(Sender: TObject);
633 procedure AboutActionExecute(Sender: TObject);
634 procedure CabinetHistoryActionExecute(Sender: TObject);
635 procedure CabinetVisible( isVisible : Boolean );
636 procedure CabinetVisibleActionExecute(Sender: TObject);
637 procedure AllItemActionExecute(Sender: TObject);
638 procedure LogItemActionExecute(Sender: TObject);
639 procedure NewItemActionExecute(Sender: TObject);
640 procedure SelectItemActionExecute(Sender: TObject);
641 procedure ListNumberVisibleActionExecute(Sender: TObject);
642 procedure UpFolderActionExecute(Sender: TObject);
643 procedure IconStyleExecute(Sender: TObject);
644 procedure RoundActionExecute(Sender: TObject);
645 procedure StopActionExecute(Sender: TObject);
646 procedure MsgBarCloseActionExecute(Sender: TObject);
647 procedure BrowserMaxActionExecute(Sender: TObject);
648 procedure ScrollTopActionExecute(Sender: TObject);
649 procedure ScrollLastActionExecute(Sender: TObject);
650 procedure ScrollNewActionExecute(Sender: TObject);
651 procedure ScrollKokoActionExecute(Sender: TObject);
652 procedure EditorActionExecute(Sender: TObject);
653 procedure IEActionExecute(Sender: TObject);
654 procedure ShowThreadActionExecute(Sender: TObject);
655 procedure ShowBoardActionExecute(Sender: TObject);
656 procedure URLCopyActionExecute(Sender: TObject);
657 procedure ItemReloadActionExecute(Sender: TObject);
658 procedure SelectListReloadActionExecute(Sender: TObject);
659 procedure SelectThreadReloadActionExecute(Sender: TObject);
660 procedure SelectListReloadActionUpdate(Sender: TObject);
661 procedure AllItemActionUpdate(Sender: TObject);
662 procedure LogItemActionUpdate(Sender: TObject);
663 procedure NewItemActionUpdate(Sender: TObject);
664 procedure SelectItemActionUpdate(Sender: TObject);
665 procedure UpFolderActionUpdate(Sender: TObject);
666 procedure FormResize(Sender: TObject);
667 procedure ScrollTopActionUpdate(Sender: TObject);
668 procedure ScrollLastActionUpdate(Sender: TObject);
669 procedure ScrollNewActionUpdate(Sender: TObject);
670 procedure ScrollKokoActionUpdate(Sender: TObject);
671 procedure EditorActionUpdate(Sender: TObject);
672 procedure IEActionUpdate(Sender: TObject);
673 procedure ShowThreadActionUpdate(Sender: TObject);
674 procedure ShowBoardActionUpdate(Sender: TObject);
675 procedure SelectThreadReloadActionUpdate(Sender: TObject);
676 procedure ItemReloadActionUpdate(Sender: TObject);
677 procedure LogDeleteActionExecute(Sender: TObject);
678 procedure KokomadeActionExecute(Sender: TObject);
679 procedure ZenbuActionExecute(Sender: TObject);
680 procedure KokoResActionExecute(Sender: TObject);
681 procedure ListPopupMenuPopup(Sender: TObject);
682 procedure SelectItemURLCopyActionExecute(Sender: TObject);
683 procedure SelectItemURLCopyActionUpdate(Sender: TObject);
684 procedure AllSelectActionUpdate(Sender: TObject);
685 procedure LogDeleteActionUpdate(Sender: TObject);
686 procedure BrowserTabCloseActionExecute(Sender: TObject);
687 procedure NotSelectTabCloseActionExecute(Sender: TObject);
688 procedure TreeSelectBoradReloadExecute(Sender: TObject);
689 procedure TreeSelectThreadReloadExecute(Sender: TObject);
690 procedure TreeSelectURLCopyExecute(Sender: TObject);
691 procedure TreePopupMenuPopup(Sender: TObject);
692 procedure ListToolBarVisibleActionExecute(Sender: TObject);
693 procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
694 procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
695 var Cancel: WordBool);
696 procedure ListSplitterMoved(Sender: TObject);
697 procedure BrowserTabChange(Sender: TObject);
698 procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
699 Shift: TShiftState; X, Y: Integer);
700 procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
701 State: TDragState; var Accept: Boolean);
702 procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
703 procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
705 procedure BrowserDocumentComplete(Sender: TObject;
706 const pDisp: IDispatch; var URL: OleVariant);
707 procedure SelectReservActionUpdate(Sender: TObject);
708 procedure RoundNamePopupMenuPopup(Sender: TObject);
709 procedure SelectNewRoundNameExecute(Sender: TObject);
710 procedure SelectDeleteRoundExecute(Sender: TObject);
711 procedure SelectReservActionExecute(Sender: TObject);
712 procedure NewBoardActionExecute(Sender: TObject);
713 procedure LoginActionExecute(Sender: TObject);
714 procedure KeySettingActionExecute(Sender: TObject);
715 procedure AllTabCloseActionExecute(Sender: TObject);
716 procedure ArrangeActionExecute(Sender: TObject);
717 procedure NameURLCopyActionExecute(Sender: TObject);
718 procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
719 procedure URLCopyActionUpdate(Sender: TObject);
720 procedure NameURLCopyActionUpdate(Sender: TObject);
721 procedure BrowserTabCloseActionUpdate(Sender: TObject);
722 procedure NotSelectTabCloseActionUpdate(Sender: TObject);
723 procedure AllTabCloseActionUpdate(Sender: TObject);
724 procedure SelectItemNameURLCopyActionUpdate(Sender: TObject);
725 procedure ActiveLogDeleteActionExecute(Sender: TObject);
726 procedure ActiveLogDeleteActionUpdate(Sender: TObject);
727 procedure ListNameBarVisibleActionExecute(Sender: TObject);
728 procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
729 procedure TreeSelectNameURLCopyExecute(Sender: TObject);
730 procedure PaneInitActionExecute(Sender: TObject);
731 procedure FormShow(Sender: TObject);
732 procedure BrowserTabToolBarResize(Sender: TObject);
733 procedure BrowserMinActionExecute(Sender: TObject);
734 procedure SelectTextClearActionExecute(Sender: TObject);
735 procedure NameTextClearActionExecute(Sender: TObject);
736 procedure MailTextClearActionExecute(Sender: TObject);
737 procedure LeftmostTabSelectActionExecute(Sender: TObject);
738 procedure LeftTabSelectActionExecute(Sender: TObject);
739 procedure RightTabSelectActionExecute(Sender: TObject);
740 procedure RightmostTabSelectActionExecute(Sender: TObject);
741 procedure LeftmostTabSelectActionUpdate(Sender: TObject);
742 procedure LeftTabSelectActionUpdate(Sender: TObject);
743 procedure RightTabSelectActionUpdate(Sender: TObject);
744 procedure RightmostTabSelectActionUpdate(Sender: TObject);
745 procedure FavoriteMenuClick(Sender: TObject);
746 procedure FavoriteAddActionExecute(Sender: TObject);
747 procedure FavoriteAddActionUpdate(Sender: TObject);
748 procedure BoardFavoriteAddActionExecute(Sender: TObject);
749 procedure BoardFavoriteAddActionUpdate(Sender: TObject);
750 procedure ThreadFavoriteAddActionExecute(Sender: TObject);
751 procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
752 procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
753 procedure FavoriteArrangeActionExecute(Sender: TObject);
754 procedure MainCoolBarResize(Sender: TObject);
755 procedure MoveToActionExecute(Sender: TObject);
756 procedure AddressToolBarResize(Sender: TObject);
757 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
759 procedure AddressBarVisibleActionExecute(Sender: TObject);
760 procedure BrowserEnter(Sender: TObject);
761 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
762 procedure BrowserTabVisibleActionExecute(Sender: TObject);
763 procedure BrowserTabTopActionExecute(Sender: TObject);
764 procedure BrowserTabBottomActionExecute(Sender: TObject);
765 procedure BrowserTabTabStyleActionExecute(Sender: TObject);
766 procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
767 procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
768 procedure PreviewTimerTimer(Sender: TObject);
769 procedure MessageHideButtonClick(Sender: TObject);
770 procedure MonazillaWebPageActionExecute(Sender: TObject);
771 procedure GikoHelpActionExecute(Sender: TObject);
772 procedure ToolButton18Click(Sender: TObject);
773 procedure KotehanActionExecute(Sender: TObject);
774 procedure LinkBarVisibleActionExecute(Sender: TObject);
775 procedure BBS2chWebPageActionExecute(Sender: TObject);
776 procedure GikoFolderOpenActionExecute(Sender: TObject);
777 procedure MainCoolBarBandInfo(Sender: TObject;
778 var BandInfo: PReBarBandInfoA);
779 procedure MainCoolBarChevronClick(Sender: TObject;
780 RebarChevron: PNMRebarChevron);
781 procedure ListCoolBarBandInfo(Sender: TObject;
782 var BandInfo: PReBarBandInfoA);
783 procedure ListCoolBarChevronClick(Sender: TObject;
784 RebarChevron: PNMRebarChevron);
785 procedure BrowserCoolBarBandInfo(Sender: TObject;
786 var BandInfo: PReBarBandInfoA);
787 procedure BrowserCoolBarChevronClick(Sender: TObject;
788 RebarChevron: PNMRebarChevron);
789 procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
790 procedure ThreadEditorActionExecute(Sender: TObject);
791 procedure ThreadEditorActionUpdate(Sender: TObject);
792 procedure ToolBarSettingActionExecute(Sender: TObject);
793 procedure NameCopyActionExecute(Sender: TObject);
794 procedure BoardIEActionExecute(Sender: TObject);
795 procedure SelectItemNameCopyActionExecute(Sender: TObject);
796 procedure SelectItemNameCopyActionUpdate(Sender: TObject);
797 procedure BoardIEActionUpdate(Sender: TObject);
798 procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
799 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
800 procedure NameCopyActionUpdate(Sender: TObject);
801 procedure SelectComboBoxChange(Sender: TObject);
802 procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
804 procedure SelectComboBoxExit(Sender: TObject);
805 procedure SelectResActionExecute(Sender: TObject);
806 procedure SelectResActionUpdate(Sender: TObject);
807 procedure AllResActionExecute(Sender: TObject);
808 procedure AllResActionUpdate(Sender: TObject);
809 procedure ReloadClick(Sender: TObject);
810 procedure GoBackClick(Sender: TObject);
811 procedure GoFowardClick(Sender: TObject);
812 procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
813 Shift: TShiftState; X, Y: Integer);
814 procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
815 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
816 procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
817 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
818 procedure StatusBarResize(Sender: TObject);
819 procedure IndividualAbon1Click(Sender: TObject);
820 procedure IndividualAbon2Click(Sender: TObject);
821 procedure N42Click(Sender: TObject);
822 procedure SelectComboBoxEnter(Sender: TObject);
823 procedure AntiIndividualAbonClick(Sender: TObject);
824 procedure N51Click(Sender: TObject);
825 procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
826 procedure CabinetFavoriteActionExecute(Sender: TObject);
827 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
829 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
830 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
832 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
834 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
835 procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
836 procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
837 procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
838 procedure ToolButton19Click(Sender: TObject);
839 procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
840 procedure FavoriteTreeViewDblClick(Sender: TObject);
841 procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
842 procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
843 procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
844 procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
845 procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
846 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
847 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
848 Shift: TShiftState; X, Y: Integer);
849 procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
850 State: TDragState; var Accept: Boolean);
851 procedure ResRangeActionExecute(Sender: TObject);
852 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
854 procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
855 var Handled: Boolean);
856 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
857 var Handled: Boolean);
858 procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
859 var Handled: Boolean);
860 procedure ExportFavoriteFileAccept(Sender: TObject);
861 procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
862 procedure CabinetBBSActionExecute(Sender: TObject);
863 procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
864 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
865 procedure UpBoardActionExecute(Sender: TObject);
866 procedure UpBoardActionUpdate(Sender: TObject);
867 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
868 var Handled: Boolean);
869 procedure KoreCopyExecute(Sender: TObject);
870 procedure BrowserTabPopupMenuPopup(Sender: TObject);
871 procedure BrowserTabResize(Sender: TObject);
872 procedure TreeViewClick(Sender: TObject);
873 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
875 procedure FavoriteTreeViewMouseDown(Sender: TObject;
876 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
877 procedure MessagePanelResize(Sender: TObject);
879 procedure TreeSelectNameCopyExecute(Sender: TObject);
880 procedure FavoriteTreeViewMouseUp(Sender: TObject;
881 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
882 procedure ResRangeActionUpdate(Sender: TObject);
883 procedure SetFocusForBrowserActionExecute(Sender: TObject);
884 procedure SetFocusForBrowserActionUpdate(Sender: TObject);
885 procedure SetFocusForThreadListActionExecute(Sender: TObject);
886 procedure SetFocusForCabinetActionExecute(Sender: TObject);
887 procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
888 procedure BrowserMaxAndFocusActionUpdate(Sender: TObject);
889 procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
890 procedure SetFocusForCabinetActionUpdate(Sender: TObject);
891 procedure ListViewSelectItem(Sender: TObject; Item: TListItem;
893 procedure SelectTimerTimer(Sender: TObject);
894 procedure SelectItemSaveForHTMLExecute(Sender: TObject);
895 procedure KidokuActionExecute(Sender: TObject);
896 procedure MidokuActionExecute(Sender: TObject);
897 procedure SelectItemSaveForDatExecute(Sender: TObject);
898 procedure LogFolderOpenActionExecute(Sender: TObject);
899 procedure LogFolderOpenActionUpdate(Sender: TObject);
900 procedure TabsSaveActionExecute(Sender: TObject);
901 procedure TabsOpenActionExecute(Sender: TObject);
902 procedure TabsSaveToFileActionExecute(Sender: TObject);
903 procedure TabsOpenFromFileActionExecute(Sender: TObject);
904 procedure OnlyAHundredResActionExecute(Sender: TObject);
905 procedure OnlyKokoResActionExecute(Sender: TObject);
906 procedure OnlyNewResActionExecute(Sender: TObject);
907 procedure BrowsBoradHeadActionExecute(Sender: TObject);
908 procedure BrowsBoradHeadActionUpdate(Sender: TObject);
909 procedure EditNGActionExecute(Sender: TObject);
910 procedure ThreadRangeActionUpdate(Sender: TObject);
911 procedure ThreadRangeActionExecute(Sender: TObject);
912 procedure TabAutoSaveActionExecute(Sender: TObject);
913 procedure TabAutoLoadActionExecute(Sender: TObject);
914 procedure ListViewColumnRightClick(Sender: TObject;
915 Column: TListColumn; Point: TPoint);
916 procedure JumpToNumOfResActionExecute(Sender: TObject);
917 procedure JumpToNumOfResActionUpdate(Sender: TObject);
918 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
919 procedure ListViewCustomDrawItem(Sender: TCustomListView;
920 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
921 procedure FormActivate(Sender: TObject);
922 procedure MainCoolBarChange(Sender: TObject);
923 procedure BrowserCoolBarChange(Sender: TObject);
924 procedure ListCoolBarChange(Sender: TObject);
925 procedure BrowserCoolBarResize(Sender: TObject);
926 procedure ListCoolBarResize(Sender: TObject);
927 procedure BrowserPanelResize(Sender: TObject);
930 //RoundList : TRoundList;
934 FEnabledCloseButton: Boolean;
935 // ThreadCreate: TThreadCreate;
937 FClickNode: TTreeNode;
940 FPreviewBrowser: TWebBrowser;
943 FBrowserSizeHeight: Integer;
944 FBrowserSizeWidth: Integer;
946 // FFavorite: TFavorite;
947 FTabHintIndex: Integer;
948 FListStyle: TViewStyle; //
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93\83X
\83^
\83C
\83\8b
949 FItemNoVisible: Boolean; //
\83\8a\83X
\83g
\94Ô
\8d\86\95\
\8e¦
\83t
\83\89\83O
950 FViewType: TGikoViewType; //
\83\8a\83X
\83g
\83A
\83C
\83e
\83\80\95\
\8e¦
\83^
\83C
\83v
951 FActiveList: TObject;
952 FActiveContent: TBrowserRecord; //
954 FHistoryList: TList; //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
955 FTreeType: TGikoTreeType;
959 // FLastRoundTime: TDateTime;
960 BrowserNullTab: TBrowserRecord;
961 // DoubleClickOccurred: array [TMouseButton] of Boolean;
962 FDownloadTitle: string; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\83^
\83C
\83g
\83\8b\96¼
963 FDownloadMax: Integer; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\8dÅ
\91å
\83T
\83C
\83Y
964 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
966 // Fkeynum : Integer; //
\83L
\81[
\83{
\81[
\83h
\83\8c\83X
\83|
\83b
\83v
\83A
\83b
\83v
\97p
968 IsDraggingSelectComboBox : Boolean;
969 DraggingSelectComboBoxPosition : TPoint;
971 FSearchDialog: TSearchDialog;
973 FDropSpaceNode: TTreeNode;
975 FDragTime : Cardinal; ///<
\83\8a\83\93\83N
\82ÌD&D
\97p
976 FDragButton : TToolButton; ///<
\83\8a\83\93\83N
\82ÌD&D
\97p
\82ÉDrag
\82µ
\82Ä
\82éButton
\95Û
\91¶
977 FDragWFirst : Boolean; ///< WebTab
\82ÌD&D
\97p
979 FListViewBackGroundColor : TColor; ///< ListView
\82ÌBackGroundColor
980 FUseOddResOddColor : Boolean; ///<
\8eæ
\93¾
\83\8c\83X
\90\94\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\83\8c\83X
\90\94\82ª
\88á
\82Á
\82½
\82Æ
\82«
\82É
\91¼
\82Ì
\90F
\82Å
\95\
\8e¦
981 FOddColor : TColor; ///<
\82»
\82Ì
\90F
983 FSelectResWord : string; ///<
\83\8c\83X
\8di
\8d\9e\83\8f\81[
\83h
984 FIsIgnoreResize : TResizeType; ///<
\83\8a\83T
\83C
\83Y
\83C
\83x
\83\93\83g
\82ð
\96³
\8e\8b\82·
\82é
\82©
\82Ç
\82¤
\82©
985 FIsMinimize : TMinimizeType; ///<
\8dÅ
\8f¬
\89»
\82µ
\82Ä
\82¢
\82é
\8dÅ
\92\86\82©
986 FOldFormWidth : Integer; ///<
\92¼
\91O
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\95\9d
987 FToolBarSettingSender : TToolBarSettingSenderType; ///<
\83c
\81[
\83\8b\83o
\81[
\90Ý
\92è
\82ð
\83N
\83\8a\83b
\83N
\82µ
\82½
\83N
\81[
\83\8b\83o
\81[
988 FMouseDownPos : TPoint; ///<
\83u
\83\89\83E
\83U
\83^
\83u
\82Å
\83}
\83E
\83X
\82ð
\89\9f\82µ
\82½
\82Æ
\82«
\82Ì
\8dÀ
\95W
990 FResRangeMenuSelect : Longint; ///< ResRangeButton
\82Å
\91I
\91ð
\82³
\82ê
\82Ä
\82¢
\82é
\8d\80\96Ú (
\83t
\83H
\81[
\83}
\83b
\83g
\82Í ResRange
\8cÝ
\8a·)
992 FIsHandledWheel : Boolean; ///<
\8aù
\82É
\8eó
\82¯
\8eæ
\82Á
\82½ WM_MOUSEWHEEL
\82©
\82Ç
\82¤
\82©
993 procedure SetBoardTreeNode( inBBS : TBBS );
994 function SetCategoryListItem(ABBS2ch: TBBS): Integer;
995 function SetBoardListItem(Category: TCategory): Integer;
996 function SetThreadListItem(Board: TBoard): Integer;
997 // function GetRoundName(index: integer): string;
999 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
1000 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
1001 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
1002 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
1003 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
1006 procedure ListClick;
1007 procedure ListDoubleClick(Shift: TShiftState);
1008 procedure BrowserMovement(const AName: string); overload;
1009 procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
1010 procedure SelectListItem(List: TList);
1011 // procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
1012 procedure DeleteTab(ThreadItem: TThreadItem); overload;
1013 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
1014 function Hook(var Message: TMessage): Boolean;
1015 procedure AddRoundNameMenu(MenuItem: TMenuItem);
1016 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
1017 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
1018 procedure SetSelectRoundName(Sender: TObject);
1019 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
1021 procedure SetMenuFont;
1022 // procedure CreateFavMenu(Folder: TFavoriteFolder);
1023 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
1024 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
1025 procedure FavoriteClick(Sender: TObject); overload;
1026 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
1027 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
1028 function OnDocumentContextMenu(Sender: TObject): WordBool;
1029 // function GetThreadText(sBoard: string; sThread: string; StNum, ToNum: Integer; Title, First: Boolean): string;
1030 procedure SetResPopupText(ThreadItem : TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
1031 procedure ShowTextPopup;
1032 //procedure ShowTextPopup(HintData: THintData);
1033 // procedure SetStdToolBar;
1034 // function GetAction(ActionName: string): TContainedAction;
1035 procedure SetLinkBar;
1036 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
1037 procedure MenuBarChevronMenu;
1038 procedure LinkBarChevronMenu;
1039 procedure ToolBarChevronMenu(ToolBar: TToolBar);
1040 procedure ModifySelectList;
1041 procedure FavoriteBrowseFolder( node: TTreeNode );
1042 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
1043 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1044 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
1045 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1046 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
1047 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
1048 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
1049 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
1050 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
1052 procedure SetListViewBackGroundColor(value: TColor);
1053 procedure BBSMenuItemOnClick( Sender : TObject );
1055 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
1056 /// CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1057 procedure SaveCoolBarSettings;
1058 procedure SaveMainCoolBarSettings;
1059 procedure SaveBoardCoolBarSettings;
1060 procedure SaveBrowserCoolBarSettings;
1061 /// CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1062 procedure LoadCoolBarSettings;
1063 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
1064 procedure OnMinimize;
1065 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
1066 procedure OnMinimized;
1067 /// TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1068 procedure TreeClick( Node : TTreeNode );
1069 /// TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1070 procedure TreeDoubleClick( Node : TTreeNode );
1071 ///
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
1072 procedure HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
1073 ///
\83u
\83\89\83E
\83U
\82Ì
\83L
\81[
\83_
\83E
\83\93\83C
\83x
\83\93\83g
1074 ///
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
1075 // function BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
1076 ///
\8ae
\8f\8a\82É
\82 \82é
\83L
\83\83\83r
\83l
\83b
\83g
\81E BBS
\83\81\83j
\83\85\81[
\82ð
\83Z
\83b
\83g
\81^
\8dX
\90V
1077 procedure SetBBSMenu;
1078 function WebBrowserClick(Sender: TObject): WordBool;
1079 function WebBrowserOnMouseDown(Sender: TObject): WordBool;
1080 procedure SkinorCSSFilesCopy(path: string);
1081 ///
\83^
\83u
\8eæ
\93¾
1082 function GetTabURLs(AStringList: TStringList) : Boolean;
1083 ///
\83^
\83u
\95Û
\91¶
1084 function SaveTabURLs : Boolean;
1085 ///
\83^
\83u
\93Ç
\82Ý
\8fo
\82µ
1086 function LoadTabURLs : Boolean;
1087 ///
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
1088 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
1089 /// ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
1090 function ActiveListTrueColumn( column : TListColumn ) : TListColumn;
1091 /// ListColumnPopupMenu
\83A
\83C
\83e
\83\80\82Ì
\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
1092 procedure ListColumnPopupMenuOnClick( Sender : TObject );
1093 // BrowserRecord
\82É
\82Â
\82¢
\82Ä
\82¢
\82éFBrowser
\82ð
\8aO
\82·
1094 procedure ReleaseBrowser( BRecord: TBrowserRecord);
1095 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8aJ
\8en
1096 procedure OnGestureStart(Sender: TObject);
1097 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\92\86
1098 procedure OnGestureMove(Sender: TObject);
1099 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8fI
\97¹
1100 procedure OnGestureEnd(Sender: TObject);
1102 procedure CreateParams(var Params: TCreateParams); override;
1103 procedure WndProc(var Message: TMessage); override;
1104 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
1105 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
1106 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
1110 FControlThread: TThreadControl;
1111 procedure MoveToURL(const inURL: string);
1112 function InsertBrowserTab(
1113 ThreadItem : TThreadItem;
1114 ActiveTab : Boolean = True
1116 procedure ReloadBBS;
1117 function GetHttpState: Boolean;
1118 procedure SetEnabledCloseButton(Enabled: Boolean);
1119 function GetTreeNode(Data: TObject): TTreeNode;
1120 procedure AppFormDeactivate(Sender: TObject);
1121 procedure ListViewAllSelect;
1122 property ListStyle: TViewStyle read FListStyle write FListStyle;
1123 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
1124 property ViewType: TGikoViewType read FViewType write FViewType;
1125 property NameCookie: string read FNameCookie write FNameCookie;
1126 property MailCookie: string read FMailCookie write FMailCookie;
1127 procedure SetContent(inThread: TBrowserRecord);
1128 function GetActiveContent: TThreadItem;
1129 function GetActiveList: TObject;
1130 procedure SetListViewType(AViewType: TGikoViewType); overload;
1131 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
1132 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
1133 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
1134 procedure PlaySound(SoundEventName: string);
1135 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
1136 procedure DeleteHistory( threadItem: TThreadItem );
1137 procedure ClearHistory;
1138 procedure SaveHistory;
1139 procedure LoadHistory;
1140 procedure ShowBBSTree( inBBS : TBBS );
1141 procedure ShowBBSTreeOld( inBBS : TBBS );
1142 procedure ShowHistoryTree;
1143 procedure SetHistoryTreeNode;
1144 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
1145 procedure SetBrowserTabState;
1146 procedure SetToolBarPopup;
1147 procedure ShowFavoriteAddDialog( Item : TObject );
1148 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
1149 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
1150 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
1151 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
1152 property OddColor : TColor read FOddColor write FOddColor;
1153 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
1154 procedure OnPlugInMenuItem( Sender : TObject );
1155 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
1156 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶ KuroutSetting
\82©
\82ç
\82æ
\82Ñ
\82¾
\82µ
\82½
\82¢
\82Ì
\82Å
1157 procedure ActiveListColumnSave;
1158 procedure SetActiveList(Obj: TObject);
1159 property ActiveList: TObject read GetActiveList write SetActiveList;
1161 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
1164 TFavoriteMenuItem = class(TMenuItem)
1168 property Data: Pointer read FData write FData;
1171 TBBSMenuItem = class(TMenuItem)
1175 property Data: Pointer read FData write FData;
1178 TLinkToolButton = class(TToolButton)
1182 property Data: Pointer read FData write FData;
1185 TBrowserRecord = class( TObject )
1187 FBrowser : TWebBrowser;
1188 FEvent: THTMLDocumentEventSink; ///<
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
1189 FThread : TThreadItem;
1190 FLastSize : Integer;
1192 FMovement : string; ///<
\83X
\83N
\83\8d\81[
\83\8b\90æ
\83A
\83\93\83J
\81[
1194 destructor Destroy; override;
1195 property Browser : TWebBrowser read FBrowser write FBrowser;
1196 property Thread : TThreadItem read FThread write FThread;
1197 property LastSize : Integer read FLastSize write FLastSize;
1198 property Repaint : Boolean read FRepaint write FRepaint;
1199 property Movement : string read FMovement write FMovement;
1203 GikoForm: TGikoForm;
1208 About, Option, Round, Splash, Sort, ListSelect,
1209 NewBoard, MojuUtils, Clipbrd, GikoBayesian;
1212 CAPTION_NAME: string = '
\83M
\83R
\83i
\83r';
1213 BLANK_HTML: string = 'about:blank';
1214 SELECTCOMBOBOX_NAME: string = ''; // '
\83X
\83\8c\83b
\83h
\8di
\8d\9e\8c\9f\8dõ';
1215 SELECTCOMBOBOX_COLOR: TColor = clWindow;
1217 DandD_THRESHOLD = 5; //D&D
\82Ìè
\87\92l
\81ipixcel)
1218 //
\83c
\83\8a\81[
\81E
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93
1219 ITEM_ICON_2CH1 = 0; //2ch
\83A
\83C
\83R
\83\93
1220 ITEM_ICON_2CH2 = 1; //2ch
\83A
\83C
\83R
\83\93
1221 ITEM_ICON_CATEGORY1 = 2; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1222 ITEM_ICON_CATEGORY2 = 3; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1223 ITEM_ICON_BOARD_NOSUBJECT = 3; //
\93Ç
\82Ý
\8d\9e\82Ü
\82ê
\82Ä
\82¢
\82È
\82¢
\94Â
\83A
\83C
\83R
\83\93
1224 ITEM_ICON_BOARD1 = 4; //
\94Â
\83A
\83C
\83R
\83\93
1225 ITEM_ICON_BOARD2 = 5; //
\94Â
\83A
\83C
\83R
\83\93
1226 ITEM_ICON_THREADLOG1 = 6; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1227 ITEM_ICON_THREADLOG2 = 7; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1228 ITEM_ICON_THREAD1 = 8; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1229 ITEM_ICON_THREAD2 = 9; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1230 ITEM_ICON_THREADNEW1 = 10; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1231 ITEM_ICON_THREADNEW2 = 11; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1232 ITEM_ICON_SORT1 = 12; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1233 ITEM_ICON_SORT2 = 13; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1234 ITEM_ICON_BOARD_LOG = 17; //
\83X
\83\8c\83\8d\83O
\82 \82è
\94Â
\83A
\83C
\83R
\83\93
1235 ITEM_ICON_BOARD_NEW = 18; //
\83X
\83\8c\90V
\92\85\94Â
\83A
\83C
\83R
\83\93
1237 //
\83c
\81[
\83\8b\83o
\81[
\83A
\83C
\83R
\83\93
1238 TOOL_ICON_HEIGHT_MAX = 16; //
\8d\82\82³
\8dÅ
\91å
\83A
\83C
\83R
\83\93
1239 TOOL_ICON_HEIGHT_MIN = 17; //
\8d\82\82³
\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1240 TOOL_ICON_HEIGHT_NORMAL = 18; //
\8d\82\82³
\95W
\8f\80\83A
\83C
\83R
\83\93
1241 TOOL_ICON_WIDTH_MAX = 19; //
\95\9d\8dÅ
\91å
\83A
\83C
\83R
\83\93
1242 TOOL_ICON_WIDTH_MIN = 20; //
\95\9d\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1243 TOOL_ICON_WIDTH_NORMAL = 21; //
\95\9d\95W
\8f\80\83A
\83C
\83R
\83\93
1245 TOOL_ICON_FAV_FOLDER = 30; //
\82¨
\8bC
\82É
\93ü
\82è
\83t
\83H
\83\8b\83_
\83A
\83C
\83R
\83\93
1246 TOOL_ICON_FAV_BOARD = 31; //
\82¨
\8bC
\82É
\93ü
\82è
\94Â
\83A
\83C
\83R
\83\93
1247 TOOL_ICON_FAV_THREAD = 32; //
\82¨
\8bC
\82É
\93ü
\82è
\83X
\83\8c\83A
\83C
\83R
\83\93
1249 HTML_FILE_NAME = 'temp_preview.html';
1251 WM_XBUTTONDOWN = $020B;
1252 WM_XBUTTONUP = $020C;
1253 WM_XBUTTONDBLCLK = $020D;
1256 USER_TREECLICK = WM_USER + 2000;
1257 USER_RESIZED = WM_USER + 2001;
1258 USER_MINIMIZED = WM_USER + 2002;
1259 USER_SETLINKBAR = WM_USER + 2003;
1260 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
1261 SELECTTIME_INTERBAL = 110;
1263 BROWSER_COUNT = 5; //
\83u
\83\89\83E
\83U
\82Ì
\90\94
1266 procedure TGikoForm.CreateParams(var Params: TCreateParams);
1269 if FormStyle in [fsNormal, fsStayOnTop] then begin
1270 if BorderStyle in [bsSingle, bsSizeable] then begin
1271 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
1272 Params.WndParent := 0;
1277 procedure TGikoForm.FormCreate(Sender: TObject);
1279 TVS_NOTOOLTIPS = $0080;
1285 wp: TWindowPlacement;
1287 newbrowser: TWebBrowser;
1291 Writeln('============================================================');
1292 Writeln('
\83M
\83R
\83i
\83r
\83f
\83o
\83b
\83O
\83R
\83\93\83\
\81[
\83\8b');
1294 Writeln('
\82±
\82Ì
\89æ
\96Ê
\82ð
\95Â
\82¶
\82È
\82¢
\82Å
\82
\82¾
\82³
\82¢
\81B');
1295 Writeln('
\8fI
\97¹
\8e\9e\82Í
\81A
\83M
\83R
\83i
\83r
\83E
\83B
\83\93\83h
\83E
\82ð
\95Â
\82¶
\82Ä
\82
\82¾
\82³
\82¢');
1296 Writeln('============================================================');
1299 //Application.OnDeactivate := AppFormDeactivate;
1300 Self.OnDeactivate := AppFormDeactivate;
1301 Application.HookMainWindow(Hook);
1302 // Application.OnMessage := HandleAppMessage; //
\82È
\82ñ
\82©
\96³
\82
\82Ä
\82à
\91å
\8fä
\95v
\82É
\82È
\82Á
\82½
\81@by
\81@
\82à
\82¶
\82ã
1303 FTreeType := gttNone;
1305 FSearchDialog := nil;
1306 BrowserNullTab := TBrowserRecord.Create;
1307 BrowserNullTab.Browser := Browser;
1308 BrowserNullTab.Browser.Navigate(BLANK_HTML);
1309 FBrowsers := TList.Create;
1310 for i := 0 to BROWSER_COUNT -1 do begin
1311 FBrowsers.Add(TWebBrowser.Create(nil));
1312 newBrowser := FBrowsers[FBrowsers.Count - 1];
1313 TOleControl(newBrowser).Parent := BrowserPanel;
1314 newBrowser.Align := alNone;
1315 newBrowser.Left := 0;
1316 newBrowser.Top := 0;
1317 newBrowser.StatusBar := false;
1318 newBrowser.MenuBar := false;
1319 newBrowser.AddressBar := false;
1320 newBrowser.OnDocumentComplete := BrowserDocumentComplete;
1321 newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
1322 newBrowser.OnEnter := BrowserEnter;
1323 newBrowser.OnNewWindow2 := BrowserNewWindow2;
1324 newBrowser.OnStatusTextChange := BrowserStatusTextChange;
1325 newBrowser.Navigate(BLANK_HTML);
1326 ShowWindow(newBrowser.Handle, SW_HIDE);
1329 BrowserNullTab.Browser.BringToFront;
1330 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
1332 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô
1333 FIsIgnoreResize := rtResizing;
1335 //
\8eè
\82Ì
\83J
\81[
\83\
\83\8b
1336 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
1339 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1340 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
1342 EnabledCloseButton := True;
1344 //
\83\8a\83X
\83g
\83X
\83^
\83C
\83\8b
1345 ListView.ViewStyle := GikoSys.Setting.ListStyle;
1347 //
\83\81\83C
\83\93\83N
\81[
\83\8b\83o
\81[
\88Ê
\92u
1348 // MainCoolBar.Top := 0;
1349 // MainCoolBar.Left := 0;
1351 //
\83A
\83j
\83\81\83p
\83l
\83\8b\88Ê
\92u
1352 AnimePanel.Top := 0;
1353 AnimePanel.Left := 0;
1355 //
\8ae
\8eí
\89Â
\8e\8b\8fó
\91Ô
\82È
\82Ç
\90Ý
\92è
1357 //
\83L
\83\83\83r
\83l
\83b
\83g
1358 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
1360 //
\83\81\83b
\83Z
\81[
\83W
\83o
\81[
1361 MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
1362 MsgBarVisibleActionExecute(nil);
1363 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
1365 //
\83X
\83e
\81[
\83^
\83X
\83o
\81[
1366 StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
1367 StatusBarVisibleActionExecute(nil);
1369 //
\83t
\83H
\83\93\83g
\81E
\90F
\90Ý
\92è
1370 TreeView.Items.BeginUpdate;
1371 FavoriteTreeView.Items.BeginUpdate;
1372 ListView.Items.BeginUpdate;
1374 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1375 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1376 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1377 TreeView.Color := GikoSys.Setting.CabinetBackColor;
1378 {TreeView.Font.Style := [];
1379 if GikoSys.Setting.CabinetFontBold then
1380 TreeView.Font.Style := [fsBold];
1381 if GikoSys.Setting.CabinetFontItalic then
1382 TreeView.Font.Style := TreeView.Font.Style + [fsItalic];
1384 //FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1385 //FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1386 //FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1387 FavoriteTreeView.Font.Assign(TreeView.Font);
1388 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
1390 ListView.Font.Name := GikoSys.Setting.ListFontName;
1391 ListView.Font.Size := GikoSys.Setting.ListFontSize;
1392 ListView.Font.Color := GikoSys.Setting.ListFontColor;
1393 ListView.Font.Style := [];
1394 if GikoSys.Setting.ListFontBold then
1395 ListView.Font.Style := [fsbold];
1396 if GikoSys.Setting.ListFontItalic then
1397 ListView.Font.Style := ListView.Font.Style + [fsitalic];
1399 ListViewBackGroundColor := clWhite; //
\83f
\83t
\83H
\83\8b\83g
\82É
\90Ý
\92è
\82µ
\82½
\82Ì
\82¿
1400 ListViewBackGroundColor := GikoSys.Setting.ListBackColor; //
\83\86\81[
\83U
\92è
\8b`
\82É
\95Ï
\8dX
1401 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
1402 FOddColor := GikoSys.Setting.OddColor;
1405 TreeView.Items.EndUpdate;
1406 FavoriteTreeView.Items.EndUpdate;
1407 ListView.Items.EndUpdate;
1409 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
1410 ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
1412 //
\83u
\83\89\83E
\83U
\83^
\83u
\83t
\83H
\83\93\83g
1413 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1414 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1415 BrowserTab.Font.Style := [];
1416 if GikoSys.Setting.BrowserTabFontBold then
1417 BrowserTab.Font.Style := [fsBold];
1418 if GikoSys.Setting.BrowserTabFontItalic then
1419 BrowserTab.Font.Style := GikoForm.BrowserTab.Font.Style + [fsItalic];
1420 FDragWFirst := false;
1421 SetContent(BrowserNullTab); //
\83u
\83\89\83E
\83U
\82ð
\8bó
\94\92\95\
\8e¦
1422 // TreeView.TopItem.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
1423 // TreeView.Selected := TreeView.Items[0]; //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
1426 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95\9c\8c³
1427 wp.length := sizeof(wp);
1428 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1429 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1430 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1431 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1432 wp.showCmd := SW_HIDE;
1433 SetWindowPlacement(Handle, @wp);
1435 // SetBounds(GikoSys.Setting.WindowLeft, GikoSys.Setting.WindowTop,
1436 // GikoSys.Setting.WindowWidth, GikoSys.Setting.WindowHeight);
1437 if GikoSys.Setting.WindowMax then
1438 WindowState := wsMaximized;
1440 //
\83M
\83R
\83A
\83j
\83\81
1442 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1443 if FileExists(FileName) then
1444 Animate.FileName := FileName;
1452 //
\83X
\83\8c\91S
\95\94\95\
\8e¦
\83{
\83^
\83\93\82ð
\89\9f\82³
\82ê
\82½
\8fó
\91Ô
\82É
\82·
\82é
1453 AllItemAction.Checked := True;
1454 AllResAction.Checked := True;
1456 //TreeView
\82Ì
\8e×
\96\82\8fL
\82¢ToolTip
\82ð
\94ñ
\95\
\8e¦
1457 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1458 Style := Style or TVS_NOTOOLTIPS;
1459 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1461 //
\83c
\83\8a\81[
\82ð
\83\81\83C
\83\93\82¾
\82¯
\95\
\8e¦
\82É
\82µ
\82Ä
\8dÅ
\91å
\89»
1462 TreeView.Align := alClient;
1463 FavoriteTreeView.Align := alClient;
1464 FavoriteTreeView.Visible := False;
1466 //
\83u
\83\89\83E
\83U
\83T
\83C
\83Y
\95Ï
\8dX
\82Ì
\8f\89\8aú
\89»
1467 // FBrowserSizeFlag := False;
1468 // FBrowserSizeHeight := ViewPanel.Height;
1470 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1471 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1473 //
\8aO
\95\94\94Â
\83v
\83\89\83O
\83C
\83\93\82ð
\83\8d\81[
\83h(ReadBoardFile, LoadHistory
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1474 InitializeBoardPlugIns;
1476 //
\8f\84\89ñ
\83f
\81[
\83^
\93Ç
\82Ý
\8d\9e\82Ý
1477 RoundList := TRoundList.Create;
1478 RoundList.LoadRoundBoardFile;
1480 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\97ñ
\8b\93(ReadFavorite
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1481 GikoSys.ListBoardFile;
1483 RoundList.LoadRoundThreadFile;
1485 if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then
1486 GikoSys.ListBoardFile;
1488 //
\83\81\83j
\83\85\81[
\82É
\92Ç
\89Á
1491 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g(LoadHistory
\82æ
\82è
\82à
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1492 FHistoryList := TList.Create;
1494 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1497 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
1498 // FFavorite := TFavorite.Create(FavoriteTreeView);
1499 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1500 FavoriteDM.ReadFavorite;
1502 ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1503 ArrangeAction.Execute;
1505 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1506 case GikoSys.Setting.ListWidthState of
1508 ViewPanel.Width := 1;
1509 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1510 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1513 ViewPanel.Width := GikoSys.Setting.ListWidth;
1514 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1515 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1518 ViewPanel.Width := GikoSys.Setting.ListWidth;
1519 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1520 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1524 case GikoSys.Setting.ListHeightState of
1526 ViewPanel.Height := 1;
1527 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1528 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1531 ViewPanel.Height := GikoSys.Setting.ListHeight;
1532 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1533 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1536 ViewPanel.Height := GikoSys.Setting.ListHeight;
1537 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1538 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1543 //
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[
\82Ì
\8f\89\8aú
\89»
1544 // ProgressBar.Visible := False;
1545 ProgressBar.Parent := StatusBar;
1546 ProgressBar.Top := 2;
1547 ProgressBar.Left := 0;
1548 ProgressBar.Width := StatusBar.Panels[0].Width;
1549 ProgressBar.Height := StatusBar.Height - 2;
1550 ProgressBar.Position := 0;
1552 //
\83_
\83E
\83\93\83\8d\81[
\83h
\83I
\83u
\83W
\83F
\83N
\83g
1553 FControlThread := TThreadControl.Create(True);
1554 FControlThread.MaxThreadCount := 1;
1555 FControlThread.Resume;
1556 FControlThread.OnDownloadEnd := DownloadEnd;
1557 FControlThread.OnDownloadMsg := DownloadMsg;
1558 FControlThread.OnWork := Work;
1559 FControlThread.OnWorkBegin := WorkBegin;
1560 FControlThread.OnWorkEnd := WorkEnd;
1561 // ProgressPanel.Width := FControlThread.MaxThreadCount * 12;
1563 //
\8di
\8d\9e\8c\9f\8dõ
\97\9a\97ð
1564 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1566 //
\83u
\83\89\83E
\83U
\83^
\83u
\90Ý
\92è
1569 BrowserBoardNameLabel.Caption := '';
1570 BrowserNameLabel.Caption := '';
1573 FTabHintIndex := -1;
1575 //
\83\8a\83\93\83N
\83o
\81[
1578 //
\83\81\83j
\83\85\81[
\83t
\83H
\83\93\83g
1581 //
\83c
\81[
\83\8b\83o
\81[Wrapable
1582 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1583 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1585 KeepDefaultToolButton(StdToolBar, TmpToolBar);
1586 KeepDefaultToolButton(ListToolBar, TmpToolBar);
1587 KeepDefaultToolButton(BrowserToolBar, TmpToolBar);
1589 MakeDefaultINIFile();
1590 //
\83c
\81[
\83\8b\83{
\83^
\83\93\93Ç
\82Ý
\8d\9e\82Ý
1591 ReadToolBarSetting(ActionList, StdToolBar);
1592 ReadToolBarSetting(ActionList, ListToolBar);
1594 for i := ListToolBar.ControlCount - 1 downto 0 do
1596 if ListToolBar.Controls[ i ].Action = SelectItemAction then
1598 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\82Ì
\97×
\82É
\83Z
\83p
\83\8c\81[
\83^
\82ª
\82 \82é
\8fê
\8d\87\82Í
\89B
\82·
1599 if (i + 1) < ListToolBar.ControlCount then
1600 if ListToolBar.Controls[ i + 1 ] is TToolButton then
1601 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1602 ListToolBar.Controls[ i + 1 ].Visible := False;
1604 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
1605 ListToolBar.Controls[ i ].Visible := False;
1606 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
1607 SelectComboBox.Parent := ListToolBar;
1608 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
1609 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
1610 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
1611 SelectComboBoxSplitter.Parent := ListToolBar;
1612 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
1619 ReadToolBarSetting(ActionList, BrowserToolBar);
1622 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1623 FResRangeMenuSelect := GikoSys.ResRange;
1624 case GikoSys.ResRange of
1627 AllResAction.Execute;
1631 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
1632 SelectResAction.Checked := True;
1635 // ResRangeAction.Execute;
1636 case FResRangeMenuSelect of
1637 Ord( grrKoko ): OnlyKokoResAction.Checked := True;
1638 Ord( grrNew ): OnlyNewResAction.Checked := True;
1639 100: OnlyAHundredResAction.Checked := True;
1643 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\95\
\8e¦
\94Í
\88Í
1644 // ThreadRangeAction.Execute;
1645 case GikoSys.Setting.ThreadRange of
1648 AllItemAction.Checked := True;
1653 LogItemAction.Checked := True;
1658 NewItemAction.Checked := True;
1663 //
\83A
\83h
\83\8c\83X
\83o
\81[
1664 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1666 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³
\82ÍFormShow
\82É
\88Ú
\93®
\82µ
\82½
1668 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\82ª
\96³
\82¢
\8fê
\8d\87\82Í
\83\81\83b
\83Z
\81[
\83W
\95\
\8e¦
1669 if not FileExists(GikoSys.GetBoardFileName) then begin
1670 msg := '
\82±
\82Ì
\83\81\83b
\83Z
\81[
\83W
\82Í
\83M
\83R
\83i
\83r
\82ð
\8f\89\82ß
\82Ä
\8eg
\97p
\82·
\82é
\82Æ
\82«
\82É
\82P
\89ñ
\82¾
\82¯
\95\
\8e¦
\82³
\82ê
\82Ü
\82·' + #13#10#13#10
1671 + '
\82±
\82ê
\82©
\82ç
\81A
\81u
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\81v
\82Ì
\83A
\83h
\83\8c\83X
\88ê
\97\97\82ð
\83_
\83E
\83\93\83\8d\81[
\83h
\82µ
\82Ü
\82·' + #13#10
1672 + '
\8e\9f\82É
\8fo
\82Ä
\82
\82é
\89æ
\96Ê
\82Å
\81A
\81u
\8dX
\90V
\81v
\83{
\83^
\83\93\82ð
\89\9f\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B';
1673 MsgBox(SplashWindow.Handle, msg, '
\83M
\83R
\83i
\83r', MB_OK or MB_ICONINFORMATION);
1674 NewBoardAction.Execute;
1677 //
\83L
\81[
\90Ý
\92è
\93Ç
\82Ý
\8d\9e\82Ý
1678 GikoSys.LoadKeySetting(ActionList);
1680 //
\8dÅ
\8fI
\8f\84\89ñ
\8e\9e\8aÔ
1681 // FLastRoundTime := 0;
1684 FHint := TResPopup.Create(Self);
1686 //
\8dÅ
\8cã
\82É
\91I
\91ð
\82³
\82ê
\82½
\83L
\83\83\83r
\83l
\83b
\83g
\82Ì
\95\9c\8c³
1687 CabinetVisible( False );
1688 if GikoSys.Setting.CabinetVisible then begin
1689 i := CabinetSelectPopupMenu.Items.Count - 1;
1690 if GikoSys.Setting.CabinetIndex = i - 1 then
1691 CabinetHistoryAction.Execute
1692 else if GikoSys.Setting.CabinetIndex = i then
1693 CabinetFavoriteAction.Execute
1695 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1696 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1697 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 2
1698 FIsIgnoreResize := rtResizing;
1699 CabinetBBSAction.Execute;
1702 ShowBBSTreeOld( BBSs[ 0 ] );
1703 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1706 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 3
1707 FIsIgnoreResize := rtResizing;
1709 //
\83I
\81[
\83g
\83\8d\83O
\83C
\83\93
1710 if GikoSys.Setting.AutoLogin then
1711 LoginAction.Execute;
1713 //
\88ø
\90\94\82ª
\82 \82Á
\82½
\82ç
\83X
\83\8c\82ð
\8aJ
\82
\81i
\96¢
\8eæ
\93¾
\82È
\82ç
\83_
\83E
\83\93\83\8d\81[
\83h
\81j
1714 for i := 1 to ParamCount do begin
1715 MoveToURL(ParamStr(i));
1720 s := GikoSys.FAbon.NGwordname;
1721 StatusBar.Panels[2].Text := s;
1722 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
1723 StatusBarResize(Sender);
1725 dummy1.Caption := ItemReservPMenu.Caption;
1726 dummy1.Hint := ItemReservPMenu.Hint;
1728 //Samba24
\82Ì
\83t
\83@
\83C
\83\8b\83`
\83F
\83b
\83N
1729 GikoSys.SambaFileExists();
1731 //
\83X
\83p
\83\80\83t
\83B
\83\8b\83^
\8aw
\8fK
\97\9a\97ð
1732 GikoSys.Bayesian.LoadFromFile( GikoSys.Setting.GetSpamFilterFileName );
1734 //
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
1735 MouseGesture := TMouseGesture.Create;
1736 GikoSys.Setting.Gestures.LoadGesture(
1737 GikoSys.Setting.GetGestureFileName, ActionList );
1738 MouseGesture.Margin := GikoSys.Setting.Gestures.Margin;
1739 MouseGesture.OnGestureStart := OnGestureStart;
1740 MouseGesture.OnGestureMove := OnGestureMove;
1741 MouseGesture.OnGestureEnd := OnGestureEnd;
1742 if GikoSys.Setting.GestureEnabled then
1743 MouseGesture.SetHook( Handle );
1745 //2ch
\8c¾
\8cê
\93Ç
\82Ý
\8fo
\82µ
1746 if GikoSys.Setting.GengoSupport then begin
1747 if GikoSys.Setting.Gengo = nil then
1748 GikoSys.Setting.Gengo := TStringList.Create;
1749 if FileExists(GikoSys.GetConfigDir + 'language.ini') then
1750 GikoSys.Setting.Gengo.LoadFromFile(GikoSys.GetConfigDir + 'language.ini')
1752 GikoSys.Setting.GengoSupport := false;
1756 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1757 procedure TGikoForm.SaveCoolBarSettings;
1760 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1762 SaveMainCoolBarSettings;
1763 SaveBoardCoolBarSettings;
1764 SaveBrowserCoolBarSettings;
1767 procedure TGikoForm.SaveMainCoolBarSettings;
1772 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Main)
1773 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1774 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1775 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1776 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1777 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1780 procedure TGikoForm.SaveBoardCoolBarSettings;
1785 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Board)
1786 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1787 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1788 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1789 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1790 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1793 procedure TGikoForm.SaveBrowserCoolBarSettings;
1798 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Browser)
1799 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1800 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1801 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1802 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1803 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1806 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1807 procedure TGikoForm.LoadCoolBarSettings;
1813 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Main)
1814 MainCoolBar.Bands.BeginUpdate;
1816 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1817 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1818 CoolSet := GikoSys.Setting.MainCoolSet[i];
1819 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1820 FIsIgnoreResize := rtNone;
1821 SaveCoolBarSettings;
1824 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1825 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1826 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1829 MainCoolBar.Bands.EndUpdate;
1832 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Board)
1833 ListCoolBar.Bands.BeginUpdate;
1835 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1836 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1837 CoolSet := GikoSys.Setting.ListCoolSet[i];
1838 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1839 FIsIgnoreResize := rtNone;
1840 SaveCoolBarSettings;
1843 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1844 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1845 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1848 ListCoolBar.Bands.EndUpdate;
1851 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Browser)
1852 BrowserCoolBar.Bands.BeginUpdate;
1854 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1855 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1856 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1857 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1858 FIsIgnoreResize := rtNone;
1859 SaveCoolBarSettings;
1862 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1863 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1864 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1867 BrowserCoolBar.Bands.EndUpdate;
1875 procedure TGikoForm.FormShow(Sender: TObject);
1877 if FStartUp then begin
1878 ShowWindow(Application.Handle, SW_HIDE);
1880 //FormCreate
\82Å
\82â
\82é
\82Æ
\89Â
\8e\8b\90Ý
\92è
\82ª
\94½
\89f
\82³
\82ê
\82È
\82¢
\8fê
\8d\87\82ª
\82 \82é
\82Ì
\82ÅFormShow
\82Å
\82â
\82é
\82±
\82Æ
\82É
\82µ
\82½
1881 //
\83c
\81[
\83\8b\83o
\81[
\95\
\8e¦
1882 StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1883 StdToolBarVisibleActionExecute( nil );
1884 AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1885 AddressBarVisibleActionExecute( nil );
1886 LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1887 LinkBarVisibleActionExecute( nil );
1888 ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1889 ListToolBarVisibleActionExecute( nil );
1890 ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1891 ListNameBarVisibleActionExecute( nil );
1892 BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1893 BrowserToolBarVisibleActionExecute( nil );
1894 BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1895 BrowserNameBarVisibleActionExecute( nil );
1897 //
\83u
\83\89\83E
\83U
\83^
\83u
1898 BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1899 BrowserTabVisibleActionExecute(nil);
1901 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1902 BrowserTabTopAction.Checked := True;
1903 BrowserTabTopActionExecute(nil);
1905 BrowserTabBottomAction.Checked := True;
1906 BrowserTabBottomActionExecute(nil);
1909 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1910 BrowserTabTabStyleAction.Checked := True;
1911 BrowserTabTabStyleActionExecute(nil);
1912 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1913 BrowserTabButtonStyleAction.Checked := True;
1914 BrowserTabButtonStyleActionExecute(nil);
1916 BrowserTabFlatStyleAction.Checked := True;
1917 BrowserTabFlatStyleActionExecute(nil);
1920 // ListView
\82Ì
\83w
\83b
\83_
\83h
\83\89\83b
\83O
1921 // ListView.FullDrag := True;
1923 // CoolBar
\95\9c\8c³
1924 LoadCoolBarSettings;
1926 FIsIgnoreResize := rtNone;
1929 //FormCrete
\82©
\82ç
\88Ú
\93®
\81B
1930 if GikoSys.Setting.TabAutoLoadSave then begin
1931 TabAutoLoadAction.Execute;
1933 //
\82É
\82¿
\82á
\82ñ
\8cê
\88Ä
\93à
\83T
\83|
\81[
\83g
\8b@
\94\
1934 if GikoSys.Setting.GengoSupport then begin
1943 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1945 // if GikoForm.WindowState <> wsMinimized then
1946 // SaveCoolBarSettings;
1947 if ( GikoSys.Setting.ShowDialogForEnd ) and
1948 (MessageDlg('
\83M
\83R
\83i
\83r
\82ð
\8fI
\97¹
\82µ
\82Ä
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin
1953 if GikoSys.Setting.TabAutoLoadSave then begin
1954 TabAutoSaveAction.Execute;
1957 //2ch
\8c¾
\8cȩ̂²ÙFree
1958 if GikoSys.Setting.Gengo <> nil then begin
1959 GikoSys.Setting.Gengo.Free;
1961 //Application.HookMainWindow(Hook);
1962 Application.UnhookMainWindow(Hook);
1963 Application.Terminate;
1966 procedure TGikoForm.FormDestroy(Sender: TObject);
1969 // CoolSet: TCoolSet;
1970 wp : TWindowPlacement;
1973 // Application.OnDeactivate := nil;
1974 // Self.OnDeactivate := nil;
1975 //
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8aJ
\95ú
1977 MouseGesture.UnHook;
1981 ActiveListColumnSave;
1985 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
1986 wp.length := sizeof(wp);
1987 GetWindowPlacement(Handle, @wp);
1988 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1989 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1990 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1991 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1992 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1994 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1995 GikoSys.Setting.CabinetVisible := CabinetVisibleAction.Checked;
1996 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1997 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1998 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1999 if ArrangeAction.Checked then
2000 GikoSys.Setting.ListOrientation := gloVertical
2002 GikoSys.Setting.ListOrientation := gloHorizontal;
2003 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
2008 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
2009 if not GikoSys.Setting.ResRangeHold then
2010 GikoSys.Setting.ResRange := FResRangeMenuSelect;
2014 //
\83\8a\83A
\83\8b\83^
\83C
\83\80\82É
\95Û
\91¶
\82³
\82ê
\82é
\82Ì
\82Å
\81A
\82Ü
\82½
\81A
\83E
\83B
\83\93\83h
\83E
\83T
\83C
\83Y
\82ª CoolBar
\82æ
\82è
2015 //
\8f¬
\82³
\82
\82È
\82Á
\82Ä
\82¢
\82é
\82Æ
\82«
\82É
\95Û
\91¶
\82·
\82é
\82Æ
\92l
\82ª
\8fã
\8f\91\82«
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82Å
\82±
\82±
\82Å
\82Í
\95Û
\91¶
\82µ
\82È
\82¢
2017 //
\81ªFormDestroy
\92\86\82É
\88Ú
\93®
\82µ
\82½
\82Ì
\82Å
\81A
\82±
\82±
\82Å
\95Û
\91¶
\82µ
\82È
\82¢
\82Æ
\82¢
\82¯
\82È
\82¢
\82Æ
\8ev
\82¤
\81B
\81i
\82à
\82¶
\82ã
\81@2004/04/09
\81j
2019 if GikoForm.WindowState <> wsMinimized then
2020 SaveCoolBarSettings;
2023 GikoSys.Setting.WriteWindowSettingFile;
2024 GikoSys.Setting.WriteNameMailSettingFile;
2028 //
\82¨
\8bC
\82É
\93ü
\82è
\95Û
\91¶
2030 //FavoriteDM
\82Í
\8e©
\93®
\90¶
\90¬
\83t
\83H
\81[
\83\80\82È
\82Ì
\82Å
\81A
\89ð
\95ú
\82Í
\8e©
\93®
\93I
\82É
\82³
\82ê
\82é
2031 FavoriteDM.WriteFavorite;
2037 //
\83^
\83u
\83N
\83\8d\81[
\83Y
2038 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
2039 GikoSys.Setting.ShowDialogForAllTabClose := false;
2040 AllTabCloseAction.Execute;
2041 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
2045 LockWindowUpdate(Self.Handle);
2046 for i := FBrowsers.Count - 1 downto 0 do begin
2047 TWebBrowser(FBrowsers[i]).Free;
2050 FBrowsers.Capacity := 0;
2055 if BrowserNullTab <> nil then begin
2056 BrowserNullTab.Browser := nil; {*BrowserNullTab
\82ÌBrowser
\82Í
\90Ý
\8cv
\8e\9e\82É
\93\
\82è
\95t
\82¯
\82Ä
\82é
\93z
2057 *
\82È
\82Ì
\82Å
\82±
\82±
\82ÅFree
\82³
\82ê
\82é
\82Æ
\8d¢
\82é
\82Ì
\82Å
\82Í
\82¸
\82µ
\82Ä
\82µ
\82Ü
\82¤
\81B
2059 BrowserNullTab.Free;
2063 LockWindowUpdate(0);
2065 TreeView.Items.BeginUpdate;
2066 TreeView.Items.GetFirstNode.Free;
2067 TreeView.Items.Clear;
2068 TreeView.Items.EndUpdate;
2072 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\95Û
\91¶
2074 //AddressHistoryDM
\82Í
\8e©
\93®
\90¶
\90¬
\83t
\83H
\81[
\83\80\82È
\82Ì
\82Å
\81A
\89ð
\95ú
\82Í
\8e©
\93®
\93I
\82É
\82³
\82ê
\82é
\81B
2075 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
2079 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
\95Û
\91¶
2093 //
\8f\84\89ñ
\83\8a\83X
\83g
\95Û
\91¶&
\94j
\8aü
2095 RoundList.SaveRoundFile;
2109 FControlThread.Terminate;
2110 FControlThread.WaitFor;
2114 FControlThread.Free;
2117 // TBBS
\82Í
\95Û
\8e\9d\82µ
\82Ä
\82¢
\82é TCategory, TBoard, TThreadItem
\82·
\82×
\82Ä
\82ð
\8aJ
\95ú
\82·
\82é
2118 // TBoard, TThreadItem
\82Ì
\83f
\83X
\83g
\83\89\83N
\83^
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94j
\8aü
\82ð
\93`
\82¦
\82é
\82Ì
\82Å
2119 // BoardPluteIns
\82Ì
\8aJ
\95ú
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ
2121 for i := Length( BBSs ) - 1 downto 0 do begin
2122 if BBSs[ i ] <> nil then
2130 for i := Length( BoardPlugIns ) - 1 downto 0 do begin
2131 if BoardPlugIns[ i ] <> nil then
2132 BoardPlugIns[ i ].Free;
2133 BoardPlugIns[ i ] := nil;
2139 if FEvent <> nil then
2143 if FHint <> nil then begin
2144 FHint.ReleaseHandle;
2149 if TPreviewBrowser <> nil then begin
2150 FPreviewBrowser.Free;
2151 FPreviewBrowser := nil;
2158 //
\83L
\83\83\83r
\83l
\83b
\83g
\81~
\83{
\83^
\83\93\83N
\83\8a\83b
\83N
2159 procedure TGikoForm.CabinetPanelHide(Sender: TObject);
2161 CabinetVisibleAction.Execute;
2162 // CabinetPanelVisible(false);
2165 //
\8ae
\8f\8a\82É
\82 \82é
\83L
\83\83\83r
\83l
\83b
\83g
\81E BBS
\83\81\83j
\83\85\81[
\82ð
\83Z
\83b
\83g
\81^
\8dX
\90V
2166 procedure TGikoForm.SetBBSMenu;
2169 item : TBBSMenuItem;
2172 //
\83\81\83j
\83\85\81[
\82ð
\8dí
\8f\9c
2173 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
2175 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
2176 CabinetSelectPopupMenu.Items[ i ].Free;
2177 CabinetMenu.Items[ i ].Free;
2178 BBSSelectPopupMenu.Items[ i ].Free;
2184 //
\83\81\83j
\83\85\81[
\82ð
\90Ý
\92è
2185 for i := Length( BBSs ) - 1 downto 0 do begin
2187 item := TBBSMenuItem.Create( PopupMenu );
2188 item.Caption := BBSs[ i ].Title;
2189 item.Data := BBSs[ i ];
2190 item.OnClick := BBSMenuItemOnClick;
2191 CabinetSelectPopupMenu.Items.Insert( 0, item );
2192 item := TBBSMenuItem.Create( PopupMenu );
2193 item.Caption := BBSs[ i ].Title;
2194 item.Data := BBSs[ i ];
2195 item.OnClick := BBSMenuItemOnClick;
2196 CabinetMenu.Insert( 0, item );
2197 item := TBBSMenuItem.Create( PopupMenu );
2198 item.Caption := BBSs[ i ].Title;
2199 item.Data := BBSs[ i ];
2200 item.OnClick := BBSMenuItemOnClick;
2201 BBSSelectPopupMenu.Items.Insert( 0, Item );
2208 procedure TGikoForm.ReloadBBS;
2213 //
\83^
\83u
\83N
\83\8d\81[
\83Y
2214 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
2215 GikoSys.Setting.ShowDialogForAllTabClose := false;
2216 AllTabCloseAction.Execute;
2217 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
2219 SetContent(BrowserNullTab);
2220 //TreeView
\83N
\83\8a\83A
\81iBBS2ch.Free
\82Ì
\8cã
\82É
\83N
\83\8a\83A
\82·
\82é
\82ÆXP
\83X
\83^
\83C
\83\8b\8e\9e\82É
\83G
\83\89\81[
\8fo
\82é
\81j
2221 TreeView.Items.Clear;
2225 for i := Length( BBSs ) - 1 downto 0 do begin
2226 if BBSs[ i ] <> nil then
2235 FTreeType := gttNone;
2237 GikoSys.ListBoardFile; //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\93Ç
\8d\9e
2239 // BBS
\83\81\83j
\83\85\81[
\82Ì
\8dX
\90V
2242 ShowBBSTree( BBSs[ 0 ] );
2244 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
2249 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
2250 FavoriteDM.WriteFavorite;
2252 FavoriteDM.ReadFavorite;
2257 TabsOpenAction.Execute;
2260 //
\83{
\81[
\83h
\83c
\83\8a\81[
\90Ý
\92è
2261 procedure TGikoForm.SetBoardTreeNode(
2267 CategoryNode: TTreeNode;
2268 BoardNode: TTreeNode;
2269 Category: TCategory;
2272 //
\94Â
\83\8a\83X
\83g
\82Ì
\90Ý
\92è
2273 FActiveBBS := inBBS;
2274 TreeView.Items.BeginUpdate;
2275 TreeView.Items.Clear;
2277 if not inBBS.IsBoardFileRead then
2278 GikoSys.ReadBoardFile( inBBS );
2280 if SplashWindow <> nil then
2281 SplashWindow.ProgressBar.Max := inBBS.Count;
2285 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2286 if ( GikoSys.Setting.BBSSortIndex <> 0 ) or ( GikoSys.Setting.BBSSortOrder <> true ) then begin
2287 Sort.SortOrder := true;
2288 Sort.SortIndex := 0;
2289 Sort.SortNoFlag := true;
2290 inBBS.Sort(CategorySortProc);
2293 Root := TreeView.Items.Add( nil, inBBS.Title );
2294 Root.ImageIndex := ITEM_ICON_2CH1;
2295 Root.SelectedIndex := ITEM_ICON_2CH2;
2297 for i := inBBS.Count - 1 downto 0 do begin
2298 Category := TCategory(inBBS.Items[i]);
2299 CategoryNode := TreeView.Items.AddChildFirst(Root, Category.Title);
2300 CategoryNode.Data := Category;
2301 CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
2302 CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
2304 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2305 if ( GikoSys.Setting.CategorySortIndex <> 0 ) or ( GikoSys.Setting.CategorySortOrder <> true ) then begin
2306 Sort.SortOrder := true;
2307 Sort.SortIndex := 0;
2308 Sort.SortNoFlag := true;
2309 Category.CustomSort(BoardSortProc);
2312 for j := Category.Count - 1 downto 0 do begin
2313 Board := TBoard(Category.Items[j]);
2315 BoardNode := TreeView.Items.AddChildFirst(CategoryNode, Board.Title);
2316 BoardNode.Data := Board;
2317 //if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then begin
2318 if not Board.IsLogFile then begin
2319 BoardNode.ImageIndex := ITEM_ICON_BOARD_NOSUBJECT;
2320 BoardNode.SelectedIndex := ITEM_ICON_BOARD_NOSUBJECT;
2322 BoardNode.ImageIndex := ITEM_ICON_BOARD1;
2323 BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
2324 for k := 0 to Board.Count - 1 do begin
2325 if Board.Items[ k ].IsLogFile then begin
2326 BoardNode.ImageIndex := ITEM_ICON_BOARD_LOG;
2327 BoardNode.SelectedIndex := ITEM_ICON_BOARD_LOG;
2336 CategoryNode.Expanded := Category.NodeExpand;
2338 if SplashWindow <> nil then begin
2339 SplashWindow.ProgressBar.StepIt;
2340 Application.ProcessMessages;
2344 TreeView.Items.EndUpdate;
2348 function TGikoForm.SetCategoryListItem(ABBS2ch: TBBS): Integer;
2350 TitleColumn : TListColumn;
2351 ListColumn : TListColumn;
2352 i, id, idx : Integer;
2354 ListView.Items.BeginUpdate;
2356 Screen.Cursor := crHourGlass;
2358 ListView.Columns.Clear;
2359 TitleColumn := ListView.Columns.Add;
2360 TitleColumn.Caption := GikoBBSColumnCaption[ Ord( gbbscTitle ) ];
2361 TitleColumn.Width := GikoSys.Setting.BBSColumnWidth[ Ord( gbbscTitle ) ];
2363 for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
2364 if GikoSys.Setting.BBSColumnOrder[ i ] = gbbscTitle then begin
2365 TitleColumn.Tag := i;
2368 id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
2369 if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
2370 (id <= Integer( High( TGikoBBSColumnID ) )) then begin
2371 ListColumn := ListView.Columns.Add;
2372 // ListColumn.Tag := id;
2373 ListColumn.Tag := i;
2374 ListColumn.Caption := GikoBBSColumnCaption[ id ];
2375 ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
2379 TitleColumn.Index := idx;
2381 ListView.Items.Count := 0;
2382 ListView.Items.Clear;
2383 ListView.Items.Count := ABBS2ch.Count;
2385 // UpFolderAction.Enabled := False;
2386 // AllItemAction.Enabled := False;
2387 // LogItemAction.Enabled := False;
2388 // NewItemAction.Enabled := False;
2389 // SelectItemAction.Enabled := False;
2390 // ListDownloadToolButton.Enabled := False;
2391 // BoardReservToolButton.Enabled := False;
2392 // ListThreadDownloadToolButton.Enabled := False;
2394 ListNameLabel.Caption := ABBS2ch.Title;
2395 FolderImage.Picture := nil;
2396 ItemIcon16.GetBitmap(1, FolderImage.Picture.Bitmap);
2398 FSortIndex := GikoSys.Setting.BBSSortIndex;
2399 FSortOrder := GikoSys.Setting.BBSSortOrder;
2400 for i := ListView.Columns.Count - 1 downto 0 do begin
2401 idx := ListView.Column[ i ].Tag;
2402 if FSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then
2403 ListViewSort( nil, ListView.Column[ i ] );
2406 Result := ABBS2ch.Count;
2408 Screen.Cursor := crDefault;
2409 ListView.Items.EndUpdate;
2413 function TGikoForm.SetBoardListItem(Category: TCategory): Integer;
2415 TitleColumn : TListColumn;
2416 ListColumn : TListColumn;
2417 i, id, idx : Integer;
2419 ListView.Items.BeginUpdate;
2421 Screen.Cursor := crHourGlass;
2423 ListView.Columns.Clear;
2424 TitleColumn := ListView.Columns.Add;
2425 TitleColumn.Caption := GikoCategoryColumnCaption[ Ord( gccTitle ) ];
2426 TitleColumn.Width := GikoSys.Setting.CategoryColumnWidth[ Ord( gccTitle ) ];
2428 for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
2429 if GikoSys.Setting.CategoryColumnOrder[ i ] = gccTitle then begin
2430 TitleColumn.Tag := i;
2433 id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
2434 if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
2435 (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
2436 ListColumn := ListView.Columns.Add;
2437 // ListColumn.Tag := id;
2438 ListColumn.Tag := i;
2439 ListColumn.Caption := GikoCategoryColumnCaption[ id ];
2440 ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
2444 TitleColumn.Index := idx;
2446 ListView.Items.Count := 0;
2447 ListView.Items.Clear;
2448 ListView.Items.Count := Category.Count;
2450 // UpFolderAction.Enabled := True;
2451 // AllItemAction.Enabled := False;
2452 // LogItemAction.Enabled := False;
2453 // NewItemAction.Enabled := False;
2454 // SelectItemAction.Enabled := False;
2455 // ListDownloadToolButton.Enabled := False;
2456 // BoardReservToolButton.Enabled := False;
2457 // ListThreadDownloadToolButton.Enabled := False;
2459 ListNameLabel.Caption := Category.Title;
2460 FolderImage.Picture := nil;
2461 ItemIcon16.GetBitmap(3, FolderImage.Picture.Bitmap);
2463 FSortIndex := GikoSys.Setting.CategorySortIndex;
2464 FSortOrder := GikoSys.Setting.CategorySortOrder;
2465 for i := ListView.Columns.Count - 1 downto 0 do begin
2466 idx := ListView.Column[ i ].Tag;
2467 if FSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then
2468 ListViewSort( nil, ListView.Column[ i ] );
2471 Result := Category.Count;
2473 Screen.Cursor := crDefault;
2474 ListView.Items.EndUpdate;
2478 function TGikoForm.SetThreadListItem(Board: TBoard): Integer;
2480 TitleColumn : TListColumn;
2481 ListColumn : TListColumn;
2482 i, id, idx : Integer;
2484 ListView.Items.BeginUpdate;
2486 Screen.Cursor := crHourGlass;
2489 //
\83`
\83\89\82Â
\82«
\96h
\8e~
\82Ì
\82½
\82ß
\81A
\95Ï
\8dX
\82³
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82Ì
\82Ý
2490 //
\81¦
\96¼
\8fÌ
\82Í
\88á
\82¤
\82ª
\83J
\83\89\83\80\90\94\82ª
\93¯
\82¶
\81A
\82Æ
\82¢
\82Á
\82½
\8fê
\8d\87\82É
\91Î
\8f\88\82Å
\82«
\82È
\82¢
\82Ì
\82Å
\92\8d\88Ó
2491 if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
2494 ListView.Columns.Clear;
2495 TitleColumn := ListView.Columns.Add;
2496 TitleColumn.Caption := GikoBoardColumnCaption[ Ord( gbcTitle ) ];
2497 TitleColumn.Width := GikoSys.Setting.BoardColumnWidth[ Ord( gbcTitle ) ];
2499 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2500 if GikoSys.Setting.BoardColumnOrder[ i ] = gbcTitle then begin
2501 TitleColumn.Tag := i;
2504 id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
2505 if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
2506 (id <= Integer( High( TGikoBoardColumnID ) )) then begin
2507 ListColumn := ListView.Columns.Add;
2508 ListColumn.Caption := GikoBoardColumnCaption[ id ];
2509 // ListColumn.Tag := id;
2510 ListColumn.Tag := i;
2511 ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
2512 ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
2516 TitleColumn.Index := idx;
2519 ListView.Items.Count := 0;
2520 ListView.Items.Clear;
2522 case GikoForm.ViewType of
2523 gvtAll: ListView.Items.Count := Board.Count;
2524 gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
2525 gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
2526 gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
2529 ListNameLabel.Caption := Board.Title;
2530 FolderImage.Picture := nil;
2531 ItemIcon16.GetBitmap(5, FolderImage.Picture.Bitmap);
2533 FSortIndex := GikoSys.Setting.BoardSortIndex;
2534 FSortOrder := GikoSys.Setting.BoardSortOrder;
2535 for i := ListView.Columns.Count - 1 downto 0 do begin
2536 idx := ListView.Column[ i ].Tag;
2537 if FSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then
2538 ListViewSort( nil, ListView.Column[ i ] );
2541 Result := Board.Count;
2543 Screen.Cursor := crDefault;
2544 ListView.Items.EndUpdate;
2548 procedure TGikoForm.ListViewData(Sender: TObject; Item: TListItem);
2550 // FileName: string;
2551 // DateTime: TDateTime;
2554 Category: TCategory;
2556 ThreadItem: TThreadItem;
2558 ActivListObj : TObject;
2561 ActivListObj := ActiveList;
2562 if ActivListObj is TBBS then begin
2563 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
2564 BBS := TBBS(ActivListObj);
2566 ListView.StateImages := nil;
2568 if BBS = nil then Exit;
2569 if BBS.Count <= 0 then Exit;
2570 if Item = nil then Exit;
2571 if Item.Index >= BBS.Count then Exit;
2572 if ListView.Items.Count = 0 then Exit;
2574 if not (BBS.Items[Item.index] is TCategory) then Exit;
2575 Category := TCategory(BBS.Items[Item.index]);
2577 if Category = nil then Exit;
2579 if ListNumberVisibleAction.Checked then
2580 Item.Caption := IntToStr(Category.No) + ': ' + Category.Title
2582 Item.Caption := Category.Title;
2584 Item.ImageIndex := ITEM_ICON_CATEGORY1;
2585 Item.Data := Category;
2587 end else if ActivListObj is TCategory then begin
2589 //=====
\94Â
\83\8a\83X
\83g =====
2590 Category := TCategory(ActivListObj);
2592 ListView.StateImages := nil;
2594 if Category = nil then Exit;
2595 if Category.Count <= 0 then Exit;
2596 if Item = nil then Exit;
2597 if Item.Index >= Category.Count then Exit;
2598 if ListView.Items.Count = 0 then Exit;
2600 if not (Category.Items[Item.Index] is TBoard) then Exit;
2601 Board := TBoard(Category.Items[Item.Index]);
2603 if Board = nil then Exit;
2605 if ListNumberVisibleAction.Checked then
2606 Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
2608 Item.Caption := Board.Title;
2610 if Item.SubItems.Count <> ListView.Columns.Count then begin
2611 Item.SubItems.Clear;
2612 for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do
2613 Item.SubItems.Add('');
2616 Item.ImageIndex := ITEM_ICON_BOARD1;
2618 for i := 0 to ListView.Columns.Count - 1 do begin
2619 if GikoSys.Setting.CategoryColumnOrder.Count <= i then
2621 // case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of
2622 case GikoSys.Setting.CategoryColumnOrder[ i ] of
2624 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2629 Item.SubItems[ idx ] := Board.RoundName // '
\97\
\96ñ'
2631 Item.SubItems[ idx ] := '';
2634 if Board.RoundDate = ZERO_DATE then begin
2635 Item.SubItems[ idx ] := '';
2637 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate);
2644 end else if ActivListObj is TBoard then begin
2646 //=====
\83X
\83\8c\83\8a\83X
\83g =====
2647 Board := TBoard(ActivListObj);
2649 if GikoSys.Setting.ListIconVisible then
2650 ListView.StateImages := StateIconImageList
2652 ListView.StateImages := nil;
2654 case GikoForm.ViewType of
2655 gvtAll: BoardCnt := Board.Count;
2656 gvtLog: BoardCnt := Board.GetLogThreadCount;
2657 gvtNew: BoardCnt := Board.GetNewThreadCount;
2658 gvtUser: BoardCnt := Board.GetUserThreadCount;
2663 // if Board = nil then Exit;
2664 if BoardCnt <= 0 then Exit;
2665 if Item = nil then Exit;
2666 if Item.Index > BoardCnt then Exit;
2667 if ListView.Items.Count = 0 then Exit;
2669 // if not (Board.Items[Item.Index] is TThreadItem) then Exit;
2672 case GikoForm.ViewType of
2673 gvtAll: if Item.Index >= Board.Count then Exit else
2674 ThreadItem := TThreadItem(Board.Items[Item.Index]);
2675 gvtLog: ThreadItem := Board.GetLogThread(Item.Index);
2676 gvtNew: ThreadItem := Board.GetNewThread(Item.Index);
2677 gvtUser: ThreadItem := Board.GetUserThread(Item.Index);
2680 if ThreadItem = nil then Exit;
2682 // if ListNumberVisibleAction.Checked then
2683 // RepStr := IntToStr(ThreadItem.No) + ': ' + ThreadItem.Title
2685 RepStr := ThreadItem.Title;
2686 RepStr := CustomStringReplace(RepStr, '<', '<' );
2687 RepStr := CustomStringReplace(RepStr, '>', '>' );
2688 RepStr := CustomStringReplace(RepStr, '"', '"' );
2689 RepStr := CustomStringReplace(RepStr, '&', '&' );
2690 //RepStr := StringReplace(RepStr, '
\81\97\81M', ',', [rfReplaceAll]);
2692 if Item.SubItems.Count <> ListView.Columns.Count then begin
2693 Item.SubItems.Clear;
2694 for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do
2695 Item.SubItems.Add('');
2698 if ListNumberVisibleAction.Checked then
2699 Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
2701 Item.Caption := RepStr;
2703 case ThreadItem.AgeSage of
2704 gasNone: Item.StateIndex := -1;
2705 gasNew: Item.StateIndex := 0;
2706 gasAge: Item.StateIndex := 1;
2707 gasSage: Item.StateIndex := 2;
2710 if ThreadItem.IsLogFile then begin
2712 for i := 0 to ListView.Columns.Count - 1 do begin
2713 if GikoSys.Setting.BoardColumnOrder.Count <= i then
2715 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2716 case GikoSys.Setting.BoardColumnOrder[ i ] of
2718 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2722 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2725 Item.SubItems[ idx ] := IntToStr(ThreadItem.Count);
2728 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count);
2731 if ThreadItem.NewResCount = 0 then
2732 Item.SubItems[ idx ] := ''
2734 Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount);
2737 Item.SubItems[ idx ] := '';
2740 if ThreadItem.Round then
2741 Item.SubItems[ idx ] := ThreadItem.RoundName
2743 Item.SubItems[ idx ] := '';
2745 gbcRoundDate://gbcLastModified:
2746 if (ThreadItem.RoundDate = ZERO_DATE) then begin
2747 Item.SubItems[ idx ] := '';
2749 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate);
2752 if ThreadItem.CreateDate = ZERO_DATE then begin
2753 Item.SubItems[ idx ] := '';
2755 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2758 if (ThreadItem.LastModified = ZERO_DATE) then begin
2759 Item.SubItems[ idx ] := '';
2761 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.LastModified);
2767 if ThreadItem.NewArrival then
2768 Item.ImageIndex := ITEM_ICON_THREADNEW1
2770 Item.ImageIndex := ITEM_ICON_THREADLOG1;
2775 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2776 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2777 case GikoSys.Setting.BoardColumnOrder[ i ] of
2779 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2783 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2785 gbcRoundDate://gbcLastModified:
2786 Item.SubItems[ idx ] := '';
2789 if ThreadItem.CreateDate = ZERO_DATE then begin
2790 Item.SubItems[ idx ] := '';
2792 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2795 Item.SubItems[ idx ] := '';
2798 Item.SubItems[ idx ] := '';
2802 if ThreadItem.NewArrival then
2803 Item.ImageIndex := ITEM_ICON_THREADNEW1
2805 Item.ImageIndex := ITEM_ICON_THREAD1;
2807 Item.Data := ThreadItem;
2812 procedure TGikoForm.ListViewDataFind(Sender: TObject; Find: TItemFind;
2813 const FindString: String; const FindPosition: TPoint; FindData: Pointer;
2814 StartIndex: Integer; Direction: TSearchDirection; Wrap: Boolean;
2815 var Index: Integer);
2821 procedure TGikoForm.ListViewDataHint(Sender: TObject; StartIndex,
2827 procedure TGikoForm.ListViewDataStateChange(Sender: TObject; StartIndex,
2828 EndIndex: Integer; OldState, NewState: TItemStates);
2833 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
2841 threadItem : TThreadItem;
2843 Protocol, Host, Path, Document, Port, Bookmark: string;
2848 ActiveFileName: string;
2851 // buf, buf2: string;
2854 if not( TObject(Sender) is TWebBrowser )then
2858 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
2859 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
2860 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
2867 if PreviewTimer.Enabled then
2868 PreviewTimer.Enabled := False;
2869 Application.CancelHint;
2871 if GetActiveContent <> nil then
2872 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
2874 ActiveFileName := '';
2876 FActiveContent := nil;
2880 StatusBar.Panels[1].Text := Text;
2882 if FHint <> nil then begin
2883 FHint.ReleaseHandle;
2886 if FPreviewBrowser <> nil then
2887 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2889 if not GikoSys.Setting.UnActivePopup then
2890 if not GikoForm.Active then
2893 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
2894 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
2897 Ext := AnsiLowerCase(ExtractFileExt(Text));
2898 if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
2899 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
2900 if FPreviewBrowser = nil then begin
2901 FPreviewBrowser := TPreviewBrowser.Create(Self);
2902 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2903 TOleControl(FPreviewBrowser).Parent := nil;
2905 FPreviewBrowser.Navigate(BLANK_HTML);//
\91O
\89ñ
\82Ì
\83v
\83\8c\83r
\83\85\81[
\89æ
\91\9c\8fÁ
\8b\8e\97p
2906 FPreviewURL := Text;
2907 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
2908 PreviewTimer.Enabled := True;
2909 end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
2910 if Pos('mailto:', Text) = 1 then begin
2911 s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
2912 //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g3
\82Ì466
\8e\81\82É
\8a´
\8eÓ
2914 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
2915 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
2916 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
2917 if (Assigned(e)) then begin
2918 tmp2 := ZenToHan(e.Get_outerText);
2919 if (GikoSys.IsNumeric(tmp2)) then begin
2920 //
\82\93\82Í
\83\8c\83X
\94Ô
\8d\86\82Á
\82Û
\82¢
\82Á
\82·
\81B
2921 wkIntSt := StrToInt(tmp2);
2922 wkIntTo := StrToInt(tmp2);
2923 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
2924 FHint.PopupType := gptThread;
2925 SetResPopupText(GetActiveContent, wkIntSt, wkIntTo, False, False);
2927 FHint.PopupType := gptRaw;
2932 threadItem := GetActiveContent;
2933 if Pos('about:blank..', Text) = 1 then begin
2934 wkInt := LastDelimiter( '/', threadItem.URL );
2935 if Pos( '?', Copy( threadItem.URL, wkInt, MaxInt ) ) = 0 then begin
2936 // Thread.URL
\82Í PATH_INFO
\93n
\82µ
2937 URL := Copy( threadItem.URL, 1, LastDelimiter( '/', threadItem.URL ) );
2938 wkInt := LastDelimiter( '/', Text );
2939 if Pos( '?', Copy( Text, wkInt, MaxInt ) ) = 0 then
2940 // Text
\82à PATH_INFO
\93n
\82µ
2941 URL := URL + Copy( Text, LastDelimiter( '/', Text ) + 1, MaxInt )
2943 // Text
\82Í QUERY_STRING
\93n
\82µ
2944 URL := URL + Copy( Text, LastDelimiter( '?', Text ) + 1, MaxInt );
2946 // Thread.URL
\82Í QUERY_STRING
\93n
\82µ
2947 URL := Copy( threadItem.URL, 1, LastDelimiter( '?', threadItem.URL ) );
2948 wkInt := LastDelimiter( '/', Text );
2949 if Pos( '?', Copy( Text, wkInt, MaxInt ) ) = 0 then begin
2950 // Text
\82Í PATH_INFO
\93n
\82µ
2951 // URL
\82É
\94Â
\82Æ
\83L
\81[
\82ª
\91«
\82ç
\82È
\82¢
\82Ì
\82Å Text
\82©
\82ç
\92¸
\91Õ
\82·
\82é
2952 wkInt := LastDelimiter( '/', Copy( Text, 1, wkInt - 1 ) );
2953 wkInt := LastDelimiter( '/', Copy( Text, 1, wkInt - 1 ) );
2954 URL := Copy( URL, 1, Length( URL ) - 1 ) + Copy( Text, wkInt, MaxInt );
2956 // Text
\82à QUERY_STRING
\93n
\82µ
2957 URL := URL + Copy( Text, LastDelimiter( '?', Text ) + 1, MaxInt )
2964 PathRec := Gikosys.Parse2chURL2(URL);
2965 if (PathRec.FNoParam) then begin
2969 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2971 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
2973 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
2975 URL := GikoSys.GetBrowsableThreadURL( URL );
2976 wkIntSt := PathRec.FSt;
2977 wkIntTo := PathRec.FTo;
2979 if (wkIntSt = 0) and (wkIntTo = 0) then begin
2982 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
2984 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
2986 end else if wkIntSt > wkIntTo then begin
2991 //if wkIntSt = 0 then
2993 //if wkINtTo = 0 then
2995 //if PathRec.FFirst then
2997 //if PathRec.FStBegin then //http://
\81`
\81`
\81`
\81`/-50
\82Æ
\82¢
\82¤
\82Æ
\82«
2999 //if PathRec.FToEnd then //http://
\81`
\81`
\81`
\81`/50-
\82Æ
\82¢
\82¤
\82Æ
\82«
3000 // wkIntTo := 9999; //
\82Ç
\82¿
\82ç
\82Ì
\8fê
\8d\87\82à
\81AGetPopupResNumber
\82Å
\82¤
\82Ü
\82
\94Ô
\8d\86\82ð
\92²
\90®
\82·
\82é
\82Ì
\82Å
\82Ó
\82æ
\82¤
\81B
3002 //ATitle := ActiveFileName <> PathRec.FKey;
3003 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
3008 threadItem := BBSsFindThreadFromURL( URL );
3010 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
3011 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
3012 if board <> nil then begin
3013 if not board.IsThreadDatRead then
3014 GikoSys.ReadSubjectFile( board );
3015 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
3019 if threadItem <> nil then begin
3020 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
3021 FHint.PopupType := gptThread;
3022 SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
3028 // ShowTextPopup(s);
3029 if FHint.PopupType = gptRaw then begin
3030 if FHint.Caption <> '' then
3033 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
3039 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
3042 //SysMenuApp: HMenu;
3044 FEnabledCloseButton := Enabled;
3045 SysMenu := GetSystemMenu(Handle, False);
3046 //SysMenuApp := GetSystemMenu(Application.Handle, False);
3048 if Enabled then begin
3049 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
3050 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
3052 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
3053 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
3056 DrawMenuBar(Handle);
3057 //DrawMenuBar(Application.Handle);
3060 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
3061 var AllowChange: Boolean);
3063 //
\83\
\81[
\83g
\8f\87\82ð
\95Û
\91¶
\82·
\82é
\82æ
\82¤
\82É
\82µ
\82½
\82Ì
\82Å
\8dí
\8f\9c
3064 // if FTreeType = gtt2ch then
3065 // FSortIndex := -1;
3068 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
3069 Shift: TShiftState);
3073 if GetActiveList is TBoard then begin
3075 VK_BACK:; // UpFolderButtonClick(Sender);
3076 VK_SPACE: ListDoubleClick(Shift);
3077 VK_RETURN: ListClick;
3080 if ListView.Selected <> nil then begin
3081 pos.X := ListView.Column[ 0 ].Width;
3082 pos.Y := ListView.Selected.Top;
3084 pos.X := ListView.Left;
3085 pos.Y := ListView.Top;
3087 Windows.ClientToScreen( ListView.Handle, pos );
3088 ListPopupMenu.Popup( pos.X, pos.Y );
3091 end else begin // TBBS, TCategory
3093 VK_BACK:; // UpFolderButtonClick(Sender);
3094 VK_SPACE: ListClick;
3095 VK_RETURN: ListDoubleClick(Shift);
3098 if ListView.Selected <> nil then begin
3099 pos.X := ListView.Column[ 0 ].Width;
3100 pos.Y := ListView.Selected.Top;
3102 pos.X := ListView.Left;
3103 pos.Y := ListView.Top;
3105 Windows.ClientToScreen( ListView.Handle, pos );
3106 ListPopupMenu.Popup( pos.X, pos.Y );
3112 function TGikoForm.GetHttpState: Boolean;
3114 Result := FHttpState;
3118 \brief ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
3120 Delphi 6 Personal
\82Å
\82Ì ListView
\82Å
\82Í ListViewColumnClick
\83C
\83x
\83\93\83g
\82Å
3121 \90³
\82µ
\82¢
\83J
\83\89\83\80\82ª
\93n
\82³
\82ê
\82È
\82¢
\82½
\82ß
\81A
\90³
\82µ
\82¢
\83J
\83\89\83\80\82É
\95Ï
\8a·
\82µ
\82Ü
\82·
\81B
3123 function TGikoForm.ActiveListTrueColumn( column : TListColumn ) : TListColumn;
3131 //
\90³
\82µ
\82
\95Ï
\8a·
\82·
\82é
\95û
\96@
\82ª
\95ª
\82©
\82ç
\82È
\82¢
\82Ì
\82Å
\95Û
\97¯
3137 if TObject( FActiveList ) is TBBS then
3138 orderList := GikoSys.Setting.BBSColumnOrder
3139 else if TObject( FActiveList ) is TCategory then
3140 orderList := GikoSys.Setting.CategoryColumnOrder
3141 else if TObject( FActiveList ) is TBoard then
3142 orderList := GikoSys.Setting.BoardColumnOrder
3148 for i := 0 to ListView.Columns.Count - 1 do begin
3149 if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin
3151 Result := ListView.Column[ i ]
3152 else if idx <= i then
3153 Result := ListView.Column[ idx - 1 ];
3161 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
3162 Column: TListColumn);
3167 idx := ActiveListTrueColumn( Column ).Tag;
3169 if TObject( FActiveList ) is TBBS then
3170 orderList := GikoSys.Setting.BBSColumnOrder
3171 else if TObject( FActiveList ) is TCategory then
3172 orderList := GikoSys.Setting.CategoryColumnOrder
3173 else if TObject( FActiveList ) is TBoard then
3174 orderList := GikoSys.Setting.BoardColumnOrder
3178 id := Integer( orderList[ idx ] );
3180 if FSortIndex = id then
3181 FSortOrder := not FSortOrder
3183 FSortOrder := id = 0;
3186 ListViewSort(Sender, Column);
3189 procedure TGikoForm.ListViewSort(Sender: TObject; Column: TListColumn);
3191 i, id, idx : Integer;
3194 wkCategory: TCategory;
3197 idx := ActiveListTrueColumn( Column ).Tag;
3199 for i := 0 to ListView.Columns.Count - 1 do begin
3200 ListView.Column[i].ImageIndex := -1;
3204 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1
3206 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2;
3208 Sort.SortNoFlag := ListNumberVisibleAction.Checked;
3210 //if TObject(TreeView.Selected.Data) is TBBS then begin
3211 if TObject( FActiveList ) is TBBS then begin
3212 //wkBBS := TBBS(TreeView.Selected.Data);
3213 wkBBS := TBBS( FActiveList );
3214 orderList := GikoSys.Setting.BBSColumnOrder;
3215 id := Integer( orderList[ idx ] );
3216 Sort.SortOrder := FSortOrder;
3217 Sort.SortIndex := id;
3218 GikoSys.Setting.BBSSortIndex := id;
3219 GikoSys.Setting.BBSSortOrder := FSortOrder;
3220 wkBBS.Sort(CategorySortProc);
3221 //end else if TObject(TreeView.Selected.Data) is TCategory then begin
3222 end else if TObject( FActiveList ) is TCategory then begin
3223 //wkCategory := TCategory(TreeView.Selected.Data);
3224 wkCategory := TCategory( FActiveList );
3225 orderList := GikoSys.Setting.CategoryColumnOrder;
3226 id := Integer( orderList[ idx ] );
3227 Sort.SortOrder := FSortOrder;
3228 Sort.SortIndex := id;
3229 GikoSys.Setting.CategorySortIndex := id;
3230 GikoSys.Setting.CategorySortOrder := FSortOrder;
3231 wkCategory.CustomSort(BoardSortProc);
3232 //end else if TObject(TreeView.Selected.Data) is TBoard then begin
3233 end else if TObject( FActiveList ) is TBoard then begin
3234 //wkBoard := TBoard(TreeView.Selected.Data);
3235 wkBoard := TBoard( FActiveList );
3236 orderList := GikoSys.Setting.BoardColumnOrder;
3237 id := Integer( orderList[ idx ] );
3238 Sort.SortOrder := FSortOrder;
3239 Sort.SortIndex := id;
3240 GikoSys.Setting.BoardSortIndex := id;
3241 GikoSys.Setting.BoardSortOrder := FSortOrder;
3242 wkBoard.CustomSort(ThreadItemSortProc);
3251 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
3252 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
3256 DefaultDraw := True;
3258 DefaultDraw := False;
3259 if (cdsSelected in State) or (cdsHot in State) then begin
3260 Sender.Canvas.Brush.Color := clHighlight;
3261 Sender.Canvas.Font.Color := clHighlightText;
3263 Sender.Canvas.Brush.Color := clBtnFace;
3264 Sender.Canvas.Font.Color := clBtnText;
3266 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
3267 Sender.Canvas.FillRect(ARect);
3268 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
3271 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
3276 Nodes := TreeView.Items;
3278 for i := 0 to Nodes.Count - 1 do begin
3279 if Nodes.Item[i].Data = Data then begin
3280 Result := Nodes.Item[i];
3287 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
3288 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
3289 Headers: OleVariant; var Cancel: WordBool);
3294 kMenuName: string = 'menu:';
3297 if Pos(kMenuName, URL) <> 0 then begin
3298 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
3300 if not GikoSys.IsNumeric(sNo) then Exit;
3304 KokoPopupMenu.Tag := StrToInt(sNo);
3305 KokoPopupMenu.Popup(p.x, p.y);
3306 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
3307 Cancel := not GikoSys.Setting.OpenMailer;
3312 procedure TGikoForm.AppFormDeactivate(Sender: TObject);
3314 Application.ProcessMessages;
3315 if Application.Terminated then
3317 if PreviewTimer.Enabled then
3318 PreviewTimer.Enabled := False;
3319 //
\83t
\83H
\81[
\83J
\83X
\82ª
\91¼
\82Ì
\83A
\83v
\83\8a\82É
\95Ï
\82í
\82Á
\82½
\82Æ
\82«
\82É
\83q
\83\93\83g
\82ð
\8fÁ
\8b\8e
3320 if FHint <> nil then begin
3321 FHint.ReleaseHandle;
3326 if FPreviewBrowser <> nil then
3327 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
3331 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
3332 const ARect: TRect; var DefaultDraw: Boolean);
3336 IsBoardNode: Boolean;
3342 Category: TCategory;
3346 DefaultDraw := True;
3348 if FTreeType = gttHistory then Exit;
3350 TreeView.Canvas.Font.Color := clBlue;
3351 IsBoardNode := False;
3352 for i := 0 to TreeView.Items.Count - 1 do begin
3354 if not TreeView.Items[i].IsVisible then
3357 if TObject(TreeView.Items[i].Data) is TCategory then begin
3358 if TreeView.Items[i].Expanded then
3361 IsBoardNode := False;
3362 Category := TCategory(TreeView.Items[i].Data);
3363 for j := 0 to Category.Count - 1 do begin
3364 Board := Category.Items[j];
3365 if Board <> nil then begin
3366 if Board.UnRead > 0 then begin
3374 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
3375 IsBoardNode := True;
3376 Board := TBoard(TreeView.Items[i].Data);
3377 Cnt := Board.UnRead;
3383 Bitmap := TBitmap.Create;
3385 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
3386 Bitmap.Canvas.Font.Style := [fsBold];
3387 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
3392 NodeRect := TreeView.Items[i].DisplayRect(True);
3395 CntText := '(' + IntToStr(Cnt) + ')'
3396 else if Cnt = 1 then
3400 TextWidth := TreeView.Canvas.TextWidth(CntText);
3402 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
3404 NodeRect.Left + NodeWidth + TextWidth + 8,
3406 DrawText(TreeView.Canvas.Handle,
3410 DT_SINGLELINE or DT_VCENTER);
3412 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
3415 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
3416 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
3419 Category: TCategory;
3422 DefaultDraw := True;
3424 if FTreeType = gttHistory then Exit;
3426 TreeView.Canvas.Font.Style := [];
3427 if Node <> nil then begin
3428 if TObject(Node.Data) is TCategory then begin
3429 Category := TCategory(Node.Data);
3430 for i := 0 to Category.Count - 1 do begin
3431 Board := Category.Items[i];
3432 if Board <> nil then begin
3433 if Board.UnRead > 0 then begin
3434 TreeView.Canvas.Font.Style := [fsBold];
3439 end else if TObject(Node.Data) is TBoard then begin
3440 Board := TBoard(Node.Data);
3441 if Board.UnRead > 0 then
3442 TreeView.Canvas.Font.Style := [fsBold];
3447 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
3449 TreeView.Invalidate;
3451 if TObject(Node.Data) is TBBS then begin
3452 TBBS(Node.Data).NodeExpand := True;
3453 end else if TObject(Node.Data) is TCategory then begin
3454 TCategory(Node.Data).NodeExpand := True;
3455 end else if TObject(Node.Data) is TBoard then begin
3456 TBoard(Node.Data).NodeExpand := True;
3460 {procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean);
3462 TreeSplitter.Visible := PanelVisible;
3463 CabinetPanel.Visible := PanelVisible;
3464 CabinetToolButton.Down := PanelVisible;
3467 procedure TGikoForm.ListViewAllSelect;
3473 procedure TGikoForm.TreeViewDblClick(Sender: TObject);
3478 GetCursorPos(APoint);
3479 APoint := TreeView.ScreenToClient(APoint);
3480 HitTest := TreeView.GetHitTestInfoAt(APoint.x, APoint.y);
3481 if not (htOnLabel in HitTest) then Exit;
3483 TreeDoubleClick( TreeView.Selected );
3486 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
3488 AddMessageList(Msg, nil, Icon);
3491 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
3495 boardPlugIn : TBoardPlugIn;
3497 browserRec : TBrowserRecord;
3500 if Item.DownType = gdtBoard then
3501 ATitle := Item.Board.Title
3503 ATitle := Item.ThreadItem.Title;
3505 ATitle := '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j';
3507 if Item.State in [gdsComplete, gdsDiffComplete] then begin
3509 if Item.DownType = gdtBoard then begin
3512 AddMessageList(ATitle + ' [
\83X
\83\8c\88ê
\97\97\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3513 if GetActiveList = Item.Board then begin
3515 SetActiveList(Item.Board);
3517 Item.Board.Modified := True;
3518 Item.Board.IsThreadDatRead := True;
3520 end else if Item.DownType = gdtThread then begin
3523 Item.ThreadItem.NewArrival := True;
3524 if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3525 boardPlugIn := Item.ThreadItem.BoardPlugIn;
3526 Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
3527 ATitle := Item.ThreadItem.Title;
3528 end else if ATitle = '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j' then begin
3529 ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
3531 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3532 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin
3533 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3537 if GikoSys.Setting.BrowserTabVisible then begin
3538 if GetActiveContent = Item.ThreadItem then
3539 browserRec := InsertBrowserTab(Item.ThreadItem)
3540 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
3541 browserRec := InsertBrowserTab(Item.ThreadItem, True)
3543 browserRec := InsertBrowserTab(Item.ThreadItem, False);
3544 if browserRec.Thread = BrowserNullTab.Thread then begin
3545 browserRec.Movement := BrowserNullTab.Movement;
3546 BrowserNullTab.Movement := '';
3549 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
3550 InsertBrowserTab(Item.ThreadItem);
3552 Application.ProcessMessages;
3553 if Item.State = gdsComplete then begin
3555 AddMessageList(ATitle + ' [
\83X
\83\8c\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3557 PlaySound('NewDiff');
3558 AddMessageList(ATitle + ' [
\83X
\83\8c\8d·
\95ª
\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3561 //
\8f\84\89ñ
\82 \82è
\82Ì
\8fê
\8d\87\81\95\82P
\82O
\82O
\82O
\92´
\82Í
\8f\84\89ñ
\8dí
\8f\9c
3562 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
3563 Item.ThreadItem.Round := False;
3564 Item.ThreadItem.RoundName := '';
3565 AddMessageList('
\81\9a1000
\94
\8c¾
\82ð
\92´
\82¦
\82½
\82Ì
\82Å
\8f\84\89ñ
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82µ
\82½ - [' + Item.ThreadItem.Title + ']', nil, gmiOK);
3571 end else if Item.State = gdsNotModify then begin
3573 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
3574 //SetContent(Item.ThreadItem);
3575 InsertBrowserTab(Item.ThreadItem);
3577 AddMessageList(ATitle + ' [
\96¢
\8dX
\90V]', nil, gmiSAD);
3578 PlaySound('NoChange');
3579 Screen.Cursor := crDefault;
3580 end else if Item.State = gdsAbort then begin
3582 AddMessageList(ATitle + ' [
\92\86\92f]', nil, gmiSAD);
3583 end else if Item.State = gdsError then begin
3588 AddMessageList(ATitle + ' [
\83G
\83\89\81[(' + IntToStr(Item.ResponseCode) + s + ')]', nil, gmiNG);
3589 // if Item.ResponseCode = 302 then
3590 // AddMessageList('
\94Â
\82ª
\88Ú
\93]
\82µ
\82½
\82©
\82à
\82µ
\82ê
\82È
\82¢
\82Ì
\82Å
\94Â
\8dX
\90V
\82ð
\8ds
\82Á
\82Ä
\82
\82¾
\82³
\82¢
\81B', nil, gmiNG);
3596 if FWorkCount < 0 then FWorkCount := 0;
3597 if FWorkCount = 0 then begin
3599 Animate.Active := False;
3601 Screen.Cursor := crDefault;
3608 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
3610 // SetProgressValue(Number, 0, AWorkCountMax);
3611 // ProgressBar.Visible := True;
3612 ProgressBar.Position := 0;
3613 ProgressBar.Max := AWorkCountMax;
3614 FDownloadTitle := AWorkTitle;
3615 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8aJ
\8en
\82µ
\82Ü
\82·';
3616 FDownloadMax := AWorkCountMax;
3619 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
3621 ProgressBar.Position := 0;
3622 if FDownloadMax <> 0 then
3623 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8a®
\97¹
\82µ
\82Ü
\82µ
\82½';
3626 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
3628 ProgressBar.Position := AWorkCount;
3629 // SetProgressValue(Number, AWorkCount);
3630 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86 (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
3634 procedure TGikoForm.SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
3636 Component: TComponent;
3638 Component := FindComponent('ProgressBar' + IntToStr(Number + 1));
3639 if Component <> nil then begin
3640 if not (Component is TProgressBar) then Exit;
3642 TProgressBar(Component).Max := Max;
3643 TProgressBar(Component).Position := Value;
3648 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
3650 ListItem: TListItem;
3652 MessageListView.Items.BeginUpdate;
3654 ListItem := MessageListView.Items.Add;
3655 ListItem.Caption := ACaption;
3656 ListItem.Data := AObject;
3657 ListItem.MakeVisible(False);
3659 gmiOK: ListItem.ImageIndex := 0;
3660 gmiSAD: ListItem.ImageIndex := 1;
3661 gmiNG: ListItem.ImageIndex := 2;
3662 gmiWhat: ListItem.ImageIndex := 3;
3665 MessageListView.Items.EndUpdate;
3669 {procedure TGikoForm.BrowserTabChange(Sender: TObject);
3672 ThreadItem: TThreadItem;
3674 ThreadItem := GetActiveContent;
3675 if ThreadItem <> nil then begin
3676 SetContent(ThreadItem);
3680 function TGikoForm.InsertBrowserTab(
3681 ThreadItem : TThreadItem;
3682 ActiveTab : Boolean = True
3685 i, j, idx : Integer;
3686 favItem : TFavoriteThreadItem;
3687 newBrowser : TBrowserRecord;
3691 if Threaditem = nil then Exit;
3693 if ThreadItem.IsLogFile then begin
3694 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\91S
\82Ä
\8aJ
\82
\82Æ
\82©
\82â
\82é
\82Æ
\81A
\8d¡
\8aJ
\82¢
\82Ä
\82é
\83X
\83\8c\82Ìbrowser
\82ð
\95t
\82¯
\91Ö
\82¦
\82é
\8b°
\82ê
\82ª
\82 \82é
3695 //
\8fí
\82É
\82S
\94Ô
\96Ú
\82ÉActive
\82Ì
\83u
\83\89\83E
\83U
\82ª
\97\88\82È
\82¢
\82æ
\82¤
\82É
\88Ú
\93®
\82³
\82¹
\82é
3696 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
3697 (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
3698 j := FBrowsers.IndexOf(FActiveContent.FBrowser);
3699 if j = BROWSER_COUNT - 1 then
3700 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3702 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
3703 if not AddHistory( favItem ) then
3706 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3707 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
3708 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3709 Result := TBrowserRecord( BrowserTab.Tabs.Objects[i] );
3710 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
3711 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3712 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3713 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
3717 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3718 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3719 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3721 if ActiveTab then begin
3722 BrowserTab.TabIndex := i;
3723 BrowserTab.OnChange(nil);
3730 idx := BrowserTab.TabIndex;
3731 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
3732 newBrowser := TBrowserRecord.Create;
3733 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3734 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3735 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
3739 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3740 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3741 //newBrowser.Browser.Navigate(BLANK_HTML);
3742 newBrowser.thread := ThreadItem;
3743 newBrowser.Repaint := true;
3744 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3746 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3747 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3748 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
3752 if ActiveTab then begin
3753 BrowserTab.TabIndex := 0;
3757 newBrowser := TBrowserRecord.Create;
3758 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3759 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3760 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
3764 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3765 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3766 //newBrowser.Browser.Navigate(BLANK_HTML);
3767 newBrowser.thread := ThreadItem;
3768 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3769 newBrowser.Repaint := true;
3771 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3772 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3773 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
3777 if ActiveTab then begin
3778 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
3779 BrowserTab.TabIndex := 0
3781 BrowserTab.TabIndex := i;
3784 Result := newBrowser;
3785 if(ActiveTab) or (idx = -1) then begin
3786 BrowserTab.OnChange(nil);
3789 if BrowserNullTab = nil then begin
3790 BrowserNullTab := TBrowserRecord.Create;
3791 BrowserNullTab.Browser := Browser;
3793 BrowserNullTab.thread := ThreadItem;
3794 Result := BrowserNullTab;
3795 BrowserTab.TabIndex := -1;
3796 SetContent(BrowserNullTab);
3799 if GikoSys.Setting.URLDisplay then
3800 AddressComboBox.Text := ThreadItem.URL;
3804 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
3809 // HtmlName: string;
3812 // OldCursor: TCursor;
3815 ThreadItem: TThreadItem;
3816 Thread: TBrowserRecord;
3817 ThreadTitle, ThreadPTitle: string;
3818 ThreadScrollTop: Integer;
3819 ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
3821 // AddMessageList('SetContent', nil, gmiWhat);
3823 idx := BrowserTab.TabIndex;
3824 if (FActiveContent <> nil) and
3825 (FActiveContent.Thread <> Thread.Thread) and
3826 (Assigned(FActiveContent.Browser.Document)) then begin
3830 //Application.ProcessMessages;
3831 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
3832 //if FActiveContent.Browser <> BrowserNullTab.Browser then
3833 // TOleControl(FActiveContent.Browser).Visible := false;
3836 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
3841 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
3842 Thread.Browser.Navigate(BLANK_HTML);
3843 BrowserBoardNameLabel.Caption := '';
3844 ItemBoardImage.Picture := nil;
3845 BrowserNameLabel.Caption := '';
3846 ItemImage.Picture := nil;
3847 BrowserNullTab.Thread := nil;
3848 //TOleControl(BrowserNullTab.Browser).Visible := true;
3849 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
3850 FActiveContent := nil;
3852 end else if Thread.Browser = nil then begin
3853 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
3854 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3855 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3856 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3857 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
3861 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3862 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3865 //MoveWindow(Thread.FBrowser.Handle, 0, 0, BrowserPanel.Width, BrowserPanel.Height, false);
3867 ThreadTitle := Thread.Thread.Title;
3868 ThreadPTitle := Thread.Thread.ParentBoard.Title;
3869 ThreadScrollTop := Thread.Thread.ScrollTop;
3870 ThreadIsLog := Thread.Thread.IsLogFile;
3871 ThreadItem := Thread.Thread;
3872 ThreadNewArraical := Thread.Thread.NewArrival;
3873 ThreadUnRead := Thread.Thread.UnRead;
3874 BBSID := ThreadItem.ParentBoard.BBSID;
3875 FileName := ThreadItem.FileName;
3877 if GetCapture = ListView.Handle then
3880 Screen.Cursor := crHourGlass;
3885 if ThreadItem.UnRead then begin
3886 ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
3887 if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
3892 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
3893 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
3894 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
3896 ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
3897 if (not Assigned(Thread.Browser.Document)) then begin
3898 Thread.Browser.Navigate('about:blank');
3900 FActiveContent := Thread;
3901 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3902 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3903 Application.ProcessMessages;
3904 if idx <> BrowserTab.TabIndex then begin
3908 if not ThreadIsLog then begin
3909 Self.Caption := CAPTION_NAME ;
3911 s := '<HTML><BODY><CENTER>
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Í
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ</CENTER></BODY></HTML>';
3912 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3914 doc.charset := 'Shift_JIS';
3920 Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
3921 //Thread.Repaint
\82Í
\81A
\83X
\83L
\83\93\93\99\82Ì
\90Ý
\92è
\82ð
\95Ï
\8dX
\82µ
\82½
\82Æ
\82«
\81AThread
\82ð
\83_
\83E
\83\93\83\8d\81[
\83h
\82µ
\82½
\82Æ
\82«
3922 //
\90V
\8bK
\82ÉThread
\82ð
\8aJ
\82¢
\82½
\82Æ
\82«
\82É
\90^
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\81B
3923 if Thread.Repaint then begin
3924 //Thread.LastSize := ThreadItem.Size;
3925 Thread.Repaint := false;
3927 Thread.Browser.OnStatusTextChange := nil;
3928 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3929 GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
3930 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
3931 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
3932 if ThreadItem = nil then begin
3933 FActiveContent := nil;
3940 if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
3941 //FActiveContent := Thread;
3943 BrowserBoardNameLabel.Caption := ThreadPTitle;
3944 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
3945 BrowserNameLabel.Caption := ThreadTitle;
3946 ItemImage.Picture := nil;
3948 if ThreadNewArraical then
3949 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
3951 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
3953 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
3955 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
3956 BrowserNameLabel.Left := ItemImage.Left + 20;
3958 FActiveContent := nil;
3961 Screen.Cursor := crDefault;
3965 function TGikoForm.GetActiveContent: TThreadItem;
3968 if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
3969 and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
3970 Result := FActiveContent.Thread
3972 FActiveContent := nil;
3976 FActiveContent := nil;
3981 procedure TGikoForm.SetActiveList(Obj: TObject);
3985 // if FActiveList <> Obj then begin
3988 if ListView.Selected <> nil then
3989 idx := ListView.Selected.Index
3992 ListView.Items.Count := 0;
3993 ListView.Items.Clear;
3994 ListView.Selected := nil;
3995 // ListView.Columns.Clear;
3996 if (FActiveContent <> nil) and (FActiveContent.Thread <> nil)
3997 and (FActiveContent.Thread.IsLogFile) then
3998 Self.Caption := CAPTION_NAME + ' - [' + FActiveContent.Thread.Title + ']'
4000 Self.Caption := CAPTION_NAME;
4001 //Application.Title := CAPTION_NAME;
4003 // ActiveListColumnSave;
4005 if Obj is TBBS then begin
4006 SetCategoryListItem(TBBS(Obj));
4007 end else if Obj is TCategory then begin
4008 SetBoardListItem(TCategory(Obj));
4009 end else if Obj is TBoard then begin
4010 SetThreadListItem(TBoard(Obj));
4013 if idx >= 0 then begin
4014 ListView.ItemIndex := idx;
4015 ListView.ItemFocused := ListView.Items.Item[ idx ];
4021 //
\81\9a\81\9a\83q
\83\8d\83\86\83L
\83\81\83\82
4022 //
\82»
\82Ì
\82¤
\82¿interface
\82ð
\8eg
\82¤
4023 function TGikoForm.GetActiveList: TObject;
4025 Result := FActiveList;
4028 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
4030 SetListViewType(AViewType, '', False);
4033 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
4038 if ActiveList is TBoard then begin
4039 for i := Length( BBSs ) - 1 downto 0 do begin
4040 BBSs[i].SelectText := SelectText;
4041 BBSs[i].KubetsuChk := KubetsuChk;
4043 Board := TBoard(ActiveList);
4044 ViewType := AViewType;
4045 SetActiveList(Board);
4046 SetThreadListItem(Board);
4050 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
4051 const ARect: TRect; var DefaultDraw: Boolean);
4057 if ListView.Items.Count = 0 then begin
4058 DefaultDraw := true;
4060 ListView.Canvas.Brush.Color := ListView.Color;
4061 ListView.Canvas.FillRect(ARect);
4065 ListView.Canvas.Font.Color := clWindowText;
4066 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4069 ListView.Canvas.Font.Color := clBlue;
4070 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83\8d\83O
\97L
\82è
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4073 ListView.Canvas.Font.Color := clGreen;
4074 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\90V
\92\85\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4077 ListView.Canvas.Font.Color := clNavy;
4078 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83^
\83C
\83g
\83\8b\82ª
\81u%s
\81v
\82ð
\8aÜ
\82Þ
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4079 if GetActiveList is TBoard then
4080 s := Format(s, [TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText]);
4088 p := Point((ListView.ClientWidth div 2) - (ListView.Canvas.TextWidth(s) div 2),
4089 (ListView.ClientHeight div 2) - (ListView.Canvas.TextHeight(s) div 2));
4090 ListView.Canvas.TextOut(p.X, p.Y, s);
4092 DefaultDraw := True;
4096 procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
4098 Item: TDownloadItem;
4100 if not Board.IsThreadDatRead then
4101 GikoSys.ReadSubjectFile(Board);
4102 Item := TDownloadItem.Create;
4104 Item.Board := Board;
4105 Item.DownType := gdtBoard;
4106 Item.ForceDownload := ForceDownload;
4107 // AbortToolButton.Enabled := True;
4108 // Animate.Active := True;
4109 // FDownload.Add(Item);
4110 FControlThread.AddItem(Item);
4111 // Animate.Active := False;
4112 // AbortToolButton.Enabled := False;
4113 if FWorkCount = 0 then begin
4115 Animate.Active := True;
4118 Screen.Cursor := crAppStart;
4126 procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
4128 Item: TDownloadItem;
4130 Item := TDownloadItem.Create;
4132 Item.ThreadItem := ThreadItem;
4133 Item.DownType := gdtThread;
4134 Item.ForceDownload := ForceDownload;
4135 // AbortToolButton.Enabled := True;
4136 // Animate.Active := True;
4137 // FDownload.Add(Item);
4138 FControlThread.AddItem(Item);
4139 // Animate.Active := False;
4140 // AbortToolButton.Enabled := False;
4141 if FWorkCount = 0 then begin
4143 Animate.Active := True;
4146 Screen.Cursor := crAppStart;
4154 procedure TGikoForm.PlaySound(SoundEventName: string);
4158 FileName := GikoSys.Setting.FindSoundFileName(SoundEventName);
4159 if FileExists(FileName) then begin
4160 if not sndPlaySound(PChar(FileName), SND_ASYNC or SND_NOSTOP) then begin
4161 sndPlaySound(nil, SND_SYNC);
4162 Application.ProcessMessages;
4164 sndPlaySound(PChar(FileName), SND_ASYNC);
4169 function TGikoForm.AddHistory( favItem : TFavoriteThreadItem ): Boolean;
4172 Item: TFavoriteThreadItem;
4176 // if (GetActiveContent = ThreadItem) and
4177 // (ThreadItem.Count <= ThreadItem.Kokomade) then
4179 // if GetActiveContent = ThreadItem then
4183 if FTreeType = gttHistory then
4184 TreeView.Selected := nil;
4186 for i := 0 to FHistoryList.Count - 1 do begin
4187 if TObject(FHistoryList[i]) is TFavoriteThreadItem then begin
4188 Item := TFavoriteThreadItem(FHistoryList[i]);
4189 if Item.URL = favItem.URL then begin
4190 // SetContent(ThreadItem);
4191 FHistoryList.Move(i, 0);
4192 if FTreeType = gttHistory then
4193 if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
4194 TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
4201 if FHistoryList.Count > 0 then
4202 FHistoryList.Insert( 0, favItem )
4204 FHistoryList.Add( favItem );
4205 // SetContent(ThreadItem);
4206 while GikoSys.Setting.AddressHistoryCount < FHistoryList.Count do begin
4207 i := FHistoryList.Count - 1;
4208 TObject( FHistoryList.Items[ i ] ).Free;
4209 FHistoryList.Delete( i );
4212 if FTreeType = gttHistory then begin
4213 Node := TreeView.Items.Add( nil, favItem.Title );
4214 Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
4216 if favItem.NewArrival then begin
4217 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4218 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4220 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4221 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4224 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4225 //
\81¦favItem.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4226 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4227 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4228 Node.Data := favItem;
4229 while GikoSys.Setting.AddressHistoryCount < TreeView.Items.Count do begin
4230 i := TreeView.Items.Count - 1;
4231 TreeView.Items.Item[ i ].Delete;
4236 procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
4240 for i := 0 to FHistoryList.Count - 1 do begin
4241 if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
4242 TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
4243 FHistoryList.Delete(i);
4244 FHistoryList.Capacity := FHistoryList.Count;
4250 procedure TGikoForm.ClearHistory;
4254 //FHistoryList.Clear;
4257 for i := FHistoryList.Count - 1 downto 0 do begin
4258 if TObject(FHistoryList[ i ]) is TFavoriteThreadItem then
4259 TFavoriteThreadItem(FHistoryList[ i ]).Free
4260 else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
4261 TFavoriteBoardItem(FHistoryList[ i ]).Free;
4263 //FHistoryList.Delete(i);
4269 FHistoryList.Capacity := FHistoryList.Count;
4273 procedure TGikoForm.SaveHistory;
4276 saveList : TstringList;
4279 saveList := TStringList.Create;
4282 FHistoryList.Capacity := FHistoryList.Count;
4283 saveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
4284 saveList.Add('<address>');
4285 bound := FHistoryList.Count - 1;
4286 for i := bound downto 0 do begin
4287 // title
\82Í
\8d¡
\82Ì
\82Æ
\82±
\82ë
\8eg
\82Á
\82Ä
\82¢
\82È
\82¢
4289 '<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
4290 ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
4292 saveList.Add('</address>');
4293 saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
4300 procedure TGikoForm.LoadHistory;
4304 XMLDoc : IXMLDocument;
4306 HistoryNode : IXMLNode;
4308 favItem : TFavoriteThreadItem;
4311 fileName := GikoSys.GetConfigDir + 'History.xml';
4313 if FileExists( fileName ) then begin
4315 XMLDoc := IXMLDocument.Create;
4316 //XMLDoc := LoadXMLDocument(FileName);
4317 LoadXMLDocument(FileName, XMLDoc);
4319 XMLNode := XMLDoc.DocumentElement;
4321 if XMLNode.NodeName = 'address' then begin
4322 bound := XMLNode.ChildNodes.Count - 1;
4323 for i := 0 to bound do begin
4324 HistoryNode := XMLNode.ChildNodes[i];
4325 if HistoryNode.NodeName = 'history' then begin
4326 //if FReadCount >= sl.Count then begin
4327 s := Trim(HistoryNode.Attributes['url']);
4328 if s <> '' then begin
4329 favItem := TFavoriteThreadItem.Create(
4330 s, HistoryNode.Attributes[ 'title' ] );
4331 if not AddHistory( favItem ) then
4347 procedure TGikoForm.ShowBBSTreeOld(
4355 FavoriteTreeView.Visible := False;
4356 FavoriteToolBar.Hide;
4357 TreeView.Visible := True;
4359 b := CabinetSelectPopupMenu.Items.Count - 1;
4360 for i := 0 to b do begin
4361 item := CabinetSelectPopupMenu.Items[ i ];
4362 if item is TBBSMenuItem then begin
4363 if TBBSMenuItem( item ).Data = inBBS then begin
4364 item.Checked := True;
4365 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4366 CabinetMenu.Items[ i ].Checked := True;
4367 GikoSys.Setting.CabinetIndex := i;
4371 item.Checked := False;
4372 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4373 CabinetMenu.Items[ i ].Checked := False;
4375 CabinetSelectToolButton.Caption := inBBS.Title;
4377 CabinetHistoryAction.Checked := False;
4378 CabinetFavoriteAction.Checked := False;
4380 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4381 FTreeType := gtt2ch;
4382 HistoryToolBar.Hide;
4383 SetBoardTreeNode( inBBS );
4384 TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
4385 //?c???[??g?b?v?????I????
4386 if GetActiveList = nil then
4387 TreeView.Selected := TreeView.Items[0]
4389 for i := 0 to TreeView.Items.Count - 1 do begin
4390 if TreeView.Items[i].Data = GetActiveList then begin
4391 TreeView.Selected := TreeView.Items[i];
4395 TreeView.Selected := TreeView.Items[0]
4403 procedure TGikoForm.ShowBBSTree(
4412 FavoriteTreeView.Visible := False;
4413 FavoriteToolBar.Hide;
4414 TreeView.Visible := True;
4416 b := CabinetSelectPopupMenu.Items.Count - 1;
4417 for i := 0 to b do begin
4418 item := CabinetSelectPopupMenu.Items[ i ];
4419 if item is TBBSMenuItem then begin
4420 if TBBSMenuItem( item ).Data = inBBS then begin
4421 item.Checked := True;
4422 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4423 CabinetMenu.Items[ i ].Checked := True;
4424 GikoSys.Setting.CabinetIndex := i;
4428 item.Checked := False;
4429 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4430 CabinetMenu.Items[ i ].Checked := False;
4432 CabinetSelectToolButton.Caption := inBBS.Title;
4434 CabinetHistoryAction.Checked := False;
4435 CabinetFavoriteAction.Checked := False;
4437 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4438 FTreeType := gtt2ch;
4439 HistoryToolBar.Hide;
4440 SetBoardTreeNode( inBBS );
4441 TreeView.Items.GetFirstNode.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
4442 //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
4443 if GetActiveList = nil then begin
4445 TreeClick( TreeView.Items[0] );
4449 for i := 0 to TreeView.Items.Count - 1 do begin
4450 if TreeView.Items[i].Data = GetActiveList then begin
4451 TreeClick( TreeView.Items[i] );
4455 TreeClick( TreeView.Items[0] );
4463 procedure TGikoForm.ShowHistoryTree;
4468 if CabinetPanel.Visible then begin
4469 if FTreeType = gttHistory then begin
4470 CabinetVisible( False );
4471 CabinetHistoryAction.Checked := False;
4473 CabinetHistoryAction.Checked := True;
4476 CabinetVisible( True );
4477 CabinetHistoryAction.Checked := True;
4480 // BBS...BBS, History, Favorite
4481 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 2;
4483 FavoriteTreeView.Visible := False;
4484 TreeView.Visible := True;
4486 CabinetBBSAction.Checked := False;
4487 CabinetFavoriteAction.Checked := False;
4489 if FTreeType <> gttHistory then begin
4490 b := CabinetSelectPopupMenu.Items.Count - 1;
4491 for i := 0 to b do begin
4492 item := CabinetSelectPopupMenu.Items[ i ];
4493 if item is TBBSMenuItem then begin
4494 item.Checked := False;
4495 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4496 CabinetMenu.Items[ i ].Checked := False;
4500 FTreeType := gttHistory;
4501 HistoryToolBar.Show;
4502 FavoriteToolBar.Hide;
4504 CabinetSelectToolButton.Caption := '
\97\9a\97ð
\83\8a\83X
\83g';
4508 procedure TGikoForm.SetHistoryTreeNode;
4512 Item: TFavoriteThreadItem;
4514 TreeView.Items.BeginUpdate;
4516 TreeView.Items.Clear;
4517 for i := 0 to FHistoryList.Count - 1 do begin
4518 Item := TFavoriteThreadItem(FHistoryList[i]);
4519 Node := TreeView.Items.Add(nil, Item.Title);
4521 if Item.Item.NewArrival then begin
4522 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4523 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4525 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4526 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4529 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4530 //
\81¦Item.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4531 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4532 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4536 TreeView.Items.EndUpdate;
4540 procedure TGikoForm.SelectTreeNode(Item: TObject; CallEvent: Boolean);
4542 ChangeEvent: TTVChangedEvent;
4543 ChangingEvent: TTVChangingEvent;
4547 if Item is TCategory then
4548 bbs := TCategory( Item ).ParenTBBS
4549 else if Item is TBoard then
4550 bbs := TBoard( Item ).ParentCategory.ParenTBBS
4554 if (FTreeType = gtt2ch) and (FActiveBBS = bbs) then begin
4555 if Item <> FActiveList then begin
4557 ChangingEvent := nil;
4559 if not CallEvent then begin
4560 ChangeEvent := TreeView.OnChange;
4561 ChangingEvent := TreeView.OnChanging;
4564 if not CallEvent then begin
4565 TreeView.OnChange := nil;
4566 TreeView.OnChanging := nil;
4568 //Application.ProcessMessages;
4569 for i := 0 to TreeView.Items.Count - 1 do begin
4570 if TreeView.Items[i].Data = Item then begin
4571 TreeView.Items[i].Selected := True;
4573 TreeClick(TreeView.Items[i]);
4577 //Application.ProcessMessages;
4579 if not CallEvent then begin
4580 TreeView.OnChange := ChangeEvent;
4581 TreeView.OnChanging := ChangingEvent;
4586 if Item <> FActiveList then begin
4587 ActiveListColumnSave;
4589 if (Item is TBBS) or (Item is TCategory) then begin
4590 ListView.Columns.Clear;
4591 SetActiveList( Item );
4592 end else if Item is TBoard then begin
4593 if not TBoard( Item ).IsThreadDatRead then begin
4594 Screen.Cursor := crHourGlass;
4596 if not TBoard( Item ).IsThreadDatRead then
4597 GikoSys.ReadSubjectFile(TBoard( Item ));
4599 Screen.Cursor := crDefault;
4602 SetActiveList( Item );
4607 if Item is TBoard then begin // not TCategory
4608 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4609 if GikoSys.Setting.ListWidthState = glsMax then begin
4610 BrowserMinAction.Execute;
4611 if GikoForm.Visible then
4615 if GikoSys.Setting.ListHeightState = glsMax then begin
4616 BrowserMinAction.Execute;
4617 if GikoForm.Visible then
4624 procedure TGikoForm.ListViewMouseDown(Sender: TObject;
4625 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
4627 listItem : TListItem;
4628 threadItem : TThreadItem;
4635 if not (GetActiveList is TBoard) then Exit;
4636 listItem := ListView.GetItemAt( X, Y );
4637 if listItem = nil then Exit;
4638 if not (TObject(listItem.Data) is TThreadItem) then Exit;
4640 threadItem := TThreadItem(ListItem.Data);
4641 InsertBrowserTab(threadItem, False);
4642 if threadItem.IsLogFile then
4643 ListView.UpdateItems(listItem.Index, listItem.Index);
4647 //
\82±
\82±
\82ÅDblClick
\8fE
\82í
\82È
\82¢
\82Æ
\81AClick
\83C
\83x
\83\93\83g
\82ª
\97D
\90æ
\82µ
\82Ä
\8bN
\82«
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82Å
4648 if (ssDouble in Shift) then
4649 ListDoubleClick(Shift)
4657 Windows.ClientToScreen( ListView.Handle, pos );
4658 ListPopupMenu.Popup( pos.X, pos.Y );
4661 { if ssDouble in Shift then begin
4662 DoubleClickOccurred[Button] := True;
4664 DoubleClickOccurred[Button] := False;
4665 t := GetTickCount+GetDoubleClickTime;
4666 while GetTickCount < t do begin
4667 Application.ProcessMessages;
4668 if DoubleClickOccurred[Button] then
4673 if ssDouble in Shift then begin
4675 mbLeft: ListDoubleClick;
4688 procedure TGikoForm.ListClick;
4690 ListItem: TListItem;
4691 ThreadItem: TThreadItem;
4693 if ListView.SelCount <> 1 then Exit;
4694 ListItem := ListView.Selected;
4695 if ListItem = nil then Exit;
4696 if not (TObject(ListItem.Data) is TThreadItem) then Exit;
4698 ThreadItem := TThreadItem(ListItem.Data);
4699 if ThreadItem.IsLogFile then begin
4700 // if AddHistory(ThreadItem) then
4701 // SetContent(ThreadItem);
4702 InsertBrowserTab(ThreadItem);
4703 ListView.UpdateItems(ListItem.Index, ListItem.Index);
4705 // SetContent(ThreadItem);
4706 InsertBrowserTab(ThreadItem);
4709 if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
4710 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4711 if GikoSys.Setting.ListWidthState = glsMin then begin
4712 BrowserMaxAndFocusAction.Execute;
4715 if GikoSys.Setting.ListHeightState = glsMin then begin
4716 BrowserMaxAndFocusAction.Execute;
4722 procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
4724 ThreadItem: TThreadItem;
4727 shiftDown := (ssShift in Shift);
4729 if ListView.Selected = nil then Exit;
4731 if TObject(ListView.Selected.Data) is TCategory then begin
4732 SelectTreeNode(ListView.Selected.Data, True);
4733 // TreeView.Selected.Expanded := True;
4734 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4735 //TreeViewChange(nil, TreeView.Selected);
4736 end else if TObject(ListView.Selected.Data) is TBoard then begin
4737 SelectTreeNode(ListView.Selected.Data, True);
4738 // TreeView.Selected.Expanded := True;
4739 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4740 //TreeViewChange(nil, TreeView.Selected);
4741 end else if TObject(ListView.Selected.Data) is TThreadItem then begin
4742 //if TObject(ListView.Selected.Data) is TThreadItem then begin
4743 Application.ProcessMessages;
4744 ThreadItem := TThreadItem(ListView.Selected.Data);
4745 DownloadContent(ThreadItem, shiftDown);
4748 if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
4749 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4750 if GikoSys.Setting.ListWidthState = glsMin then begin
4751 // BrowserMaxAndFocusAction.Execute;
4752 BrowserMaxAction.Execute;
4753 SetFocusForBrowserAction.Execute;
4756 if GikoSys.Setting.ListHeightState = glsMin then begin
4757 // BrowserMaxAndFocusAction.Execute;
4758 BrowserMaxAction.Execute;
4759 SetFocusForBrowserAction.Execute;
4765 procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
4770 activeBrower :TWebBrowser;
4772 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4774 while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
4775 (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4776 Application.ProcessMessages;
4779 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4780 if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
4781 activeBrower := BrowserRecord.FBrowser;
4785 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4788 top := top + item.offsetTop;
4789 item := item.offsetParent;
4790 until AnsiCompareText(item.tagName, 'body' ) = 0;
4791 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4797 procedure TGikoForm.BrowserMovement(const AName: string);
4802 activeBrower :TWebBrowser;
4804 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4806 while (Browser.ReadyState <> READYSTATE_COMPLETE) and
4807 (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4808 Application.ProcessMessages;
4811 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4812 if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
4813 activeBrower := FActiveContent.Browser;
4817 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4820 top := top + item.offsetTop;
4821 item := item.offsetParent;
4822 until AnsiCompareText(item.tagName, 'body' ) = 0;
4824 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4830 procedure TGikoForm.TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
4832 if TObject(Node.Data) is TBBS then begin
4833 TBBS(Node.Data).NodeExpand := False;
4834 end else if TObject(Node.Data) is TCategory then begin
4835 TCategory(Node.Data).NodeExpand := False;
4836 end else if TObject(Node.Data) is TBoard then begin
4837 TBoard(Node.Data).NodeExpand := False;
4841 procedure TGikoForm.MessageListViewResize(Sender: TObject);
4843 // MessageListView.Column[0].Width := MessageListView.ClientWidth - 16;
4846 procedure TGikoForm.SelectListItem(List: TList);
4848 // TmpTreeNode: TTreeNode;
4849 TmpListItem: TListItem;
4852 TmpListItem := ListView.Selected;
4853 while TmpListItem <> nil do begin
4854 List.Add(TmpListItem.Data);
4855 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
4860 procedure TGikoForm.ExitActionExecute(Sender: TObject);
4865 procedure TGikoForm.AllSelectActionExecute(Sender: TObject);
4870 procedure TGikoForm.StdToolBarVisibleActionExecute(Sender: TObject);
4872 CoolBand: TCoolBand;
4874 CoolBand := GetCoolBand(MainCoolBar, StdToolBar);
4875 if CoolBand = nil then
4877 GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
4878 CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
4879 // StdToolBar.Visible := StdToolBarVisibleAction.Checked;
4880 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4882 //StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
4883 StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
4886 procedure TGikoForm.AddressBarVisibleActionExecute(Sender: TObject);
4888 CoolBand: TCoolBand;
4890 CoolBand := GetCoolBand(MainCoolBar, AddressToolBar);
4891 if CoolBand = nil then
4893 GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
4894 CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
4895 //AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
4896 AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
4899 procedure TGikoForm.LinkBarVisibleActionExecute(Sender: TObject);
4901 CoolBand: TCoolBand;
4903 CoolBand := GetCoolBand(MainCoolBar, LinkToolBar);
4904 if CoolBand = nil then
4906 GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
4907 CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
4908 //LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
4909 LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
4912 procedure TGikoForm.ListToolBarVisibleActionExecute(Sender: TObject);
4914 CoolBand: TCoolBand;
4916 CoolBand := GetCoolBand(ListCoolBar, ListToolBar);
4917 if CoolBand = nil then
4919 CoolBand.Visible := ListToolBarVisibleAction.Checked;
4920 // ListToolBar.Visible := ListToolBarVisibleAction.Checked;
4921 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4922 GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
4925 procedure TGikoForm.ListNameBarVisibleActionExecute(Sender: TObject);
4927 CoolBand: TCoolBand;
4929 CoolBand := GetCoolBand(ListCoolBar, ListNameToolBar);
4930 if CoolBand = nil then
4932 CoolBand.Visible := ListNameBarVisibleAction.Checked;
4933 GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
4936 procedure TGikoForm.BrowserToolBarVisibleActionExecute(Sender: TObject);
4938 CoolBand: TCoolBand;
4940 CoolBand := GetCoolBand(BrowserCoolBar, BrowserToolBar);
4941 if CoolBand = nil then
4943 CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
4944 // BrowserToolBar.Visible := BrowserToolBarVisibleAction.Checked;
4945 GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
4948 procedure TGikoForm.BrowserNameBarVisibleActionExecute(Sender: TObject);
4950 CoolBand: TCoolBand;
4952 CoolBand := GetCoolBand(BrowserCoolBar, BrowserNameToolBar);
4953 if CoolBand = nil then
4955 CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
4956 GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
4959 procedure TGikoForm.MsgBarVisibleActionExecute(Sender: TObject);
4961 MessageSplitter.Visible := MsgBarVisibleAction.Checked;
4962 MessagePanel.Top := MessageSplitter.Top + MessageSplitter.Height;
4963 MessageSplitter.Top := MessagePanel.Top + 1;
4964 MessagePanel.Visible := MsgBarVisibleAction.Checked;
4965 GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
4968 procedure TGikoForm.StatusBarVisibleActionExecute(Sender: TObject);
4970 StatusBar.Visible := StatusBarVisibleAction.Checked;
4971 GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
4974 procedure TGikoForm.IconStyleExecute(Sender: TObject);
4976 case ListView.ViewStyle of
4977 vsIcon: SmallIconAction.Execute;
4978 vsSmallIcon: ListIconAction.Execute;
4979 vsList: DetailIconAction.Execute;
4980 vsReport: LargeIconAction.Execute;
4984 procedure TGikoForm.LargeIconActionExecute(Sender: TObject);
4986 ListView.ViewStyle := vsIcon;
4987 LargeIconAction.Checked := True;
4990 procedure TGikoForm.SmallIconActionExecute(Sender: TObject);
4992 ListView.ViewStyle := vsSmallIcon;
4993 SmallIconAction.Checked := True;
4996 procedure TGikoForm.ListIconActionExecute(Sender: TObject);
4998 ListView.ViewStyle := vsList;
4999 ListIconAction.Checked := True;
5002 procedure TGikoForm.DetailIconActionExecute(Sender: TObject);
5004 ListView.ViewStyle := vsReport;
5005 DetailIconAction.Checked := True;
5008 procedure TGikoForm.SearchActionExecute(Sender: TObject);
5013 if FSearchDialog = nil then begin
5014 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
5015 chk := GikoForm.GetActiveList
5019 FSearchDialog := TSearchDialog.Create(Self, chk);
5020 FSearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
5030 procedure TGikoForm.OptionActionExecute(Sender: TObject);
5034 Dlg := TOptionDialog.Create(Self);
5042 procedure TGikoForm.GikoNaviWebPageActionExecute(Sender: TObject);
5044 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
5046 GikoSys.OpenBrowser(URL_GIKONAVI, gbtAuto);
5049 procedure TGikoForm.MonazillaWebPageActionExecute(Sender: TObject);
5051 URL_MONAZILLA: string = 'http://www.monazilla.org/';
5053 GikoSys.OpenBrowser(URL_MONAZILLA, gbtAuto);
5056 procedure TGikoForm.BBS2chWebPageActionExecute(Sender: TObject);
5058 URL_2ch: string = 'http://www.2ch.net/';
5060 GikoSys.OpenBrowser(URL_2ch, gbtAuto);
5063 procedure TGikoForm.GikoFolderOpenActionExecute(Sender: TObject);
5065 // GikoSys.OpenBrowser(GikoSys.GetAppDir, gbtIE);
5066 GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
5069 procedure TGikoForm.AboutActionExecute(Sender: TObject);
5073 Dlg := TAboutDialog.Create(Self);
5081 procedure TGikoForm.CabinetHistoryActionExecute(Sender: TObject);
5086 procedure TGikoForm.CabinetVisible( isVisible : Boolean );
5088 TreeSplitter.Visible := isVisible;
5089 CabinetPanel.Visible := isVisible;
5090 CabinetVisibleAction.Checked := isVisible;
5093 procedure TGikoForm.CabinetVisibleActionExecute(Sender: TObject);
5096 gttHistory: CabinetHistoryAction.Execute;
5097 gttFavorite: CabinetFavoriteAction.Execute;
5099 CabinetBBSAction.Execute;
5103 procedure TGikoForm.AllItemActionExecute(Sender: TObject);
5106 if ViewType <> gvtAll then
5107 SetListViewType(gvtAll);
5108 GikoSys.Setting.ThreadRange := gtrAll;
5109 AllItemAction.Checked := True;
5110 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5112 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5113 if SelectComboBox.Parent <> nil then begin
5114 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5115 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5122 procedure TGikoForm.LogItemActionExecute(Sender: TObject);
5125 if ViewType <> gvtLog then
5126 SetListViewType(gvtLog);
5127 GikoSys.Setting.ThreadRange := gtrLog;
5128 LogItemAction.Checked := True;
5129 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5131 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5132 if SelectComboBox.Parent <> nil then begin
5133 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5134 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5141 procedure TGikoForm.NewItemActionExecute(Sender: TObject);
5145 if ViewType <> gvtNew then
5146 SetListViewType(gvtNew);
5147 GikoSys.Setting.ThreadRange := gtrNew;
5148 NewItemAction.Checked := True;
5149 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5151 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5152 if SelectComboBox.Parent <> nil then begin
5153 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5154 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5161 procedure TGikoForm.SelectItemActionExecute(Sender: TObject);
5164 Dlg: TListSelectDialog;
5167 if SelectComboBox.Parent <> nil then begin
5168 if SelectComboBox.Left + SelectComboBox.Width < ListToolBar.Width then begin
5169 // SelectComboBox
\82ª
\82 \82é
\8fê
\8d\87\82Í
\83t
\83H
\81[
\83J
\83X
\82ð
\88Ú
\82·
5170 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5171 if GikoSys.Setting.ListWidthState = glsMax then
5172 BrowserMinAction.Execute;
5174 if GikoSys.Setting.ListHeightState = glsMax then
5175 BrowserMinAction.Execute;
5177 SelectComboBox.SetFocus;
5184 if SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
5185 SelectComboBox.Text := '';
5186 SelectComboBox.Color := clWindow;
5189 AllItemAction.Checked := False;
5190 LogItemAction.Checked := False;
5191 NewItemAction.Checked := False;
5192 //SelectItemAction.Checked := True;
5194 Dlg := TListSelectDialog.Create(Self);
5196 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
5197 Dlg.SelectComboBox.Text := SelectComboBox.Text;
5199 if Dlg.ModalResult = mrCancel then begin
5200 if Length( SelectComboBox.Text ) = 0 then begin
5201 AllItemAction.Checked := True;
5202 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5203 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5206 if GetActiveList is TBoard then
5207 SetListViewType(gvtUser, TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
5209 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
5211 GikoSys.Setting.SelectTextList.Delete(idx);
5212 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
5213 while Dlg.SelectComboBox.Items.Count > 100 do begin
5214 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
5217 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
5218 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5219 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5221 SelectComboBox.Text := Dlg.SelectComboBox.Text;
5222 SelectComboBox.Color := clWindow;
5224 SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
5231 procedure TGikoForm.ListNumberVisibleActionExecute(Sender: TObject);
5233 GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
5237 procedure TGikoForm.UpFolderActionExecute(Sender: TObject);
5239 if GetActiveList is TBoard then begin
5240 // if FTreeType = gtt2ch then
5241 SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5242 //SetActiveList(TBoard(GetActiveList).ParentCategory);
5243 end else if GetActiveList is TCategory then begin
5244 // if FTreeType = gtt2ch then
5245 SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);
5246 //SetActiveList(TCategory(GetActiveList).ParenTBBS);
5248 // if TreeView.Selected = nil then Exit;
5249 // if TreeView.Selected.Level = 0 then Exit;
5250 // TreeView.Selected.Parent.Selected := True;
5253 procedure TGikoForm.RoundActionExecute(Sender: TObject);
5257 Dlg := TRoundDialog.Create(Self);
5265 procedure TGikoForm.StopActionExecute(Sender: TObject);
5267 FControlThread.DownloadAbort;
5268 if FWorkCount <> 0 then FWorkCount := 0;
5270 Animate.Active := False;
5273 Screen.Cursor := crDefault;
5276 procedure TGikoForm.MsgBarCloseActionExecute(Sender: TObject);
5278 // MessagePanel.Visible := False;
5279 // MessageSplitter.Visible := False;
5280 // MsgBarVisibleAction.Checked := False;
5281 MsgBarVisibleAction.Execute;
5284 procedure TGikoForm.BrowserMaxActionExecute(Sender: TObject);
5286 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5287 case GikoSys.Setting.ListWidthState of
5289 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5290 if FActiveContent <> nil then
5291 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5292 ViewPanel.Width := FBrowserSizeWidth;
5293 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5294 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5295 GikoSys.Setting.ListWidthState := glsNormal;
5296 if FActiveContent <> nil then
5297 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5299 glsMin, glsNormal: begin
5300 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5301 if FActiveContent <> nil then
5302 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5303 if GikoSys.Setting.ListWidthState = glsNormal then
5304 FBrowserSizeWidth := ViewPanel.Width;
5305 if FActiveContent <> nil then
5306 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5307 ViewPanel.Width := 1;
5308 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5309 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5310 GikoSys.Setting.ListWidthState := glsMax;
5314 case GikoSys.Setting.ListHeightState of
5316 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5317 if FActiveContent <> nil then
5318 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5319 ViewPanel.Height := FBrowserSizeHeight;
5320 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5321 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5322 GikoSys.Setting.ListHeightState := glsNormal;
5323 if FActiveContent <> nil then
5324 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5326 glsMin, glsNormal: begin
5327 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5328 if FActiveContent <> nil then
5329 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5330 if GikoSys.Setting.ListHeightState = glsNormal then
5331 FBrowserSizeHeight := ViewPanel.Height;
5332 if FActiveContent <> nil then
5333 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5334 ViewPanel.Height := 1;
5335 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5336 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5337 GikoSys.Setting.ListHeightState := glsMax;
5341 // Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
5342 // System.Round(BrowserToolBar.ButtonWidth div 2),
5343 // System.Round(BrowserToolBar.ButtonHeight div 2)));
5344 //BrowserTab.OnChange(nil);
5347 procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
5350 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5351 case GikoSys.Setting.ListWidthState of
5352 glsMax, glsNormal: begin
5353 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5354 if FActiveContent <> nil then
5355 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5356 if GikoSys.Setting.ListWidthState = glsNormal then
5357 FBrowserSizeWidth := ViewPanel.Width;
5358 if FActiveContent <> nil then
5359 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5360 ViewPanel.Width := ThreadMainPanel.Width - 80;
5361 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5362 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5363 GikoSys.Setting.ListWidthState := glsMin;
5366 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5367 if FActiveContent <> nil then
5368 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5369 ViewPanel.Width := FBrowserSizeWidth;
5370 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5371 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5372 GikoSys.Setting.ListWidthState := glsNormal;
5373 if FActiveContent <> nil then
5374 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5378 case GikoSys.Setting.ListHeightState of
5379 glsMax, glsNormal: begin
5380 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5381 if FActiveContent <> nil then
5382 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5383 if GikoSys.Setting.ListHeightState = glsNormal then
5384 FBrowserSizeHeight := ViewPanel.Height;
5385 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5386 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5387 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5388 GikoSys.Setting.ListHeightState := glsMin;
5389 if FActiveContent <> nil then
5390 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5393 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5394 if FActiveContent <> nil then
5395 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5396 ViewPanel.Height := FBrowserSizeHeight;
5397 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5398 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5399 GikoSys.Setting.ListHeightState := glsNormal;
5400 if FActiveContent <> nil then
5401 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5407 procedure TGikoForm.ScrollTopActionExecute(Sender: TObject);
5409 BrowserMovement('top');
5412 procedure TGikoForm.ScrollLastActionExecute(Sender: TObject);
5414 BrowserMovement('bottom');
5417 procedure TGikoForm.ScrollNewActionExecute(Sender: TObject);
5419 BrowserMovement('new');
5422 procedure TGikoForm.ScrollKokoActionExecute(Sender: TObject);
5424 BrowserMovement('koko');
5427 procedure TGikoForm.EditorActionExecute(Sender: TObject);
5429 Editor: TEditorForm;
5432 Item := GetActiveContent;
5433 if Item = nil then Exit;
5434 Editor := TEditorForm.Create(Application.MainForm);
5435 Editor.SetThreadItem(Item);
5436 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5438 Editor.BodyEdit.SetFocus;
5441 procedure TGikoForm.IEActionExecute(Sender: TObject);
5443 ShowThreadAction.Execute;
5446 procedure TGikoForm.ShowThreadActionExecute(Sender: TObject);
5448 ThreadItem: TThreadItem;
5450 ThreadItem := GetActiveContent;
5451 if ThreadItem = nil then Exit;
5452 GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
5455 procedure TGikoForm.ShowBoardActionExecute(Sender: TObject);
5457 ThreadItem: TThreadItem;
5459 ThreadItem := GetActiveContent;
5460 if ThreadItem = nil then Exit;
5461 GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
5464 //(Thread)URL
\82ð
\83R
\83s
\81[
5465 procedure TGikoForm.URLCopyActionExecute(Sender: TObject);
5470 if TObject(GetActiveContent) is TBoard then
5471 s := s + TBoard(GetActiveContent).URL + #13#10
5472 else if TObject(GetActiveContent) is TThreadItem then
5473 s := s + TThreadItem(GetActiveContent).URL + #13#10;
5475 Clipboard.AsText := s;
5478 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ð
\83R
\83s
\81[
5479 procedure TGikoForm.NameCopyActionExecute(Sender: TObject);
5484 if TObject(GetActiveContent) is TBoard then
5485 s := s + TBoard(GetActiveContent).Title + #13#10
5486 else if TObject(GetActiveContent) is TThreadItem then
5487 s := s + TThreadItem(GetActiveContent).Title + #13#10;
5489 Clipboard.AsText := s;
5492 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ÆURL
\82ð
\83R
\83s
\81[
5493 procedure TGikoForm.NameURLCopyActionExecute(Sender: TObject);
5498 if TObject(GetActiveContent) is TBoard then
5499 s := s + TBoard(GetActiveContent).Title + #13#10 + TBoard(GetActiveContent).URL + #13#10
5500 else if TObject(GetActiveContent) is TThreadItem then
5501 s := s + TThreadItem(GetActiveContent).Title + #13#10 + TThreadItem(GetActiveContent).URL + #13#10;
5503 Clipboard.AsText := s;
5506 procedure TGikoForm.ItemReloadActionExecute(Sender: TObject);
5508 ThreadItem: TThreadItem;
5511 ThreadItem := GetActiveContent;
5512 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5513 if ThreadItem <> nil then
5514 DownloadContent(ThreadItem, shiftDown);
5517 procedure TGikoForm.SelectListReloadActionExecute(Sender: TObject);
5524 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5525 if GetActiveList is TCategory then begin
5526 List := TList.Create;
5528 SelectListItem(List);
5529 if List.Count > 5 then begin
5530 msg := '5
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5531 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5532 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5535 for i := 0 to List.Count - 1 do begin
5536 if TObject(List[i]) is TBoard then
5537 DownloadList(TBoard(List[i]), shiftDown);
5542 end else if GetActiveList is TBoard then begin
5543 DownloadList(TBoard(GetActiveList), shiftDown);
5547 procedure TGikoForm.SelectThreadReloadActionExecute(Sender: TObject);
5554 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5555 List := TList.Create;
5557 SelectListItem(List);
5558 if List.Count > 10 then begin
5559 msg := '10
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5560 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5561 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5564 for i := 0 to List.Count - 1 do begin
5565 if TObject(List[i]) is TThreadItem then
5566 DownloadContent(TThreadItem(List[i]), shiftDown);
5573 procedure TGikoForm.SelectListReloadActionUpdate(Sender: TObject);
5575 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
5576 SelectListReloadAction.Enabled := True
5577 else if GetActiveList is TBoard then
5578 SelectListReloadAction.Enabled := True
5580 SelectListReloadAction.Enabled := False;
5583 procedure TGikoForm.SelectThreadReloadActionUpdate(Sender: TObject);
5585 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
5586 SelectThreadReloadAction.Enabled := True
5588 SelectThreadReloadAction.Enabled := False;
5591 procedure TGikoForm.AllItemActionUpdate(Sender: TObject);
5593 AllItemAction.Enabled := (GetActiveList is TBoard);
5596 procedure TGikoForm.LogItemActionUpdate(Sender: TObject);
5598 LogItemAction.Enabled := (GetActiveList is TBoard);
5601 procedure TGikoForm.NewItemActionUpdate(Sender: TObject);
5603 NewItemAction.Enabled := (GetActiveList is TBoard);
5606 procedure TGikoForm.SelectItemActionUpdate(Sender: TObject);
5608 SelectItemAction.Enabled := (GetActiveList is TBoard);
5611 procedure TGikoForm.UpFolderActionUpdate(Sender: TObject);
5613 UpFolderAction.Enabled := not (GetActiveList is TBBS);
5616 procedure TGikoForm.ThreadEditorActionUpdate(Sender: TObject);
5618 ThreadEditorAction.Enabled := (GetActiveList is TBoard);
5621 procedure TGikoForm.FormResize(Sender: TObject);
5624 MessageListView.Column[0].Width := MessageListView.ClientWidth - 32;
5625 MainCoolBar.Width := TopPanel.Width - TopRightPanel.Width;
5627 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5628 if GikoSys.Setting.ListWidthState = glsMin then begin
5629 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5630 ViewPanel.Width := ThreadMainPanel.Width - 80;
5633 if GikoSys.Setting.ListHeightState = glsMin then begin
5634 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5635 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5639 // FIsIgnoreResize := rtResizing;
5640 // PostMessage( Handle, USER_RESIZED, 0, 0 );
5645 procedure TGikoForm.ScrollTopActionUpdate(Sender: TObject);
5647 ScrollTopAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5650 procedure TGikoForm.ScrollLastActionUpdate(Sender: TObject);
5652 ScrollLastAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5655 procedure TGikoForm.ScrollNewActionUpdate(Sender: TObject);
5657 ScrollNewAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5660 procedure TGikoForm.ScrollKokoActionUpdate(Sender: TObject);
5662 ScrollKokoAction.Enabled := (GetActiveContent <> nil)
5663 and (GetActiveContent.IsLogFile)
5664 and (GetActiveContent.Kokomade <> -1);
5668 procedure TGikoForm.EditorActionUpdate(Sender: TObject);
5670 EditorAction.Enabled := GetActiveContent <> nil;
5673 procedure TGikoForm.IEActionUpdate(Sender: TObject);
5675 IEAction.Enabled := GetActiveContent <> nil;
5678 procedure TGikoForm.ShowThreadActionUpdate(Sender: TObject);
5680 ShowThreadAction.Enabled := GetActiveContent <> nil;
5683 procedure TGikoForm.ShowBoardActionUpdate(Sender: TObject);
5685 ShowBoardAction.Enabled := GetActiveContent <> nil;
5688 procedure TGikoForm.ItemReloadActionUpdate(Sender: TObject);
5690 ItemReloadAction.Enabled := GetActiveContent <> nil;
5693 procedure TGikoForm.URLCopyActionUpdate(Sender: TObject);
5695 URLCopyAction.Enabled := GetActiveContent <> nil;
5698 procedure TGikoForm.NameCopyActionUpdate(Sender: TObject);
5700 NameCopyAction.Enabled := GetActiveContent <> nil;
5703 procedure TGikoForm.NameURLCopyActionUpdate(Sender: TObject);
5705 NameURLCopyAction.Enabled := GetActiveContent <> nil;
5708 procedure TGikoForm.BrowserTabCloseActionUpdate(Sender: TObject);
5710 BrowserTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5713 procedure TGikoForm.NotSelectTabCloseActionUpdate(Sender: TObject);
5715 NotSelectTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 1);
5718 procedure TGikoForm.AllTabCloseActionUpdate(Sender: TObject);
5720 AllTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5723 procedure TGikoForm.ActiveLogDeleteActionUpdate(Sender: TObject);
5725 ActiveLogDeleteAction.Enabled := GetActiveContent <> nil;
5728 procedure TGikoForm.LogDeleteActionExecute(Sender: TObject);
5730 DEL_MSG = '
\81g^0
\81h
\82Ì
\83\8d\83O
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
5731 DEL_SAME_MSG = '
\82±
\82ê
\82ç ^0
\8cÂ
\82Ì
\83X
\83\8c\83b
\83h
\82Ì
\83\8d\83O
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
5732 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
5734 ThreadItem: TThreadItem;
5735 TmpListItem: TListItem;
5739 List := TList.Create;
5741 TmpListItem := ListView.Selected;
5742 while TmpListItem <> nil do begin
5743 if TObject(TmpListItem.Data) is TThreadItem then begin
5744 ThreadItem := TThreadItem(TmpListItem.Data);
5745 if ThreadItem.IsLogFile then
5746 List.Add(ThreadItem);
5748 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
5751 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
5752 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
5753 if List.Count = 1 then begin
5754 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', TThreadItem( List[ 0 ] ).Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
5757 if MsgBox(Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
5763 for i := 0 to List.Count - 1 do begin
5764 ThreadItem := TThreadItem(List[i]);
5765 DeleteHistory(ThreadItem);
5766 DeleteTab(ThreadItem);
5767 ThreadItem.DeleteLogFile;
5769 TreeView.Refresh; // UnRead
\82Ì
\95\
\8e¦
\82ð
\8dX
\90V
5776 procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
5781 idx := BrowserTab.TabIndex;
5782 FTabHintIndex := -1;
5783 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5784 if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
5785 BrowserTab.Tabs.BeginUpdate;
5787 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5788 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5789 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5792 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5794 if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
5795 FActiveContent := nil;
5796 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5797 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5799 FBrowsers.Move(j, BROWSER_COUNT - 1);
5801 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5802 BrowserTab.Tabs.Delete(i);
5803 if idx > i then begin
5804 BrowserTab.TabIndex := idx - 1;
5806 if BrowserTab.Tabs.Count -1 >= idx then
5807 BrowserTab.TabIndex := idx
5809 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5811 if BrowserTab.Tabs.Count = 0 then begin
5812 BrowserNullTab.Thread := nil;
5814 if(BrowserTab.TabIndex <> -1) and
5815 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5816 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5817 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5818 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5820 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
5824 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5825 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5826 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5827 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5829 BrowserTab.Tabs.EndUpdate;
5830 if( FActiveContent = nil) then
5831 BrowserTab.OnChange(nil);
5836 procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
5841 idx := BrowserTab.TabIndex;
5842 FTabHintIndex := -1;
5843 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5844 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
5845 BrowserTab.Tabs.BeginUpdate;
5847 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5848 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5849 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5853 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5855 if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then
5856 FActiveContent := nil;
5857 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5858 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5860 FBrowsers.Move(j, BROWSER_COUNT - 1);
5862 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5863 BrowserTab.Tabs.Delete(i);
5864 if idx > i then begin
5865 BrowserTab.TabIndex := idx - 1;
5867 if BrowserTab.Tabs.Count -1 >= idx then
5868 BrowserTab.TabIndex := idx
5870 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5872 if(BrowserTab.TabIndex <> -1) and
5873 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5874 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5875 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5876 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5878 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[j]));
5882 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5883 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5884 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5885 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5888 BrowserTab.Tabs.EndUpdate;
5889 if( FActiveContent = nil) then
5890 BrowserTab.OnChange(nil);
5895 procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
5898 ThreadItem: TThreadItem;
5900 No := KokoPopupMenu.Tag;
5901 if No = 0 then Exit;
5902 ThreadItem := GetActiveContent;
5903 if ThreadItem = nil then Exit;
5904 ThreadItem.Kokomade := No;
5905 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5906 FActiveContent.FRepaint := true;
5907 InsertBrowserTab(FActiveContent.Thread, true);
5908 Application.ProcessMessages;
5911 procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
5913 ThreadItem: TThreadItem;
5915 ThreadItem := GetActiveContent;
5916 if ThreadItem = nil then Exit;
5917 ThreadItem.Kokomade := -1;
5918 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5919 FActiveContent.FRepaint := true;
5920 InsertBrowserTab(FActiveContent.Thread, true);
5921 Application.ProcessMessages;
5924 function TGikoForm.Hook(var Message: TMessage): Boolean;
5933 procedure TGikoForm.KokoResActionExecute(Sender: TObject);
5935 Editor: TEditorForm;
5939 Number := KokoPopupMenu.Tag;
5940 if Number = 0 then Exit;
5941 Item := GetActiveContent;
5942 if Item = nil then Exit;
5944 Editor := TEditorForm.Create(Self);
5945 Editor.SetThreadItem(Item);
5946 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5947 Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
5949 Editor.BodyEdit.SetFocus;
5952 procedure TGikoForm.ListPopupMenuPopup(Sender: TObject);
5954 ItemRoundPMenu.Visible := (GetActiveList is TBoard);
5955 ItemReservPMenu.Visible := (GetActiveList is TBoard);
5956 LPMSep01.Visible := (GetActiveList is TBoard);
5957 ListRoundPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5958 ListReservPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5959 LPMSep02.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5960 KidokuPMenu.Visible := (GetActiveList is TBoard);
5961 MidokuPMenu.Visible := (GetActiveList is TBoard);
5962 UrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5963 NameUrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5964 AllSelectPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5965 LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5966 DeletePMenu.Visible := (GetActiveList is TBoard);
5967 LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5968 BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
5969 ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
5971 AddRoundNameMenu(ItemReservPMenu);
5972 AddRoundNameMenu(ListReservPMenu);
5975 procedure TGikoForm.BoardIEActionExecute(Sender: TObject);
5979 if GetActiveList is TBoard then begin
5980 URL := TBoard(GetActiveList).URL;
5981 GikoSys.OpenBrowser(URL, gbtAuto);
5985 procedure TGikoForm.SelectItemURLCopyActionExecute(Sender: TObject);
5992 List := TList.Create;
5994 SelectListItem(List);
5995 for i := 0 to List.Count - 1 do begin
5996 if TObject(List[i]) is TBoard then
5997 s := s + TBoard(List[i]).URL + #13#10
5998 else if TObject(List[i]) is TThreadItem then
5999 s := s + TThreadItem(List[i]).URL + #13#10;
6002 Clipboard.AsText := s;
6008 procedure TGikoForm.SelectItemNameCopyActionExecute(Sender: TObject);
6015 List := TList.Create;
6017 SelectListItem(List);
6018 for i := 0 to List.Count - 1 do begin
6019 if TObject(List[i]) is TBoard then
6020 s := s + TBoard(List[i]).Title + #13#10
6021 else if TObject(List[i]) is TThreadItem then
6022 s := s + TThreadItem(List[i]).Title + #13#10;
6025 Clipboard.AsText := s;
6031 procedure TGikoForm.SelectItemNameURLCopyActionExecute(Sender: TObject);
6038 List := TList.Create;
6040 SelectListItem(List);
6041 for i := 0 to List.Count - 1 do begin
6042 if TObject(List[i]) is TBoard then
6043 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
6044 else if TObject(List[i]) is TThreadItem then
6045 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
6048 Clipboard.AsText := s;
6054 procedure TGikoForm.BoardIEActionUpdate(Sender: TObject);
6056 if GetActiveList is TBoard then
6057 BoardIEAction.Enabled := True
6059 BoardIEAction.Enabled := False;
6062 procedure TGikoForm.SelectItemURLCopyActionUpdate(Sender: TObject);
6064 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6065 SelectItemURLCopyAction.Enabled := True
6067 SelectItemURLCopyAction.Enabled := False;
6070 procedure TGikoForm.SelectItemNameCopyActionUpdate(Sender: TObject);
6072 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6073 SelectItemNameCopyAction.Enabled := True
6075 SelectItemNameCopyAction.Enabled := False;
6078 procedure TGikoForm.SelectItemNameURLCopyActionUpdate(Sender: TObject);
6080 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6081 SelectItemNameURLCopyAction.Enabled := True
6083 SelectItemNameURLCopyAction.Enabled := False;
6086 procedure TGikoForm.AllSelectActionUpdate(Sender: TObject);
6088 if ListView.SelCount > 0 then
6089 AllSelectAction.Enabled := True
6091 AllSelectAction.Enabled := False;
6094 procedure TGikoForm.LogDeleteActionUpdate(Sender: TObject);
6096 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
6097 LogDeleteAction.Enabled := True
6099 LogDeleteAction.Enabled := False;
6102 procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
6105 // ThreadItem: TThreadItem;
6107 idx := BrowserTab.TabIndex;
6108 if idx <> -1 then begin
6109 if BrowserTab.Tabs.Objects[idx] <> nil then begin
6110 //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
6111 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6116 procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
6121 idx := BrowserTab.TabIndex;
6122 if idx = -1 then Exit;
6123 BrowserTab.Tabs.BeginUpdate;
6124 for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
6125 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6126 BrowserTab.Tabs.Delete(i);
6128 if idx > 0 then begin
6129 for i := BrowserTab.TabIndex - 1 downto 0 do begin
6130 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6131 BrowserTab.Tabs.Delete(i);
6134 BrowserTab.Tabs.EndUpdate;
6137 procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
6141 if GikoSys.Setting.ShowDialogForAllTabClose then
6142 if(MessageDlg('
\91S
\82Ä
\82Ì
\83^
\83u
\82ð
\95Â
\82¶
\82Ä
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then
6145 FActiveContent := nil;
6146 BrowserNullTab.Thread := nil;
6147 BrowserTab.OnChange := nil;
6148 BrowserTab.Tabs.BeginUpdate;
6149 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6150 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6152 BrowserTab.Tabs.Clear;
6153 BrowserTab.Tabs.EndUpdate;
6154 BrowserTab.OnChange := BrowserTabChange;
6155 SetContent(BrowserNullTab);
6156 Self.Caption := CAPTION_NAME ;
6159 procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
6162 TmpTreeNode: TTreeNode;
6164 TmpTreeNode := FClickNode;
6165 TreeView.Selected := FClickNode;
6168 if TObject(TmpTreeNode.Data) is TBoard then
6169 Board := TBoard(TmpTreeNode.Data)
6170 else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
6171 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
6173 if Board <> nil then
6174 DownloadList(Board);
6177 procedure TGikoForm.TreeSelectThreadReloadExecute(Sender: TObject);
6179 ThreadItem: TThreadItem;
6180 TmpTreeNode: TTreeNode;
6182 TmpTreeNode := FClickNode;
6183 TreeView.Selected := FClickNode;
6186 if TObject(TmpTreeNode.Data) is TThreadItem then
6187 ThreadItem := TThreadItem(TmpTreeNode.Data)
6188 else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
6189 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
6191 if ThreadItem <> nil then
6192 DownloadContent(ThreadItem);
6195 procedure TGikoForm.TreeSelectURLCopyExecute(Sender: TObject);
6197 TmpTreeNode: TTreeNode;
6200 TmpTreeNode := FClickNode;
6201 TreeView.Selected := FClickNode;
6202 if TObject(TmpTreeNode.Data) is TBoard then begin
6203 s := TBoard(TmpTreeNode.Data).URL + #13#10;
6204 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6205 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6206 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6207 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
6208 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6209 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6211 Clipboard.AsText := s;
6214 procedure TGikoForm.TreeSelectNameURLCopyExecute(Sender: TObject);
6216 TmpTreeNode: TTreeNode;
6219 TmpTreeNode := FClickNode;
6220 TreeView.Selected := FClickNode;
6221 if TObject(TmpTreeNode.Data) is TBoard then begin
6222 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
6223 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6224 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6225 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6226 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
6227 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6228 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6230 Clipboard.AsText := s;
6233 procedure TGikoForm.TreePopupMenuPopup(Sender: TObject);
6235 FClickNode := TreeView.Selected;
6236 if FClickNode = nil then begin
6237 TreeSelectThreadPupupMenu.Visible := False;
6238 TreeSelectBoardPupupMenu.Visible := False;
6239 TPMSep01.Visible := False;
6240 TreeSelectURLPupupMenu.Visible := False;
6241 TreeSelectNamePupupMenu.Visible := False;
6242 TreeSelectNameURLPupupMenu.Visible := False;
6243 TreeSelectFavoriteAddPupupMenu.Visible := False;
6244 TreeSelectLogDeleteSeparator.Visible := False;
6245 TreeSelectLogDeletePopupMenu.Visible := False;
6246 end else if TObject(FClickNode.Data) is TBoard then begin
6247 TreeSelectThreadPupupMenu.Visible := False;
6248 TreeSelectBoardPupupMenu.Visible := True;
6249 TPMSep01.Visible := True;
6250 TreeSelectURLPupupMenu.Visible := True;
6251 TreeSelectNamePupupMenu.Visible := True;
6252 TreeSelectNameURLPupupMenu.Visible := True;
6253 TreeSelectFavoriteAddPupupMenu.Visible := True;
6254 TreeSelectLogDeleteSeparator.Visible := False;
6255 TreeSelectLogDeletePopupMenu.Visible := False;
6256 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
6257 TreeSelectThreadPupupMenu.Visible := False;
6258 TreeSelectBoardPupupMenu.Visible := True;
6259 TPMSep01.Visible := True;
6260 TreeSelectURLPupupMenu.Visible := True;
6261 TreeSelectNamePupupMenu.Visible := True;
6262 TreeSelectNameURLPupupMenu.Visible := True;
6263 TreeSelectFavoriteAddPupupMenu.Visible := True;
6264 TreeSelectLogDeleteSeparator.Visible := False;
6265 TreeSelectLogDeletePopupMenu.Visible := False;
6266 end else if (TObject(FClickNode.Data) is TThreadItem) then begin
6267 TreeSelectThreadPupupMenu.Visible := True;
6268 TreeSelectBoardPupupMenu.Visible := False;
6269 TPMSep01.Visible := True;
6270 TreeSelectURLPupupMenu.Visible := True;
6271 TreeSelectNamePupupMenu.Visible := True;
6272 TreeSelectNameURLPupupMenu.Visible := True;
6273 TreeSelectFavoriteAddPupupMenu.Visible := True;
6274 TreeSelectLogDeleteSeparator.Visible := True;
6275 TreeSelectLogDeletePopupMenu.Visible := True;
6276 end else if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
6277 TreeSelectThreadPupupMenu.Visible := True;
6278 TreeSelectBoardPupupMenu.Visible := False;
6279 TPMSep01.Visible := True;
6280 TreeSelectURLPupupMenu.Visible := True;
6281 TreeSelectNamePupupMenu.Visible := True;
6282 TreeSelectNameURLPupupMenu.Visible := True;
6283 TreeSelectFavoriteAddPupupMenu.Visible := True;
6284 TreeSelectLogDeleteSeparator.Visible := True;
6285 TreeSelectLogDeletePopupMenu.Visible := True;
6286 end else if (TObject(FClickNode.Data) is TCategory) then begin
6287 TreeSelectThreadPupupMenu.Visible := False;
6288 TreeSelectBoardPupupMenu.Visible := False;
6289 TPMSep01.Visible := False;
6290 TreeSelectURLPupupMenu.Visible := False;
6291 TreeSelectNamePupupMenu.Visible := True;
6292 TreeSelectNameURLPupupMenu.Visible := False;
6293 TreeSelectFavoriteAddPupupMenu.Visible := False;
6294 TreeSelectLogDeleteSeparator.Visible := False;
6295 TreeSelectLogDeletePopupMenu.Visible := False;
6296 end else if FClickNode.IsFirstNode then begin
6297 TreeSelectThreadPupupMenu.Visible := False;
6298 TreeSelectBoardPupupMenu.Visible := False;
6299 TPMSep01.Visible := False;
6300 TreeSelectURLPupupMenu.Visible := False;
6301 TreeSelectNamePupupMenu.Visible := True;
6302 TreeSelectNameURLPupupMenu.Visible := False;
6303 TreeSelectFavoriteAddPupupMenu.Visible := False;
6304 TreeSelectLogDeleteSeparator.Visible := False;
6305 TreeSelectLogDeletePopupMenu.Visible := False;
6307 TreeSelectThreadPupupMenu.Visible := False;
6308 TreeSelectBoardPupupMenu.Visible := False;
6309 TPMSep01.Visible := False;
6310 TreeSelectURLPupupMenu.Visible := False;
6311 TreeSelectNamePupupMenu.Visible := False;
6312 TreeSelectNameURLPupupMenu.Visible := False;
6313 TreeSelectFavoriteAddPupupMenu.Visible := False;
6314 TreeSelectLogDeleteSeparator.Visible := False;
6315 TreeSelectLogDeletePopupMenu.Visible := False;
6319 procedure TGikoForm.BrowserNewWindow2(Sender: TObject;
6320 var ppDisp: IDispatch; var Cancel: WordBool);
6331 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6332 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6333 Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6334 if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
6335 or (AnsiPos('
\81\84\81\84', Text) = 1) or (AnsiPos('
\81\84', Text) = 1) then begin
6336 if GikoSys.Setting.ResAnchorJamp then begin
6337 Text := ZenToHan(Text);
6339 if(AnsiPos('>>', Text) = 1) then begin
6340 Text := Copy(Text, 3, Length(Text) - 2);
6342 Text := Copy(Text, 2, Length(Text) - 1);
6344 if AnsiPos('-', Text) <> 0 then begin
6345 wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
6346 Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
6347 wkIntTo := StrToIntDef(Text, 0);
6348 if wkIntTo < wkIntSt then
6351 wkIntSt := StrToIntDef(Text, 0);
6353 if wkIntSt <> 0 then
6354 BrowserMovement(IntToStr(wkIntSt));
6357 URL := GikoSys.GetHRefText(Html);
6358 URL := GikoSys.HTMLDecode(URL);
6359 if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
6360 ( AnsiPos('ftp://', URL) = 1) then begin
6361 //
\83A
\83h
\83\8c\83X
\83o
\81[
\82Ì
\97\9a\97ð
6362 if GikoSys.Setting.LinkAddAddressBar then begin
6363 idx := AddressComboBox.Items.IndexOf(URL);
6364 if idx = -1 then begin
6365 AddressComboBox.Items.Insert(0, URL);
6366 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
6367 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
6369 AddressComboBox.Items.Delete(idx);
6370 AddressComboBox.Items.Insert(0, URL);
6378 { ShiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
6379 CtrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
6382 Memo1.Lines.Add('ShiftDown');
6384 Memo1.Lines.Add('CtrlDown');
6386 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6387 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6388 Url := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6392 URL := GetHRefText(URL);
6394 ParseURI(URL, Protocol, Host, path, Document, Port, Bookmark);
6396 b := Parse2chURL(path, document, bbs, num);
6397 memo1.Lines.Add('bbs: ' + bbs);
6398 memo1.Lines.Add('key: ' + num);
6400 Memo1.Lines.Add('Parse2chURL: True')
6402 Memo1.Lines.Add('Parse2chURL: False');
6404 // AppPath := 'C:\Borland\Projects\Test\TestBrowser\TestBrowser.exe';
6409 procedure TGikoForm.ListSplitterMoved(Sender: TObject);
6411 if Mouse.Capture <> 0 then
6413 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6414 if (ViewPanel.Width > 1) and (ViewPanel.Width <= (ThreadMainPanel.Width - 80)) then
6415 FBrowserSizeWidth := ViewPanel.Width;
6417 if (ViewPanel.Height > 1) and (ViewPanel.Height <= (ThreadMainPanel.Height - BrowserCoolBar.Height)) then
6418 FBrowserSizeHeight := ViewPanel.Height;
6420 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6421 if ViewPanel.Width < 2 then begin
6422 ViewPanel.Width := 1;
6423 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6424 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6425 GikoSys.Setting.ListWidthState := glsMax;
6426 end else if ViewPanel.Width > (ThreadMainPanel.Width - 80) then begin
6427 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6428 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6429 GikoSys.Setting.ListWidthState := glsMin;
6431 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6432 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6433 GikoSys.Setting.ListWidthState := glsNormal;
6436 if ViewPanel.Height < 2 then begin
6437 ViewPanel.Height := 1;
6438 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6439 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6440 GikoSys.Setting.ListHeightState := glsMax;
6441 end else if ViewPanel.Height > (ThreadMainPanel.Height - BrowserCoolBar.Height - 7) then begin
6442 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6443 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6444 GikoSys.Setting.ListHeightState := glsMin;
6446 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6447 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6448 GikoSys.Setting.ListHeightState := glsNormal;
6451 { if (Mouse.Capture = 0) and (ViewPanel.Height > 1) and (not ArrangeAction.Checked) then
6452 FBrowserSizeHeight := ViewPanel.Height
6453 else if (Mouse.Capture = 0) and (ViewPanel.Width > 1) and (ArrangeAction.Checked) then
6454 FBrowserSizeWidth := ViewPanel.Width;}
6457 procedure TGikoForm.BrowserTabChange(Sender: TObject);
6463 // if NewTab = -1 then
6464 // ThreadItem := nil;
6465 if not BrowserTab.Dragging then begin
6466 FTabHintIndex := -1;
6467 BrowserTab.Hint := '';
6468 idx := BrowserTab.TabIndex;
6469 if idx = -1 then begin
6470 BrowserNullTab.Thread := nil;
6471 SetContent(BrowserNullTab);
6473 end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
6474 if TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser <> nil then begin
6475 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser);
6477 FBrowsers.Move(j ,0);
6479 if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
6480 (FActiveContent.Browser <> BrowserNullTab.Browser) and
6481 (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
6482 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6484 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
6485 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
6486 ReleaseBrowser(TBrowserRecord(BrowserTab.Tabs.Objects[i]));
6490 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
6491 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
6492 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6494 MoveWindow(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser.Handle, 0, 0, BrowserPanel.Width, BrowserPanel.Height, false);
6495 TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
6496 // GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6497 // OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6498 SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6500 if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
6501 AddressComboBox.Text := GetActiveContent.URL;
6503 if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
6504 (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
6507 SetFocusForBrowserAction.Execute;
6516 procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
6517 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
6523 if Button = mbMiddle then begin
6524 //
\83}
\83E
\83X
\92\86\83{
\83^
\83\93
6527 p := BrowserTab.ScreenToClient(p);
6528 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6530 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6531 //end else if Button = mbRight then begin
6532 //PopupMenu
\82ÅBrowserTabPoupMenu
\82ð
\8ew
\92è
\82µ
\82Ä
\82¢
\82é
\82Ì
\82Å
\82±
\82±
\82Å
\82í
\82´
\82í
\82´
\8cÄ
\82Ñ
\8fo
\82·
\82Æ
\82Q
\8fd
\82É
\82È
\82é
6533 //OnContextPopup
\82Å
\82à
\82µ
\82àActive
\82ÈTab
\88È
\8aO
\82Å
\8cÄ
\82Ñ
\8fo
\82³
\82ê
\82½
\82çTab
\82ð
\90Ø
\82è
\91Ö
\82¦
\82é
\82æ
\82¤
\82É
\82µ
\82½
\81B
6534 { //
\83}
\83E
\83X
\89E
\83{
\83^
\83\93
6537 // GetCursorPos(p2);
6538 p := BrowserTab.ScreenToClient(p);
6539 // idx := BrowserTab.ItemAtPos(p);
6540 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6541 if idx <> -1 then begin
6542 OldIndex := BrowserTab.TabIndex;
6543 BrowserTab.TabIndex := idx;
6544 if OldIndex <> idx then
6545 BrowserTab.OnChange(nil);
6546 BrowserTabPopupMenu.Tag := idx;
6547 BrowserTabPopupMenu.Popup(p2.X, p2.Y);
6550 end else if BUtton = mbLeft then begin
6551 FDragWFirst := true;
6552 FMouseDownPos.X := X;
6553 FMouseDownPos.Y := Y;
6558 procedure TGikoForm.SetBrowserTabState;
6561 CoolBand: TCoolBand;
6563 BrowserBottomPanel.AutoSize := False;
6564 if GikoSys.Setting.BrowserTabVisible then begin
6565 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
6566 BrowserTab.Style := tsTabs;
6567 if GikoSys.Setting.BrowserTabPosition = gtpTop then
6568 BrowserTab.TabPosition := tpTop
6570 BrowserTab.TabPosition := tpBottom;
6571 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
6572 BrowserTab.TabPosition := tpTop;
6573 BrowserTab.Style := tsButtons;
6575 BrowserTab.TabPosition := tpTop;
6576 BrowserTab.Style := tsFlatButtons
6579 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
6580 BrowserTab.Parent := BrowserTabToolBar;
6581 BrowserBottomPanel.Hide;
6582 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6583 if CoolBand <> nil then
6584 CoolBand.Visible := True;
6585 // BrowserTab.Parent := BrowserTopPanel;
6586 // BrowserTab.Parent := BrowserCoolBar;
6587 // BrowserTab.Top := 26;
6588 // BrowserTopPanel.Height := 44;
6591 BrowserTab.Parent := BrowserBottomPanel;
6592 BrowserTab.Top := 0;
6593 BrowserTab.Left := 0;
6594 BrowserBottomPanel.Show;
6595 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6596 if CoolBand <> nil then
6597 CoolBand.Visible := False;
6598 // BrowserTopPanel.Height := 26;
6602 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6603 if CoolBand <> nil then
6604 CoolBand.Visible := False;
6605 BrowserBottomPanel.Visible := False;
6606 // BrowserTab.Visible := False;
6607 // BrowserTopPanel.Height := 26;
6608 AllTabCloseAction.Execute;
6612 procedure TGikoForm.BrowserTabDragOver(Sender, Source: TObject; X,
6613 Y: Integer; State: TDragState; var Accept: Boolean);
6617 idx := BrowserTab.IndexOfTabAt(X, Y);
6618 Accept := (Source = BrowserTab) and (BrowserTab.TabIndex <> idx);
6621 procedure TGikoForm.BrowserTabDragDrop(Sender, Source: TObject; X,
6626 idx := BrowserTab.IndexOfTabAt(X, Y);
6628 BrowserTab.Tabs.Move(BrowserTab.TabIndex, idx);
6631 procedure TGikoForm.BrowserTabMouseMove(Sender: TObject;
6632 Shift: TShiftState; X, Y: Integer);
6635 ThreadItem: TThreadItem;
6638 TabIdx := BrowserTab.IndexOfTabAt(x, y);
6640 if ( ssLeft in Shift ) and ( BrowserTab.Style = tsTabs ) then begin
6641 if FDragWFirst = false then begin
6642 FDragWFirst := true;
6644 BrowserTab.EndDrag(false);
6645 BrowserTab.BeginDrag(false, DandD_THRESHOLD);
6646 FDragWFirst := false;
6649 BrowserTab.EndDrag(false);
6650 FDragWFirst := false;
6653 if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
6654 Application.CancelHint;
6655 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
6656 if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
6657 BrowserTab.Hint := ThreadItem.Title;
6658 Application.ShowHint := True;
6660 BrowserTab.Hint := '';
6661 Application.ShowHint := True;
6663 FTabHintIndex := TabIdx;
6668 procedure TGikoForm.BrowserDocumentComplete(Sender: TObject;
6669 const pDisp: IDispatch; var URL: OleVariant);
6671 FDispHtmlDocument: DispHTMLDocument;
6672 BrowserRecord :TBrowserRecord;
6675 threadItem : TThreadItem;
6677 // AddMessageList('DocumentComplete', nil, gmiWhat);
6678 if TObject(Sender) is TWebBrowser then begin
6679 BrowserRecord := nil;
6680 if TWebBrowser(Sender) <> Browser then begin
6681 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6682 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
6683 BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
6687 if BrowserRecord <> nil then begin
6688 if BrowserRecord.FEvent <> nil then
6689 BrowserRecord.FEvent.Free;
6690 FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
6691 BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6692 BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
6693 BrowserRecord.FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6694 BrowserRecord.FEvent.OnMouseDown := WebBrowserOnMouseDown;
6697 if GetActiveContent <> nil then begin
6698 FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
6699 if FEvent <> nil then
6701 FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6702 FEvent.OnContextMenu := OnDocumentContextMenu;
6703 FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6704 FEvent.OnMouseDown := WebBrowserOnMouseDown;;
6708 if (BrowserRecord <> nil) and
6709 Assigned( BrowserRecord.Thread ) then begin
6710 threadItem := BrowserRecord.Thread;
6712 if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
6713 if threadItem.UnRead then begin
6714 threadItem.UnRead := False;
6715 threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
6716 if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
6720 BrowserMovement( BrowserRecord.Movement, BrowserRecord );
6721 BrowserRecord.Movement := '';
6722 end else if threadItem.UnRead then begin
6723 threadItem.UnRead := False;
6724 threadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
6725 if threadItem.ParentBoard.UnRead < 0 then threadItem.ParentBoard.UnRead := 0;
6727 BrowserMovement( 'new', BrowserRecord );
6729 end else if threadItem.ScrollTop <> 0 then begin
6731 doc := Idispatch( OleVariant( BrowserRecord.Browser.ControlInterface ).Document ) as IHTMLDocument2;
6732 doc.Body.ScrollTop := threadItem.ScrollTop;
6735 MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
6742 procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
6747 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then begin
6748 List := TList.Create;
6750 SelectListItem(List);
6751 for i := 0 to List.Count - 1 do begin
6752 if TObject(List[i]) is TThreadItem then begin
6753 if TThreadItem(List[i]).IsLogFile then begin
6754 SelectReservAction.Enabled := True;
6759 SelectReservAction.Enabled := False;
6763 end else if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
6764 SelectReservAction.Enabled := True
6766 SelectReservAction.Enabled := False;
6769 procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
6771 AddRoundNameMenu(RoundNamePopupMenu.Items);
6774 procedure TGikoForm.AddRoundNameMenu(MenuItem: TMenuItem);
6780 Item := TMenuItem.Create(Self);
6781 Item.Caption := '
\90V
\82µ
\82¢
\96¼
\91O
\82Å
\8f\84\89ñ
\97\
\96ñ(&N)...';
6782 Item.OnClick := SelectNewRoundNameExecute;
6784 Item := TMenuItem.Create(Self);
6785 Item.Caption := '
\8f\84\89ñ
\83\8a\83X
\83g
\82©
\82ç
\8dí
\8f\9c(&D)';
6786 Item.OnClick := SelectDeleteRoundExecute;
6788 Item := TMenuItem.Create(Self);
6789 Item.Caption := '-';
6791 for i := 0 to RoundList.RoundNameList.Count - 1 do begin
6792 Item := TMenuItem.Create(Self);
6793 Item.Caption := RoundList.RoundNameList[i];
6794 Item.OnClick := SetSelectRoundName;
6799 procedure TGikoForm.SelectNewRoundNameExecute(Sender: TObject);
6802 Dlg: TRoundNameDialog;
6805 Dlg := TRoundNameDialog.Create(Self);
6808 if Dlg.ModalResult <> mrCancel then begin
6809 s := Trim(Dlg.RoundNameEdit.Text);
6810 RoundList.RoundNameList.Add(s);
6811 SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
6818 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);
6820 threadItem : TThreadItem;
6822 if ParentName <> 'dummy1' then begin
6823 SetSelectItemRound(RoundFlag, RoundName);
6825 threadItem := GetActiveContent;
6826 if threadItem <> nil then begin
6827 threadItem.RoundName := RoundName;
6828 threadItem.Round := RoundFlag;
6833 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);
6838 List := TList.Create;
6840 SelectListItem(List);
6841 for i := 0 to List.Count - 1 do begin
6842 if TObject(List[i]) is TBoard then begin
6843 TBoard(List[i]).RoundName := RoundName;
6844 TBoard(List[i]).Round := RoundFlag;
6845 end else if TObject(List[i]) is TThreadItem then begin
6846 if TThreadItem(List[i]).IsLogFile then begin
6847 TThreadItem(List[i]).RoundName := RoundName;
6848 TThreadItem(List[i]).Round := RoundFlag;
6857 procedure TGikoForm.SelectDeleteRoundExecute(Sender: TObject);
6859 SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
6863 procedure TGikoForm.SelectReservActionExecute(Sender: TObject);
6865 //
\82±
\82Ì
\83R
\83\81\83\93\83g
\8dí
\8f\9c\82µ
\82Ä
\82Í
\91Ê
\96Ú
6868 procedure TGikoForm.SetSelectRoundName(Sender: TObject);
6870 MenuItem: TMenuItem;
6872 if Sender is TMenuItem then begin
6873 MenuItem := TMenuItem(Sender);
6874 SetSelectItemRound(True, StripHotKey(MenuItem.Caption), TMenuItem(Sender).Parent.Name);
6879 procedure TGikoForm.NewBoardActionExecute(Sender: TObject);
6881 Dlg: TNewBoardDialog;
6885 for i := 0 to Screen.CustomFormCount - 1 do begin
6886 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
6887 Msg := '
\83\8c\83X
\83G
\83f
\83B
\83^
\82ð
\91S
\82Ä
\95Â
\82¶
\82Ä
\82
\82¾
\82³
\82¢';
6888 MsgBox(Handle, Msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6892 Dlg := TNewBoardDialog.Create(Self);
6900 procedure TGikoForm.LoginActionExecute(Sender: TObject);
6905 if GikoSys.Dolib.Connected then begin
6906 //
\83\8d\83O
\83A
\83E
\83g
6907 GikoSys.Dolib.Disconnect;
6908 LoginAction.Checked := False;
6909 if GikoSys.Setting.GengoSupport then begin
6910 AddMessageList(GikoSys.Setting.Gengo.Names[1], nil, gmiOK);
6912 AddMessageList('
\83\8d\83O
\83A
\83E
\83g
\82µ
\82Ü
\82µ
\82½', nil, gmiOK);
6914 LoginAction.Caption := '
\83\8d\83O
\83C
\83\93(&L)';
6916 TmpCursor := Screen.Cursor;
6917 Screen.Cursor := crHourGlass;
6919 //
\92Ê
\8fí
\83\8d\83O
\83C
\83\93
6920 if not GikoSys.Setting.ForcedLogin then begin
6921 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6922 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6923 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6924 if GikoSys.Setting.ReadProxy then begin
6925 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6926 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6928 GikoSys.Dolib.ProxyAddress := '';
6929 GikoSys.Dolib.ProxyPort := 0;
6931 if GikoSys.Dolib.Connect then begin
6932 LoginAction.Checked := True;
6933 if GikoSys.Setting.GengoSupport then begin
6934 AddMessageList(GikoSys.Setting.Gengo.Names[2] + GikoSys.Setting.UserID, nil, gmiOK);
6936 AddMessageList('
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6938 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6939 LoginToolButton.Style := tbsCheck;
6941 // MsgBox(Handle, '
\83\8d\83O
\83C
\83\93\8fo
\97\88\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½', '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6942 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6944 LoginAction.Checked := False;
6945 LoginToolButton.Down := False;
6946 LoginToolButton.Style := tbsButton;
6949 msg := '
\8b
\90§
\83\8d\83O
\83C
\83\93\83\82\81[
\83h
\82Å
\82Í
\81C
\83T
\81[
\83o
\82Ì
\8fØ
\96¾
\8f\91\82Ì
\97L
\8cø
\90«
\82ð
\83`
\83F
\83b
\83N
\82µ
\82Ü
\82¹
\82ñ
\81B' + #13#10
6950 + '
\8bU
\91\95\83T
\81[
\83o
\82Ì
\8fê
\8d\87\81A
\82 \82È
\82½
\82Ì
\83p
\83X
\83\8f\81[
\83h
\93\90\82Ü
\82ê
\82é
\89Â
\94\
\90«
\82ª
\82 \82è
\82Ü
\82·
\81B' + #13#10
6951 + '
\82±
\82Ì
\83\82\81[
\83h
\82Å
\83\8d\83O
\83C
\83\93\82ð
\8e\8e\82Ý
\82Ü
\82·
\82©
\81H' + #13#10;
6952 if MsgBox(Handle, msg, '
\8cx
\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
6953 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6954 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6955 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6956 if GikoSys.Setting.ReadProxy then begin
6957 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6958 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6960 GikoSys.Dolib.ProxyAddress := '';
6961 GikoSys.Dolib.ProxyPort := 0;
6963 //SSL
\8fá
\8aQ
\97p
\8b
\90§
\83\8d\83O
\83C
\83\93
6964 GikoSys.Dolib.ForcedConnect;
6965 if GikoSys.Dolib.Connect then begin
6966 LoginAction.Checked := True;
6967 AddMessageList('
\8b
\90§
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6968 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6969 LoginToolButton.Style := tbsCheck;
6971 // MsgBox(Handle, '
\83\8d\83O
\83C
\83\93\8fo
\97\88\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½', '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6972 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6974 LoginAction.Checked := False;
6975 LoginToolButton.Down := False;
6976 LoginToolButton.Style := tbsButton;
6979 LoginAction.Checked := False;
6980 LoginToolButton.Down := False;
6981 LoginToolButton.Style := tbsButton;
6985 Screen.Cursor := TmpCursor;
6990 procedure TGikoForm.KeySettingActionExecute(Sender: TObject);
6992 Dlg: TKeySettingForm;
6994 Dlg := TKeySettingForm.Create(Self);
6996 if Dlg.ShowModal = mrOk then begin
6997 GikoSys.SaveKeySetting(ActionList);
6998 GikoSys.Setting.Gestures.SaveGesture( GikoSys.Setting.GetGestureFileName );
7000 GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
7003 MouseGesture.UnHook;
7004 MouseGesture.OnGestureStart := OnGestureStart;
7005 MouseGesture.OnGestureMove := OnGestureMove;
7006 MouseGesture.OnGestureEnd := OnGestureEnd;
7007 if GikoSys.Setting.GestureEnabled then
7008 MouseGesture.SetHook( Handle );
7012 procedure TGikoForm.ArrangeActionExecute(Sender: TObject);
7014 if ArrangeAction.Checked then begin
7016 ViewPanel.Align := alNone;
7017 ListSplitter.Align := alNone;
7018 ThreadPanel.Align := alNone;
7020 ViewPanel.Width := FBrowserSizeWidth;
7021 ViewPanel.Align := alLeft;
7023 ListSplitter.Width := 5;
7024 ListSplitter.Align := alLeft;
7026 ViewPanel.Left := -10;
7028 ThreadPanel.Align := alClient;
7030 GikoSys.Setting.ListOrientation := gloHorizontal;
7031 case GikoSys.Setting.ListWidthState of
7033 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
7034 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
7035 ViewPanel.Width := 1;
7038 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
7039 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
7042 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
7043 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
7044 ViewPanel.Width := ThreadMainPanel.Width - 80;
7049 ViewPanel.Align := alNone;
7050 ListSplitter.Align := alNone;
7051 ThreadPanel.Align := alNone;
7053 ViewPanel.Height := FBrowserSizeHeight;
7054 ViewPanel.Align := alTop;
7056 ListSplitter.Height := 5;
7057 ListSplitter.Align := alTop;
7059 ViewPanel.Top := -10;
7061 ThreadPanel.Align := alClient;
7062 GikoSys.Setting.ListOrientation := gloVertical;
7063 case GikoSys.Setting.ListHeightState of
7065 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
7066 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
7067 ViewPanel.Height := 1;
7070 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7071 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
7074 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7075 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
7076 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
7083 procedure TGikoForm.PaneInitActionExecute(Sender: TObject);
7085 CabinetPanel.Width := 150;
7086 MessagePanel.Height := 40;
7088 FBrowserSizeWidth := 200;
7089 FBrowserSizeHeight := 200;
7090 if ArrangeAction.Checked then begin
7091 ViewPanel.Width := FBrowserSizeWidth;
7093 ViewPanel.Height := FBrowserSizeHeight;
7095 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7096 if GikoSys.Setting.ListHeightState = glsMax then begin
7097 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7098 GikoSys.Setting.ListHeightState := glsNormal;
7101 if GikoSys.Setting.ListWidthState = glsMax then begin
7102 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
7103 GikoSys.Setting.ListWidthState := glsNormal;
7108 procedure TGikoForm.ActiveLogDeleteActionExecute(Sender: TObject);
7110 DEL_MSG = '
\81g^0
\81h
\82Ì
\83\8d\83O
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
7111 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7114 ThreadItem: TThreadItem;
7116 idx := BrowserTab.TabIndex;
7117 if idx <> -1 then begin
7118 if BrowserTab.Tabs.Objects[idx] <> nil then begin
7119 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).FThread;
7120 if GikoSys.Setting.DeleteMsg then
7121 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7122 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7124 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
7125 ThreadItem.DeleteLogFile;
7126 if ThreadItem.ParentBoard = FActiveList then
7132 function TGikoForm.GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
7137 if CoolBar = nil then
7139 for i := 0 to CoolBar.Bands.Count - 1 do begin
7140 if CoolBar.Bands[i].Control = Control then begin
7141 Result := CoolBar.Bands[i];
7147 procedure TGikoForm.BrowserTabToolBarResize(Sender: TObject);
7149 if BrowserTab.Parent = BrowserTabToolBar then
7150 BrowserTab.Width := BrowserTabToolBar.Width;
7153 procedure TGikoForm.SelectTextClearActionExecute(Sender: TObject);
7155 DEL_MSG = '
\8di
\8d\9e\82Ý
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
7156 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7158 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7159 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7161 GikoSys.Setting.SelectTextList.Clear;
7162 SelectComboBox.Items.Clear;
7163 SelectComboBox.Text := '';
7164 SetListViewType( gvtAll );
7167 procedure TGikoForm.NameTextClearActionExecute(Sender: TObject);
7171 DEL_MSG = '
\83\8c\83X
\83G
\83f
\83B
\83^
\96¼
\91O
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
7172 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7174 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7175 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7177 GikoSys.Setting.NameList.Clear;
7178 for i := 0 to Screen.CustomFormCount - 1 do begin
7179 if TObject(Screen.CustomForms[i]) is TEditorForm then
7180 TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
7184 procedure TGikoForm.MailTextClearActionExecute(Sender: TObject);
7188 DEL_MSG = '
\83\8c\83X
\83G
\83f
\83B
\83^
\83\81\81[
\83\8b\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
7189 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7191 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7192 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7194 GikoSys.Setting.MailList.Clear;
7195 for i := 0 to Screen.CustomFormCount - 1 do begin
7196 if TObject(Screen.CustomForms[i]) is TEditorForm then
7197 TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
7201 procedure TGikoForm.LeftmostTabSelectActionExecute(Sender: TObject);
7203 if BrowserTab.Tabs.Count > 0 then begin
7204 BrowserTab.TabIndex := 0;
7205 BrowserTab.OnChange(nil);
7209 procedure TGikoForm.LeftTabSelectActionExecute(Sender: TObject);
7211 if BrowserTab.Tabs.Count > 0 then begin
7212 if BrowserTab.TabIndex = -1 then begin
7213 BrowserTab.TabIndex := 0;
7214 BrowserTab.OnChange(nil);
7215 end else if BrowserTab.TabIndex > 0 then begin
7216 BrowserTab.TabIndex := BrowserTab.TabIndex - 1;
7217 BrowserTab.OnChange(nil);
7222 procedure TGikoForm.RightTabSelectActionExecute(Sender: TObject);
7224 if BrowserTab.Tabs.Count > 0 then begin
7225 if BrowserTab.TabIndex = -1 then begin
7226 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7227 BrowserTab.OnChange(nil);
7228 end else if BrowserTab.TabIndex < (BrowserTab.Tabs.Count - 1) then begin
7229 BrowserTab.TabIndex := BrowserTab.TabIndex + 1;
7230 BrowserTab.OnChange(nil);
7235 procedure TGikoForm.RightmostTabSelectActionExecute(Sender: TObject);
7237 if BrowserTab.Tabs.Count > 0 then begin
7238 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7239 BrowserTab.OnChange(nil);
7243 procedure TGikoForm.LeftmostTabSelectActionUpdate(Sender: TObject);
7245 LeftmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7248 procedure TGikoForm.LeftTabSelectActionUpdate(Sender: TObject);
7250 LeftTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7253 procedure TGikoForm.RightTabSelectActionUpdate(Sender: TObject);
7255 RightTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7258 procedure TGikoForm.RightmostTabSelectActionUpdate(Sender: TObject);
7260 RightmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7263 procedure TGikoForm.WMSettingChange(var Message: TWMWinIniChange);
7268 procedure TGikoForm.SetMenuFont;
7270 // GikoSys.MenuFont(MenuToolBar.Font);
7271 // MenuToolBar.Buttons[0].AutoSize := False;
7272 // MenuToolBar.Buttons[0].AutoSize := True;
7273 // MenuToolBar.Font.Color := clMenuText;
7274 GikoSys.MenuFont(MainCoolBar.Font);
7275 MenuToolBar.Buttons[0].AutoSize := False;
7276 MenuToolBar.Buttons[0].AutoSize := True;
7277 MainCoolBar.AutoSize := False;
7278 MainCoolBar.AutoSize := True;
7280 GikoSys.MenuFont(ListCoolBar.Font);
7281 GikoSys.MenuFont(BrowserCoolBar.Font);
7282 // MenuToolBar.Font.Color := clMenuText;
7285 procedure TGikoForm.FavoriteMenuClick(Sender: TObject);
7291 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á
7292 NewMenu := TMenuItem.Create(MainMenu);
7293 NewMenu.Action := FavoriteAddAction;
7294 FavoriteMenu.Add(NewMenu);
7295 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\90®
\97\9d
7296 NewMenu := TMenuItem.Create(FavoriteMenu);
7297 NewMenu.Action := FavoriteArrangeAction;
7298 FavoriteMenu.Add(NewMenu);
7299 //
\83Z
\83p
\83\8c\81[
\83^
7300 NewMenu := TMenuItem.Create(FavoriteMenu);
7301 NewMenu.Caption := '-';
7302 FavoriteMenu.Add(NewMenu);
7304 CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
7307 procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
7312 for i := 0 to Node.Count - 1 do begin
7313 NewMenu := TFavoriteMenuItem.Create(Self);
7314 NewMenu.AutoHotkeys := maAutomatic;
7315 NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&');
7316 TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data;
7317 MenuItem.Add(NewMenu);
7319 if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
7320 NewMenu.ImageIndex := TOOL_ICON_FAV_FOLDER;
7321 CreateFavMenu(Node.Item[i], NewMenu);
7322 end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
7323 NewMenu.ImageIndex := TOOL_ICON_FAV_BOARD;
7324 NewMenu.OnClick := FavoriteClick;
7325 end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
7326 NewMenu.ImageIndex := TOOL_ICON_FAV_THREAD;
7327 NewMenu.OnClick := FavoriteClick;
7332 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
7334 Dlg : TFavoriteAddDialog;
7340 if Item is TFavoriteBoardItem then
7341 Item := TFavoriteBoardItem( Item ).Item
7342 else if Item is TFavoriteThreadItem then
7343 Item := TFavoriteThreadItem( Item ).Item;
7345 Node := FavoriteTreeView.Items.GetFirstNode;
7346 if Item is TBoard then begin
7347 ItemURL := TBoard( Item ).URL;
7348 while Node <> nil do begin
7350 if TObject( Data ) is TFavoriteBoardItem then begin
7351 if ItemURL = TFavoriteBoardItem( Data ).URL then begin
7352 if Application.MessageBox( '
\8aù
\82É
\82¨
\8bC
\82É
\93ü
\82è
\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B
\82»
\82ê
\82Å
\82à
\92Ç
\89Á
\82µ
\82Ü
\82·
\82©
\81H', '
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á', MB_YESNO ) = IDNO then
7357 Node := Node.GetNext;
7359 Dlg := TFavoriteAddDialog.Create(Self);
7361 Dlg.SetBoard( TBoard( Item ) );
7366 end else if Item is TThreadItem then begin
7367 ItemURL := TThreadItem( Item ).URL;
7368 while Node <> nil do begin
7370 if TObject( Data ) is TFavoriteThreadItem then begin
7371 if ItemURL = TFavoriteThreadItem( Data ).URL then begin
7372 if Application.MessageBox( '
\8aù
\82É
\82¨
\8bC
\82É
\93ü
\82è
\82É
\93o
\98^
\82³
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B
\82»
\82ê
\82Å
\82à
\92Ç
\89Á
\82µ
\82Ü
\82·
\82©
\81H', '
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á', MB_YESNO ) = IDNO then
7377 Node := Node.GetNext;
7379 Dlg := TFavoriteAddDialog.Create(Self);
7381 Dlg.SetThreadItem( TThreadItem( Item ) );
7391 procedure TGikoForm.FavoriteAddActionExecute(Sender: TObject);
7393 ShowFavoriteAddDialog(GetActiveContent);
7396 procedure TGikoForm.FavoriteClick(Sender: TObject);
7399 FavoriteClick( Sender, True );
7403 procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean);
7406 ThreadItem: TThreadItem;
7407 FavBoard: TFavoriteBoardItem;
7408 FavThread: TFavoriteThreadItem;
7412 if Sender is TFavoriteMenuItem then
7413 Item := TFavoriteMenuItem(Sender).Data
7414 else if Sender is TLinkToolButton then
7415 Item := TLinkToolButton(Sender).Data
7416 else if Sender is TTreeNode then
7417 Item := TTreeNode( Sender ).Data
7421 if TObject(Item) is TFavoriteBoardItem then begin
7422 FavBoard := TFavoriteBoardItem(Item);
7423 Board := FavBoard.Item;
7424 if Board <> nil then begin
7425 if (FTreeType = gtt2ch) and (FActiveBBS <> Board.ParentCategory.ParenTBBS) then
7426 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7427 SelectTreeNode(Board, True);
7429 end else if TObject(Item) is TFavoriteThreadItem then begin
7430 FavThread := TFavoriteThreadItem(Item);
7431 ThreadItem := FavThread.Item;
7432 if ThreadItem = nil then
7435 InsertBrowserTab(ThreadItem, ActiveTab);
7437 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7438 if GikoSys.Setting.ListWidthState = glsMin then begin
7439 BrowserMaxAndFocusAction.Execute;
7442 if GikoSys.Setting.ListHeightState = glsMin then begin
7443 BrowserMaxAndFocusAction.Execute;
7449 procedure TGikoForm.FavoriteAddActionUpdate(Sender: TObject);
7451 FavoriteAddAction.Enabled := (GetActiveContent <> nil);
7454 procedure TGikoForm.BoardFavoriteAddActionExecute(Sender: TObject);
7456 if TObject(ListView.Selected.Data) is TBoard then
7457 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7460 procedure TGikoForm.BoardFavoriteAddActionUpdate(Sender: TObject);
7462 BoardFavoriteAddAction.Enabled := (GetActiveList is TCategory) and (ListView.SelCount > 0);
7465 procedure TGikoForm.ThreadFavoriteAddActionExecute(Sender: TObject);
7467 if TObject(ListView.Selected.Data) is TThreadItem then
7468 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7471 procedure TGikoForm.ThreadFavoriteAddActionUpdate(Sender: TObject);
7473 ThreadFavoriteAddAction.Enabled := (GetActiveList is TBoard) and (ListView.SelCount > 0);
7476 procedure TGikoForm.TreeSelectFavoriteAddActionExecute(Sender: TObject);
7478 ShowFavoriteAddDialog(TObject(FClickNode.Data));
7481 procedure TGikoForm.FavoriteArrangeActionExecute(Sender: TObject);
7483 Dlg: TFavoriteArrangeDialog;
7485 Dlg := TFavoriteArrangeDialog.Create(Self);
7491 PostMessage( Handle, USER_SETLINKBAR, 0, 0 );
7494 procedure TGikoForm.BBSMenuItemOnClick(
7499 if Sender is TBBSMenuItem then
7500 ShowBBSTree( TBBSMenuItem( Sender ).Data );
7504 procedure TGikoForm.MainCoolBarResize(Sender: TObject);
7506 TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
7507 if not FStartUp then begin
7508 // SaveCoolBarSettings;
7509 SaveMainCoolBarSettings;
7514 procedure TGikoForm.MoveToActionExecute(Sender: TObject);
7519 URL := Trim(AddressComboBox.Text);
7522 idx := AddressComboBox.Items.IndexOf(URL);
7523 if idx = -1 then begin
7524 AddressComboBox.Items.Insert(0, URL);
7525 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
7526 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
7528 AddressComboBox.Items.Delete(idx);
7529 AddressComboBox.Items.Insert(0, URL);
7533 procedure TGikoForm.MoveToURL(const inURL: string);
7535 protocol, host, path, document, port, bookmark : string;
7536 URL, protocol2, host2, path2, document2, port2, bookmark2 : string;
7538 BBSID, BBSKey: string;
7539 tmpBoard, Board: TBoard;
7540 ThreadItem: TThreadItem;
7543 tmpThread : TThreadItem;
7544 // category : TCategory;
7545 // categoryNode : TTreeNode;
7546 // boardNode : TTreeNode;
7547 shiftDown : Boolean;
7549 stRes, edRes : Int64;
7550 browserRec : TBrowserRecord;
7553 GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
7554 GikoSys.Parse2chURL( inURL, path, document, BBSID, BBSKey );
7557 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7558 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7559 if shiftDown then begin
7560 GikoSys.OpenBrowser(inURL, gbtUserApp);
7562 end else if ctrlDown then begin
7563 GikoSys.OpenBrowser(inURL, gbtIE);
7567 //=====
\83v
\83\89\83O
\83C
\83\93
7570 bi := High( BoardPlugIns );
7571 for i := Low( BoardPlugIns ) to bi do begin
7572 if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7573 case BoardPlugIns[ i ].AcceptURL( inURL ) of
7576 tmpThread := TThreadItem.Create( BoardPlugIns[ i ], inURL );
7577 boardURL := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );
7578 Board := BBSsFindBoardFromURL( boardURL );
7579 if Board = nil then begin
7581 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7582 //GikoSys.OpenBrowser(inURL, gbtUserApp);
7585 Board := GikoSys.GetUnknownBoard( tmpThread.BoardPlugIn, boardURL );
7586 if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
7587 ShowBBSTree( BBSs[ 1 ] );
7590 if not Board.IsThreadDatRead then begin
7591 GikoSys.ReadSubjectFile( Board );
7594 ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7595 if ThreadItem = nil then begin
7596 ThreadItem := tmpThread;
7597 Board.Insert( 0, ThreadItem );
7598 if ActiveList is TBoard then begin
7599 if TBoard(ActiveList) = Board then
7600 ListView.Items.Count := ListView.Items.Count + 1;
7602 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7603 browserRec := InsertBrowserTab( ThreadItem );
7604 if (browserRec <> nil) and (stRes > 0) then
7605 browserRec.Movement := IntToStr( stRes );
7606 DownloadContent( ThreadItem );
7610 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7611 browserRec := InsertBrowserTab( ThreadItem );
7612 if ThreadItem.IsLogFile then begin
7613 if (browserRec <> nil) and (stRes > 0) then
7614 BrowserMovement( IntToStr( stRes ), browserRec );
7616 if (browserRec <> nil) and (stRes > 0) then
7617 browserRec.Movement := IntToStr( stRes );
7618 DownloadContent( ThreadItem );
7627 tmpBoard := TBoard.Create(BoardPlugIns[ i ], inURL);
7628 Board := BBSsFindBoardFromURL( tmpBoard.URL );
7630 if Board <> nil then begin
7631 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7632 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7633 SelectTreeNode( Board, True );
7641 // exception
\82ª
\94
\90¶
\82µ
\82½
\8fê
\8d\87\82Í
\93à
\95\94\8f\88\97\9d\82É
\94C
\82¹
\82½
\82¢
\82Ì
\82Å
\82±
\82±
\82Å
\82Í
\89½
\82à
\82µ
\82È
\82¢
7645 if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7646 boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
7647 Board := BBSsFindBoardFromURL( boardURL );
7649 Board := BBSsFindBoardFromBBSID( BBSID );
7651 if Board = nil then begin
7652 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7653 //
\81@
\89ß
\8b\8e\83\8d\83O
\91q
\8cÉ
\82©
\82ç
\81A
\83_
\83E
\83\
\82µ
\82½
\83X
\83\8c\82ª
\94
\8c©
\82Å
\82«
\82È
\82¢
\82Ì
\82Å
\82±
\82±
\82Å
\92T
\82·
\82æ
\82¤
\82É
\82·
\82é (2004/01/22)
7654 Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
7656 if Board = nil then begin
7657 //
\93ü
\82é
\82×
\82«
\94Â
\82ª
\8c©
\82Â
\82©
\82ç
\82È
\82©
\82Á
\82½
\82Ì
\82Å
\81A
\95\81\92Ê
\82Ì
\83u
\83\89\83E
\83U
\82Å
\8aJ
\82
7658 GikoSys.OpenBrowser(inURL, gbtUserApp);
7661 //
\8aO
\95\94\82Ì
\94Â
\82È
\82Ì
\82É2ch
\82ÌURL
\82É
\82³
\82ê
\82Ä
\82µ
\82Ü
\82Á
\82½
\93z
\82ð
\82±
\82±
\82Å
\8am
\94F
\82·
\82é
7663 GikoSys.ParseURI(URL , protocol2, host2, path2, document2, port2, bookmark2 );
7664 tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
7665 tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
7666 if ( not GikoSys.Is2chHost(tmp1)) and (tmp1 <> tmp2) then begin
7667 GikoSys.OpenBrowser(inURL, gbtUserApp);
7672 if not Board.IsThreadDatRead then
7673 GikoSys.ReadSubjectFile(Board);
7674 URL := GikoSys.Get2chBrowsableThreadURL( inURL );
7675 ThreadItem := Board.FindThreadFromURL( URL );
7676 //
\81@
\89ß
\8b\8e\83\8d\83O
\91q
\8cÉ
\82©
\82ç
\81A
\83_
\83E
\83\
\82µ
\82½
\83X
\83\8c\82ª
\94
\8c©
\82Å
\82«
\82È
\82¢
\82Ì
\82Å
\82±
\82±
\82Å
\92T
\82·
\82æ
\82¤
\82É
\82·
\82é (2004/01/22)
7677 if ThreadItem = nil then begin
7678 ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
7681 if ThreadItem = nil then begin
7682 //shift ->
\90Ý
\92è
\83u
\83\89\83E
\83U
\81i
\96³
\82¯
\82ê
\82ÎIE
\81j
7684 {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7685 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7687 GikoSys.OpenBrowser(URL1, gbtUserApp)
7688 else if ctrlDown then
7689 GikoSys.OpenBrowser(URL1, gbtIE)
7692 ThreadItem := TThreadItem.Create( nil, URL );
7693 ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
7694 if AnsiPos(Host, Board.URL) = 0 then
7695 ThreadItem.DownloadHost := Host
7697 ThreadItem.DownloadHost := '';
7698 Board.Insert(0, ThreadItem);
7699 if ActiveList is TBoard then begin
7700 if TBoard(ActiveList) = Board then
7701 ListView.Items.Count := ListView.Items.Count + 1;
7703 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7704 browserRec := InsertBrowserTab(ThreadItem);
7705 if (browserRec <> nil) and (stRes > 0) then
7706 browserRec.Movement := IntToStr( stRes );
7707 DownloadContent(ThreadItem);
7710 if ThreadItem.IsLogFile then begin
7711 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7712 browserRec := InsertBrowserTab(ThreadItem);
7713 if (browserRec <> nil) and (stRes > 0) then
7714 browserRec.Movement := IntToStr( stRes );
7716 if AnsiPos(Host, Board.URL) = 0 then
7717 ThreadItem.DownloadHost := Host
7719 ThreadItem.DownloadHost := '';
7720 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7721 browserRec := InsertBrowserTab(ThreadItem);
7722 if (browserRec <> nil) and (stRes > 0) then
7723 browserRec.Movement := IntToStr( stRes );
7724 DownloadContent(ThreadItem);
7728 Board := BBSsFindBoardFromURL( inURL );
7729 if Board = nil then begin
7730 GikoSys.OpenBrowser(inURL, gbtAuto);
7732 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7733 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7734 SelectTreeNode( Board, True );
7739 procedure TGikoForm.AddressToolBarResize(Sender: TObject);
7741 AddressComboBox.Width := AddressToolBar.Width - MoveToToolButton.Width - 10;
7742 //CoolBarResized( Sender, MainCoolBar );
7745 procedure TGikoForm.AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
7746 Shift: TShiftState);
7748 if Key = VK_RETURN then
7749 MoveToAction.Execute;
7752 procedure TGikoForm.BrowserEnter(Sender: TObject);
7754 Browser.DoObjectVerb(OLEIVERB_UIACTIVATE);
7757 procedure TGikoForm.WMCopyData(var Message: TWMCopyData);
7759 CDS:PCopyDataStruct;
7763 CDS := Message.CopyDataStruct;
7764 GetMem(PC, CDS^.cbData);
7766 lstrcpy(PC,CDS^.lpData);
7767 SetString(sURL, PC,lstrlen(PC));
7772 Message.Result := 1;
7775 procedure TGikoForm.WndProc(var Message: TMessage);
7777 senderBrowser : TWebBrowser;
7783 if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then
7786 if Message.WParam = SC_MINIMIZE then
7789 TreeClick( TreeView.Selected );
7796 USER_DOCUMENTCOMPLETE:
7797 if (Message.WParam <> 0) and
7798 (TObject(Message.WParam) is TWebBrowser) then begin
7799 senderBrowser := TWebBrowser( Message.WParam );
7800 BrowserDocumentComplete( senderBrowser, senderBrowser.Parent, url );
7809 procedure TGikoForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
7811 hComboEdit: THandle;
7812 // KeyData: Integer;
7815 if AddressComboBox.Focused or SelectComboBox.Focused then begin
7816 if Msg.CharCode in [VK_BACK] then begin
7817 hComboEdit := GetFocus;
7818 if hComboEdit <> 0 then
7819 SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, Msg.KeyData);
7820 // SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, $000E0001);
7823 if Msg.CharCode in [VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT] then begin
7824 hComboEdit := GetFocus;
7825 if hComboEdit <> 0 then
7826 SendMessage(hComboEdit, WM_KEYDOWN, Msg.CharCode, Msg.KeyData);
7830 //
\83\81\83j
\83\85\81[
\82Ì
\83t
\83@
\83C
\83\8b(F)
\82Æ
\82©
\82ÅF
\82ð
\92P
\91Ì
\82Å
\89\9f\82µ
\82½
\82Æ
\82«
\82É
\91I
\91ð
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\8c»
\8fÛ
\82ð
\89ñ
\94ð
7831 KeyData := Msg.KeyData;
7832 if (KeyData and $20000000) = 0 then begin
7833 if Msg.CharCode in [Ord('F'), Ord('V'), Ord('B'), Ord('R'),
7834 Ord('A'), Ord('T'), Ord('H')] then begin
7835 if not ActionList.IsShortCut(Msg) then begin
7843 procedure TGikoForm.BrowserTabVisibleActionExecute(Sender: TObject);
7845 GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
7849 procedure TGikoForm.BrowserTabTopActionExecute(Sender: TObject);
7851 BrowserTabBottomAction.Checked := False;
7852 BrowserTabTopAction.Checked := True;
7853 GikoSys.Setting.BrowserTabPosition := gtpTop;
7857 procedure TGikoForm.BrowserTabBottomActionExecute(Sender: TObject);
7859 BrowserTabTopAction.Checked := False;
7860 BrowserTabBottomAction.Checked := True;
7861 GikoSys.Setting.BrowserTabPosition := gtpBottom;
7865 procedure TGikoForm.BrowserTabTabStyleActionExecute(Sender: TObject);
7867 BrowserTabButtonStyleAction.Checked := False;
7868 BrowserTabFlatStyleAction.Checked := False;
7869 BrowserTabTabStyleAction.Checked := True;
7870 GikoSys.Setting.BrowserTabStyle := gtsTab;
7874 procedure TGikoForm.BrowserTabButtonStyleActionExecute(Sender: TObject);
7876 BrowserTabTabStyleAction.Checked := False;
7877 BrowserTabFlatStyleAction.Checked := False;
7878 BrowserTabButtonStyleAction.Checked := True;
7879 GikoSys.Setting.BrowserTabStyle := gtsButton;
7883 procedure TGikoForm.BrowserTabFlatStyleActionExecute(Sender: TObject);
7885 BrowserTabFlatStyleAction.Checked := True;
7886 BrowserTabTabStyleAction.Checked := False;
7887 BrowserTabButtonStyleAction.Checked := False;
7888 GikoSys.Setting.BrowserTabStyle := gtsFlat;
7892 procedure TGikoForm.PreviewTimerTimer(Sender: TObject);
7898 HtmlFileName: string;
7902 TargetFrameName: OleVariant;
7903 PostData: OleVariant;
7904 Headers: OleVariant;
7905 WindowHeight: Integer;
7906 WindowWidth: Integer;
7910 Protocol, Host, Path, Document, Port, Bookmark: string;
7912 PreviewTimer.Enabled := False;
7916 case GikoSys.Setting.PreviewSize of
7923 WindowHeight := 192;
7927 WindowHeight := 384;
7931 WindowHeight := 480;
7933 else begin //gpsMedium
7935 WindowHeight := 288;
7939 ARect := Rect(0, 0, WindowWidth, WindowHeight);
7941 case GikoSys.Setting.PopupPosition of
7942 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7943 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7944 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
7945 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
7946 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
7947 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
7948 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7949 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7950 gppLeftBottom: OffsetRect(ARect, p.x + 15, p.y + 15); //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g
\82P
\82Ì453
\8e\81\82É
\8a´
\8eÓ
7953 html := '<html><head>'#13#10
7955 + 'function init() {'#13#10
7956 + ' if ((document.body.clientHeight >= Image1.height) && (document.body.clientWidth >= Image1.width)) {'#13#10
7958 + ' var dh, ih;'#13#10
7959 + ' dh = document.body.clientWidth / document.body.clientHeight;'#13#10
7960 + ' ih = Image1.width / Image1.height;'#13#10
7961 + ' if (document.body.clientWidth < document.body.clientHeight) {'#13#10
7962 + ' if (ih > dh)'#13#10
7963 + ' Image1.width = document.body.clientWidth;'#13#10
7965 + ' Image1.height = document.body.clientHeight;'#13#10
7967 + ' if (ih < dh)'#13#10
7968 + ' Image1.height = document.body.clientHeight;'#13#10
7970 + ' Image1.width = document.body.clientWidth;'#13#10
7973 + ' Message.style.display = "none";'#13#10
7977 + '<body topmargin="0" leftmargin="0" style="border-width: 1px; overflow:hidden; border-style: solid;" onLoad="init()">'#13#10
7978 + '<div align="center" id="Message">
\83v
\83\8c\83r
\83\85\81[
\8dì
\90¬
\92\86</div>'#13#10
7979 + '<div align="center"><img name="Image1" border="0" src="%ImageURL%"></div>'#13#10
7981 sl := TStringList.Create;
7984 HtmlFileName := GikoSys.GetAppDir + HTML_FILE_NAME;
7985 sl.Text := AnsiReplaceStr(html, '%ImageURL%', FPreviewURL);
7986 sl.SaveToFile(HtmlFileName);
7993 NavURL := HtmlFileName;
7995 TargetFrameName := '';
7998 GikoSys.ParseURI(FPreviewURL, Protocol, Host, Path, Document, Port, Bookmark);
7999 Referer := Protocol + '://' + Host;
8001 Referer := Referer + ':' + Port;
8002 Referer := Referer + Path;
8003 Headers := 'Referer: ' + Referer;
8004 FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
8005 if ARect.Top + WindowHeight > Screen.DesktopHeight then
8006 ARect.Top := Screen.DesktopHeight - WindowHeight;
8007 if ARect.Left + WindowWidth > Screen.DesktopWidth then
8008 ARect.Left := Screen.DesktopWidth - WindowWidth;
8009 if ARect.Left < Screen.DesktopLeft then ARect.Left := Screen.DesktopLeft;
8010 if ARect.Bottom < Screen.DesktopTop then ARect.Bottom := Screen.DesktopTop;
8012 SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW);
8013 ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE);
8015 // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE);
8016 // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW);
8020 procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor);
8022 if PreviewTimer.Enabled then
8023 PreviewTimer.Enabled := False;
8024 if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin
8025 FHint.ReleaseHandle;
8028 if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then
8029 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
8030 Message.Result := 1;
8034 procedure TGikoForm.MessageHideButtonClick(Sender: TObject);
8036 MsgBarCloseAction.Execute;
8039 function TGikoForm.OnDocumentContextMenu(Sender: TObject): WordBool;
8041 Doc: IHtmlDocument2;
8042 Range: IHTMLTxtRange;
8045 ThreadItem: TThreadItem;
8048 Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
8049 if Assigned(Doc) then begin
8050 Range := Doc.selection.createRange as IHTMLTxtRange;
8051 s := CustomStringReplace(Range.text, '
\81@', ' ');//
\91S
\8ap
\8bó
\94\92\82ð
\94¼
\8ap
\8bó
\94\92\82É
8052 s := ZenToHan(Trim(s));
8053 if GikoSys.IsNumeric(s) then begin
8055 ThreadItem := GetActiveContent;
8056 if ThreadItem <> nil then begin
8058 FHint.PopupType := gptThread;
8059 SetResPopupText(ThreadItem, Num, Num, False, False);
8060 if FHint.ResCount <> 0 then
8071 procedure TGikoForm.SetResPopupText(threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
8083 boardPlugIn : TBoardPlugIn;
8086 if StNum > ToNum then begin
8092 //
\8dÅ
\91å10
\83\8c\83X
\82Ü
\82Å
\95\
\8e¦
8093 if StNum + MAX_POPUP_RES < ToNum then
8094 ToNum := StNum + MAX_POPUP_RES;
8096 //
\83^
\83C
\83g
\83\8b\95\
\8e¦
8098 if ThreadItem <> nil then
8099 FHint.Title := ThreadItem.Title;
8101 if ThreadItem <> nil then begin
8102 if ThreadItem.IsBoardPlugInAvailable then begin
8103 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
8104 boardPlugIn := ThreadItem.BoardPlugIn;
8106 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
8107 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
8108 for i := StNum to ToNum do begin
8110 //
\82±
\82±
\82Å
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\82Ìdat
\82Ì
\8c`
\8e®
\82Å
\82P
\8ds
\93Ç
\82Ý
\8d\9e\82ß
\82ê
\82Î¥¥¥
\81B
\81«
\93Ç
\82ß
\82é
\82æ
\82¤
\82É
\82È
\82Á
\82½
8111 tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
8112 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
8113 Res := GikoSys.DivideStrLine(tmp);
8114 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
8115 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
8117 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
8120 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
8121 Body := CustomStringReplace(Body, '<br>', #10,true);
8122 Body := CustomStringReplace(Body, '</a>', '',true);
8123 Body := GikoSys.DeleteLink(Body);
8124 Body := CustomStringReplace(Body, '<', '<');
8125 Body := CustomStringReplace(Body, '>', '>');
8126 Body := CustomStringReplace(Body, '"', '"');
8127 Body := CustomStringReplace(Body, '&', '&');
8128 Body := CustomStringReplace(Body, ' ', ' ');
8130 FHint.Add(Header, Body);
8131 //FHint.Title := '';
8135 for i := StNum to ToNum do begin
8137 FileName := ThreadItem.FilePath;
8138 tmp := GikoSys.ReadThreadFile(FileName, Line);
8139 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
8140 Res := GikoSys.DivideStrLine(tmp);
8141 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
8142 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
8144 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
8146 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
8147 Body := CustomStringReplace(Body, '<br>', #10,true);
8148 Body := CustomStringReplace(Body, '</a>', '',true);
8149 Body := GikoSys.DeleteLink(Body);
8150 Body := CustomStringReplace(Body, '<', '<');
8151 Body := CustomStringReplace(Body, '>', '>');
8152 Body := CustomStringReplace(Body, '"', '"');
8153 Body := CustomStringReplace(Body, '&', '&');
8154 Body := CustomStringReplace(Body, ' ', ' ');
8155 FHint.Add(Header, Body);
8156 //FHint.Title := ''; //
\82½
\82Ô
\82ñ
\82±
\82ê
\82Í
\82¢
\82ç
\82È
\82¢
\82ñ
\82¾
\82¯
\82Ç
\82Ë
\81B
\82à
\82¶
\82ã
\82â
\82Á
\82Ï
\82è
\82¢
\82ç
\82È
\82©
\82Á
\82½
\81i2004/01/13
\81j
8165 procedure TGikoForm.ShowTextPopup;
8170 // if Trim(s) = '' then
8173 FHint.Font.Name := GikoSys.Setting.HintFontName;
8174 FHint.Font.Size := GikoSys.Setting.HintFontSize;
8175 FHint.Font.Color := GikoSys.Setting.HintFontColor;
8176 FHint.Color := GikoSys.Setting.HintBackColor;
8177 FHint.HeaderBold := GikoSys.Setting.ResPopupHeaderBold;
8179 if FHint.PopupType = gptRaw then
8180 ARect := FHint.CalcHintRect(Screen.Width, FHint.Caption, nil)
8182 ARect := FHint.CalcHintRect(Screen.Width, '', nil);
8183 case GikoSys.Setting.PopupPosition of
8184 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8185 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8186 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
8187 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
8188 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
8189 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
8190 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8191 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8192 gppLeftBottom: OffsetRect(ARect, p.x + 15, p.y + 15); //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g
\82P
\82Ì453
\8e\81\82É
\8a´
\8eÓ
8194 //FHint.ActivateHint(ARect, s);
8195 if FHint.PopupType = gptRaw then
8196 FHint.ActivateHint(ARect, FHint.Caption)
8198 FHint.ActivateHint(ARect, '');
8200 FHint.ReleaseHandle;
8205 procedure TGikoForm.GikoHelpActionExecute(Sender: TObject);
8209 FileName := GikoSys.GetAppDir + 'batahlp.chm';
8210 if not FileExists(FileName) then begin
8213 '
\83w
\83\8b\83v
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½' + #13#10 +
8214 '
\83w
\83\8b\83v
\83t
\83@
\83C
\83\8b\82ð
\83M
\83R
\83i
\83r
\82Ì
\83t
\83H
\83\8b\83_
\82É
\92u
\82¢
\82Ä
\82
\82¾
\82³
\82¢' + #13#10 +
8215 '
\83w
\83\8b\83v
\82Í
\83M
\83R
\83i
\83r
\82Ì
\83T
\83C
\83g
\82É
\92u
\82¢
\82Ä
\82 \82è
\82Ü
\82·',
8220 ShellExecute(Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
8223 procedure TGikoForm.ToolButton18Click(Sender: TObject);
8225 DEL_MSG = '
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
8226 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
8228 if FTreeType = gttHistory then begin
8229 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
8230 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
8234 TreeView.Items.Clear;
8238 procedure TGikoForm.KotehanActionExecute(Sender: TObject);
8240 Dlg: TKotehanDialog;
8242 Dlg := TKotehanDialog.Create(Self);
8250 procedure TGikoForm.SetLinkBar;
8254 ToolButton: TLinkToolButton;
8255 MenuItem: TMenuItem;
8256 oldIgnoreResize : TResizeType;
8258 oldIgnoreResize := FIsIgnoreResize;
8259 FIsIgnoreResize := rtResizing;
8260 MainCoolBar.Bands.BeginUpdate;
8262 LinkBarPopupMenu.Items.Clear;
8263 for i := LinkToolBar.ButtonCount - 1 downto 0 do
8264 //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
8265 LinkToolBar.Buttons[i].Free;
8266 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8267 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8268 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8269 ToolButton := TLinkToolButton.Create(LinkToolBar);
8270 // ToolButton.Parent := LinkToolBar;
8271 if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteFolder then begin
8272 MenuItem := TMenuItem.Create(Self);
8273 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem);
8274 LinkBarPopupMenu.Items.Add(MenuItem);
8275 ToolButton.MenuItem := MenuItem;
8276 ToolButton.ImageIndex := TOOL_ICON_FAV_FOLDER;
8277 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteBoardItem then begin
8278 ToolButton.ImageIndex := TOOL_ICON_FAV_BOARD;
8279 ToolButton.OnClick := FavoriteClick;
8280 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteThreadItem then begin
8281 ToolButton.ImageIndex := TOOL_ICON_FAV_THREAD;
8282 ToolButton.OnClick := FavoriteClick;
8284 ToolButton.Caption := FavoriteTreeView.Items[i].Item[j].Text;
8285 ToolButton.Left := 10000;
8286 ToolButton.Data := FavoriteTreeView.Items[i].Item[j].Data;
8287 ToolButton.AutoSize := True;
8288 ToolButton.OnDragDrop := LinkToolButtonDragDrop;
8289 ToolButton.OnDragOver := FavoriteDragOver;
8290 ToolButton.OnMouseDown := LinkToolButtonOnMouseDown;
8291 ToolButton.OnMouseMove := LinkToolButtonOnMouseMove;
8292 ToolButton.OnMouseUp := LinkToolButtonOnMouseUp;
8293 ToolButton.OnStartDrag := LinkToolButtonStartDrag;
8294 //ToolButton.DragMode := dmAutomatic;
8295 ToolButton.DragMode := dmManual;
8296 ToolButton.PopupMenu := FavoriteTreePopupMenu;
8298 LinkToolBar.InsertControl(ToolButton);
8303 { if LinkToolBar.ButtonCount = 0 then begin
8304 ToolButton := TLinkToolButton.Create(LinkToolBar);
8305 ToolButton.Style := tbsButton;
8306 ToolButton.ImageIndex := -1;
8307 ToolButton.Caption := '';
8308 LinkToolBar.InsertControl(ToolButton);
8311 MainCoolBar.Bands.EndUpdate;
8312 LoadCoolBarSettings;
8313 FIsIgnoreResize := oldIgnoreResize;
8317 procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8325 if Sender = FavoriteTreeView then begin
8326 Node := FavoriteTreeView.GetNodeAt(X, Y);
8331 bound := Node.DisplayRect( False );
8332 height := bound.Bottom - bound.Top;
8333 if (bound.Top + height / 2) <= Y then
8334 Node := FavoriteTreeView.GetNodeAt(X, Y + height);
8339 if Node.IsFirstNode then
8344 if FDropSpaceNode <> nil then
8345 if FDropSpaceNode.AbsoluteIndex = Node.AbsoluteIndex then
8348 if Change then begin
8349 if FDropSpaceNode <> nil then
8350 FDropSpaceNode.Free;
8352 FDropSpaceNode := FavoriteDM.TreeView.Items.AddChildObjectFirst(Node.Parent, '', nil );
8353 FDropSpaceNode.MoveTo( Node, naInsert );
8354 FDropSpaceNode.ImageIndex := -1;
8355 FDropSpaceNode.SelectedIndex := -1;
8359 if Source = FavoriteTreeView then begin
8360 if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
8365 end else if Source = BrowserTab then
8367 else if Source = ListView then
8369 else if Source is TLinkToolButton then
8371 else if Source = TreeView then
8377 procedure TGikoForm.FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8380 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
8383 procedure TGikoForm.LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
8385 // FDragging := true;
8388 procedure TGikoForm.LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
8390 SenderNode: TTreeNode;
8391 LinkToolButton: TLinkToolButton;
8394 LinkToolButton := TLinkToolButton( Sender );
8395 SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
8397 FavoriteDragDrop( SenderNode, Source );
8401 procedure TGikoForm.LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8403 favButton : TLinkToolButton;
8404 favThreadItem : TFavoriteThreadItem;
8410 if Sender is TLinkToolButton then begin
8411 favButton := TLinkToolButton( Sender );
8412 if TObject( favButton.Data ) is TFavoriteThreadItem then begin
8413 favThreadItem := TFavoriteThreadItem( favButton.Data );
8414 if favThreadItem.Item <> nil then
8415 InsertBrowserTab( favThreadItem.Item, False );
8423 procedure TGikoForm.LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
8427 TToolButton( Sender ).DragMode := dmManual;
8428 if ssLeft in Shift then begin
8429 // TToolButton( Sender ).Down := true; //
\83\8a\83\93\83N
\83c
\81[
\83\8b\83o
\81[
\82Ì
\8b\93\93®
\95s
\90R
\82Ì
\8c´
\88ö
\82Ì
\82æ
\82¤
\82È
\82Ì
\82Å
\83R
\83\81\83\93\83g
\83A
\83E
\83g
\82µ
\82½(2003-dec-02)
8430 if FDragTime = 0 then begin
8431 FDragTime := GetTickCount();
8433 Now := GetTickCount();
8434 if (Now - FDragTime) > 500 then begin
8435 if FDragButton <> TToolButton( Sender ) then begin
8437 FDragButton := TToolButton( Sender );
8438 TToolButton(Sender).BeginDrag(false ,5);
8441 {$IF Defined(debug)}
8442 ShowMessage('Error');
8453 procedure TGikoForm.LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8458 function TGikoForm.GetWidthAllToolButton(ToolBar: TToolBar): Integer;
8463 for i := 0 to ToolBar.ButtonCount - 1 do
8464 if ToolBar.Buttons[i].Visible then
8465 Result := Result + ToolBar.Buttons[i].Width;
8468 procedure TGikoForm.MainCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8470 Control : TWinControl;
8473 Control := FindControl(BandInfo^.hwndChild);
8474 if Control = nil then
8477 for i := MainCoolBar.Bands.Count - 1 downto 0 do begin
8478 if MainCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8479 idx := MainCoolBar.Bands[ i ].ID;
8483 Canvas.Font.Handle := GetStockObject( DEFAULT_GUI_FONT );
8484 if (Control = MenuToolBar) or (Control = StdToolBar) then begin
8485 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8486 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8487 BandInfo^.cxMinChild := 0;
8488 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth;
8489 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8490 end else if Control = LinkToolBar then begin
8491 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8492 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8493 BandInfo^.cxMinChild := 0;
8494 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83\8a\83\93\83N' );
8495 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8496 end else begin // AddressToolBar
8497 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8498 BandInfo^.cxMinChild := 0;
8499 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83A
\83h
\83\8c\83X' );
8503 procedure TGikoForm.MainCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8509 ChevronPopupMenu.Items.Clear;
8511 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8512 if MainCoolBar.Bands[ i ].Visible then begin
8513 if Idx = Int64(RebarChevron^.uBand) then begin
8520 if (Idx >= 0) and (MainCoolBar.Bands.Count > Idx) then begin
8521 if MainCoolBar.Bands[Idx].Control = MenuToolbar then begin
8523 end else if MainCoolBar.Bands[Idx].Control = StdToolbar then begin
8524 ToolBarChevronMenu(StdToolBar);
8525 end else if MainCoolBar.Bands[Idx].Control = LinkToolbar then begin
8529 p := MainCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8530 ChevronPopupMenu.Popup(p.x, p.y);
8534 procedure TGikoForm.MenuBarChevronMenu;
8535 procedure SetSubMenu(MenuItem: TMenuItem; PopupItem: TMenuItem);
8541 for i := 0 to MenuItem.Count - 1 do begin
8543 if MenuItem[i] is TFavoriteMenuItem then begin
8544 Item := TFavoriteMenuItem.Create(Self);
8545 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(MenuItem[i]).Data;
8547 Item := TMenuItem.Create(Self);
8548 Item.Caption := MenuItem[i].Caption;
8549 Item.Action := MenuItem[i].Action;
8550 Item.ImageIndex := MenuItem[i].ImageIndex;
8551 Item.OnClick := MenuItem[i].OnClick;
8552 PopupItem.Add(Item);
8553 if MenuItem[i].Count > 0 then
8554 SetSubMenu(MenuItem[i], Item);
8563 ChevronPopupMenu.Items.Clear;
8564 ChevronPopupMenu.Images := MainMenu.Images;
8565 bw := GetWidthAllToolButton(MenuToolBar);
8566 if MenuToolBar.Width < bw then begin
8568 for i := 0 to MenuToolBar.ButtonCount - 1 do begin
8569 w := w + MenuToolBar.Buttons[i].Width;
8570 if MenuToolBar.Width <= w then begin
8571 Item := TMenuItem.Create(Self);
8572 Item.Caption := MenuToolBar.Buttons[i].MenuItem.Caption;
8573 //Item.Action := MenuToolBar.Buttons[i].MenuItem.Action;
8574 ChevronPopupMenu.Items.Add(Item);
8575 SetSubMenu(MenuToolbar.Buttons[i].MenuItem, Item);
8581 procedure TGikoForm.ToolBarChevronMenu(ToolBar: TToolBar);
8582 procedure SetSubMenu(PopupMenu: TPopupMenu; PopupItem: TMenuItem);
8587 if Assigned(PopupMenu.OnPopup) then
8588 PopupMenu.OnPopup(nil);
8589 for i := 0 to PopupMenu.Items.Count - 1 do begin
8591 if PopupMenu.Items[i] is TFavoriteMenuItem then begin
8592 Item := TFavoriteMenuItem.Create(Self);
8593 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(PopupMenu.Items[i]).Data;
8595 Item := TMenuItem.Create(Self);
8596 Item.Caption := PopupMenu.Items[i].Caption;
8597 Item.Action := PopupMenu.Items[i].Action;
8598 Item.ImageIndex := PopupMenu.Items[i].ImageIndex;
8599 Item.OnClick := PopupMenu.Items[i].OnClick;
8600 PopupItem.Add(Item);
8609 ChevronPopupMenu.Items.Clear;
8610 ChevronPopupMenu.Images := ToolBar.HotImages;
8611 bw := GetWidthAllToolButton(ToolBar);
8612 if ToolBar.Width < bw then begin
8614 for i := 0 to ToolBar.ButtonCount - 1 do begin
8615 w := w + ToolBar.Buttons[i].Width;
8616 if ToolBar.Width <= w then begin
8617 Case ToolBar.Buttons[i].Tag of
8620 Item := TMenuItem.Create(Self);
8621 if ToolBar.Buttons[i].Style = tbsSeparator then
8624 Item.Caption := ToolBar.Buttons[i].Caption;
8625 Item.Action := ToolBar.Buttons[i].Action;
8626 //Item.Visible := True;
8628 ChevronPopupMenu.Items.Add(Item);
8629 if ToolBar.Buttons[i].DropdownMenu <> nil then begin
8631 Item.OnClick := nil;
8632 SetSubMenu(ToolBar.Buttons[i].DropdownMenu, Item);
8636 //
\8f«
\97\88\82Ì
\82½
\82ß
\82Ì
\97\
\96ñ
8643 procedure TGikoForm.LinkBarChevronMenu;
8648 Item: TFavoriteMenuItem;
8650 Button: TLinkToolButton;
8652 ChevronPopupMenu.Items.Clear;
8653 ChevronPopupMenu.Images := LinkToolBar.Images;
8654 bw := GetWidthAllToolButton(LinkToolBar);
8655 if LinkToolBar.Width < bw then begin
8657 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8658 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8659 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8660 w := w + LinkToolBar.Buttons[j].Width;
8661 if LinkToolBar.Width <= w then begin
8662 if LinkToolBar.Buttons[j] is TLinkToolButton then begin
8663 Button := TLinkToolButton(LinkToolBar.Buttons[j]);
8664 Item := TFavoriteMenuItem.Create(Self);
8665 if TObject(Button.Data) is TFavoriteFolder then begin
8666 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], Item);
8667 end else if TObject(Button.Data) is TFavoriteBoardItem then begin
8668 Item.OnClick := FavoriteClick;
8669 end else if TObject(Button.Data) is TFavoriteThreadItem then begin
8670 Item.OnClick := FavoriteClick;
8672 Item.Data := Button.Data;
8673 Item.Caption := LinkToolBar.Buttons[j].Caption;
8674 Item.ImageIndex := LinkToolBar.Buttons[j].ImageIndex;
8675 ChevronPopupMenu.Items.Add(Item);
8686 \brief
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
8687 \param bar
\83o
\83\93\83h
\82ª
\8f\8a\91®
\82·
\82é CoolBar
8688 \param band
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
\83o
\83\93\83h
8690 \93Æ
\8e©
\82É
\83o
\83\93\83h
\82É
\94z
\92u
\82³
\82ê
\82Ä
\82¢
\82é
\83R
\83\93\83g
\83\8d\81[
\83\8b\82Ì
\83T
\83C
\83Y
\82ð
\95Ï
\8dX
\82µ
\82½
\8fê
\8d\87\82É
8691 \83V
\83F
\83u
\83\8d\83\93\82Ì
\95\
\8e¦
\88Ê
\92u
\82ð
\8dÄ
\90Ý
\92è
\82·
\82é
\82½
\82ß
\82É
\8eg
\97p
\82µ
\82Ü
\82·
\81B
8693 procedure TGikoForm.ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
8695 bandInfo : tagREBARBANDINFOA;
8696 pBandInfo : PReBarBandInfoA;
8703 pBandInfo := @bandInfo;
8704 ZeroMemory( pBandInfo, sizeof( bandInfo ) );
8705 bandInfo.cbSize := sizeof( bandInfo );
8706 bandInfo.hwndChild := h;
8707 bandInfo.cyMinChild := bar.Height;
8708 bar.OnBandInfo( nil, pBandInfo );
8709 // band
\82Ì
\83C
\83\93\83f
\83b
\83N
\83X
\82ð
\92T
\82·
8711 for i := bar.Bands.Count - 1 downto 0 do begin
8712 if bar.Bands[ i ].Control.Handle = h then begin
8718 lResult := SendMessage( bar.Handle, RB_SETBANDINFO, idx, Integer( pBandInfo ) );
8722 procedure TGikoForm.ListCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8724 Control: TWinControl;
8727 Control := FindControl(BandInfo^.hwndChild);
8728 if Control = nil then
8731 for i := ListCoolBar.Bands.Count - 1 downto 0 do begin
8732 if ListCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8733 idx := ListCoolBar.Bands[ i ].ID;
8737 if Control = ListToolBar then begin
8738 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8739 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8740 BandInfo^.cxMinChild := 0;
8741 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8742 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8744 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8745 BandInfo^.cxMinChild := 0;
8746 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8750 procedure TGikoForm.ListCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8755 ChevronPopupMenu.Items.Clear;
8756 Idx := RebarChevron^.uBand;
8757 if (Idx >= 0) and (ListCoolBar.Bands.Count > Idx) then begin
8758 if ListCoolBar.Bands[Idx].Control = ListToolBar then begin
8759 ToolBarChevronMenu(ListToolBar);
8762 p := ListCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8763 ChevronPopupMenu.Popup(p.x, p.y);
8767 procedure TGikoForm.BrowserCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8769 Control: TWinControl;
8772 Control := FindControl(BandInfo^.hwndChild);
8773 if Control = nil then
8776 for i := BrowserCoolBar.Bands.Count - 1 downto 0 do begin
8777 if BrowserCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8778 idx := BrowserCoolBar.Bands[ i ].ID;
8782 if Control = BrowserToolBar then begin
8783 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8784 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8785 BandInfo^.cxMinChild := 0;
8786 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8787 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8789 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8790 BandInfo^.cxMinChild := 0;
8791 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8795 procedure TGikoForm.BrowserCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8800 ChevronPopupMenu.Items.Clear;
8801 Idx := RebarChevron^.uBand;
8802 if (Idx >= 0) and (BrowserCoolBar.Bands.Count > Idx) then begin
8803 if BrowserCoolBar.Bands[Idx].Control = BrowserToolBar then
8804 ToolBarChevronMenu(BrowserToolBar)
8807 p := BrowserCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8808 ChevronPopupMenu.Popup(p.x, p.y);
8812 procedure TGikoForm.ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
8814 if Column^.iImage = -1 then begin
8815 Column^.mask := Column^.mask or LVCF_FMT;
8817 Column^.mask := Column^.mask or LVCF_FMT or LVCF_IMAGE;
8818 Column^.fmt := Column^.fmt or LVCFMT_IMAGE or LVCFMT_BITMAP_ON_RIGHT;
8822 procedure TGikoForm.ThreadEditorActionExecute(Sender: TObject);
8824 Editor: TEditorForm;
8826 if not (GetActiveList is TBoard) then
8828 Editor := TEditorForm.Create(Self);
8829 Editor.SetBoard(TBoard(GetActiveList));
8831 Editor.BodyEdit.SetFocus;
8834 procedure TGikoForm.ToolBarSettingActionExecute(Sender: TObject);
8836 Dlg: TToolBarSettingDialog;
8838 //Component: TComponent;
8840 Dlg := TToolBarSettingDialog.Create(Self, ActionList);
8842 Dlg.AddToolBar(StdToolBar, gttStandard);
8843 Dlg.AddToolBar(ListToolBar, gttList);
8844 Dlg.AddToolBar(BrowserToolBar, gttBrowser);
8845 case FToolBarSettingSender of
8846 tssMain: Dlg.ToolBarIndex := 0;
8847 tssList: Dlg.ToolBarIndex := 1;
8848 tssBrowser: Dlg.ToolBarIndex := 2;
8851 if ToolBarSettingAction.ActionComponent.GetParentComponent is TPopupMenu then begin
8852 Component := TPopupMenu( ToolBarSettingAction.ActionComponent.GetParentComponent ).PopupComponent;
8854 if Component = MainCoolBar then
8855 Dlg.ToolBarComboBox.ItemIndex := 0
8856 else if Component = ListCoolBar then
8857 Dlg.ToolBarComboBox.ItemIndex := 1
8858 else if Component = BrowserCoolBar then
8859 Dlg.ToolBarComboBox.ItemIndex := 2;
8862 if Dlg.ShowModal = mrOK then begin
8865 //
\8dÅ
\93K
\95\9d\82ð
\8dÄ
\90Ý
\92è
\82·
\82é
\82½
\82ß
\82É
\93K
\93\96\82È
\83v
\83\8d\83p
\83e
\83B
\82ð
\82¢
\82¶
\82
\82é
8866 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8867 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth + 1;
8868 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth - 1;
8870 for i := 0 to ListCoolBar.Bands.Count - 1 do begin
8871 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth + 1;
8872 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth - 1;
8874 for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
8875 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;
8876 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;
8878 SaveToolBarSetting(StdToolBar);
8879 SaveToolBarSetting(ListToolBar);
8880 for i := ListToolBar.ControlCount - 1 downto 0 do
8882 if ListToolBar.Controls[ i ].Action = SelectItemAction then
8884 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\82Ì
\97×
\82É
\83Z
\83p
\83\8c\81[
\83^
\82ª
\82 \82é
\8fê
\8d\87\82Í
\89B
\82·
8885 if (i + 1) < ListToolBar.ControlCount then
8886 if ListToolBar.Controls[ i + 1 ] is TToolButton then
8887 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
8888 ListToolBar.Controls[ i + 1 ].Visible := False;
8890 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
8891 ListToolBar.Controls[ i ].Visible := False;
8892 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
8893 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
8894 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
8895 SelectComboBox.Parent := ListToolBar;
8896 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
8897 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
8898 SelectComboBoxSplitter.Parent := ListToolBar;
8903 ResetBandInfo( ListCoolBar, ListToolBar );
8904 SaveToolBarSetting(BrowserToolBar);
8908 FToolBarSettingSender := tssNone;
8912 function TGikoForm.FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
8917 for i := bar.ButtonCount - 1 downto 0 do begin
8918 if bar.Buttons[ i ].Action = action then begin
8919 Result := bar.Buttons[ i ];
8928 procedure TGikoForm.SetToolBarPopup;
8931 aIEButton : TToolButton;
8932 aCabinetBBSButton : TToolButton;
8933 aResRangeButton : TToolButton;
8934 aThreadRangeButton: TToolButton;
8936 for i := 0 to StdToolBar.ButtonCount - 1 do begin
8938 for i := 0 to ListToolBar.ButtonCount - 1 do begin
8939 if ListToolBar.Buttons[i].Action = IconStyle then
8940 ListToolBar.Buttons[i].DropdownMenu := ListIconPopupMenu;
8941 if ListToolBar.Buttons[i].Action = SelectReservAction then
8942 ListToolBar.Buttons[i].DropdownMenu := RoundNamePopupMenu;
8944 aIEButton := FindToolBarButton( BrowserToolBar, IEAction );
8945 if aIEButton <> nil then
8946 aIEButton.DropdownMenu := BrowserPopupMenu;
8947 aCabinetBBSButton := FindToolBarButton( StdToolBar, CabinetBBSAction );
8948 if aCabinetBBSButton <> nil then
8949 aCabinetBBSButton.DropdownMenu := BBSSelectPopupMenu;
8950 aResRangeButton := FindToolBarButton( BrowserToolBar, ResRangeAction );
8951 if aResRangeButton <> nil then
8952 aResRangeButton.DropdownMenu := ResRangePopupMenu;
8953 aThreadRangeButton:= FindToolBarButton( ListToolBar, ThreadRangeAction );
8954 if aThreadRangeButton <> nil then
8955 aThreadRangeButton.DropdownMenu := ThreadRangePopupMenu;
8958 procedure TGikoForm.FormMouseWheel(Sender: TObject; Shift: TShiftState;
8959 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
8963 // browserPos : TPoint;
8967 Wnd := WindowFromPoint(Mouse.CursorPos);
8969 if WheelDelta > 0 then
8974 if (Wnd = BrowserTab.Handle) or
8975 (Wnd = BrowserTab.Parent.Handle) then begin
8976 BrowserTab.ScrollTabs(Delta);
8978 if FIsHandledWheel then begin
8979 FIsHandledWheel := False;
8982 FIsHandledWheel := True;
8983 if (Wnd = TreeView.Handle) or (Wnd = FavoriteTreeView.Handle)
8984 or (Wnd = ListView.Handle) or (Wnd = MessageListView.Handle)
8986 SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (Mouse.CursorPos.X shl 16) or Mouse.CursorPos.Y )
8991 // if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
8992 // TWebBrowser
\82Ì Handle
\82Æ
\94ä
\8ar
\82µ
\82Ä
\82à
\88ê
\92v
\82µ
\82È
\82¢
\82Ì
\82Å
\8dÀ
\95W
\82Å TWebBrowser
\82©
\82Ç
\82¤
\82©
\94»
\92è
8995 Windows.ClientToScreen( Browser.Handle, browserPos );
8996 if (Longword(Mouse.CursorPos.X - browserPos.X) >= Browser.Width)
8997 or (Longword(Mouse.CursorPos.Y - browserPos.Y) >= Browser.Height)
8998 or (Longword(Mouse.CursorPos.Y - browserPos.Y) < 0)
8999 or (Longword(Mouse.CursorPos.Y - browserPos.Y) < 0) then begin
9000 // or not FActiveContent.Browser.Focused then
9001 // TWebBrowser
\82Í
\96³
\8cÀ
\83\8b\81[
\83v
\82·
\82é
\82Ì
\82Å
\82»
\82ê
\88È
\8aO
\82È
\82ç
\83R
\83\93\83g
\83\8d\81[
\83\8b\82É
\91\97\90M
9002 if (Wnd <> BrowserToolBar.Handle) and (Wnd <> BrowserNameToolBar.Handle) then
9003 SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (Mouse.CursorPos.X shl 16) or Mouse.CursorPos.Y )
9010 // SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (MousePos.X shl 16) or MousePos.Y );
9017 procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
9019 if Length( SelectComboBox.Text ) = 0 then
9021 AllItemAction.Checked := True;
9022 LogItemAction.Checked := False;
9023 NewItemAction.Checked := False;
9025 //
\83`
\83\89\82Â
\82
\82Æ
\8c\99\82¾
\82©
\82ç
\81A
\88ê
\89\9e\89\9f\82µ
\82Ä
\82 \82é
\82Æ
\82«
\82¾
\82¯
\8f\88\97\9d\82·
\82é
9026 if AllItemAction.Checked then
9027 AllItemAction.Checked := False;
9028 if LogItemAction.Checked then
9029 LogItemAction.Checked := False;
9030 if NewItemAction.Checked then
9031 NewItemaction.Checked := False;
9034 if Length( SelectComboBox.Text ) = 0 then
9035 SetListViewType( gvtAll )
9037 SetListViewType( gvtUser, SelectComboBox.Text, false);
9040 procedure TGikoForm.SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
9041 Shift: TShiftState);
9044 if Key = VK_Return then
9047 end else if Length( SelectComboBox.Text ) = 0 then
9049 {* SelectComboBox.Text
\82ª
\8bó
\82Å
\82à
\81A
\93ü
\97Í
\93r
\92\86\82ÅEsc
\82µ
\82½
\82Æ
\82©
9050 *
\8bó
\82Ì
\82Æ
\82«
\82ÉDel
\83L
\81[
\82ð
\89\9f\82µ
\82½
\82Æ
\82©
\82È
\82Ì
\82Å
\81A
\83X
\83\8c\82Ì
\8di
\8d\9e\82Ý
\82ð
\88Û
\8e\9d\82·
\82é
\81B
9051 *
\81i
\82±
\82±
\82Å
\82Í
\89½
\82à
\82µ
\82È
\82¢
\81j
9054 //
\83`
\83\89\82Â
\82
\82Æ
\8c\99\82¾
\82©
\82ç
\81A
\88ê
\89\9e\89\9f\82µ
\82Ä
\82 \82é
\82Æ
\82«
\82¾
\82¯
\8f\88\97\9d\82·
\82é
9055 if AllItemAction.Checked then
9056 AllItemAction.Checked := False;
9057 if LogItemAction.Checked then
9058 LogItemAction.Checked := False;
9059 if NewItemAction.Checked then
9060 NewItemaction.Checked := False;
9065 procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
9070 if Length( SelectComboBox.Text ) = 0 then
9072 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
9073 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
9078 //
\8di
\82è
\8d\9e\82Ý
\8c\9f\8dõ
\82Ì
\97\9a\97ð
\8dX
\90V
9079 procedure TGikoForm.ModifySelectList;
9086 if SelectComboBox.Parent = nil then
9089 if Length( SelectComboBox.Text ) > 0 then
9091 oldText := SelectComboBox.Text;
9092 idx := GikoSys.Setting.SelectTextList.IndexOf( oldText );
9094 GikoSys.Setting.SelectTextList.Delete( idx );
9095 idx := SelectComboBox.Items.IndexOf( oldText );
9097 SelectComboBox.Items.Delete( idx );
9098 GikoSys.Setting.SelectTextList.Insert( 0, oldText );
9099 SelectComboBox.Items.Insert( 0, oldText );
9100 SelectComboBox.Text := oldText;
9108 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\8dÄ
\93Ç
\82Ý
\8d\9e\82Ý
\82·
\82é
9109 procedure TGikoForm.SelectResActionExecute(Sender: TObject);
9111 Dlg: TListSelectDialog;
9112 ThreadItem : TThreadItem;
9113 FilterList : TStringList;
9116 Dlg := TListSelectDialog.Create(Self);
9118 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
9119 Dlg.SelectComboBox.Text := FSelectResWord;
9121 if Dlg.ModalResult = mrOK then begin
9122 SelectResAction.Checked := True;
9123 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
9124 //
\8bó
\93ü
\97Í
\82Å OK
\82Í
\8di
\82è
\8d\9e\82Ý
\89ð
\8f\9c\82Æ
\93¯
\88Ó
\8b`
9125 ResRangeAction.Execute;
9127 GikoSys.ResRange := Ord( grrSelect );
9129 //
\8dÅ
\8cã
\82É
\90Ý
\92è
\82µ
\82½
\82à
\82Ì
\82ð
\8ao
\82¦
\82Ä
\82¨
\82
9130 FSelectResWord := Dlg.SelectComboBox.Text;
9132 //
\8c\9f\8dõ
\97\9a\97ð
\82Ì
\8dX
\90V
9133 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
9135 GikoSys.Setting.SelectTextList.Delete(idx);
9136 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
9137 while Dlg.SelectComboBox.Items.Count > 100 do begin
9138 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
9142 if SelectComboBox.Parent <> nil then
9143 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
9147 //
\83t
\83B
\83\8b\83^
\82Ì
\90Ý
\92è
9148 FilterList := TStringList.Create;
9150 GikoSys.FSelectResFilter.Reverse := True;
9151 FilterList.Delimiter := ' '; //
\8bæ
\90Ø
\82è
\8eq
\82ð
\94¼
\8ap
\83X
\83y
\81[
\83X
\82É
\90Ý
\92è
9152 FilterList.DelimitedText := Dlg.SelectComboBox.Text;
9154 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
9159 //
\83X
\83\8c\83b
\83h
\82Ì
\8dÄ
\95`
\89æ
9160 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
9161 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9163 ThreadItem := GetActiveContent;
9164 if ThreadItem <> nil then
9165 InsertBrowserTab( ThreadItem, True );
9168 //
\83L
\83\83\83\93\83Z
\83\8b
9169 if GikoSys.ResRange <> Ord( grrSelect ) then
9170 ResRangeAction.Execute;
9178 procedure TGikoForm.SelectResActionUpdate(Sender: TObject);
9180 SelectResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9183 //
\91S
\82Ä
\82Ì
\83\8c\83X
\82ð
\95\
\8e¦
9184 procedure TGikoForm.AllResActionExecute(Sender: TObject);
9186 ThreadItem : TThreadItem;
9187 FilterList : TStringList;
9190 if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
9191 and (FActiveContent.FBrowser.Busy) then Exit;
9193 FResRangeMenuSelect := Ord( grrAll );
9194 AllResAction.Checked := True;
9196 if GikoSys.ResRange <> Ord( grrAll ) then begin
9197 GikoSys.ResRange := Ord( grrAll );
9199 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
9200 FilterList := TStringList.Create;
9202 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
9203 GikoSys.FSelectResFilter.Reverse := False;
9208 FSelectResWord := '';
9210 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
9211 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
9212 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9214 ThreadItem := GetActiveContent;
9215 if ThreadItem <> nil then
9216 InsertBrowserTab( ThreadItem, True );
9220 procedure TGikoForm.AllResActionUpdate(Sender: TObject);
9222 AllResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9225 procedure TGikoForm.ReloadClick(Sender: TObject);
9227 ThreadItem : TThreadItem;
9230 if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
9231 MsgBox(Handle, 'NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82Ì
\8dÄ
\93Ç
\82Ý
\8d\9e\82Ý
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½', '
\83G
\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
9233 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9234 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9236 ThreadItem := GetActiveContent;
9237 if ThreadItem <> nil then
9238 InsertBrowserTab( ThreadItem, True );
9243 procedure TGikoForm.GoBackClick(Sender: TObject);
9245 ThreadItem : TThreadItem;
9249 if GikoSys.FAbon.GoForward =false then begin
9250 MsgBox(Handle, '
\88ê
\82Â
\91O
\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½', '
\83G
\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
9252 s := GikoSys.FAbon.NGwordname;
9253 StatusBar.Panels.Items[2].Text := s;
9254 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9255 StatusBarResize(Sender);
9256 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9257 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9259 ThreadItem := GetActiveContent;
9260 if ThreadItem <> nil then
9261 InsertBrowserTab( ThreadItem, True );
9266 procedure TGikoForm.GoFowardClick(Sender: TObject);
9268 ThreadItem : TThreadItem;
9272 if GikoSys.FAbon.GoBack =false then begin
9273 MsgBox(Handle, '
\88ê
\82Â
\8cã
\82ë
\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½', '
\83G
\83\89\81[', MB_OK or MB_ICONEXCLAMATION);
9275 s := GikoSys.FAbon.NGwordname;
9276 StatusBar.Panels.Items[2].Text := s;
9277 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9278 StatusBarResize(Sender);
9279 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9280 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9282 ThreadItem := GetActiveContent;
9283 if ThreadItem <> nil then
9284 InsertBrowserTab( ThreadItem, True );
9289 procedure TGikoForm.SelectComboBoxSplitterMouseMove(Sender: TObject;
9290 Shift: TShiftState; X, Y: Integer);
9295 If (SelectComboBox.Parent <> nil) and (IsDraggingSelectComboBox) Then begin
9298 pos := SelectComboBoxSplitter.ClientToScreen( pos );
9299 w := SelectComboBox.Width + (pos.X - DraggingSelectComboBoxPosition.X);
9301 If w <= 50 Then Begin
9302 //
\8e\9f\82Ì
\88Ú
\93®
\82Ì
\8aî
\8f\80\82ª
\81u
\89ß
\82¬
\82Ä
\82µ
\82Ü
\82Á
\82½
\88Ê
\92u
\81v
\82Å
\82Í
\82È
\82
9303 //
\81u
\8e~
\82Ü
\82Á
\82½(50pixel)
\88Ê
\92u
\81v
\82É
\82È
\82é
\82æ
\82¤
\82É
9304 pos.X := pos.X + (50 - w);
9306 //
\8f¬
\82³
\82
\82È
\82è
\82·
\82¬
\82È
\82¢
\82æ
\82¤
\82É
9310 //
\83`
\83\89\82Â
\82«
\8cy
\8c¸
\82Ì
\88×
9311 If SelectComboBox.Width <> w Then Begin
9312 SelectComboBox.Width := w;
9313 GikoSys.Setting.SelectComboBoxWidth := w;
9314 DraggingSelectComboBoxPosition := pos;
9316 //
\83V
\83F
\83u
\83\8d\83\93\88Ê
\92u
\82ª
\95Ï
\82í
\82é
\82Ì
\82Å BandInfo
\82Ì
\8dÄ
\90Ý
\92è
9317 ResetBandInfo( ListCoolBar, ListToolBar );
9322 procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;
9323 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9327 IsDraggingSelectComboBox := True;
9330 DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );
9333 procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;
9334 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9336 IsDraggingSelectComboBox := False;
9339 procedure TGikoForm.StatusBarResize(Sender: TObject);
9341 StatusBar.Panels[1].Width := StatusBar.Width -
9342 StatusBar.Panels[0].Width -
9343 StatusBar.Panels[2].Width;
9345 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\92Ê
\8fí
\81v
9346 procedure TGikoForm.IndividualAbon1Click(Sender: TObject);
9348 ThreadItem : TThreadItem;
9349 ReadList : TStringList;
9350 wordCount : TWordCount;
9352 ThreadItem := GetActiveContent;
9353 ReadList := TStringList.Create;
9354 wordCount := TWordCount.Create;
9356 ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
9357 //
\83X
\83p
\83\80\82É
\90Ý
\92è
9358 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
9359 GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
9360 GikoSys.SpamForget( wordCount, False ); //
\83n
\83\80\82ð
\89ð
\8f\9c
9361 GikoSys.SpamLearn( wordCount, True ); //
\83X
\83p
\83\80\82É
\90Ý
\92è
9362 //
\82 \82Ú
\81[
\82ñ
\82É
\90Ý
\92è
9363 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag, 1, ChangeFileExt(ThreadItem.GetThreadFileName, '.NG'));
9368 FActiveContent.Repaint := true;
9369 if ThreadItem <> nil then
9370 InsertBrowserTab( ThreadItem, True );
9372 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\93§
\96¾
\81v
9373 procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
9375 ThreadItem : TThreadItem;
9376 ReadList : TStringList;
9377 wordCount : TWordCount;
9379 ThreadItem := GetActiveContent;
9380 ReadList := TStringList.Create;
9381 wordCount := TWordCount.Create;
9383 ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
9384 //
\83X
\83p
\83\80\82É
\90Ý
\92è
9385 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
9386 GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
9387 GikoSys.SpamForget( wordCount, False ); //
\83n
\83\80\82ð
\89ð
\8f\9c
9388 GikoSys.SpamLearn( wordCount, True ); //
\83X
\83p
\83\80\82É
\90Ý
\92è
9389 //
\82 \82Ú
\81[
\82ñ
\82É
\90Ý
\92è
9390 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag, 0, ChangeFileExt(ThreadItem.GetThreadFileName, '.NG'));
9395 FActiveContent.Repaint := true;
9396 if ThreadItem <> nil then
9397 InsertBrowserTab( ThreadItem, True );
9399 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c\81i
\81j
9400 procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
9402 IndividualForm :TIndividualAbonForm;
9403 ThreadItem : TThreadItem;
9405 ReadList : TStringList;
9406 wordCount : TWordCount;
9408 IndividualForm := TIndividualAbonForm.Create(Self);
9410 ThreadItem := GetActiveContent;
9411 ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
9412 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
9413 if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
9414 ReadList := TStringList.Create;
9415 wordCount := TWordCount.Create;
9417 //
\83X
\83p
\83\80\82ð
\89ð
\8f\9c
9418 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
9419 GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
9420 GikoSys.SpamForget( wordCount, True ); //
\83X
\83p
\83\80\82ð
\89ð
\8f\9c
9421 GikoSys.SpamLearn( wordCount, False ); //
\83n
\83\80\82É
\90Ý
\92è
9422 if IndividualForm.DeleteNG(KokoPopupMenu.Tag) then begin
9423 FActiveContent.Repaint := true;
9424 InsertBrowserTab( ThreadItem, True );
9431 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9432 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9436 IndividualForm.Release;
9439 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c
9440 procedure TGikoForm.N42Click(Sender: TObject);
9442 IndividualForm :TIndividualAbonForm;
9443 ThreadItem : TThreadItem;
9445 ReadList : TStringList;
9446 wordCount : TWordCount;
9448 IndividualForm := TIndividualAbonForm.Create(Self);
9450 ThreadItem := GetActiveContent;
9451 ThreadItem.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
9452 if (ThreadItem <> nil) and (ThreadItem.IsLogFile) then begin
9453 if IndividualForm.SetThreadLogFileName(ThreadItem.GetThreadFileName) then begin
9454 if IndividualForm.ShowModal = mrOK then begin
9455 ReadList := TStringList.Create;
9456 wordCount := TWordCount.Create;
9458 //
\83X
\83p
\83\80\82ð
\89ð
\8f\9c
9459 ReadList.LoadFromFile( ThreadItem.GetThreadFileName );
9460 GikoSys.SpamCountWord( ReadList[ KokoPopupMenu.Tag - 1 ], wordCount );
9461 GikoSys.SpamForget( wordCount, True ); //
\83X
\83p
\83\80\82ð
\89ð
\8f\9c
9462 GikoSys.SpamLearn( wordCount, False ); //
\83n
\83\80\82É
\90Ý
\92è
9463 if IndividualForm.FRepaint then begin
9464 FActiveContent.Repaint := true;
9465 InsertBrowserTab( ThreadItem, True );
9473 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9474 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9478 IndividualForm.Release;
9482 procedure TGikoForm.SelectComboBoxEnter(Sender: TObject);
9485 if (Length( SelectComboBox.Text ) = 0) or
9486 (SelectComboBox.Text = SELECTCOMBOBOX_NAME) then
9488 SelectComboBox.Text := '';
9489 SelectComboBox.Color := clWindow;
9494 procedure TGikoForm.N51Click(Sender: TObject);
9498 //
\94Â
\96¼
\8c\9f\8dõ
9499 procedure TGikoForm.TreeSelectSearchBoardNameExecute(Sender: TObject);
9503 CurItem : TTreeNode;
9506 if InputQuery('
\94Â
\96¼
\8c\9f\8dõ','
\94Â
\96¼
\82Ì
\93ü
\97Í',s) then begin
9509 if TreeView.Selected = nil then
9510 CurItem := TreeView.Items.GetFirstNode
9512 CurItem := TreeView.Selected.GetNext;
9513 if CurItem = nil then
9514 CurItem := TreeView.Items.GetFirstNode;
9516 while CurItem <> nil do begin
9517 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
9520 CurItem := CurItem.GetNext;
9523 if CurItem = nil then begin
9524 msg := '
\90æ
\93ª
\82É
\96ß
\82è
\82Ü
\82·
\82©
\81H';
9525 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9526 CurItem := TreeView.Items.GetFirstNode;
9530 TreeView.Select(CurItem);
9533 TreeView.Select(CurItem);
9535 msg := '
\8e\9f\82É
\8ds
\82«
\82Ü
\82·
\82©
\81H';
9536 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9550 procedure TGikoForm.CabinetFavoriteActionExecute(Sender: TObject);
9556 if CabinetPanel.Visible then begin
9557 if FTreeType = gttFavorite then begin
9558 CabinetVisible( False );
9559 CabinetFavoriteAction.Checked := False;
9561 CabinetFavoriteAction.Checked := True;
9564 CabinetVisible( True );
9565 CabinetFavoriteAction.Checked := True;
9568 // BBS...BBS, History, Favorite
9569 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 1;
9571 b := CabinetSelectPopupMenu.Items.Count - 1;
9572 for i := 0 to b do begin
9573 item := CabinetSelectPopupMenu.Items[ i ];
9574 if item is TBBSMenuItem then begin
9575 item.Checked := False;
9576 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
9577 CabinetMenu.Items[ i ].Checked := False;
9581 //
\83L
\83\83\83r
\83l
\83b
\83g
\83c
\81[
\83\8b\83o
\81[
\8by
\82Ñ
\83L
\83\83\83r
\83l
\83b
\83g
\82Ì
\95\
\8e¦
\90Ø
\91Ö
9582 HistoryToolBar.Hide;
9583 FavoriteToolBar.Show;
9584 TreeView.Visible := False;
9585 FavoriteTreeView.Visible := True;
9587 CabinetSelectToolButton.Caption := '
\82¨
\8bC
\82É
\93ü
\82è';
9588 FTreeType := gttFavorite;
9590 //
\83\81\83j
\83\85\81[
\8by
\82Ñ
\83{
\83^
\83\93\82Ì
\83`
\83F
\83b
\83N
\82ð
\90Ý
\92è
9591 CabinetBBSAction.Checked := False;
9592 CabinetHistoryAction.Checked := False;
9594 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\83c
\83\8a\81[
\82ð
\93W
\8aJ
9595 FavoriteTreeView.Items.GetFirstNode.Expanded := True;
9599 procedure TGikoForm.FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
9602 if (SenderNode = nil) or (SourceNode = nil) or (SenderNode = SourceNode) then
9605 if TObject(SenderNode.Data) is TFavoriteFolder then
9606 SourceNode.MoveTo(SenderNode, naAddChild)
9608 SourceNode.MoveTo(SenderNode, naInsert);
9612 procedure TGikoForm.FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
9616 FavoBoardItem: TFavoriteBoardItem;
9617 FavoThreadItem: TFavoriteThreadItem;
9619 ThreadItem: TThreadItem;
9622 if (SenderNode = nil) or (Source = nil) then
9625 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9626 FavNode := SenderNode.Parent
9628 FavNode := SenderNode;
9632 if Source is TBoard then begin
9633 Board := TBoard( Source );
9634 FavoBoardItem := TFavoriteBoardItem.CreateWithItem( Board );
9635 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, FavoBoardItem);
9636 Node.ImageIndex := 15;
9637 Node.SelectedIndex := 15;
9638 end else if Source is TFavoriteBoardItem then begin
9639 FavoBoardItem := TFavoriteBoardItem( Source );
9640 Board := FavoBoardItem.Item;
9641 if Board <> nil then
9642 if not Board.IsThreadDatRead then
9643 GikoSys.ReadSubjectFile(Board);
9644 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, Source);
9645 Node.ImageIndex := 15;
9646 Node.SelectedIndex := 15;
9647 end else if Source is TThreadItem then begin
9648 ThreadItem := TThreadItem( Source );
9649 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9650 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9651 Node.ImageIndex := 16;
9652 Node.SelectedIndex := 16;
9653 end else if Source is TBrowserRecord then begin
9654 ThreadItem := TBrowserRecord( Source ).FThread;
9655 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9656 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9657 Node.ImageIndex := 16;
9658 Node.SelectedIndex := 16;
9659 end else if Source is TFavoriteThreadItem then begin
9660 FavoThreadItem := TFavoriteThreadItem( Source );
9661 ThreadItem := FavoThreadItem.Item;
9662 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, Source);
9663 Node.ImageIndex := 16;
9664 Node.SelectedIndex := 16;
9667 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9669 FavoriteMoveTo( SenderNode, Node );
9673 procedure TGikoForm.FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
9676 SourceNode: TTreeNode;
9677 LinkToolButton: TLinkToolButton;
9680 if SenderNode = nil then
9683 if not (TObject( SenderNode.Data ) is TFavoriteFolder) then
9684 if FDropSpaceNode <> nil then
9685 SenderNode := FDropSpaceNode;
9687 if Source = FavoriteTreeView then begin
9689 SourceNode := FavoriteTreeView.Selected;
9690 FavoriteMoveTo( SenderNode, SourceNode );
9692 end else if Source is TLinkToolButton then begin
9694 LinkToolButton := TLinkToolButton( Source );
9695 //ShowMessage(LinkToolButton.Text);
9696 SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
9697 FavoriteMoveTo( SenderNode, SourceNode );
9699 end else if Source = BrowserTab then begin
9701 idx := BrowserTab.TabIndex;
9702 FavoriteAddTo( SenderNode, BrowserTab.Tabs.Objects[idx] );
9703 end else if Source = ListView then begin
9705 FavoriteAddTo( SenderNode, ListView.Selected.Data );
9707 end else if Source = TreeView then begin
9709 FavoriteAddTo( SenderNode, TreeView.Selected.Data );
9717 procedure TGikoForm.FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
9720 SenderNode: TTreeNode;
9723 SenderNode := FavoriteTreeView.GetNodeAt(X, Y);
9724 if SenderNode <> nil then begin
9725 FavoriteDragDrop( SenderNode, Source );
9728 if FDropSpaceNode <> nil then begin
9729 FDropSpaceNode.Free;
9730 FDropSpaceNode := nil;
9735 procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject;
9736 Node: TTreeNode; var S: String);
9739 FavoriteTreeView.ReadOnly := True;
9744 procedure TGikoForm.FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
9745 Shift: TShiftState);
9747 if not TTreeView(Sender).IsEditing then begin
9751 FClickNode := FavoriteTreeView.Selected;
9752 FavoriteTreeViewRenameActionExecute( Sender );
9756 FClickNode := FavoriteTreeView.Selected;
9757 FavoriteTreeViewDeleteActionExecute( Sender );
9761 FavoriteClick( FavoriteTreeView.Selected );
9762 FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
9765 FavoriteTreeViewDblClick( Sender );
9771 procedure TGikoForm.FavoriteTreePopupMenuPopup(Sender: TObject);
9774 LinkToolButton: TLinkToolButton;
9777 if FavoriteTreePopupMenu.PopupComponent = FavoriteTreeView then begin
9779 FClickNode := FavoriteTreeView.Selected;
9781 end else if FavoriteTreePopupMenu.PopupComponent is TLinkToolButton then begin
9783 LinkToolButton := TLinkToolButton( FavoriteTreePopupMenu.PopupComponent );
9784 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9785 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9786 FClickNode := FavoriteTreeView.Items[i];
9790 for i := 0 to FClickNode.Count - 1 do begin
9791 if FClickNode.Item[i].Data = LinkToolButton.Data then begin
9792 FClickNode := FClickNode.Item[i];
9799 if FClickNode = nil then begin
9800 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9801 FavoriteTreeDeletePopupMenu.Visible := False;
9802 FavoriteTreeRenamePopupMenu.Visible := False;
9803 FavoriteTreeNewFolderPopupMenu.Visible := False;
9804 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9805 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9806 FavoriteTreeURLCopyPopupMenu.Visible := False;
9807 FavoriteTreeNameCopyPopupMenu.Visible := False;
9808 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9809 FavoriteTreeReloadPopupMenu.Visible := False;
9810 FavoriteTreeLogDeletePopupMenu.Visible := False;
9811 end else if FClickNode.IsFirstNode then begin
9812 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9813 FavoriteTreeDeletePopupMenu.Visible := False;
9814 FavoriteTreeRenamePopupMenu.Visible := False;
9815 FavoriteTreeNewFolderPopupMenu.Visible := True;
9816 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9817 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9818 FavoriteTreeURLCopyPopupMenu.Visible := False;
9819 FavoriteTreeNameCopyPopupMenu.Visible := True;
9820 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9821 FavoriteTreeReloadPopupMenu.Visible := False;
9822 FavoriteTreeLogDeletePopupMenu.Visible := False;
9823 end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9824 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9825 FavoriteTreeDeletePopupMenu.Visible := True;
9826 FavoriteTreeRenamePopupMenu.Visible := False;
9827 FavoriteTreeNewFolderPopupMenu.Visible := True;
9828 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9829 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9830 FavoriteTreeURLCopyPopupMenu.Visible := False;
9831 FavoriteTreeNameCopyPopupMenu.Visible := True;
9832 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9833 FavoriteTreeReloadPopupMenu.Visible := False;
9834 FavoriteTreeLogDeletePopupMenu.Visible := False;
9835 end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
9836 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9837 FavoriteTreeDeletePopupMenu.Visible := True;
9838 FavoriteTreeRenamePopupMenu.Visible := True;
9839 FavoriteTreeNewFolderPopupMenu.Visible := True;
9840 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9841 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9842 FavoriteTreeURLCopyPopupMenu.Visible := False;
9843 FavoriteTreeNameCopyPopupMenu.Visible := True;
9844 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9845 FavoriteTreeReloadPopupMenu.Visible := False;
9846 FavoriteTreeLogDeletePopupMenu.Visible := False;
9847 end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
9848 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9849 FavoriteTreeDeletePopupMenu.Visible := True;
9850 FavoriteTreeRenamePopupMenu.Visible := True;
9851 FavoriteTreeNewFolderPopupMenu.Visible := True;
9852 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9853 //FavoriteTreeBrowseThreadPopupMenu.Visible := True;
9854 FavoriteTreeURLCopyPopupMenu.Visible := True;
9855 FavoriteTreeNameCopyPopupMenu.Visible := True;
9856 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9857 FavoriteTreeReloadPopupMenu.Visible := True;
9858 FavoriteTreeLogDeletePopupMenu.Visible := True;
9859 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
9860 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9861 FavoriteTreeDeletePopupMenu.Visible := True;
9862 FavoriteTreeRenamePopupMenu.Visible := True;
9863 FavoriteTreeNewFolderPopupMenu.Visible := True;
9864 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9865 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9866 FavoriteTreeURLCopyPopupMenu.Visible := True;
9867 FavoriteTreeNameCopyPopupMenu.Visible := True;
9868 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9869 FavoriteTreeReloadPopupMenu.Visible := True;
9870 FavoriteTreeLogDeletePopupMenu.Visible := False;
9872 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9873 FavoriteTreeDeletePopupMenu.Visible := False;
9874 FavoriteTreeRenamePopupMenu.Visible := False;
9875 FavoriteTreeNewFolderPopupMenu.Visible := False;
9876 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9877 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9878 FavoriteTreeURLCopyPopupMenu.Visible := False;
9879 FavoriteTreeNameCopyPopupMenu.Visible := False;
9880 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9881 FavoriteTreeReloadPopupMenu.Visible := False;
9882 FavoriteTreeLogDeletePopupMenu.Visible := False;
9887 procedure TGikoForm.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
9889 DEL_LINK_MSG = '
\81g
\83\8a\83\93\83N
\81h
\82Í
\83\8a\83\93\83N
\83o
\81[
\97p
\83t
\83H
\83\8b\83_
\82Å
\82·
\81B
\8dí
\8f\9c\82µ
\82Ä
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
9890 DEL_MSG = '
\81g^0
\81h
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
9891 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9894 if FClickNode = nil then
9896 if FClickNode.IsFirstNode then
9898 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
9899 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9900 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9903 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9908 //FDeleteList.Add(FClickNode.Data);
9909 //SetDeleteItemList(FClickNode);
9917 procedure TGikoForm.FavoriteTreeViewRenameActionExecute(Sender: TObject);
9922 if FClickNode = nil then
9924 if FClickNode.IsFirstNode then
9926 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then
9928 FavoriteTreeView.ReadOnly := False;
9929 if (FTreeType = gttFavorite) and (CabinetPanel.Visible) then begin
9930 node := FClickNode.Parent;
9931 while node <> nil do begin
9932 node.Expanded := True;
9933 node := node.Parent;
9935 FClickNode.EditText;
9937 FClickNode.Text := InputBox( '
\96¼
\91O
\82Ì
\95Ï
\8dX', '
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\90V
\82µ
\82¢
\96¼
\91O
\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢', FClickNode.Text );
9944 procedure TGikoForm.FavoriteTreeViewNewFolderActionExecute(
9947 NewFavFolder: TFavoriteFolder;
9951 if FClickNode = nil then
9955 if not (TObject(FClickNode.Data) is TFavoriteFolder) then begin
9956 FavoriteTreeView.Selected := FClickNode.Parent;
9957 FClickNode := FClickNode.Parent;
9960 NewFavFolder := TFavoriteFolder.Create;
9961 Node := FavoriteTreeView.Items.AddChildObject(FClickNode, '
\90V
\82µ
\82¢
\83t
\83H
\83\8b\83_', NewFavFolder);
9962 Node.ImageIndex := 14;
9963 Node.SelectedIndex := 14;
9964 // FClickNode.Selected.Expanded := True;
9965 FavoriteTreeView.Selected := Node;
9967 FavoriteTreeViewRenameAction.Execute;
9973 procedure TGikoForm.ToolButton19Click(Sender: TObject);
9976 FavoriteArrangeActionExecute( nil );
9980 procedure TGikoForm.FavoriteBrowseFolder( node: TTreeNode );
9985 if not (TObject(node.Data) is TFavoriteFolder) then
9988 for i := 0 to node.Count - 1 do
9990 if TObject(node.Item[i].Data) is TFavoriteFolder then
9991 FavoriteBrowseFolder( node.Item[i] )
9992 else if TObject(node.Item[i].Data) is TFavoriteThreadItem then
9993 FavoriteClick( node.Item[i], False );
9998 procedure TGikoForm.FavoriteTreeViewBrowseFolderActionExecute(
10002 FavoriteBrowseFolder( FClickNode );
10003 //BrowserTab.OnChange(nil);
10007 procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject);
10010 FClickNode := FavoriteTreeView.Selected;
10011 FavoriteTreeViewReloadActionExecute( Sender );
10015 procedure TGikoForm.FavoriteTreeViewLogDeleteActionExecute(
10018 DEL_MSG = '
\81g^0
\81h
\82Ì
\83\8d\83O
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
10019 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
10021 ThreadItem: TThreadItem;
10022 FavThread: TFavoriteThreadItem;
10025 if FClickNode = nil then Exit;
10026 if not (TObject(FClickNode.Data) is TFavoriteThreadItem) then Exit;
10028 FavThread := TFavoriteThreadItem( FClickNode.Data );
10029 ThreadItem := FavThread.Item;
10032 if GikoSys.Setting.DeleteMsg then begin
10033 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
10034 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
10038 DeleteHistory(ThreadItem);
10039 DeleteTab(ThreadItem);
10040 ThreadItem.DeleteLogFile;
10048 procedure TGikoForm.FavoriteTreeViewReloadActionExecute(Sender: TObject);
10050 ThreadItem: TThreadItem;
10051 FavThread: TFavoriteThreadItem;
10053 FavBoard: TFavoriteBoardItem;
10054 shiftDown: Boolean;
10057 if FClickNode = nil then Exit;
10059 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
10061 if TObject( FClickNode.Data ) is TFavoriteThreadItem then begin
10062 FavThread := TFavoriteThreadItem( FClickNode.Data );
10063 ThreadItem := FavThread.Item;
10064 if ThreadItem <> nil then
10065 DownloadContent(ThreadItem, shiftDown);
10066 end else if TObject( FClickNode.Data ) is TFavoriteBoardItem then begin
10067 FavBoard := TFavoriteBoardItem( FClickNode.Data );
10068 Board := FavBoard.Item;
10069 DownloadList(Board, shiftDown);
10074 procedure TGikoForm.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
10076 FavThread : TFavoriteThreadItem;
10077 FavBoard : TFavoriteBoardItem;
10081 if FClickNode = nil then Exit;
10083 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10085 FavThread := TFavoriteThreadItem( FClickNode.Data );
10086 s := FavThread.URL + #13#10;
10088 Clipboard.AsText := s;
10090 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10092 FavBoard := TFavoriteBoardItem( FClickNode.Data );
10093 s := FavBoard.URL + #13#10;
10095 Clipboard.AsText := s;
10101 procedure TGikoForm.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
10103 ThreadItem: TThreadItem;
10104 FavThread: TFavoriteThreadItem;
10106 FavBoard: TFavoriteBoardItem;
10110 if FClickNode = nil then Exit;
10112 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10114 FavThread := TFavoriteThreadItem( FClickNode.Data );
10115 ThreadItem := FavThread.Item;
10118 s := ThreadItem.Title + #13#10;
10120 Clipboard.AsText := s;
10124 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10126 FavBoard := TFavoriteBoardItem( FClickNode.Data );
10127 Board := FavBoard.Item;
10128 if Board <> nil then
10129 if not Board.IsThreadDatRead then
10130 GikoSys.ReadSubjectFile(Board);
10133 s := Board.Title + #13#10;
10135 Clipboard.AsText := s;
10143 procedure TGikoForm.FavoriteTreeViewNameURLCopyActionExecute(
10146 ThreadItem: TThreadItem;
10147 FavThread: TFavoriteThreadItem;
10149 FavBoard: TFavoriteBoardItem;
10153 if FClickNode = nil then Exit;
10155 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10157 FavThread := TFavoriteThreadItem( FClickNode.Data );
10158 ThreadItem := FavThread.Item;
10161 s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
10163 Clipboard.AsText := s;
10167 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10169 FavBoard := TFavoriteBoardItem( FClickNode.Data );
10170 Board := FavBoard.Item;
10171 if Board <> nil then
10172 if not Board.IsThreadDatRead then
10173 GikoSys.ReadSubjectFile(Board);
10176 s := Board.Title + #13#10 + Board.URL + #13#10;
10178 Clipboard.AsText := s;
10186 function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
10192 for i := 0 to Node.Count - 1 do begin
10193 if Node.Item[i].Data = FindPointer then begin
10194 Result := Node.Item[i];
10196 end else if Node.Item[i].Count > 0 then begin
10197 Found := TreeNodeDataFind( Node.Item[i], FindPointer );
10198 if Found <> nil then begin
10209 procedure TGikoForm.LinkToolBarDragDrop(Sender, Source: TObject; X,
10213 SenderNode: TTreeNode;
10217 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
10218 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
10219 SenderNode := FavoriteTreeView.Items[i];
10224 FavoriteDragDrop( SenderNode, Source );
10228 procedure TGikoForm.BrowserTabMouseUp(Sender: TObject;
10229 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10231 if FDragWFirst <> true then begin
10232 FDragWFirst := false;
10234 end else if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold)
10235 and (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10239 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10240 if GikoSys.Setting.ListWidthState = glsMin then begin
10241 BrowserMaxAndFocusAction.Execute;
10244 if GikoSys.Setting.ListHeightState = glsMin then begin
10245 BrowserMaxAndFocusAction.Execute;
10251 procedure TGikoForm.LinkToolBarDragOver(Sender, Source: TObject; X,
10252 Y: Integer; State: TDragState; var Accept: Boolean);
10255 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
10259 procedure TGikoForm.ResRangeActionExecute(Sender: TObject);
10261 case FResRangeMenuSelect of
10262 Ord( grrAll ): AllResAction.Execute;
10263 Ord( grrKoko ): OnlyKokoResAction.Execute;
10264 Ord( grrNew ): OnlyNewResAction.Execute;
10265 100: OnlyAHundredResAction.Execute;
10269 procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
10273 if FDropSpaceNode <> nil then begin
10274 FDropSpaceNode.Free;
10275 FDropSpaceNode := nil;
10281 procedure TGikoForm.ListCoolBarContextPopup(Sender: TObject;
10282 MousePos: TPoint; var Handled: Boolean);
10285 FToolBarSettingSender := tssList;
10286 MousePos := ListCoolBar.ClientToScreen( MousePos );
10287 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10291 procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
10292 MousePos: TPoint; var Handled: Boolean);
10295 FToolBarSettingSender := tssMain;
10296 MousePos := MainCoolBar.ClientToScreen( MousePos );
10297 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10301 procedure TGikoForm.BrowserCoolBarContextPopup(Sender: TObject;
10302 MousePos: TPoint; var Handled: Boolean);
10305 FToolBarSettingSender := tssBrowser;
10306 MousePos := BrowserCoolBar.ClientToScreen( MousePos );
10307 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10310 procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
10313 if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
10314 ShowMessage('
\83t
\83@
\83C
\83\8b\82ð
\8fo
\97Í
\82µ
\82Ü
\82µ
\82½');
10316 ShowMessage('
\83t
\83@
\83C
\83\8b\82Ì
\8fo
\97Í
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½');
10319 procedure TGikoForm.SetListViewBackGroundColor(value: TColor);
10321 if FListViewBackGroundColor <> value then begin
10322 FListViewBackGroundColor := value;
10323 ListView.Color := FListViewBackGroundColor;
10326 procedure TGikoForm.ExportFavoriteFileBeforeExecute(Sender: TObject);
10328 ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
10331 procedure TGikoForm.CabinetBBSActionExecute(Sender: TObject);
10334 if CabinetPanel.Visible then begin
10335 if FTreeType = gtt2ch then begin
10336 CabinetVisible( False );
10338 CabinetBBSAction.Checked := False;
10340 CabinetBBSAction.Checked := True;
10343 CabinetVisible( True );
10344 CabinetBBSAction.Checked := True;
10347 if FActiveBBS = nil then
10348 ShowBBSTree( BBSs[ 0 ] )
10350 ShowBBSTree( FActiveBBS );
10354 procedure TGikoForm.FavoriteTreeViewBrowseThreadActionExecute(
10357 threadItem : TThreadItem;
10360 if FClickNode = nil then Exit;
10362 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10364 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10365 if threadItem = nil then
10367 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
10373 procedure TGikoForm.FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
10375 threadItem : TThreadItem;
10376 boardItem : TBoard;
10379 if FClickNode = nil then Exit;
10381 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10383 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10384 if threadItem = nil then
10386 GikoSys.OpenBrowser( threadItem.ParentBoard.URL, gbtAuto );
10388 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10390 boardItem := TFavoriteBoardItem( FClickNode.Data ).Item;
10391 if boardItem = nil then
10393 GikoSys.OpenBrowser( boardItem.URL, gbtAuto );
10399 procedure TGikoForm.UpBoardActionExecute(Sender: TObject);
10402 SelectTreeNode( GetActiveContent.ParentBoard, True );
10406 procedure TGikoForm.UpBoardActionUpdate(Sender: TObject);
10409 UpBoardAction.Enabled := GetActiveContent <> nil;
10413 procedure TGikoForm.BrowserTabContextPopup(Sender: TObject;
10414 MousePos: TPoint; var Handled: Boolean);
10418 idx := BrowserTab.IndexOfTabAt(MousePos.X, MousePos.Y);
10419 if BrowserTab.TabIndex <> idx then begin
10420 BrowserTab.TabIndex := idx;
10421 BrowserTab.OnChange(nil);
10426 procedure TGikoForm.KoreCopyExecute(Sender: TObject);
10428 KonoresCopy(KokoPopupMenu.Tag, true);
10430 procedure TGikoForm.KonoresCopy(Number: Integer; ReplaceTag : Boolean);
10432 ThreadItem: TThreadItem;
10438 boardPlugIn : TBoardPlugIn;
10440 if Number = 0 then Exit;
10441 ThreadItem := GetActiveContent;
10443 if ThreadItem <> nil then begin
10444 if ThreadItem.IsBoardPlugInAvailable then begin
10445 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
10446 boardPlugIn := ThreadItem.BoardPlugIn;
10448 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
10449 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
10450 //
\82±
\82±
\82Å
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\82Ìdat
\82Ì
\8c`
\8e®
\82Å
\82P
\8ds
\93Ç
\82Ý
\8d\9e\82ß
\82ê
\82Î¥¥¥
\81B
10451 tmp := boardPlugIn.GetDat( DWORD( threadItem ), Number );
10453 FileName := ThreadItem.FilePath;
10454 tmp := GikoSys.ReadThreadFile(FileName, Number);
10456 if tmp <> '' then begin
10457 Res := GikoSys.DivideStrLine(tmp);
10459 Header := IntToStr(Number) + '
\81F' + Res.FName + '
\81F' + Res.FDateTime + #13#10;
10460 if ReplaceTag then begin
10461 Header := CustomStringReplace(Header, '</b>', '',true);
10462 Header := CustomStringReplace(Header, '<b>', '',true);
10464 if ThreadItem.IsBoardPlugInAvailable then begin
10465 Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
10466 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10468 Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
10469 Body := CustomStringReplace(Body, ' <br>', #13#10,true);
10470 Body := CustomStringReplace(Body, '<br> ', #13#10,true);
10471 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10474 Body := CustomStringReplace(Body, '</a>', '',true);
10476 Body := GikoSys.DeleteLink(Body);
10477 if ReplaceTag then begin
10478 Body := CustomStringReplace(Body, '<', '<');
10479 Body := CustomStringReplace(Body, '>', '>');
10480 Body := CustomStringReplace(Body, '"', '"');
10481 Body := CustomStringReplace(Body, '&', '&');
10482 //Body := CustomStringReplace(Body, ' ', ' ');
10485 Header := Header + Body;
10487 Clipboard.SetTextBuf( PChar(Header) );
10493 procedure TGikoForm.BrowserTabPopupMenuPopup(Sender: TObject);
10495 AddRoundNameMenu(dummy1);
10498 procedure TGikoForm.FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
10500 FavoriteDM.URLReplace(oldURLs, newURLs);
10503 procedure TGikoForm.RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
10505 RoundList.URLReplace(oldURLs, newURLs);
10508 procedure TGikoForm.TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
10510 Filename = 'tab.sav';
10511 bFilename = '~tab.sav';
10514 tempString: string;
10517 oldBoardName: string;
10519 newBoardName: string;
10520 TabList: TStringList;
10523 if oldURLs.Count <> newURLs.Count then begin
10526 if FileExists(GikoSys.GetAppDir + 'tab.sav') then begin
10527 TabList := TStringList.Create;
10529 TabList.LoadFromFile(GikoSys.GetAppDir + Filename);
10531 //
\82±
\82±
\82©
\82ç
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10532 //
\96Ê
\93|
\82¾
\82¯
\82Çthread
\82Í
\82»
\82ê
\82¼
\82êURL
\82ð
\83`
\83\83\83b
\83N
\82µ
\82È
\82ª
\82ç
\82â
\82Á
\82Ä
\82©
\82È
\82«
\82á
\82¢
\82¯
\82È
\82¢
\81B
10533 for i := 0 to oldURLs.Count - 1 do begin
10534 tmpURL := Copy(oldURLs[i], 1, Length(oldURLs[i]) -1);
10535 oldHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10536 oldBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10537 tmpURL := Copy(newURLs[i], 1, Length(newURLs[i]) -1);
10538 newHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10539 newBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10541 for j := 0 to TabList.Count - 1 do begin
10542 tempString := TabList[j];
10543 if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
10544 tempString := StringReplace(tempString, oldHost, newHost,[]);
10545 TabList[j] := tempString;
10549 //
\82±
\82±
\82Ü
\82Å
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10551 if FileExists( GikoSys.GetAppDir + Filename) then begin
10552 if FileExists( GikoSys.GetAppDir + bFilename) then
10553 DeleteFile(GikoSys.GetAppDir + bFilename);
10555 //
\83o
\83b
\83N
\83A
\83b
\83v
\82ð
\8dì
\82é
\81B
10556 RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename);
10559 TabList.SaveToFile(GikoSys.GetAppDir + Filename);
10567 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
10568 procedure TGikoForm.OnMinimize;
10570 if FActiveContent <> nil then begin
10571 FIsMinimize := mtMinimizing;
10572 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
10576 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½ (OnResized
\82©
\82ç
\8cÄ
\82Î
\82ê
\82é)
10577 procedure TGikoForm.OnMinimized;
10579 FIsMinimize := mtMinimized;
10583 procedure TGikoForm.BrowserTabResize(Sender: TObject);
10587 // *************************************************************************
10588 // ExternalBoardPlugInMain
10589 //
\83v
\83\89\83O
\83C
\83\93\83\81\83j
\83\85\81[
\82Ì
\8d\80\96Ú
\82ª
\8eÀ
\8ds
\82³
\82ê
\82½
10590 // *************************************************************************
10591 procedure TGikoForm.OnPlugInMenuItem( Sender : TObject );
10594 boardPlugIn : TBoardPlugIn;
10597 if not (Sender is TMenuItem) then
10600 item := TMenuItem( Sender );
10601 if not Assigned( Pointer( item.Tag ) ) then
10604 //
\83v
\83\89\83O
\83C
\83\93\82Ì
\83\81\83j
\83\85\81[
\83n
\83\93\83h
\83\89\82ð
\8cÄ
\82Ñ
\8fo
\82·
10605 boardPlugIn := TBoardPlugIn( item.Tag );
10606 boardPlugIn.PlugInMenu( item.Handle );
10609 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10610 procedure TGikoForm.TreeClick( Node : TTreeNode );
10616 if FTreeType = gttHistory then begin
10617 if Node <> nil then
10618 if TObject( Node.Data ) is TFavoriteThreadItem then
10619 if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then
10620 FavoriteClick( Node );
10624 ActiveListColumnSave;
10626 if TObject(Node.Data) is TBBS then begin
10627 SetActiveList(Node.data);
10628 end else if TObject(Node.Data) is TCategory then begin
10629 SetActiveList(Node.data);
10630 end else if TObject(Node.Data) is TBoard then begin
10631 if not TBoard(Node.Data).IsThreadDatRead then begin
10632 Screen.Cursor := crHourGlass;
10634 if not TBoard(Node.Data).IsThreadDatRead then
10635 GikoSys.ReadSubjectFile(Node.Data);
10637 Screen.Cursor := crDefault;
10640 SetActiveList(Node.data);
10643 if TObject( Node.Data ) is TBoard then begin // not TCategory
10644 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10645 if GikoSys.Setting.ListWidthState = glsMax then begin
10646 BrowserMinAction.Execute;
10647 if GikoForm.Visible then
10651 if GikoSys.Setting.ListHeightState = glsMax then begin
10652 BrowserMinAction.Execute;
10653 if GikoForm.Visible then
10661 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10662 procedure TGikoForm.TreeDoubleClick( Node : TTreeNode );
10665 ThreadItem : TThreadItem;
10666 shiftDown : Boolean;
10669 if Node = nil then Exit;
10671 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
10673 if FTreeType = gtt2ch then begin
10674 if not (TObject(Node.Data) is TBoard) then Exit;
10675 Board := TBoard(Node.Data);
10676 DownloadList(Board, shiftDown);
10677 end else if FTreeType = gttHistory then begin
10678 if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit;
10679 ThreadItem := TFavoriteThreadItem(Node.Data).Item;
10680 DownloadContent(ThreadItem, shiftDown);
10685 procedure TGikoForm.TreeViewClick(Sender: TObject);
10687 TreeClick( TreeView.Selected );
10690 procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word;
10691 Shift: TShiftState);
10693 if Key = VK_BACK then begin
10694 // UpFolderButtonClick(Sender);
10695 end else if Key = VK_SPACE then begin
10696 TreeDoubleClick( TreeView.Selected );
10697 end else if Key = VK_RETURN then begin
10698 TreeClick( TreeView.Selected );
10699 TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
10704 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
10705 procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
10709 case Msg.message of
10711 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10712 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10714 Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
10719 case Msg.wParam shr 16 of
10722 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10723 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10724 UpBoardAction.Execute;
10728 if not Handled then begin
10729 if IsDialogMessage( ListView.Handle, Msg ) then begin
10730 UpFolderAction.Execute;
10740 procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
10741 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10743 favItem : TTreeNode;
10744 favThreadItem : TFavoriteThreadItem;
10750 FMouseDownPos.X := X;
10751 FMouseDownPos.Y := Y;
10755 favItem := FavoriteTreeView.GetNodeAt( X, Y );
10756 if favItem = nil then Exit;
10758 if TObject( favItem.Data ) is TFavoriteThreadItem then begin
10759 favThreadItem := TFavoriteThreadItem( favItem.Data );
10760 if favThreadItem.Item <> nil then
10761 InsertBrowserTab( favThreadItem.Item, False );
10768 procedure TGikoForm.MessagePanelResize(Sender: TObject);
10771 if FIsIgnoreResize <> rtNone then
10774 if GikoSys.Setting.ListOrientation = gloVertical then begin
10775 if GikoSys.Setting.ListHeightState = glsMin then begin
10776 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
10777 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
10783 procedure TGikoForm.OnResized;
10788 FOldFormWidth := Width;
10789 FIsIgnoreResize := rtNone;
10791 case FIsMinimize of
10794 //
\8dÅ
\8f¬
\89»
\92\86\82Å
\82 \82é
10795 PostMessage( Handle, USER_MINIMIZED, 0, 0 );
10800 //
\8dÅ
\8f¬
\89»
\82Í
\8aù
\82É
\8a®
\97¹
\82µ
\82Ä
\82¢
\82é (
\82Â
\82Ü
\82è
\83^
\83X
\83N
\83o
\81[
\82©
\82ç
\83E
\83B
\83\93\83h
\83E
\82ð
\95\9c\8c³
\92\86)
10801 if FActiveContent <> nil then begin
10802 doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
10803 doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
10805 FIsMinimize := mtNone;
10811 procedure TGikoForm.TreeSelectNameCopyExecute(Sender: TObject);
10815 TreeView.Selected := FClickNode;
10816 s := FClickNode.Text;
10817 Clipboard.AsText := s;
10820 procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject;
10821 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10824 if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold) and
10825 (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10826 FavoriteClick( TObject( FavoriteTreeView.Selected ) );
10831 destructor TBrowserRecord.Destroy;
10835 if Self.FEvent <> nil then
10837 if Self.FBrowser <> nil then begin
10838 if Self.Thread <> nil then begin
10839 //
\83^
\83u
\82Ì
\95\9c\8c³
\82Å
\95\9c\8c³
\82³
\82ê
\82½
\83X
\83\8c\82Í
\81A
\95`
\89æ
\82³
\82ê
\82Ä
\82¢
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
\82Ì
\82Å
10840 //
\82»
\82Ì
\82Æ
\82«
\82Ì
\83X
\83N
\83\8d\81[
\83\8b\97Ê
\82ð
\95Û
\91¶
\82µ
\82Ä
\82µ
\82Ü
\82¤
\82Æ
\83g
\83b
\83v
\82É
\96ß
\82Á
\82Ä
\82µ
\82Ü
\82¤
\81B
10841 if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin
10842 doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
10843 Self.Thread.ScrollTop := doc.Body.ScrollTop;
10846 //TOleControl(Self.FBrowser).Visible := false;
10847 ShowWindow(Self.FBrowser.Handle, SW_HIDE);
10852 procedure TGikoForm.ResRangeActionUpdate(Sender: TObject);
10854 ResRangeAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
10857 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
10861 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
10862 FActiveContent.FBrowser.SetFocus;
10867 function TGikoForm.WebBrowserOnMouseDown(Sender: TObject): WordBool;
10873 document: IHTMLDocument2;
10874 docAll: IHTMLElementCollection;
10875 firstElement: IHTMLElement;
10876 nCSS, body, id : string;
10882 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10884 p.x := p.x - FActiveContent.Browser.ClientOrigin.x;
10885 p.y := p.y - FActiveContent.Browser.ClientOrigin.y;
10886 e := IHTMLDocument2(FActiveContent.Browser.Document).elementFromPoint(p.x, p.y);
10887 document := FActiveContent.Browser.Document as IHTMLDocument2;
10888 if (Assigned(e)) and Assigned(document) then begin
10889 docAll := document.all;
10890 firstElement := docAll.item('idSearch', 0) as IHTMLElement;
10891 if ( e.className = 'date' ) and (Assigned(firstElement)) and (AnsiPos('id', AnsiLowerCase(e.innerText)) > 0) then begin
10892 id := Copy(e.innerText, AnsiPos('id', AnsiLowerCase(e.innerText)), Length(e.innerText));
10893 body := GikoSys.GetSameIDResAnchor(id, FActiveContent.FThread);
10894 doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
10895 nCSS := '<p id="idSearch" style="position:absolute;top:'+ IntToStr(p.y + doc.Body.ScrollTop - firstElement.offsetHeight - 5) + 'px;right:5px;'
10896 + 'background-color:window; border:outset 1px infobackground; overflow-y:auto; z-index:5; border-top:none">'
10898 firstElement.outerHTML := nCSS;
10899 end else if (Assigned(firstElement)) then begin
10900 firstElement.outerHTML := '<p id="idSearch"></p>';
10909 procedure TGikoForm.SetFocusForBrowserActionExecute(Sender: TObject);
10911 FActiveContent.FBrowser.SetFocus;
10914 procedure TGikoForm.SetFocusForBrowserActionUpdate(Sender: TObject);
10916 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10917 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10918 SetFocusForBrowserAction.Enabled := true
10920 SetFocusForBrowserAction.Enabled := false;
10923 procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
10927 if FActiveContent <> nil then
10928 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10930 if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
10931 ListView.Items.Item[0].Selected := true //
\91I
\91ð
\83A
\83C
\83e
\83\80\82ª
\96³
\82¢
\82Æ
\82«
\82Í
\90æ
\93ª
\82Ì
\82ð
\91I
\91ð
\82·
\82é
10932 else if ListView.Items.Count > 0 then begin
10933 ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
10934 rct := ListView.ItemFocused.DisplayRect(drBounds);
10935 ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
10936 if ListView.ViewStyle <> vsReport then begin
10937 ListView.Scroll(rct.Left, 0);
10942 procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
10944 if FActiveContent <> nil then
10945 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10946 if TreeView.Visible then begin
10948 if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
10949 TreeView.Items.Item[0].Selected := true;
10950 end else if FavoriteTreeView.Visible then begin
10951 FavoriteTreeView.SetFocus;
10952 if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
10953 FavoriteTreeView.Items.Item[0].Selected := true;
10956 procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
10958 SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
10961 //
\83u
\83\89\83E
\83U
\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
\81B
10962 procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
10964 BrowserMaxAction.Execute;
10965 SetFocusForBrowserAction.Execute;
10968 procedure TGikoForm.BrowserMaxAndFocusActionUpdate(Sender: TObject);
10970 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10971 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10972 BrowserMaxAndFocusAction.Enabled := true
10974 BrowserMaxAndFocusAction.Enabled := false;
10976 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
10977 procedure TGikoForm.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
10979 BrowserMinAction.Execute;
10980 SetFocusForThreadListAction.Execute;
10983 procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
10984 Selected: Boolean);
10987 if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
10988 if (TObject( Item.Data ) is TThreadItem) then begin
10989 SelectTimer.Interval := GikoSys.Setting.SelectInterval;
10991 SelectTimer.Interval := 0
10993 SelectTimer.Interval := 0;
10997 procedure TGikoForm.SelectTimerTimer(Sender: TObject);
10999 if not (ListView.Selected = nil) then
11000 if( FActiveContent = nil) or
11001 (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
11002 SelectTimer.Interval := 0;
11007 procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
11012 List := TList.Create;
11014 Screen.Cursor := crHourGlass;
11015 SelectListItem(List);
11016 if ((GikoSys.Setting.ListOrientation = gloVertical) and
11017 (GikoSys.Setting.ListHeightState = glsMax)) or
11018 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
11019 (GikoSys.Setting.ListWidthState = glsMax)) then
11020 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11021 else if(List.Count = 0) then
11022 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11024 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðdat
\82Ì
\82Ü
\82Ü
\95Û
\91¶';
11025 FileSaveAs1.Dialog.Filter := 'DAT
\83t
\83@
\83C
\83\8b(*.dat)|*.dat';
11026 for i := 0 to List.Count - 1 do begin
11027 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
11028 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
11029 if FileSaveAs1.Execute then begin
11030 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
11031 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
11032 CopyFile(PChar(TThreadItem(List[i]).FilePath),
11033 PChar(FileSaveAs1.Dialog.FileName), true);
11040 Screen.Cursor := crDefault;
11046 procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
11053 List := TList.Create;
11055 Screen.Cursor := crHourGlass;
11056 SelectListItem(List);
11057 if ((GikoSys.Setting.ListOrientation = gloVertical) and
11058 (GikoSys.Setting.ListHeightState = glsMax)) or
11059 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
11060 (GikoSys.Setting.ListWidthState = glsMax)) then
11061 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11062 else if(List.Count = 0) then
11063 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11065 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðHTML
\89»
\82µ
\82Ä
\95Û
\91¶';
11066 FileSaveAs1.Dialog.Filter := 'HTML
\83t
\83@
\83C
\83\8b(*.html)|*.html';
11067 for i := 0 to List.Count - 1 do begin
11068 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
11069 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
11070 if FileSaveAs1.Execute then begin
11071 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
11072 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
11073 html := TStringList.Create;
11074 title := TThreadItem(List[i]).Title;
11076 GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
11077 html.SaveToFile(FileSaveAs1.Dialog.FileName);
11078 SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
11088 Screen.Cursor := crDefault;
11092 procedure TGikoForm.SkinorCSSFilesCopy(path: string);
11094 tmp, tmpD, tmpF: string;
11097 files: TStringList;
11100 if GikoSys.Setting.UseSkin then begin
11101 current := ExtractFilePath(GikoSys.GetSkinDir);
11102 tmp := GikoSys.Setting.CSSFileName;
11103 end else if GikoSys.Setting.UseCSS then begin
11104 current := ExtractFilePath(GikoSys.GetStyleSheetDir);
11105 tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
11107 dirs := TStringList.Create;
11110 if tmp <> current then begin
11111 GikoSys.GetDirectoryList(current, '*.*', dirs, true);
11112 for i := 0 to dirs.Count - 1 do begin
11113 files := TStringList.Create;
11115 gikoSys.GetFileList(dirs[i], '*.*', files, true);
11116 tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
11117 if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
11118 ForceDirectories(tmpD);
11120 if(dirs[i] = tmp) and (dirs[i] <> current) then begin
11121 for j := 0 to files.Count - 1 do begin
11122 tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
11123 if not FileExists(tmpF) then begin
11124 CopyFile(PChar(files[j]), PChar(tmpF),True);
11133 tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
11134 if not DirectoryExists(tmpD) then
11135 ForceDirectories(tmpD);
11136 tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
11137 , GikoSys.GetConfigDir, path);
11138 if not FileExists(tmpF) then begin
11139 CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
11140 , PChar(tmpF), True);
11149 procedure TGikoForm.KidokuActionExecute(Sender: TObject);
11154 List := TList.Create;
11156 SelectListItem(List);
11157 for i := 0 to List.Count - 1 do begin
11158 if TObject(List[i]) is TThreadItem then begin
11159 if (TThreadItem(List[i]).UnRead) then begin
11160 TThreadItem(List[i]).UnRead := false;
11161 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
11165 if TreeView.Visible then
11167 if ListView.Visible then
11174 procedure TGikoForm.MidokuActionExecute(Sender: TObject);
11179 List := TList.Create;
11181 SelectListItem(List);
11182 for i := 0 to List.Count - 1 do begin
11183 if TObject(List[i]) is TThreadItem then begin
11184 if (TThreadItem(List[i]).IsLogFile) and (not TThreadItem(List[i]).UnRead) then begin
11185 TThreadItem(List[i]).UnRead := true;
11186 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
11190 if TreeView.Visible then
11192 if ListView.Visible then
11199 procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
11203 if ((GikoSys.Setting.ListOrientation = gloVertical) and
11204 (GikoSys.Setting.ListHeightState = glsMax)) or
11205 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
11206 (GikoSys.Setting.ListWidthState = glsMax)) then begin
11207 if(GetActiveContent <> nil) then begin
11208 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
11210 end else if GetActiveList is TCategory then begin
11211 List := TList.Create;
11213 SelectListItem(List);
11214 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
11218 end else if GetActiveList is TBoard then begin
11219 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
11224 procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
11226 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11227 LogFolderOpenAction.Enabled := True
11228 else if GetActiveList is TBoard then
11229 LogFolderOpenAction.Enabled := True
11231 LogFolderOpenAction.Enabled := False;
11234 function TGikoForm.GetTabURLs(AStringList: TStringList) : Boolean;
11236 rec : TBrowserRecord;
11237 i, bound : Integer;
11239 bound := BrowserTab.Tabs.Count -1;
11240 if bound = -1 then begin
11242 Exit; //for
\82É
\94ò
\82Î
\82È
\82¢
\82Å
\91\80\8dì
\82ð
\94²
\82¯
\82é
11245 for i := 0 to bound do begin
11246 rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
11247 if( rec <> nil) and (rec.Thread <> nil) then
11248 AStringList.Add( rec.Thread.URL );
11253 procedure TGikoForm.TabsSaveActionExecute(Sender: TObject);
11255 if not SaveTabURLs then begin
11256 ShowMessage('
\95Û
\91¶
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ');
11260 function TGikoForm.SaveTabURLs : Boolean;
11262 Filename = 'tab.sav';
11263 bFilename = '~tab.sav';
11265 SaveStringList: TStringList;
11267 if FileExists( GikoSys.GetAppDir + Filename) then begin
11268 if FileExists( GikoSys.GetAppDir + bFilename) then
11269 DeleteFile(GikoSys.GetAppDir + bFilename);
11271 //
\83o
\83b
\83N
\83A
\83b
\83v
\82ð
\8dì
\82é
\81B
11272 RenameFile(GikoSys.GetAppDir + Filename, GikoSys.GetAppDir + bFilename);
11275 SaveStringList := TStringList.Create;
11277 if GetTabURLs(SaveStringList) then begin
11278 SaveStringList.SaveToFile(GikoSys.GetAppDir + Filename);
11282 SaveStringList.Free;
11286 procedure TGikoForm.TabsOpenActionExecute(Sender: TObject);
11288 if not LoadTabURLs then begin
11289 ShowMessage('
\95\
\8e¦
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
11293 procedure TGikoForm.FileTabSaveClick(Sender: TObject);
11295 SaveStringList: TStringList;
11297 SaveTabList := TStringList.Create;
11298 SaveTabList := GetTabURLs;
11299 if TabSaveDialog.Execute then begin
11300 SaveTabList.SaveToFile(TabSaveDialog.FileName);
11305 function TGikoForm.LoadTabURLs : Boolean;
11307 i, bound : Integer;
11308 item : TThreadItem;
11309 URLs : TStringList;
11310 GikoTab : TGikoTabAppend;
11313 fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
11314 URLs := TStringList.Create();
11315 GikoTab := GikoSys.Setting.BrowserTabAppend;
11318 if FileExists(fileName) then
11319 URLs.LoadFromFile(fileName);
11322 ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11324 bound := URLs.Count - 1;
11325 if bound = -1 then begin
11331 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11332 for i := 0 to URLs.Count - 1 do begin
11333 item := BBSsFindThreadFromURL( URLs[ i ] );
11334 if item <> nil then
11335 InsertBrowserTab( item, false );
11338 GikoSys.Setting.BrowserTabAppend := GikoTab;
11344 procedure TGikoForm.TabsSaveToFileActionExecute(Sender: TObject);
11346 SaveTabList: TStringList;
11349 SaveTabList := TStringList.Create;
11351 Result := GetTabURLs(SaveTabList);
11352 // if TabSaveDialog.Execute then begin
11353 // SaveTabList.SaveToFile(TabSaveDialog.FileName);
11360 procedure TGikoForm.TabsOpenFromFileActionExecute(Sender: TObject);
11363 item : TThreadItem;
11364 URLs : TStringList;
11365 GikoTab: TGikoTabAppend;
11367 URLs := TStringList.Create();
11368 GikoTab := GikoSys.Setting.BrowserTabAppend;
11371 // if TabOpenDialog.Execute then begin
11372 // URLs.LoadFromFile(TabOpenDialog.FileName);
11375 on EFOpenError do ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11378 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11379 for i := 0 to URLs.Count - 1 do begin
11380 item := BBSsFindThreadFromURL( URLs[ i ] );
11381 if item <> nil then
11382 InsertBrowserTab( item, false );
11385 GikoSys.Setting.BrowserTabAppend := GikoTab;
11390 procedure TGikoForm.OnlyAHundredResActionExecute(Sender: TObject);
11392 ThreadItem : TThreadItem;
11393 FilterList : TStringList;
11396 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11397 and (FActiveContent.FBrowser.Busy) then Exit;
11399 FResRangeMenuSelect := 100;
11400 OnlyAHundredResAction.Checked := True;
11402 if GikoSys.ResRange <> 100 then begin
11403 GikoSys.ResRange := 100;
11405 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11406 FilterList := TStringList.Create;
11408 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11409 GikoSys.FSelectResFilter.Reverse := False;
11411 FilterList.Destroy;
11414 FSelectResWord := '';
11416 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11417 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11418 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11420 ThreadItem := GetActiveContent;
11421 if ThreadItem <> nil then
11422 InsertBrowserTab( ThreadItem, True );
11426 procedure TGikoForm.OnlyKokoResActionExecute(Sender: TObject);
11428 ThreadItem : TThreadItem;
11429 FilterList : TStringList;
11432 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11433 and (FActiveContent.FBrowser.Busy) then Exit;
11435 FResRangeMenuSelect := Ord( grrKoko );
11436 OnlyKokoResAction.Checked := True;
11438 if GikoSys.ResRange <> Ord( grrKoko ) then begin
11439 GikoSys.ResRange := Ord( grrKoko );
11441 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11442 FilterList := TStringList.Create;
11444 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11445 GikoSys.FSelectResFilter.Reverse := False;
11447 FilterList.Destroy;
11450 FSelectResWord := '';
11452 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11453 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11454 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11456 ThreadItem := GetActiveContent;
11457 if ThreadItem <> nil then
11458 InsertBrowserTab( ThreadItem, True );
11462 procedure TGikoForm.OnlyNewResActionExecute(Sender: TObject);
11464 ThreadItem : TThreadItem;
11465 FilterList : TStringList;
11468 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11469 and (FActiveContent.FBrowser.Busy) then Exit;
11471 FResRangeMenuSelect := Ord( grrNew );
11472 OnlyNewResAction.Checked := True;
11474 if GikoSys.ResRange <> Ord( grrNew ) then begin
11475 GikoSys.ResRange := Ord( grrNew );
11477 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11478 FilterList := TStringList.Create;
11480 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11481 GikoSys.FSelectResFilter.Reverse := False;
11483 FilterList.Destroy;
11486 FSelectResWord := '';
11488 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11489 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11490 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11492 ThreadItem := GetActiveContent;
11493 if ThreadItem <> nil then
11494 InsertBrowserTab( ThreadItem, True );
11498 procedure TGikoForm.BrowsBoradHeadActionExecute(Sender: TObject);
11500 RefURL, URL : string;
11504 if GetActiveList is TCategory then begin
11505 List := TList.Create;
11507 SelectListItem(List);
11508 RefURL := TBoard(List[0]).URL;
11512 end else if GetActiveList is TBoard then begin
11513 RefURL := TBoard(GetActiveList).URL
11515 if RefURL <> '' then begin
11516 if RefURL[Length(RefURL)] <> '/' then
11517 URL := RefURL + '/' + 'head.txt'
11519 URL := RefURL + 'head.txt';
11523 ShowMessage('
\94Â
\82ð
\93Á
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B');
11528 procedure TGikoForm.BrowsBoradHeadActionUpdate(Sender: TObject);
11530 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11531 BrowsBoradHeadAction.Enabled := True
11532 else if GetActiveList is TBoard then
11533 BrowsBoradHeadAction.Enabled := True
11535 BrowsBoradHeadAction.Enabled := False;
11538 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\95Ò
\8fW
\82·
\82é
\82½
\82ß
\82É
\8aJ
\82
11539 procedure TGikoForm.EditNGActionExecute(Sender: TObject);
11541 GikoSys.FAbon.EditNGwords;
11544 procedure TGikoForm.ThreadRangeActionUpdate(Sender: TObject);
11546 ThreadRangeAction.Enabled := (GetActiveList is TBoard);
11549 procedure TGikoForm.ThreadRangeActionExecute(Sender: TObject);
11551 case GikoSys.Setting.ThreadRange of
11552 gtrAll: AllItemAction.Execute;
11553 gtrLog: LogItemAction.Execute;
11554 gtrNew: NewItemAction.Execute;
11558 procedure TGikoForm.TabAutoSaveActionExecute(Sender: TObject);
11563 procedure TGikoForm.TabAutoLoadActionExecute(Sender: TObject);
11568 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶
11569 procedure TGikoForm.ActiveListColumnSave;
11571 ActivListObj : TObject;
11572 i, id, idx : Integer;
11573 BBSOrder : TGikoBBSColumnList;
11574 CategoryOrder : TGikoCategoryColumnList;
11575 BoardOrder : TGikoBoardColumnList;
11578 ActivListObj := ActiveList;
11579 if ActivListObj is TBBS then begin
11580 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
11581 BBSOrder := TGikoBBSColumnList.Create;
11583 for i := 0 to ListView.Columns.Count - 1 do begin
11584 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11585 idx := ListView.Column[ i ].Tag;
11586 id := Ord( GikoSys.Setting.BBSColumnOrder[ idx ] );
11587 BBSOrder.Add( TGikoBBSColumnID( id ) );
11588 //
\95\9d\82Ì
\95Û
\91¶
11589 GikoSys.Setting.BBSColumnWidth[ id ] := ListView.Column[ i ].Width;
11591 for i := 0 to ListView.Columns.Count - 1 do
11592 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11593 GikoSys.Setting.BBSColumnOrder[ i ] := BBSOrder[ i ];
11597 end else if ActivListObj is TCategory then begin
11598 //=====
\94Â
\83\8a\83X
\83g =====
11599 CategoryOrder := TGikoCategoryColumnList.Create;
11601 for i := 0 to ListView.Columns.Count - 1 do begin
11602 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11603 idx := ListView.Column[ i ].Tag;
11604 id := Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] );
11605 CategoryOrder.Add( TGikoCategoryColumnID( id ) );
11606 //
\95\9d\82Ì
\95Û
\91¶
11607 GikoSys.Setting.CategoryColumnWidth[ id ] := ListView.Column[ i ].Width;
11609 for i := 0 to ListView.Columns.Count - 1 do
11610 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11611 GikoSys.Setting.CategoryColumnOrder[ i ] := CategoryOrder[ i ];
11613 CategoryOrder.Free;
11615 end else if ActivListObj is TBoard then begin
11616 //=====
\83X
\83\8c\83\8a\83X
\83g =====
11617 BoardOrder := TGikoBoardColumnList.Create;
11619 for i := 0 to ListView.Columns.Count - 1 do begin
11620 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11621 idx := ListView.Column[ i ].Tag;
11622 id := Ord( GikoSys.Setting.BoardColumnOrder[ idx ] );
11623 BoardOrder.Add( TGikoBoardColumnID( id ) );
11624 //
\95\9d\82Ì
\95Û
\91¶
11625 GikoSys.Setting.BoardColumnWidth[ id ] := ListView.Column[ i ].Width;
11627 for i := 0 to ListView.Columns.Count - 1 do
11628 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11629 GikoSys.Setting.BoardColumnOrder[ i ] := BoardOrder[ i ];
11637 procedure TGikoForm.ListViewColumnRightClick(Sender: TObject;
11638 Column: TListColumn; Point: TPoint);
11644 //
\83|
\83b
\83v
\83A
\83b
\83v
\83\81\83j
\83\85\81[
\82ð
\83N
\83\8a\83A
11645 for i := ListColumnPopupMenu.Items.Count - 1 downto 0 do
11646 ListColumnPopupMenu.Items.Items[ i ].Free;
11648 //
\83\81\83j
\83\85\81[
\82Ì
\8dì
\90¬ (
\83\81\83C
\83\93\83J
\83\89\83\80\82Í
\95K
\90{
\82È
\82Ì
\82Å
\83\81\83j
\83\85\81[
\82É
\8aÜ
\82ß
\82È
\82¢)
11649 if TObject( FActiveList ) is TBBS then begin
11651 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
11652 for i := 1 to Length( GikoBBSColumnCaption ) - 1 do begin
11653 item := TMenuItem.Create( ListColumnPopupMenu );
11654 item.Caption := GikoBBSColumnCaption[ i ];
11656 item.OnClick := ListColumnPopupMenuOnClick;
11657 for j := GikoSys.Setting.BBSColumnOrder.Count - 1 downto 0 do begin
11658 if GikoSys.Setting.BBSColumnOrder[ j ] = TGikoBBSColumnID( i ) then begin
11659 item.Checked := True;
11663 ListColumnPopupMenu.Items.Add( item );
11666 end else if TObject( FActiveList ) is TCategory then begin
11668 //=====
\94Â
\83\8a\83X
\83g =====
11669 for i := 1 to Length( GikoCategoryColumnCaption ) - 1 do begin
11670 item := TMenuItem.Create( ListColumnPopupMenu );
11671 item.Caption := GikoCategoryColumnCaption[ i ];
11673 item.OnClick := ListColumnPopupMenuOnClick;
11674 for j := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 0 do begin
11675 if GikoSys.Setting.CategoryColumnOrder[ j ] = TGikoCategoryColumnID( i ) then begin
11676 item.Checked := True;
11680 ListColumnPopupMenu.Items.Add( item );
11683 end else if TObject( FActiveList ) is TBoard then begin
11685 //=====
\83X
\83\8c\83\8a\83X
\83g =====
11686 for i := 1 to Length( GikoBoardColumnCaption ) - 1 do begin
11687 item := TMenuItem.Create( ListColumnPopupMenu );
11688 item.Caption := GikoBoardColumnCaption[ i ];
11690 item.OnClick := ListColumnPopupMenuOnClick;
11691 for j := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 0 do begin
11692 if GikoSys.Setting.BoardColumnOrder[ j ] = TGikoBoardColumnID( i ) then begin
11693 item.Checked := True;
11697 ListColumnPopupMenu.Items.Add( item );
11702 //
\83\81\83j
\83\85\81[
\82Ì
\95\
\8e¦
11703 Point := ListView.ClientToScreen( Point );
11704 if ListColumnPopupMenu.Items.Count > 0 then
11705 ListColumnPopupMenu.Popup( Point.X, Point.Y );
11709 /// ListColumnPopupMenu
\83A
\83C
\83e
\83\80\82Ì
\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
11710 procedure TGikoForm.ListColumnPopupMenuOnClick( Sender : TObject );
11717 if not (Sender is TMenuItem) then
11720 ActiveListColumnSave;
11721 item := TMenuItem( Sender );
11723 if TObject( FActiveList ) is TBBS then
11724 orderList := GikoSys.Setting.BBSColumnOrder
11725 else if TObject( FActiveList ) is TCategory then
11726 orderList := GikoSys.Setting.CategoryColumnOrder
11727 else if TObject( FActiveList ) is TBoard then
11728 orderList := GikoSys.Setting.BoardColumnOrder
11732 if item.Checked then begin
11733 //
\83J
\83\89\83\80\82Ì
\8dí
\8f\9c
11734 for i := orderList.Count - 1 downto 0 do begin
11735 if Integer( orderList[ i ] ) = item.Tag then begin
11736 orderList.Delete( i );
11741 //
\83J
\83\89\83\80\82Ì
\92Ç
\89Á
11742 orderList.Add( Pointer( item.Tag ) );
11745 SetActiveList( FActiveList );
11748 //
\8ew
\92è
\82µ
\82½
\94Ô
\8d\86\82Ì
\83\8c\83X
\82Éjump
\82·
\82éAction
11749 procedure TGikoForm.JumpToNumOfResActionExecute(Sender: TObject);
11755 if( InputQuery('
\8ew
\92è
\82µ
\82½
\94Ô
\8d\86\82Ì
\83\8c\83X
\82É
\94ò
\82Ô', '
\94Ô
\8d\86\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢', str) ) then begin
11756 str := ZenToHan(str);
11757 res := StrToIntDef(str, -1);
11758 if (res > 0) and (res <= GetActiveContent.Count) then begin
11759 BrowserMovement(IntToStr(res), FActiveContent);
11760 SetFocusForBrowserAction.Execute;
11761 end else if res > GetActiveContent.Count then begin
11762 BrowserMovement(IntToStr(GetActiveContent.Count), FActiveContent);
11763 SetFocusForBrowserAction.Execute;
11768 procedure TGikoForm.JumpToNumOfResActionUpdate(Sender: TObject);
11770 JumpToNumOfResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
11773 procedure TGikoForm.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
11778 node := FavoriteTreeView.Items.GetFirstNode;
11779 while node <> nil do begin
11780 if node.HasChildren then
11781 node.Expanded := False;
11782 node := node.GetNext;
11786 procedure TGikoForm.ReleaseBrowser( BRecord: TBrowserRecord);
11788 if BRecord <> nil then begin
11789 BRecord.Browser := nil;
11790 if BRecord.FEvent <> nil then begin
11791 BRecord.FEvent.Free;
11792 BRecord.FEvent := nil;
11794 BRecord.Repaint := true;
11798 procedure TGikoForm.OnGestureStart(Sender: TObject);
11803 procedure TGikoForm.OnGestureMove(Sender: TObject);
11809 s := MouseGesture.GetGestureStr;
11811 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
11812 if Action <> nil then
11813 ActStr := '
\81i' + Action.Caption + '
\81j';
11814 s := '
\83W
\83F
\83X
\83`
\83\83\81[: ' + s + ActStr;
11815 StatusBar.Panels[1].Text := s;
11818 procedure TGikoForm.OnGestureEnd(Sender: TObject);
11823 s := MouseGesture.GetGestureStr;
11824 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
11825 if Action <> nil then
11827 StatusBar.Panels[1].Text := '';
11830 procedure TGikoForm.ListViewCustomDrawItem(Sender: TCustomListView;
11831 Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
11833 ThreadItem: TThreadItem;
11835 DefaultDraw := true;
11836 if TObject(Item.Data) is TThreadItem then begin
11837 ThreadItem := TThreadItem(Item.Data);
11838 if ( FUseOddResOddColor ) and ( ThreadItem.Count <> 0 ) and ( ThreadItem.AllResCount <> ThreadItem.Count) then begin
11839 ListView.Canvas.Brush.Color := FOddColor;
11841 ListView.Canvas.Brush.Color := FListViewBackGroundColor;
11843 // if (ThreadItem.Kokomade <> ThreadItem.Count) and (ThreadItem.IsLogFile) then
11844 if ThreadItem.UnRead then
11845 TListView(Sender).Canvas.Font.Style := [fsBold];
11850 procedure TGikoForm.FormActivate(Sender: TObject);
11852 MouseGesture.UnHook;
11853 if GikoSys.Setting.GestureEnabled then begin
11854 MouseGesture.OnGestureStart := OnGestureStart;
11855 MouseGesture.OnGestureMove := OnGestureMove;
11856 MouseGesture.OnGestureEnd := OnGestureEnd;
11857 MouseGesture.SetHook(Handle);
11859 MouseGesture.OnGestureStart := nil;
11860 MouseGesture.OnGestureMove := nil;
11861 MouseGesture.OnGestureEnd := nil;
11865 procedure TGikoForm.MainCoolBarChange(Sender: TObject);
11867 if not FStartUp then begin
11868 SaveMainCoolBarSettings;
11872 procedure TGikoForm.BrowserCoolBarChange(Sender: TObject);
11874 SaveBrowserCoolBarSettings;
11877 procedure TGikoForm.ListCoolBarChange(Sender: TObject);
11879 SaveBoardCoolBarSettings;
11882 procedure TGikoForm.BrowserCoolBarResize(Sender: TObject);
11884 if not FStartUp then begin
11885 SaveBrowserCoolBarSettings;
11889 procedure TGikoForm.ListCoolBarResize(Sender: TObject);
11891 if not FStartUp then begin
11892 SaveBoardCoolBarSettings;
11897 procedure TGikoForm.BrowserPanelResize(Sender: TObject);
11899 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
11900 MoveWindow(FActiveContent.Browser.Handle, 0, 0, BrowserPanel.ClientWidth, BrowserPanel.ClientHeight, false);
11906 OleInitialize(nil);