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);
32 TBrowserRecord = class;
34 TGikoForm = class(TForm)
35 StatusBar: TStatusBar;
38 TreeSplitter: TSplitter;
41 ThreadMainPanel: TPanel;
42 ListSplitter: TSplitter;
44 ListView: TGikoListView;
48 MessageHideButton: TSpeedButton;
49 MessageListView: TListView;
50 MessageSplitter: TSplitter;
52 SpeedButton1: TSpeedButton;
54 CabinetSelectToolButton: TToolButton;
55 HistoryToolBar: TToolBar;
56 ToolButton15: TToolButton;
57 ToolButton18: TToolButton;
58 ItemIcon16: TImageList;
59 ItemIcon32: TImageList;
60 HotToobarImageList: TImageList;
61 ToobarImageList: TImageList;
62 ItemImageList: TImageList;
63 ActionList: TActionList;
64 LogDeleteAction: TAction;
65 KidokuAction: TAction;
66 StdToolBarVisibleAction: TAction;
67 SearchAction: TAction;
68 GikoNaviWebPageAction: TAction;
71 MsgBarVisibleAction: TAction;
72 StatusBarVisibleAction: TAction;
73 LargeIconAction: TAction;
74 SmallIconAction: TAction;
75 ListIconAction: TAction;
76 DetailIconAction: TAction;
77 CabinetBBSAction: TAction;
78 CabinetHistoryAction: TAction;
79 CabinetVisibleAction: TAction;
80 MidokuAction: TAction;
81 AllSelectAction: TAction;
82 UpFolderAction: TAction;
83 ListNumberVisibleAction: TAction;
84 AllItemAction: TAction;
85 LogItemAction: TAction;
86 NewItemAction: TAction;
87 SelectItemAction: TAction;
88 ShowThreadAction: TAction;
92 DeleteMenu: TMenuItem;
94 KidokuMenu: TMenuItem;
95 MidokuMenu: TMenuItem;
96 AllSelectMenu: TMenuItem;
98 StdToolBarMenu: TMenuItem;
99 CabinetMenu: TMenuItem;
102 CabinetVisibleMenu: TMenuItem;
103 MessageMenu: TMenuItem;
104 StatusBarMenu: TMenuItem;
106 LargeIconMenu: TMenuItem;
107 SmallIconMenu: TMenuItem;
109 DetailMenu: TMenuItem;
112 RoundMenu: TMenuItem;
114 OptionMenu: TMenuItem;
118 AboutMenu: TMenuItem;
120 BrowserPopupMenu: TPopupMenu;
121 ShowThreadMenu: TMenuItem;
122 ShowBoardMenu: TMenuItem;
123 ShowBoardAction: TAction;
124 ListIconPopupMenu: TPopupMenu;
125 LargeIconPMenu: TMenuItem;
126 SmallIconPMenu: TMenuItem;
127 ListPMenu: TMenuItem;
128 DetailPMenu: TMenuItem;
129 CabinetCloseAction: TAction;
130 ClosePopupMenu: TPopupMenu;
131 CloseMenu: TMenuItem;
132 OptionAction: TAction;
142 RoundAction: TAction;
143 ListPopupMenu: TPopupMenu;
144 ListRoundPMenu: TMenuItem;
145 ListReservPMenu: TMenuItem;
147 ItemRoundPMenu: TMenuItem;
149 KidokuPMenu: TMenuItem;
150 MidokuPMenu: TMenuItem;
151 AllSelectPMenu: TMenuItem;
152 UrlCopyPMenu: TMenuItem;
154 DeletePMenu: TMenuItem;
156 ViewPMenu: TMenuItem;
157 LargeIconLPMenu: TMenuItem;
158 SmallIconLPMenu: TMenuItem;
159 ListLPMenu: TMenuItem;
160 DetailLPMenu: TMenuItem;
164 URLCopyAction: TAction;
168 MsgBarCloseAction: TAction;
169 ScrollTopAction: TAction;
170 ScrollLastAction: TAction;
171 ScrollNewAction: TAction;
172 ScrollKokoAction: TAction;
173 EditorAction: TAction;
175 ItemReloadAction: TAction;
176 BrowserMaxAction: TAction;
188 SelectListReloadAction: TAction;
189 SelectThreadReloadAction: TAction;
190 KokoPopupMenu: TPopupMenu;
191 KokomadePMenu: TMenuItem;
193 MenuItem1: TMenuItem;
194 MenuItem2: TMenuItem;
195 BrowserTabCloseAction: TAction;
196 BrowserTabPopupMenu: TPopupMenu;
198 KokomadeAction: TAction;
199 ZenbuAction: TAction;
200 KokoResAction: TAction;
201 SelectItemURLCopyAction: TAction;
202 SelectReservAction: TAction;
203 NotSelectTabCloseAction: TAction;
207 TreePopupMenu: TPopupMenu;
208 TreeSelectThreadPupupMenu: TMenuItem;
209 TreeSelectBoardPupupMenu: TMenuItem;
211 TreeSelectURLPupupMenu: TMenuItem;
212 TreeSelectBoradReload: TAction;
213 TreeSelectThreadReload: TAction;
214 TreeSelectURLCopy: TAction;
215 ListToolBarVisibleAction: TAction;
216 BrowserToolBarVisibleAction: TAction;
220 BrowserBottomPanel: TGikoPanel;
221 CabinetSelectPopupMenu: TPopupMenu;
223 ItemReservPMenu: TMenuItem;
224 RoundNamePopupMenu: TPopupMenu;
225 SelectNewRoundName: TAction;
226 SelectDeleteRound: TAction;
227 NewBoardAction: TAction;
230 LoginAction: TAction;
232 KeySettingAction: TAction;
234 AllTabCloseAction: TAction;
242 MessageImageList: TImageList;
243 ProgressBar: TProgressBar;
244 ArrangeAction: TAction;
246 NameURLCopyAction: TAction;
247 SelectItemNameURLCopyAction: TAction;
248 NameUrlCopyPMenu: TMenuItem;
255 ListCoolBar: TGikoCoolBar;
256 ListToolBar: TToolBar;
257 ViewNoButton: TToolButton;
258 IconToolButton: TToolButton;
259 UpFolderButton: TToolButton;
260 Sepa01ToolButton: TToolButton;
261 AllItemToolButton: TToolButton;
262 LogItemToolButton: TToolButton;
263 NewItemToolButton: TToolButton;
264 ListDownloadToolButton: TToolButton;
265 ListThreadDownloadToolButton: TToolButton;
266 ToolButton2: TToolButton;
267 ToolButton1: TToolButton;
268 BrowserCoolBar: TGikoCoolBar;
269 BrowserToolBar: TToolBar;
270 BrowserSizeButton: TToolButton;
271 ToolButton3: TToolButton;
272 TopButton: TToolButton;
273 LastBotton: TToolButton;
274 NewButton: TToolButton;
275 KokoButton: TToolButton;
276 ToolButton9: TToolButton;
277 EditorButton: TToolButton;
278 ToolButton11: TToolButton;
279 IEButton: TToolButton;
280 ToolButton5: TToolButton;
281 ItemReloadButton: TToolButton;
282 ListNameToolBar: TToolBar;
283 ListNameLabel: TLabel;
285 BrowserNameToolBar: TToolBar;
286 ItemBoardImage: TImage;
287 BrowserBoardNameLabel: TLabel;
289 BrowserNameLabel: TLabel;
290 ActiveLogDeleteAction: TAction;
294 ListNameBarVisibleAction: TAction;
296 BrowserNameBarVisibleAction: TAction;
299 TreeSelectNameURLCopy: TAction;
300 TreeSelectNameURLPupupMenu: TMenuItem;
303 PaneInitAction: TAction;
305 BrowserTabToolBar: TToolBar;
306 BrowserTab: TTabControl;
307 ToolButton7: TToolButton;
308 BrowserMinAction: TAction;
311 SelectTextClearAction: TAction;
312 MailTextClearAction: TAction;
313 NameTextClearAction: TAction;
317 LeftmostTabSelectAction: TAction;
318 LeftTabSelectAction: TAction;
319 RightTabSelectAction: TAction;
320 RightmostTabSelectAction: TAction;
326 FavoriteMenu: TMenuItem;
327 FavoriteAddAction: TAction;
329 BoardFavoriteAddMenu: TMenuItem;
330 BoardFavoriteAddAction: TAction;
331 ThreadFavoriteAddAction: TAction;
332 ThreadFavoriteAddMenu: TMenuItem;
333 TreeSelectFavoriteAddAction: TAction;
335 TreeSelectFavoriteAddPupupMenu: TMenuItem;
336 FavoriteArrangeAction: TAction;
337 FavoriteTreeView: TTreeView;
338 StateIconImageList: TImageList;
340 TopRightPanel: TPanel;
343 TopCoolPanel: TPanel;
344 MainCoolBar: TGikoCoolBar;
345 MenuToolBar: TToolBar;
346 StdToolBar: TToolBar;
347 RoundToolButton: TToolButton;
348 ToolButton6: TToolButton;
349 ToolButton4: TToolButton;
350 ToolButton13: TToolButton;
351 AbortToolButton: TToolButton;
352 LoginToolButton: TToolButton;
353 AddressToolBar: TToolBar;
354 AddressComboBox: TComboBox;
355 MoveToToolButton: TToolButton;
356 MoveToAction: TAction;
357 AddressImageList: TImageList;
358 AddressBarVisibleAction: TAction;
359 AddressToolBarMenu: TMenuItem;
361 BrowserTabVisibleAction: TAction;
364 BrowserTabTopAction: TAction;
365 BrowserTabBottomAction: TAction;
369 BrowserTabTabStyleAction: TAction;
370 BrowserTabButtonStyleAction: TAction;
371 BrowserTabFlatStyleAction: TAction;
375 PreviewTimer: TTimer;
376 MonazillaWebPageAction: TAction;
377 MonazillaWebPageAction1: TMenuItem;
378 GikoHelpAction: TAction;
381 KotehanAction: TAction;
383 LinkBarVisibleAction: TAction;
387 ChevronPopupMenu: TPopupMenu;
388 BBS2chWebPageAction: TAction;
391 GikoFolderOpenAction: TAction;
393 LinkToolBar: TToolBar;
395 ToolButton8: TToolButton;
396 ToolButton10: TToolButton;
397 ThreadEditorAction: TAction;
401 LinkBarPopupMenu: TPopupMenu;
402 ToolBarSettingAction: TAction;
404 ToolButton12: TToolButton;
405 ToolButton14: TToolButton;
406 ThreadPopupMenu: TPopupMenu;
407 MenuItem4: TMenuItem;
408 MenuItem5: TMenuItem;
409 MenuItem6: TMenuItem;
411 NameCopyAction: TAction;
412 BoardIEAction: TAction;
414 SelectItemNameCopyAction: TAction;
415 SelectItemNameCopyAction1: TMenuItem;
419 SelectComboBox: TComboBox;
420 MainCoolBarPopupMenu: TPopupMenu;
421 StdToolBarVisiblePMenu: TMenuItem;
422 AddressToolBarVisiblePMenu: TMenuItem;
423 LinkToolBarVisiblePMenu: TMenuItem;
444 SelectItemToolButton: TToolButton;
445 SelectResToolButton: TToolButton;
446 SelectResAction: TAction;
447 ToolButton16: TToolButton;
448 AllResAction: TAction;
455 EditNGAction: TAction;
456 ReloadAction: TAction;
457 GoFowardAction: TAction;
458 GoBackAction: TAction;
459 SelectComboBoxSplitter: TImage;
460 IndividualAbon1: TMenuItem;
462 IndividualAbon2: TMenuItem;
464 CancellIndividualAbon: TAction;
465 AntiIndividualAbon: TMenuItem;
470 SearchBoardName: TMenuItem;
471 TreeSelectLogDeleteSeparator: TMenuItem;
472 TreeSelectSearchBoardName: TAction;
473 CabinetFavoriteAction: TAction;
476 FavoriteTreePopupMenu: TPopupMenu;
477 FavoriteTreeViewRenameAction: TAction;
478 FavoriteTreeRenamePopupMenu: TMenuItem;
479 FavoriteTreeViewNewFolderAction: TAction;
480 FavoriteTreeNewFolderPopupMenu: TMenuItem;
482 FavoriteTreeViewDeleteAction: TAction;
483 FavoriteTreeDeletePopupMenu: TMenuItem;
484 FavoriteToolBar: TToolBar;
485 ToolButton17: TToolButton;
486 ToolButton19: TToolButton;
487 FavoriteTreeViewBrowseFolderAction: TAction;
488 FavoriteTreeBrowseFolderPopupMenu: TMenuItem;
490 FavoriteTreeReloadPopupMenu: TMenuItem;
492 FavoriteTreeURLCopyPopupMenu: TMenuItem;
493 FavoriteTreeNameCopyPopupMenu: TMenuItem;
494 FavoriteTreeLogDeletePopupMenu: TMenuItem;
496 FavoriteTreeNameURLCopyPopupMenu: TMenuItem;
497 FavoriteTreeViewReloadAction: TAction;
498 FavoriteTreeViewURLCopyAction: TAction;
499 FavoriteTreeViewNameCopyAction: TAction;
500 FavoriteTreeViewNameURLCopyAction: TAction;
501 FavoriteTreeViewLogDeleteAction: TAction;
502 ResRangeAction: TAction;
503 ToolButton20: TToolButton;
504 ResRangeButton: TToolButton;
506 ExportFavoriteFileAction1: TMenuItem;
507 ExportFavoriteFile: TFileSaveAs;
508 ToolButton21: TToolButton;
509 CabinetBBSToolButton: TToolButton;
510 ToolButton23: TToolButton;
511 ToolButton24: TToolButton;
514 FavoriteTreeViewBrowseBoardAction: TAction;
515 FavoriteTreeViewBrowseThreadAction: TAction;
516 UpBoardAction: TAction;
526 TreeSelectLogDeletePopupMenu: TMenuItem;
528 BBSSelectPopupMenu: TPopupMenu;
529 PlugInMenu: TMenuItem;
530 TmpToolBar: TToolBar;
531 TreeSelectNameCopy: TAction;
532 TreeSelectNamePupupMenu: TMenuItem;
533 BrowserPanel: TPanel;
534 SetFocusForBrowserAction: TAction;
535 SetFocusForThreadListAction: TAction;
536 SetFocusForCabinetAction: TAction;
538 ThreadlistMaxAndFocusAction: TAction;
539 BrowserMaxAndFocusAction: TAction;
540 UpBoardButton: TToolButton;
542 SelectThreadSave: TMenuItem;
543 SelectItemSaveForHTML: TAction;
544 FileSaveAs1: TFileSaveAs;
548 SelectItemSaveForDat: TAction;
549 LogFolderOpenAction: TAction;
550 OpenLogFolder: TMenuItem;
551 Browser: TWebBrowser;
554 TabsSaveAction: TAction;
555 TabsOpenAction: TAction;
556 ResRangePopupMenu: TPopupMenu;
560 OnlyAHundredResAction: TAction;
561 OnlyNewResAction: TAction;
562 OnlyKokoResAction: TAction;
564 BrowsBoradHeadAction: TAction;
565 BrowsBoradHeadAction1: TMenuItem;
566 ThreadRangeAction: TAction;
567 ThreadRangePopupMenu: TPopupMenu;
575 ThreadRangeButton: TToolButton;
576 TabAutoSaveAction: TAction;
577 TabAutoLoadAction: TAction;
578 procedure FormCreate(Sender: TObject);
579 procedure FormDestroy(Sender: TObject);
580 procedure CabinetPanelHide(Sender: TObject);
581 procedure FormClose(Sender: TObject; var Action: TCloseAction);
582 procedure ListViewData(Sender: TObject; Item: TListItem);
583 procedure ListViewDataFind(Sender: TObject; Find: TItemFind;
584 const FindString: String; const FindPosition: TPoint;
585 FindData: Pointer; StartIndex: Integer; Direction: TSearchDirection;
586 Wrap: Boolean; var Index: Integer);
587 procedure ListViewDataHint(Sender: TObject; StartIndex,
589 procedure ListViewDataStateChange(Sender: TObject; StartIndex,
590 EndIndex: Integer; OldState, NewState: TItemStates);
591 procedure BrowserStatusTextChange(Sender: TObject;
592 const Text: WideString);
593 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
594 procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
595 var AllowChange: Boolean);
596 procedure ListViewKeyDown(Sender: TObject; var Key: Word;
598 procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
599 procedure ListViewSort(Sender: TObject; Column: TListColumn);
600 procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
601 Button: TToolButton; State: TCustomDrawState;
602 var DefaultDraw: Boolean);
603 procedure BrowserBeforeNavigate2(Sender: TObject;
604 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
605 Headers: OleVariant; var Cancel: WordBool);
606 procedure ListViewAdvancedCustomDrawItem(Sender: TCustomListView;
607 Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
608 var DefaultDraw: Boolean);
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 ListSplitterCanResize(Sender: TObject; var NewSize: Integer;
697 var Accept: Boolean);
698 procedure ListSplitterMoved(Sender: TObject);
699 procedure BrowserTabChange(Sender: TObject);
700 procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
701 Shift: TShiftState; X, Y: Integer);
702 procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
703 State: TDragState; var Accept: Boolean);
704 procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
705 procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
707 procedure BrowserDocumentComplete(Sender: TObject;
708 const pDisp: IDispatch; var URL: OleVariant);
709 procedure SelectReservActionUpdate(Sender: TObject);
710 procedure RoundNamePopupMenuPopup(Sender: TObject);
711 procedure SelectNewRoundNameExecute(Sender: TObject);
712 procedure SelectDeleteRoundExecute(Sender: TObject);
713 procedure SelectReservActionExecute(Sender: TObject);
714 procedure NewBoardActionExecute(Sender: TObject);
715 procedure LoginActionExecute(Sender: TObject);
716 procedure KeySettingActionExecute(Sender: TObject);
717 procedure AllTabCloseActionExecute(Sender: TObject);
718 procedure ArrangeActionExecute(Sender: TObject);
719 procedure NameURLCopyActionExecute(Sender: TObject);
720 procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
721 procedure URLCopyActionUpdate(Sender: TObject);
722 procedure NameURLCopyActionUpdate(Sender: TObject);
723 procedure BrowserTabCloseActionUpdate(Sender: TObject);
724 procedure NotSelectTabCloseActionUpdate(Sender: TObject);
725 procedure AllTabCloseActionUpdate(Sender: TObject);
726 procedure SelectItemNameURLCopyActionUpdate(Sender: TObject);
727 procedure ActiveLogDeleteActionExecute(Sender: TObject);
728 procedure ActiveLogDeleteActionUpdate(Sender: TObject);
729 procedure ListNameBarVisibleActionExecute(Sender: TObject);
730 procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
731 procedure TreeSelectNameURLCopyExecute(Sender: TObject);
732 procedure PaneInitActionExecute(Sender: TObject);
733 procedure FormShow(Sender: TObject);
734 procedure BrowserTabToolBarResize(Sender: TObject);
735 procedure BrowserMinActionExecute(Sender: TObject);
736 procedure SelectTextClearActionExecute(Sender: TObject);
737 procedure NameTextClearActionExecute(Sender: TObject);
738 procedure MailTextClearActionExecute(Sender: TObject);
739 procedure LeftmostTabSelectActionExecute(Sender: TObject);
740 procedure LeftTabSelectActionExecute(Sender: TObject);
741 procedure RightTabSelectActionExecute(Sender: TObject);
742 procedure RightmostTabSelectActionExecute(Sender: TObject);
743 procedure LeftmostTabSelectActionUpdate(Sender: TObject);
744 procedure LeftTabSelectActionUpdate(Sender: TObject);
745 procedure RightTabSelectActionUpdate(Sender: TObject);
746 procedure RightmostTabSelectActionUpdate(Sender: TObject);
747 procedure FavoriteMenuClick(Sender: TObject);
748 procedure FavoriteAddActionExecute(Sender: TObject);
749 procedure FavoriteAddActionUpdate(Sender: TObject);
750 procedure BoardFavoriteAddActionExecute(Sender: TObject);
751 procedure BoardFavoriteAddActionUpdate(Sender: TObject);
752 procedure ThreadFavoriteAddActionExecute(Sender: TObject);
753 procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
754 procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
755 procedure FavoriteArrangeActionExecute(Sender: TObject);
756 procedure MainCoolBarResize(Sender: TObject);
757 procedure MoveToActionExecute(Sender: TObject);
758 procedure AddressToolBarResize(Sender: TObject);
759 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
761 procedure AddressBarVisibleActionExecute(Sender: TObject);
762 procedure BrowserEnter(Sender: TObject);
763 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
764 procedure BrowserTabVisibleActionExecute(Sender: TObject);
765 procedure BrowserTabTopActionExecute(Sender: TObject);
766 procedure BrowserTabBottomActionExecute(Sender: TObject);
767 procedure BrowserTabTabStyleActionExecute(Sender: TObject);
768 procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
769 procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
770 procedure PreviewTimerTimer(Sender: TObject);
771 procedure MessageHideButtonClick(Sender: TObject);
772 procedure MonazillaWebPageActionExecute(Sender: TObject);
773 procedure GikoHelpActionExecute(Sender: TObject);
774 procedure ToolButton18Click(Sender: TObject);
775 procedure KotehanActionExecute(Sender: TObject);
776 procedure LinkBarVisibleActionExecute(Sender: TObject);
777 procedure BBS2chWebPageActionExecute(Sender: TObject);
778 procedure GikoFolderOpenActionExecute(Sender: TObject);
779 procedure MainCoolBarBandInfo(Sender: TObject;
780 var BandInfo: PReBarBandInfoA);
781 procedure MainCoolBarChevronClick(Sender: TObject;
782 RebarChevron: PNMRebarChevron);
783 procedure ListCoolBarBandInfo(Sender: TObject;
784 var BandInfo: PReBarBandInfoA);
785 procedure ListCoolBarChevronClick(Sender: TObject;
786 RebarChevron: PNMRebarChevron);
787 procedure BrowserCoolBarBandInfo(Sender: TObject;
788 var BandInfo: PReBarBandInfoA);
789 procedure BrowserCoolBarChevronClick(Sender: TObject;
790 RebarChevron: PNMRebarChevron);
791 procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
792 procedure ThreadEditorActionExecute(Sender: TObject);
793 procedure ThreadEditorActionUpdate(Sender: TObject);
794 procedure ToolBarSettingActionExecute(Sender: TObject);
795 procedure NameCopyActionExecute(Sender: TObject);
796 procedure BoardIEActionExecute(Sender: TObject);
797 procedure SelectItemNameCopyActionExecute(Sender: TObject);
798 procedure SelectItemNameCopyActionUpdate(Sender: TObject);
799 procedure BoardIEActionUpdate(Sender: TObject);
800 procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
801 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
802 procedure NameCopyActionUpdate(Sender: TObject);
803 procedure SelectComboBoxChange(Sender: TObject);
804 procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
806 procedure SelectComboBoxExit(Sender: TObject);
807 procedure SelectResActionExecute(Sender: TObject);
808 procedure SelectResActionUpdate(Sender: TObject);
809 procedure FormKeyUp(Sender: TObject; var Key: Word;
811 procedure AllResActionExecute(Sender: TObject);
812 procedure AllResActionUpdate(Sender: TObject);
813 procedure ReloadClick(Sender: TObject);
814 procedure GoBackClick(Sender: TObject);
815 procedure GoFowardClick(Sender: TObject);
816 procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
817 Shift: TShiftState; X, Y: Integer);
818 procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
819 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
820 procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
821 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
822 procedure StatusBarResize(Sender: TObject);
823 procedure IndividualAbon1Click(Sender: TObject);
824 procedure IndividualAbon2Click(Sender: TObject);
825 procedure N42Click(Sender: TObject);
826 procedure SelectComboBoxEnter(Sender: TObject);
827 procedure AntiIndividualAbonClick(Sender: TObject);
828 procedure N51Click(Sender: TObject);
829 procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
830 procedure CabinetFavoriteActionExecute(Sender: TObject);
831 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
833 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
834 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
836 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
838 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
839 procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
840 procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
841 procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
842 procedure ToolButton19Click(Sender: TObject);
843 procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
844 procedure FavoriteTreeViewDblClick(Sender: TObject);
845 procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
846 procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
847 procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
848 procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
849 procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
850 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
851 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
852 Shift: TShiftState; X, Y: Integer);
853 procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
854 State: TDragState; var Accept: Boolean);
855 procedure ResRangeActionExecute(Sender: TObject);
856 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
858 procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
859 var Handled: Boolean);
860 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
861 var Handled: Boolean);
862 procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
863 var Handled: Boolean);
864 procedure ExportFavoriteFileAccept(Sender: TObject);
865 procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
866 procedure CabinetBBSActionExecute(Sender: TObject);
867 procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
868 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
869 procedure UpBoardActionExecute(Sender: TObject);
870 procedure UpBoardActionUpdate(Sender: TObject);
871 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
872 var Handled: Boolean);
873 procedure KoreCopyExecute(Sender: TObject);
874 procedure BrowserTabPopupMenuPopup(Sender: TObject);
875 procedure MenuToolBarResize(Sender: TObject);
876 procedure StdToolBarResize(Sender: TObject);
877 procedure LinkToolBarResize(Sender: TObject);
878 procedure ListNameToolBarResize(Sender: TObject);
879 procedure ListToolBarResize(Sender: TObject);
880 procedure BrowserNameToolBarResize(Sender: TObject);
881 procedure BrowserToolBarResize(Sender: TObject);
882 procedure BrowserTabResize(Sender: TObject);
883 procedure TreeViewClick(Sender: TObject);
884 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
886 procedure FavoriteTreeViewMouseDown(Sender: TObject;
887 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
888 procedure MessagePanelResize(Sender: TObject);
890 procedure TreeSelectNameCopyExecute(Sender: TObject);
891 procedure FavoriteTreeViewMouseUp(Sender: TObject;
892 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
893 procedure ResRangeActionUpdate(Sender: TObject);
894 procedure SetFocusForBrowserActionExecute(Sender: TObject);
895 procedure SetFocusForBrowserActionUpdate(Sender: TObject);
896 procedure SetFocusForThreadListActionExecute(Sender: TObject);
897 procedure SetFocusForCabinetActionExecute(Sender: TObject);
898 procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
899 procedure BrowserMaxAndFocusActionUpdate(Sender: TObject);
900 procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
901 procedure ListViewExit(Sender: TObject);
902 procedure SetFocusForCabinetActionUpdate(Sender: TObject);
903 procedure ListViewSelectItem(Sender: TObject; Item: TListItem;
905 procedure SelectTimerTimer(Sender: TObject);
906 procedure SelectItemSaveForHTMLExecute(Sender: TObject);
907 procedure KidokuActionExecute(Sender: TObject);
908 procedure MidokuActionExecute(Sender: TObject);
909 procedure SelectItemSaveForDatExecute(Sender: TObject);
910 procedure BrowserPanelCanResize(Sender: TObject; var NewWidth,
911 NewHeight: Integer; var Resize: Boolean);
912 procedure LogFolderOpenActionExecute(Sender: TObject);
913 procedure LogFolderOpenActionUpdate(Sender: TObject);
914 procedure TabsSaveActionExecute(Sender: TObject);
915 procedure TabsOpenActionExecute(Sender: TObject);
916 procedure TabsSaveToFileActionExecute(Sender: TObject);
917 procedure TabsOpenFromFileActionExecute(Sender: TObject);
918 procedure OnlyAHundredResActionExecute(Sender: TObject);
919 procedure OnlyKokoResActionExecute(Sender: TObject);
920 procedure OnlyNewResActionExecute(Sender: TObject);
921 procedure BrowsBoradHeadActionExecute(Sender: TObject);
922 procedure BrowsBoradHeadActionUpdate(Sender: TObject);
923 procedure EditNGActionExecute(Sender: TObject);
924 procedure ThreadRangeActionUpdate(Sender: TObject);
925 procedure ThreadRangeActionExecute(Sender: TObject);
926 procedure TabAutoSaveActionExecute(Sender: TObject);
927 procedure TabAutoLoadActionExecute(Sender: TObject);
928 procedure ListViewColumnDragged(Sender: TObject);
931 //RoundList : TRoundList;
935 FEnabledCloseButton: Boolean;
936 // ThreadCreate: TThreadCreate;
938 FClickNode: TTreeNode;
941 FPreviewBrowser: TPreviewBrowser;
944 FBrowserSizeHeight: Integer;
945 FBrowserSizeWidth: Integer;
947 // FFavorite: TFavorite;
948 FTabHintIndex: Integer;
949 FListStyle: TViewStyle; //
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93\83X
\83^
\83C
\83\8b
950 FItemNoVisible: Boolean; //
\83\8a\83X
\83g
\94Ô
\8d\86\95\
\8e¦
\83t
\83\89\83O
951 FViewType: TGikoViewType; //
\83\8a\83X
\83g
\83A
\83C
\83e
\83\80\95\
\8e¦
\83^
\83C
\83v
952 FActiveList: TObject;
953 FActiveContent: TBrowserRecord; //
955 FHistoryList: TList; //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
956 FTreeType: TGikoTreeType;
960 // FLastRoundTime: TDateTime;
961 BrowserNullTab: TBrowserRecord;
962 // DoubleClickOccurred: array [TMouseButton] of Boolean;
963 FDownloadTitle: string; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\83^
\83C
\83g
\83\8b\96¼
964 FDownloadMax: Integer; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\8dÅ
\91å
\83T
\83C
\83Y
965 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
967 // Fkeynum : Integer; //
\83L
\81[
\83{
\81[
\83h
\83\8c\83X
\83|
\83b
\83v
\83A
\83b
\83v
\97p
969 IsDraggingSelectComboBox : Boolean;
970 DraggingSelectComboBoxPosition : TPoint;
972 FSearchDialog: TSearchDialog;
974 FDropSpaceNode: TTreeNode;
976 FDragTime : Cardinal; //
\83\8a\83\93\83N
\82ÌD&D
\97p
977 FDragButton : TToolButton; //
\83\8a\83\93\83N
\82ÌD&D
\97p
\82ÉDrag
\82µ
\82Ä
\82éButton
\95Û
\91¶
978 FDragWFirst : Boolean; //WebTab
\82ÌD&D
\97p
980 FListViewBackGroundColor : TColor; //ListView
\82ÌBackGroundColor
981 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¦
982 FOddColor : TColor; //
\82»
\82Ì
\90F
984 FSelectResWord : string; //
\83\8c\83X
\8di
\8d\9e\83\8f\81[
\83h
985 FIsIgnoreResize : Boolean; //
\83\8a\83T
\83C
\83Y
\83C
\83x
\83\93\83g
\82ð
\96³
\8e\8b\82·
\82é
\82©
\82Ç
\82¤
\82©
986 FIsMinimize : TMinimizeType; //
\8dÅ
\8f¬
\89»
\82µ
\82Ä
\82¢
\82é
\8dÅ
\92\86\82©
987 FOldFormWidth : Integer; //
\92¼
\91O
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\95\9d
988 FToolBarSettingSender : TToolBarSettingSenderType; //
\83c
\81[
\83\8b\83o
\81[
\90Ý
\92è
\82ð
\83N
\83\8a\83b
\83N
\82µ
\82½
\83N
\81[
\83\8b\83o
\81[
989 FMouseDownPos : TPoint; //
\83u
\83\89\83E
\83U
\83^
\83u
\82Å
\83}
\83E
\83X
\82ð
\89\9f\82µ
\82½
\82Æ
\82«
\82Ì
\8dÀ
\95W
991 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 procedure SetBoardTreeNode( inBBS : TBBS );
993 function SetCategoryListItem(ABBS2ch: TBBS): Integer;
994 function SetBoardListItem(Category: TCategory): Integer;
995 function SetThreadListItem(Board: TBoard): Integer;
996 // function GetRoundName(index: integer): string;
998 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
999 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
1000 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
1001 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
1002 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
1004 procedure SetActiveList(Obj: TObject);
1005 procedure ListClick;
1006 procedure ListDoubleClick(Shift: TShiftState);
1007 procedure BrowserMovement(const AName: string); overload;
1008 procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
1009 procedure SelectListItem(List: TList);
1010 // procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
1011 procedure DeleteTab(ThreadItem: TThreadItem); overload;
1012 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
1013 function Hook(var Message: TMessage): Boolean;
1014 procedure AddRoundNameMenu(MenuItem: TMenuItem);
1015 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
1016 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
1017 procedure SetSelectRoundName(Sender: TObject);
1018 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
1020 procedure SetMenuFont;
1021 // procedure CreateFavMenu(Folder: TFavoriteFolder);
1022 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
1023 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
1024 procedure FavoriteClick(Sender: TObject); overload;
1025 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
1026 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
1027 function OnDocumentContextMenu(Sender: TObject): WordBool;
1028 // function GetThreadText(sBoard: string; sThread: string; StNum, ToNum: Integer; Title, First: Boolean): string;
1029 procedure SetResPopupText(ThreadItem : TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
1030 procedure ShowTextPopup;
1031 //procedure ShowTextPopup(HintData: THintData);
1032 // procedure SetStdToolBar;
1033 // function GetAction(ActionName: string): TContainedAction;
1034 procedure SetLinkBar;
1035 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
1036 procedure MenuBarChevronMenu;
1037 procedure LinkBarChevronMenu;
1038 procedure ToolBarChevronMenu(ToolBar: TToolBar);
1039 procedure ModifySelectList;
1040 procedure FavoriteBrowseFolder( node: TTreeNode );
1041 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
1042 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1043 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
1044 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1045 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
1046 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
1047 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
1048 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
1049 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
1051 procedure SetListViewBackGroundColor(value: TColor);
1052 procedure BBSMenuItemOnClick( Sender : TObject );
1054 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
1055 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1056 procedure SaveCoolBarSettings;
1057 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1058 procedure LoadCoolBarSettings;
1059 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
1060 procedure OnMinimize;
1061 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
1062 procedure OnMinimized;
1063 // CoolBar
\82ª
\83T
\83C
\83Y
\95Ï
\8dX
\82³
\82ê
\82½
1064 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
1065 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1066 procedure TreeClick( Node : TTreeNode );
1067 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1068 procedure TreeDoubleClick( Node : TTreeNode );
1069 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
1070 procedure HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
1071 //
\83u
\83\89\83E
\83U
\82Ì
\83L
\81[
\83_
\83E
\83\93\83C
\83x
\83\93\83g
1072 //
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
1073 function BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
1074 //
\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
1075 procedure SetBBSMenu;
1076 function WebBrowserClick(Sender: TObject): WordBool;
1077 procedure SkinorCSSFilesCopy(path: string);
1079 function GetTabURLs(AStringList: TStringList) : Boolean;
1081 function SaveTabURLs : Boolean;
1082 //
\83^
\83u
\93Ç
\82Ý
\8fo
\82µ
1083 function LoadTabURLs : Boolean;
1084 //
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
1085 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
1086 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶
1087 procedure ActiveListColumnSave;
1088 /// ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
1089 function ActiveListTrueColumn( column : TListColumn ) : TListColumn;
1091 procedure CreateParams(var Params: TCreateParams); override;
1092 procedure WndProc(var Message: TMessage); override;
1093 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
1094 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
1095 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
1099 // FDownload: TDownload;
1100 FControlThread: TThreadControl;
1101 procedure MoveToURL(URL: string);
1102 procedure InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
1103 procedure ReloadBBS;
1104 function GetHttpState: Boolean;
1105 procedure SetEnabledCloseButton(Enabled: Boolean);
1106 function GetTreeNode(Data: TObject): TTreeNode;
1107 procedure AppFormDeactivate(Sender: TObject);
1108 // procedure CabinetPanelVisible(PanelVisible: Boolean);
1109 procedure ListViewAllSelect;
1111 property ListStyle: TViewStyle read FListStyle write FListStyle;
1112 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
1113 property ViewType: TGikoViewType read FViewType write FViewType;
1115 property NameCookie: string read FNameCookie write FNameCookie;
1116 property MailCookie: string read FMailCookie write FMailCookie;
1118 procedure SetContent(inThread: TBrowserRecord);
1119 function GetActiveContent: TThreadItem;
1120 function GetActiveList: TObject;
1122 property ActiveList: TObject read GetActiveList write SetActiveList;
1123 // property LastRoundTime: TDateTime read FLastRoundTime write FLastRoundTime;
1125 procedure SetListViewType(AViewType: TGikoViewType); overload;
1126 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
1127 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
1128 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
1129 procedure PlaySound(SoundEventName: string);
1131 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
1132 procedure DeleteHistory( threadItem: TThreadItem );
1133 procedure ClearHistory;
1134 procedure SaveHistory;
1135 procedure LoadHistory;
1136 procedure ShowBBSTree( inBBS : TBBS );
1137 procedure ShowBBSTreeOld( inBBS : TBBS );
1138 procedure ShowHistoryTree;
1139 procedure SetHistoryTreeNode;
1140 // procedure SelectTreeNode(Item: TObject);
1141 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
1142 procedure SetBrowserTabState;
1143 // property Favorite: TFavorite read FFavorite write FFavorite;
1144 procedure SetToolBarPopup;
1145 procedure ShowFavoriteAddDialog( Item : TObject );
1146 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
1147 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
1148 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
1149 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
1150 property OddColor : TColor read FOddColor write FOddColor;
1152 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
1153 procedure OnPlugInMenuItem( Sender : TObject );
1154 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
1157 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
1160 TFavoriteMenuItem = class(TMenuItem)
1164 property Data: Pointer read FData write FData;
1167 TBBSMenuItem = class(TMenuItem)
1171 property Data: Pointer read FData write FData;
1174 TLinkToolButton = class(TToolButton)
1178 property Data: Pointer read FData write FData;
1181 TBrowserRecord = class( TObject )
1183 FBrowser : TWebBrowser;
1184 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
1185 FThread : TThreadItem;
1186 FLastSize : Integer;
1188 // FOnlyHundred: Boolean;
1190 destructor Destroy; override;
1191 property Browser : TWebBrowser read FBrowser write FBrowser;
1192 property Thread : TThreadItem read FThread write FThread;
1193 property LastSize : Integer read FLastSize write FLastSize;
1194 property Repaint : Boolean read FRepaint write FRepaint;
1195 // property OnlyHundred : Boolean read FOnlyHundred write FOnlyHundred;
1199 GikoForm: TGikoForm;
1204 About, Option, Round, Splash, Sort, ListSelect,
1205 NewBoard, MojuUtils,Clipbrd;
1208 CAPTION_NAME: string = '
\83M
\83R
\83i
\83r';
1209 BLANK_HTML: string = 'about:blank';
1210 SELECTCOMBOBOX_NAME: string = ''; // '
\83X
\83\8c\83b
\83h
\8di
\8d\9e\8c\9f\8dõ';
1211 SELECTCOMBOBOX_COLOR: TColor = clWindow;
1213 DandD_THRESHOLD = 5; //D&D
\82Ìè
\87\92l
\81ipixcel)
1214 //
\83c
\83\8a\81[
\81E
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93
1215 ITEM_ICON_2CH1 = 0; //2ch
\83A
\83C
\83R
\83\93
1216 ITEM_ICON_2CH2 = 1; //2ch
\83A
\83C
\83R
\83\93
1217 ITEM_ICON_CATEGORY1 = 2; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1218 ITEM_ICON_CATEGORY2 = 3; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1219 ITEM_ICON_BOARD_NOSUBJECT = 3; //
\93Ç
\82Ý
\8d\9e\82Ü
\82ê
\82Ä
\82¢
\82È
\82¢
\94Â
\83A
\83C
\83R
\83\93
1220 ITEM_ICON_BOARD1 = 4; //
\94Â
\83A
\83C
\83R
\83\93
1221 ITEM_ICON_BOARD2 = 5; //
\94Â
\83A
\83C
\83R
\83\93
1222 ITEM_ICON_THREADLOG1 = 6; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1223 ITEM_ICON_THREADLOG2 = 7; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1224 ITEM_ICON_THREAD1 = 8; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1225 ITEM_ICON_THREAD2 = 9; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1226 ITEM_ICON_THREADNEW1 = 10; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1227 ITEM_ICON_THREADNEW2 = 11; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1228 ITEM_ICON_SORT1 = 12; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1229 ITEM_ICON_SORT2 = 13; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1230 ITEM_ICON_BOARD_LOG = 17; //
\83X
\83\8c\83\8d\83O
\82 \82è
\94Â
\83A
\83C
\83R
\83\93
1231 ITEM_ICON_BOARD_NEW = 18; //
\83X
\83\8c\90V
\92\85\94Â
\83A
\83C
\83R
\83\93
1233 //
\83c
\81[
\83\8b\83o
\81[
\83A
\83C
\83R
\83\93
1234 TOOL_ICON_HEIGHT_MAX = 16; //
\8d\82\82³
\8dÅ
\91å
\83A
\83C
\83R
\83\93
1235 TOOL_ICON_HEIGHT_MIN = 17; //
\8d\82\82³
\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1236 TOOL_ICON_HEIGHT_NORMAL = 18; //
\8d\82\82³
\95W
\8f\80\83A
\83C
\83R
\83\93
1237 TOOL_ICON_WIDTH_MAX = 19; //
\95\9d\8dÅ
\91å
\83A
\83C
\83R
\83\93
1238 TOOL_ICON_WIDTH_MIN = 20; //
\95\9d\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1239 TOOL_ICON_WIDTH_NORMAL = 21; //
\95\9d\95W
\8f\80\83A
\83C
\83R
\83\93
1241 TOOL_ICON_FAV_FOLDER = 30; //
\82¨
\8bC
\82É
\93ü
\82è
\83t
\83H
\83\8b\83_
\83A
\83C
\83R
\83\93
1242 TOOL_ICON_FAV_BOARD = 31; //
\82¨
\8bC
\82É
\93ü
\82è
\94Â
\83A
\83C
\83R
\83\93
1243 TOOL_ICON_FAV_THREAD = 32; //
\82¨
\8bC
\82É
\93ü
\82è
\83X
\83\8c\83A
\83C
\83R
\83\93
1245 HTML_FILE_NAME = 'temp_preview.html';
1247 WM_XBUTTONDOWN = $020B;
1248 WM_XBUTTONUP = $020C;
1249 WM_XBUTTONDBLCLK = $020D;
1252 USER_TREECLICK = WM_USER + 2000;
1253 USER_RESIZED = WM_USER + 2001;
1254 USER_MINIMIZED = WM_USER + 2002;
1255 USER_SETLINKBAR = WM_USER + 2003;
1256 SELECTTIME_INTERBAL = 110;
1258 BROWSER_COUNT = 5; //
\83u
\83\89\83E
\83U
\82Ì
\90\94
1261 procedure TGikoForm.CreateParams(var Params: TCreateParams);
1264 if FormStyle in [fsNormal, fsStayOnTop] then begin
1265 if BorderStyle in [bsSingle, bsSizeable] then begin
1266 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
1267 Params.WndParent := 0;
1272 procedure TGikoForm.FormCreate(Sender: TObject);
1274 TVS_NOTOOLTIPS = $0080;
1280 wp: TWindowPlacement;
1282 newbrowser: TWebBrowser;
1286 Writeln('============================================================');
1287 Writeln('
\83M
\83R
\83i
\83r
\83f
\83o
\83b
\83O
\83R
\83\93\83\
\81[
\83\8b');
1289 Writeln('
\82±
\82Ì
\89æ
\96Ê
\82ð
\95Â
\82¶
\82È
\82¢
\82Å
\82
\82¾
\82³
\82¢
\81B');
1290 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¢');
1291 Writeln('============================================================');
1293 Application.OnDeactivate := AppFormDeactivate;
1294 Self.OnDeactivate := AppFormDeactivate;
1295 Application.HookMainWindow(Hook);
1296 Application.OnMessage := HandleAppMessage; //
\82È
\82ñ
\82©
\96³
\82
\82Ä
\82à
\91å
\8fä
\95v
\82É
\82È
\82Á
\82½
\81@by
\81@
\82à
\82¶
\82ã
1297 Self.DoubleBuffered := true;
1298 FTreeType := gttNone;
1300 FSearchDialog := nil;
1301 BrowserNullTab := TBrowserRecord.Create;
1302 BrowserNullTab.Browser := Browser;
1303 BrowserNullTab.Browser.Navigate(BLANK_HTML);
1304 FBrowsers := TList.Create;
1305 for i := 0 to BROWSER_COUNT -1 do begin
1306 FBrowsers.Add(TWebBrowser.Create(nil));
1307 newBrowser := FBrowsers[FBrowsers.Count - 1];
1308 TOleControl(newBrowser).Parent := BrowserPanel;
1309 newBrowser.Align := alNone;
1310 newBrowser.Left := 0;
1311 newBrowser.Top := 0;
1312 //newBrowser.DoubleBuffered := true;
1313 newBrowser.OnDocumentComplete := BrowserDocumentComplete;
1314 newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
1315 newBrowser.OnEnter := BrowserEnter;
1316 newBrowser.OnNewWindow2 := BrowserNewWindow2;
1317 newBrowser.OnStatusTextChange := BrowserStatusTextChange;
1318 //newBrowser.OnTitleChange := BrowserTitleChange;
1319 newBrowser.Navigate(BLANK_HTML);
1320 ShowWindow(newBrowser.Handle, SW_HIDE);
1323 BrowserNullTab.Browser.BringToFront;
1324 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
1326 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô
1327 FIsIgnoreResize := True;
1329 //
\8eè
\82Ì
\83J
\81[
\83\
\83\8b
1330 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
1333 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1334 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
1336 //
\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Æ)
1337 InitializeBoardPlugIns;
1339 EnabledCloseButton := True;
1342 //
\8f\84\89ñ
\83f
\81[
\83^
\93Ç
\82Ý
\8d\9e\82Ý
1343 RoundList := TRoundList.Create;
1344 RoundList.LoadRoundBoardFile;
1346 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\97ñ
\8b\93(ReadFavorite
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1347 GikoSys.ListBoardFile;
1349 RoundList.LoadRoundThreadFile;
1351 if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then
1352 GikoSys.ListBoardFile;
1354 //
\83\81\83j
\83\85\81[
\82É
\92Ç
\89Á
1357 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g(LoadHistory
\82æ
\82è
\82à
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1358 FHistoryList := TList.Create;
1360 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1363 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
1364 // FFavorite := TFavorite.Create(FavoriteTreeView);
1365 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1366 FavoriteDM.ReadFavorite;
1368 //
\83\8a\83X
\83g
\83X
\83^
\83C
\83\8b
1369 ListView.ViewStyle := GikoSys.Setting.ListStyle;
1371 //
\83\81\83C
\83\93\83N
\81[
\83\8b\83o
\81[
\88Ê
\92u
1372 // MainCoolBar.Top := 0;
1373 // MainCoolBar.Left := 0;
1375 //
\83A
\83j
\83\81\83p
\83l
\83\8b\88Ê
\92u
1376 AnimePanel.Top := 0;
1377 AnimePanel.Left := 0;
1379 //
\8ae
\8eí
\89Â
\8e\8b\8fó
\91Ô
\82È
\82Ç
\90Ý
\92è
1381 //
\83L
\83\83\83r
\83l
\83b
\83g
1382 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
1384 //
\83\81\83b
\83Z
\81[
\83W
\83o
\81[
1385 MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
1386 MsgBarVisibleActionExecute(nil);
1387 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
1389 //
\83X
\83e
\81[
\83^
\83X
\83o
\81[
1390 StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
1391 StatusBarVisibleActionExecute(nil);
1393 //
\83t
\83H
\83\93\83g
\81E
\90F
\90Ý
\92è
1394 TreeView.Items.BeginUpdate;
1395 FavoriteTreeView.Items.BeginUpdate;
1396 ListView.Items.BeginUpdate;
1398 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1399 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1400 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1401 TreeView.Color := GikoSys.Setting.CabinetBackColor;
1403 FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1404 FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1405 FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1406 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
1408 ListView.Font.Name := GikoSys.Setting.ListFontName;
1409 ListView.Font.Size := GikoSys.Setting.ListFontSize;
1410 ListView.Font.Color := GikoSys.Setting.ListFontColor;
1411 //ListView.Color := GikoSys.Setting.ListBackColor;
1412 ListViewBackGroundColor := GikoSys.Setting.ListBackColor;
1413 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
1414 FOddColor := GikoSys.Setting.OddColor;
1417 TreeView.Items.EndUpdate;
1418 FavoriteTreeView.Items.EndUpdate;
1419 ListView.Items.EndUpdate;
1421 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
1422 ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
1424 //
\83u
\83\89\83E
\83U
\83^
\83u
\83t
\83H
\83\93\83g
1425 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1426 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1427 FDragWFirst := false;
1428 SetContent(BrowserNullTab); //
\83u
\83\89\83E
\83U
\82ð
\8bó
\94\92\95\
\8e¦
1429 // TreeView.TopItem.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
1430 // TreeView.Selected := TreeView.Items[0]; //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
1433 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95\9c\8c³
1434 wp.length := sizeof(wp);
1435 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1436 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1437 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1438 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1439 wp.showCmd := SW_HIDE;
1440 SetWindowPlacement(Handle, @wp);
1442 // SetBounds(GikoSys.Setting.WindowLeft, GikoSys.Setting.WindowTop,
1443 // GikoSys.Setting.WindowWidth, GikoSys.Setting.WindowHeight);
1444 if GikoSys.Setting.WindowMax then
1445 WindowState := wsMaximized;
1447 //
\83M
\83R
\83A
\83j
\83\81
1449 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1450 if FileExists(FileName) then
1451 Animate.FileName := FileName;
1459 //
\83X
\83\8c\91S
\95\94\95\
\8e¦
\83{
\83^
\83\93\82ð
\89\9f\82³
\82ê
\82½
\8fó
\91Ô
\82É
\82·
\82é
1460 AllItemAction.Checked := True;
1461 AllResAction.Checked := True;
1463 //TreeView
\82Ì
\8e×
\96\82\8fL
\82¢ToolTip
\82ð
\94ñ
\95\
\8e¦
1464 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1465 Style := Style or TVS_NOTOOLTIPS;
1466 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1468 //
\83c
\83\8a\81[
\82ð
\83\81\83C
\83\93\82¾
\82¯
\95\
\8e¦
\82É
\82µ
\82Ä
\8dÅ
\91å
\89»
1469 TreeView.Align := alClient;
1470 FavoriteTreeView.Align := alClient;
1471 FavoriteTreeView.Visible := False;
1473 //
\83u
\83\89\83E
\83U
\83T
\83C
\83Y
\95Ï
\8dX
\82Ì
\8f\89\8aú
\89»
1474 // FBrowserSizeFlag := False;
1475 // FBrowserSizeHeight := ViewPanel.Height;
1477 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1478 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1480 ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1481 ArrangeAction.Execute;
1483 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1484 case GikoSys.Setting.ListWidthState of
1486 ViewPanel.Width := 1;
1487 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1488 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1491 ViewPanel.Width := GikoSys.Setting.ListWidth;
1492 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1493 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1496 ViewPanel.Width := GikoSys.Setting.ListWidth;
1497 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1498 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1502 case GikoSys.Setting.ListHeightState of
1504 ViewPanel.Height := 1;
1505 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1506 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1509 ViewPanel.Height := GikoSys.Setting.ListHeight;
1510 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1511 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1514 ViewPanel.Height := GikoSys.Setting.ListHeight;
1515 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1516 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1521 //
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[
\82Ì
\8f\89\8aú
\89»
1522 // ProgressBar.Visible := False;
1523 ProgressBar.Parent := StatusBar;
1524 ProgressBar.Top := 2;
1525 ProgressBar.Left := 0;
1526 ProgressBar.Width := StatusBar.Panels[0].Width;
1527 ProgressBar.Height := StatusBar.Height - 2;
1528 ProgressBar.Position := 0;
1530 //
\83_
\83E
\83\93\83\8d\81[
\83h
\83I
\83u
\83W
\83F
\83N
\83g
1531 FControlThread := TThreadControl.Create(True);
1532 FControlThread.MaxThreadCount := 1;
1533 FControlThread.Resume;
1534 FControlThread.OnDownloadEnd := DownloadEnd;
1535 FControlThread.OnDownloadMsg := DownloadMsg;
1536 FControlThread.OnWork := Work;
1537 FControlThread.OnWorkBegin := WorkBegin;
1538 FControlThread.OnWorkEnd := WorkEnd;
1539 // ProgressPanel.Width := FControlThread.MaxThreadCount * 12;
1541 //
\8di
\8d\9e\8c\9f\8dõ
\97\9a\97ð
1542 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1544 //
\83u
\83\89\83E
\83U
\83^
\83u
\90Ý
\92è
1547 BrowserBoardNameLabel.Caption := '';
1548 BrowserNameLabel.Caption := '';
1551 FTabHintIndex := -1;
1553 //
\83\8a\83\93\83N
\83o
\81[
1556 //
\83\81\83j
\83\85\81[
\83t
\83H
\83\93\83g
1559 //
\83c
\81[
\83\8b\83o
\81[Wrapable
1560 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1561 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1563 KeepDefaultToolButton(StdToolBar, TmpToolBar);
1564 KeepDefaultToolButton(ListToolBar, TmpToolBar);
1565 KeepDefaultToolButton(BrowserToolBar, TmpToolBar);
1567 MakeDefaultINIFile();
1568 //
\83c
\81[
\83\8b\83{
\83^
\83\93\93Ç
\82Ý
\8d\9e\82Ý
1569 ReadToolBarSetting(ActionList, StdToolBar);
1570 ReadToolBarSetting(ActionList, ListToolBar);
1572 for i := ListToolBar.ControlCount - 1 downto 0 do
1574 if ListToolBar.Controls[ i ].Action = SelectItemAction then
1576 //
\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·
1577 if (i + 1) < ListToolBar.ControlCount then
1578 if ListToolBar.Controls[ i + 1 ] is TToolButton then
1579 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1580 ListToolBar.Controls[ i + 1 ].Visible := False;
1582 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
1583 ListToolBar.Controls[ i ].Visible := False;
1584 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
1585 SelectComboBox.Parent := ListToolBar;
1586 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
1587 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
1588 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
1589 SelectComboBoxSplitter.Parent := ListToolBar;
1590 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
1597 ReadToolBarSetting(ActionList, BrowserToolBar);
1600 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1601 FResRangeMenuSelect := GikoSys.ResRange;
1602 case GikoSys.ResRange of
1605 AllResAction.Execute;
1609 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
1610 SelectResAction.Checked := True;
1613 // ResRangeAction.Execute;
1614 case FResRangeMenuSelect of
1615 Ord( grrKoko ): OnlyKokoResAction.Checked := True;
1616 Ord( grrNew ): OnlyNewResAction.Checked := True;
1617 100: OnlyAHundredResAction.Checked := True;
1621 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\95\
\8e¦
\94Í
\88Í
1622 // ThreadRangeAction.Execute;
1623 case GikoSys.Setting.ThreadRange of
1626 AllItemAction.Checked := True;
1631 LogItemAction.Checked := True;
1636 NewItemAction.Checked := True;
1641 //
\83A
\83h
\83\8c\83X
\83o
\81[
1642 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1644 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³
\82ÍFormShow
\82É
\88Ú
\93®
\82µ
\82½
1646 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\82ª
\96³
\82¢
\8fê
\8d\87\82Í
\83\81\83b
\83Z
\81[
\83W
\95\
\8e¦
1647 if not FileExists(GikoSys.GetBoardFileName) then begin
1648 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
1649 + '
\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
1650 + '
\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';
1651 MsgBox(SplashWindow.Handle, msg, '
\83M
\83R
\83i
\83r', MB_OK or MB_ICONINFORMATION);
1652 NewBoardAction.Execute;
1655 //
\83L
\81[
\90Ý
\92è
\93Ç
\82Ý
\8d\9e\82Ý
1656 GikoSys.LoadKeySetting(ActionList);
1658 //
\8dÅ
\8fI
\8f\84\89ñ
\8e\9e\8aÔ
1659 // FLastRoundTime := 0;
1662 FHint := TResPopup.Create(Self);
1664 //
\8dÅ
\8cã
\82É
\91I
\91ð
\82³
\82ê
\82½
\83L
\83\83\83r
\83l
\83b
\83g
\82Ì
\95\9c\8c³
1665 CabinetVisible( False );
1666 if GikoSys.Setting.CabinetVisible then begin
1667 i := CabinetSelectPopupMenu.Items.Count - 1;
1668 if GikoSys.Setting.CabinetIndex = i - 1 then
1669 CabinetHistoryAction.Execute
1670 else if GikoSys.Setting.CabinetIndex = i then
1671 CabinetFavoriteAction.Execute
1673 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1674 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1675 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 2
1676 FIsIgnoreResize := True;
1677 CabinetBBSAction.Execute;
1680 ShowBBSTreeOld( BBSs[ 0 ] );
1681 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1684 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 3
1685 FIsIgnoreResize := True;
1687 //
\83I
\81[
\83g
\83\8d\83O
\83C
\83\93
1688 if GikoSys.Setting.AutoLogin then
1689 LoginAction.Execute;
1691 //
\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
1692 for i := 1 to ParamCount do begin
1693 MoveToURL(ParamStr(i));
1698 s := GikoSys.FAbon.NGwordname;
1699 StatusBar.Panels[2].Text := s;
1700 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
1701 StatusBarResize(Sender);
1703 dummy1.Caption := ItemReservPMenu.Caption;
1704 dummy1.Hint := ItemReservPMenu.Hint;
1706 //Samba24
\82Ì
\83t
\83@
\83C
\83\8b\83`
\83F
\83b
\83N
1707 GikoSys.SambaFileExists();
1709 //
\83^
\83u
\8e©
\93®
\93Ç
\82Ý
\8d\9e\82Ý (AV
\94
\90¶
\82Ì
\82½
\82ß
\88ê
\8e\9e\95\95\88ó)
1712 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1713 procedure TGikoForm.SaveCoolBarSettings;
1719 if IsIconic( Handle ) or FIsIgnoreResize then
1722 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Main)
1723 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1724 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1725 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1726 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1727 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1729 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Board)
1730 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1731 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1732 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1733 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1734 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1736 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Browser)
1737 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1738 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1739 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1740 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1741 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1746 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1747 procedure TGikoForm.LoadCoolBarSettings;
1753 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Main)
1754 MainCoolBar.Bands.BeginUpdate;
1756 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1757 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1758 CoolSet := GikoSys.Setting.MainCoolSet[i];
1759 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1760 FIsIgnoreResize := False;
1761 SaveCoolBarSettings;
1764 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1765 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1766 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1769 MainCoolBar.Bands.EndUpdate;
1772 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Board)
1773 ListCoolBar.Bands.BeginUpdate;
1775 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1776 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1777 CoolSet := GikoSys.Setting.ListCoolSet[i];
1778 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1779 FIsIgnoreResize := False;
1780 SaveCoolBarSettings;
1783 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1784 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1785 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1788 ListCoolBar.Bands.EndUpdate;
1791 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Browser)
1792 BrowserCoolBar.Bands.BeginUpdate;
1794 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1795 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1796 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1797 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1798 FIsIgnoreResize := False;
1799 SaveCoolBarSettings;
1802 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1803 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1804 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1807 BrowserCoolBar.Bands.EndUpdate;
1815 procedure TGikoForm.FormShow(Sender: TObject);
1817 ShowWindow(Application.Handle, SW_HIDE);
1819 //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½
1820 //
\83c
\81[
\83\8b\83o
\81[
\95\
\8e¦
1821 StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1822 StdToolBarVisibleActionExecute( nil );
1823 AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1824 AddressBarVisibleActionExecute( nil );
1825 LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1826 LinkBarVisibleActionExecute( nil );
1827 ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1828 ListToolBarVisibleActionExecute( nil );
1829 ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1830 ListNameBarVisibleActionExecute( nil );
1831 BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1832 BrowserToolBarVisibleActionExecute( nil );
1833 BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1834 BrowserNameBarVisibleActionExecute( nil );
1836 //
\83u
\83\89\83E
\83U
\83^
\83u
1837 BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1838 BrowserTabVisibleActionExecute(nil);
1840 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1841 BrowserTabTopAction.Checked := True;
1842 BrowserTabTopActionExecute(nil);
1844 BrowserTabBottomAction.Checked := True;
1845 BrowserTabBottomActionExecute(nil);
1848 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1849 BrowserTabTabStyleAction.Checked := True;
1850 BrowserTabTabStyleActionExecute(nil);
1851 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1852 BrowserTabButtonStyleAction.Checked := True;
1853 BrowserTabButtonStyleActionExecute(nil);
1855 BrowserTabFlatStyleAction.Checked := True;
1856 BrowserTabFlatStyleActionExecute(nil);
1859 // ListView
\82Ì
\83w
\83b
\83_
\83h
\83\89\83b
\83O
1860 ListView.LVMInstallHeaderDrag;
1862 // CoolBar
\95\9c\8c³
1863 LoadCoolBarSettings;
1865 FIsIgnoreResize := False;
1868 //FormCrete
\82©
\82ç
\88Ú
\93®
\81B
1869 if GikoSys.Setting.TabAutoLoadSave then begin
1870 TabAutoLoadAction.Execute;
1875 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1877 // if GikoForm.WindowState <> wsMinimized then
1878 // SaveCoolBarSettings;
1879 if ( GikoSys.Setting.ShowDialogForEnd ) and
1880 (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
1885 if GikoSys.Setting.TabAutoLoadSave then begin
1886 TabAutoSaveAction.Execute;
1889 //Application.HookMainWindow(Hook);
1890 Application.UnhookMainWindow(Hook);
1891 Application.Terminate;
1894 procedure TGikoForm.FormDestroy(Sender: TObject);
1897 // CoolSet: TCoolSet;
1898 wp : TWindowPlacement;
1901 // Application.OnDeactivate := nil;
1902 // Self.OnDeactivate := nil;
1904 ActiveListColumnSave;
1908 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
1909 wp.length := sizeof(wp);
1910 GetWindowPlacement(Handle, @wp);
1911 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1912 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1913 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1914 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1915 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1917 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1918 GikoSys.Setting.CabinetVisible := CabinetVisibleAction.Checked;
1919 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1920 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1921 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1922 if ArrangeAction.Checked then
1923 GikoSys.Setting.ListOrientation := gloVertical
1925 GikoSys.Setting.ListOrientation := gloHorizontal;
1926 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1931 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1932 if not GikoSys.Setting.ResRangeHold then
1933 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1937 //
\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è
1938 //
\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¢
1940 //
\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
1942 if GikoForm.WindowState <> wsMinimized then
1943 SaveCoolBarSettings;
1946 GikoSys.Setting.WriteWindowSettingFile;
1947 GikoSys.Setting.WriteNameMailSettingFile;
1951 //
\82¨
\8bC
\82É
\93ü
\82è
\95Û
\91¶
1953 //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é
1954 FavoriteDM.WriteFavorite;
1960 //
\83^
\83u
\83N
\83\8d\81[
\83Y
1961 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1962 GikoSys.Setting.ShowDialogForAllTabClose := false;
1963 AllTabCloseAction.Execute;
1964 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1968 LockWindowUpdate(Self.Handle);
1969 for i := FBrowsers.Count - 1 downto 0 do begin
1970 TWebBrowser(FBrowsers[i]).Free;
1973 FBrowsers.Capacity := 0;
1978 if BrowserNullTab <> nil then begin
1979 BrowserNullTab.Browser := nil; {*BrowserNullTab
\82ÌBrowser
\82Í
\90Ý
\8cv
\8e\9e\82É
\93\
\82è
\95t
\82¯
\82Ä
\82é
\93z
1980 *
\82È
\82Ì
\82Å
\82±
\82±
\82ÅFree
\82³
\82ê
\82é
\82Æ
\8d¢
\82é
\82Ì
\82Å
\82Í
\82¸
\82µ
\82Ä
\82µ
\82Ü
\82¤
\81B
1982 BrowserNullTab.Free;
1986 LockWindowUpdate(0);
1988 TreeView.Items.BeginUpdate;
1989 TreeView.Items.GetFirstNode.Free;
1990 TreeView.Items.Clear;
1991 TreeView.Items.EndUpdate;
1995 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\95Û
\91¶
1997 //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
1998 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
2002 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
\95Û
\91¶
2016 //
\8f\84\89ñ
\83\8a\83X
\83g
\95Û
\91¶&
\94j
\8aü
2018 RoundList.SaveRoundFile;
2032 FControlThread.Terminate;
2033 FControlThread.WaitFor;
2037 FControlThread.Free;
2040 // TBBS
\82Í
\95Û
\8e\9d\82µ
\82Ä
\82¢
\82é TCategory, TBoard, TThreadItem
\82·
\82×
\82Ä
\82ð
\8aJ
\95ú
\82·
\82é
2041 // 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Å
2042 // BoardPluteIns
\82Ì
\8aJ
\95ú
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ
2044 for i := Length( BBSs ) - 1 downto 0 do begin
2045 if BBSs[ i ] <> nil then
2053 for i := Length( BoardPlugIns ) - 1 downto 0 do begin
2054 if BoardPlugIns[ i ] <> nil then
2055 BoardPlugIns[ i ].Free;
2056 BoardPlugIns[ i ] := nil;
2062 if FEvent <> nil then
2066 if FHint <> nil then begin
2067 FHint.ReleaseHandle;
2072 if TPreviewBrowser <> nil then begin
2073 FPreviewBrowser.Free;
2074 FPreviewBrowser := nil;
2081 //
\83t
\83H
\81[
\83\80\83N
\83\8d\81[
\83Y
2082 procedure TGikoForm.FormClose(Sender: TObject; var Action: TCloseAction);
2085 //
\83L
\83\83\83r
\83l
\83b
\83g
\81~
\83{
\83^
\83\93\83N
\83\8a\83b
\83N
2086 procedure TGikoForm.CabinetPanelHide(Sender: TObject);
2088 CabinetVisibleAction.Execute;
2089 // CabinetPanelVisible(false);
2092 //
\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
2093 procedure TGikoForm.SetBBSMenu;
2096 item : TBBSMenuItem;
2099 //
\83\81\83j
\83\85\81[
\82ð
\8dí
\8f\9c
2100 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
2102 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
2103 CabinetSelectPopupMenu.Items[ i ].Free;
2104 CabinetMenu.Items[ i ].Free;
2105 BBSSelectPopupMenu.Items[ i ].Free;
2111 //
\83\81\83j
\83\85\81[
\82ð
\90Ý
\92è
2112 for i := Length( BBSs ) - 1 downto 0 do begin
2114 item := TBBSMenuItem.Create( PopupMenu );
2115 item.Caption := BBSs[ i ].Title;
2116 item.Data := BBSs[ i ];
2117 item.OnClick := BBSMenuItemOnClick;
2118 CabinetSelectPopupMenu.Items.Insert( 0, item );
2119 item := TBBSMenuItem.Create( PopupMenu );
2120 item.Caption := BBSs[ i ].Title;
2121 item.Data := BBSs[ i ];
2122 item.OnClick := BBSMenuItemOnClick;
2123 CabinetMenu.Insert( 0, item );
2124 item := TBBSMenuItem.Create( PopupMenu );
2125 item.Caption := BBSs[ i ].Title;
2126 item.Data := BBSs[ i ];
2127 item.OnClick := BBSMenuItemOnClick;
2128 BBSSelectPopupMenu.Items.Insert( 0, Item );
2135 procedure TGikoForm.ReloadBBS;
2140 //
\83^
\83u
\83N
\83\8d\81[
\83Y
2141 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
2142 GikoSys.Setting.ShowDialogForAllTabClose := false;
2143 AllTabCloseAction.Execute;
2144 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
2146 SetContent(BrowserNullTab);
2147 //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
2148 TreeView.Items.Clear;
2152 for i := Length( BBSs ) - 1 downto 0 do begin
2153 if BBSs[ i ] <> nil then
2162 FTreeType := gttNone;
2164 GikoSys.ListBoardFile; //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\93Ç
\8d\9e
2166 // BBS
\83\81\83j
\83\85\81[
\82Ì
\8dX
\90V
2169 ShowBBSTree( BBSs[ 0 ] );
2171 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
2176 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
2177 FavoriteDM.WriteFavorite;
2179 FavoriteDM.ReadFavorite;
2185 //
\83{
\81[
\83h
\83c
\83\8a\81[
\90Ý
\92è
2186 procedure TGikoForm.SetBoardTreeNode(
2192 CategoryNode: TTreeNode;
2193 BoardNode: TTreeNode;
2194 Category: TCategory;
2197 //
\94Â
\83\8a\83X
\83g
\82Ì
\90Ý
\92è
2198 FActiveBBS := inBBS;
2199 TreeView.Items.BeginUpdate;
2200 TreeView.Items.Clear;
2202 if not inBBS.IsBoardFileRead then
2203 GikoSys.ReadBoardFile( inBBS );
2205 if SplashWindow <> nil then
2206 SplashWindow.ProgressBar.Max := inBBS.Count;
2210 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2211 if ( GikoSys.Setting.BBSSortIndex <> 0 ) or ( GikoSys.Setting.BBSSortOrder <> true ) then begin
2212 Sort.SortOrder := true;
2213 Sort.SortIndex := 0;
2214 Sort.SortNoFlag := true;
2215 inBBS.Sort(CategorySortProc);
2218 Root := TreeView.Items.Add( nil, inBBS.Title );
2219 Root.ImageIndex := ITEM_ICON_2CH1;
2220 Root.SelectedIndex := ITEM_ICON_2CH2;
2222 for i := 0 to inBBS.Count - 1 do begin
2223 Category := TCategory(inBBS.Items[i]);
2224 CategoryNode := TreeView.Items.AddChild(Root, Category.Title);
2225 CategoryNode.Data := Category;
2226 CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
2227 CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
2229 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2230 if ( GikoSys.Setting.CategorySortIndex <> 0 ) or ( GikoSys.Setting.CategorySortOrder <> true ) then begin
2231 Sort.SortOrder := true;
2232 Sort.SortIndex := 0;
2233 Sort.SortNoFlag := true;
2234 Category.CustomSort(BoardSortProc);
2237 for j := 0 to Category.Count - 1 do begin
2238 Board := TBoard(Category.Items[j]);
2240 BoardNode := TreeView.Items.AddChild(CategoryNode, Board.Title);
2241 BoardNode.Data := Board;
2242 //if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then begin
2243 if not Board.IsLogFile then begin
2244 BoardNode.ImageIndex := ITEM_ICON_BOARD_NOSUBJECT;
2245 BoardNode.SelectedIndex := ITEM_ICON_BOARD_NOSUBJECT;
2247 BoardNode.ImageIndex := ITEM_ICON_BOARD1;
2248 BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
2249 for k := 0 to Board.Count - 1 do begin
2250 if Board.Items[ k ].IsLogFile then begin
2251 BoardNode.ImageIndex := ITEM_ICON_BOARD_LOG;
2252 BoardNode.SelectedIndex := ITEM_ICON_BOARD_LOG;
2261 CategoryNode.Expanded := Category.NodeExpand;
2263 if SplashWindow <> nil then begin
2264 SplashWindow.ProgressBar.StepIt;
2265 Application.ProcessMessages;
2269 TreeView.Items.EndUpdate;
2273 function TGikoForm.SetCategoryListItem(ABBS2ch: TBBS): Integer;
2275 TitleColumn : TListColumn;
2276 ListColumn : TListColumn;
2277 i, id, idx : Integer;
2279 ListView.Items.BeginUpdate;
2281 Screen.Cursor := crHourGlass;
2283 ListView.Columns.Clear;
2284 TitleColumn := ListView.Columns.Add;
2285 TitleColumn.Caption := GikoBBSColumnCaption[ Ord( gbbscTitle ) ];
2286 TitleColumn.Width := GikoSys.Setting.BBSColumnWidth[ Ord( gbbscTitle ) ];
2288 for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
2289 if GikoSys.Setting.BBSColumnOrder[ i ] = gbbscTitle then begin
2290 TitleColumn.Tag := i;
2293 id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
2294 if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
2295 (id <= Integer( High( TGikoBBSColumnID ) )) then begin
2296 ListColumn := ListView.Columns.Add;
2297 // ListColumn.Tag := id;
2298 ListColumn.Tag := i;
2299 ListColumn.Caption := GikoBBSColumnCaption[ id ];
2300 ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
2304 TitleColumn.Index := idx;
2306 ListView.Items.Count := 0;
2307 ListView.Items.Clear;
2308 ListView.Items.Count := ABBS2ch.Count;
2310 // UpFolderAction.Enabled := False;
2311 // AllItemAction.Enabled := False;
2312 // LogItemAction.Enabled := False;
2313 // NewItemAction.Enabled := False;
2314 // SelectItemAction.Enabled := False;
2315 // ListDownloadToolButton.Enabled := False;
2316 // BoardReservToolButton.Enabled := False;
2317 // ListThreadDownloadToolButton.Enabled := False;
2319 ListNameLabel.Caption := ABBS2ch.Title;
2320 FolderImage.Picture := nil;
2321 ItemIcon16.GetBitmap(1, FolderImage.Picture.Bitmap);
2323 FSortIndex := GikoSys.Setting.BBSSortIndex;
2324 FSortOrder := GikoSys.Setting.BBSSortOrder;
2325 for i := ListView.Columns.Count - 1 downto 0 do begin
2326 idx := ListView.Column[ i ].Tag;
2327 if FSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then
2328 ListViewSort( nil, ListView.Column[ i ] );
2331 Result := ABBS2ch.Count;
2333 Screen.Cursor := crDefault;
2334 ListView.Items.EndUpdate;
2338 function TGikoForm.SetBoardListItem(Category: TCategory): Integer;
2340 TitleColumn : TListColumn;
2341 ListColumn : TListColumn;
2342 i, id, idx : Integer;
2344 ListView.Items.BeginUpdate;
2346 Screen.Cursor := crHourGlass;
2348 ListView.Columns.Clear;
2349 TitleColumn := ListView.Columns.Add;
2350 TitleColumn.Caption := GikoCategoryColumnCaption[ Ord( gccTitle ) ];
2351 TitleColumn.Width := GikoSys.Setting.CategoryColumnWidth[ Ord( gccTitle ) ];
2353 for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
2354 if GikoSys.Setting.CategoryColumnOrder[ i ] = gccTitle then begin
2355 TitleColumn.Tag := i;
2358 id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
2359 if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
2360 (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
2361 ListColumn := ListView.Columns.Add;
2362 // ListColumn.Tag := id;
2363 ListColumn.Tag := i;
2364 ListColumn.Caption := GikoCategoryColumnCaption[ id ];
2365 ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
2369 TitleColumn.Index := idx;
2371 ListView.Items.Count := 0;
2372 ListView.Items.Clear;
2373 ListView.Items.Count := Category.Count;
2375 // UpFolderAction.Enabled := True;
2376 // AllItemAction.Enabled := False;
2377 // LogItemAction.Enabled := False;
2378 // NewItemAction.Enabled := False;
2379 // SelectItemAction.Enabled := False;
2380 // ListDownloadToolButton.Enabled := False;
2381 // BoardReservToolButton.Enabled := False;
2382 // ListThreadDownloadToolButton.Enabled := False;
2384 ListNameLabel.Caption := Category.Title;
2385 FolderImage.Picture := nil;
2386 ItemIcon16.GetBitmap(3, FolderImage.Picture.Bitmap);
2388 FSortIndex := GikoSys.Setting.CategorySortIndex;
2389 FSortOrder := GikoSys.Setting.CategorySortOrder;
2390 for i := ListView.Columns.Count - 1 downto 0 do begin
2391 idx := ListView.Column[ i ].Tag;
2392 if FSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then
2393 ListViewSort( nil, ListView.Column[ i ] );
2396 Result := Category.Count;
2398 Screen.Cursor := crDefault;
2399 ListView.Items.EndUpdate;
2403 function TGikoForm.SetThreadListItem(Board: TBoard): Integer;
2405 TitleColumn : TListColumn;
2406 ListColumn : TListColumn;
2407 i, id, idx : Integer;
2409 ListView.Items.BeginUpdate;
2411 Screen.Cursor := crHourGlass;
2413 //
\83`
\83\89\82Â
\82«
\96h
\8e~
\82Ì
\82½
\82ß
\81A
\95Ï
\8dX
\82³
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82Ì
\82Ý
2414 //
\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Ó
2415 if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
2417 ListView.Columns.Clear;
2418 TitleColumn := ListView.Columns.Add;
2419 TitleColumn.Caption := GikoBoardColumnCaption[ Ord( gbcTitle ) ];
2420 TitleColumn.Width := GikoSys.Setting.BoardColumnWidth[ Ord( gbcTitle ) ];
2422 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2423 if GikoSys.Setting.BoardColumnOrder[ i ] = gbcTitle then begin
2424 TitleColumn.Tag := i;
2427 id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
2428 if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
2429 (id <= Integer( High( TGikoBoardColumnID ) )) then begin
2430 ListColumn := ListView.Columns.Add;
2431 ListColumn.Caption := GikoBoardColumnCaption[ id ];
2432 // ListColumn.Tag := id;
2433 ListColumn.Tag := i;
2434 ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
2435 ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
2439 TitleColumn.Index := idx;
2442 ListView.Items.Count := 0;
2443 ListView.Items.Clear;
2445 case GikoForm.ViewType of
2446 gvtAll: ListView.Items.Count := Board.Count;
2447 gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
2448 gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
2449 gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
2452 ListNameLabel.Caption := Board.Title;
2453 FolderImage.Picture := nil;
2454 ItemIcon16.GetBitmap(5, FolderImage.Picture.Bitmap);
2456 FSortIndex := GikoSys.Setting.BoardSortIndex;
2457 FSortOrder := GikoSys.Setting.BoardSortOrder;
2458 for i := ListView.Columns.Count - 1 downto 0 do begin
2459 idx := ListView.Column[ i ].Tag;
2460 if FSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then
2461 ListViewSort( nil, ListView.Column[ i ] );
2464 Result := Board.Count;
2466 Screen.Cursor := crDefault;
2467 ListView.Items.EndUpdate;
2471 procedure TGikoForm.ListViewData(Sender: TObject; Item: TListItem);
2473 // FileName: string;
2474 // DateTime: TDateTime;
2477 Category: TCategory;
2479 ThreadItem: TThreadItem;
2481 ActivListObj : TObject;
2484 ActivListObj := ActiveList;
2485 if ActivListObj is TBBS then begin
2486 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
2487 BBS := TBBS(ActivListObj);
2489 ListView.StateImages := nil;
2491 if BBS = nil then Exit;
2492 if BBS.Count <= 0 then Exit;
2493 if Item = nil then Exit;
2494 if Item.Index >= BBS.Count then Exit;
2495 if ListView.Items.Count = 0 then Exit;
2497 if not (BBS.Items[Item.index] is TCategory) then Exit;
2498 Category := TCategory(BBS.Items[Item.index]);
2500 if Category = nil then Exit;
2502 if ListNumberVisibleAction.Checked then
2503 Item.Caption := IntToStr(Category.No) + ': ' + Category.Title
2505 Item.Caption := Category.Title;
2507 Item.ImageIndex := ITEM_ICON_CATEGORY1;
2508 Item.Data := Category;
2510 end else if ActivListObj is TCategory then begin
2512 //=====
\94Â
\83\8a\83X
\83g =====
2513 Category := TCategory(ActivListObj);
2515 ListView.StateImages := nil;
2517 if Category = nil then Exit;
2518 if Category.Count <= 0 then Exit;
2519 if Item = nil then Exit;
2520 if Item.Index >= Category.Count then Exit;
2521 if ListView.Items.Count = 0 then Exit;
2523 if not (Category.Items[Item.Index] is TBoard) then Exit;
2524 Board := TBoard(Category.Items[Item.Index]);
2526 if Board = nil then Exit;
2528 if ListNumberVisibleAction.Checked then
2529 Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
2531 Item.Caption := Board.Title;
2533 if Item.SubItems.Count <> ListView.Columns.Count then begin
2534 Item.SubItems.Clear;
2535 for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do
2536 Item.SubItems.Add('');
2539 Item.ImageIndex := ITEM_ICON_BOARD1;
2542 for i := 0 to ListView.Columns.Count - 1 do begin
2543 // case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of
2544 case GikoSys.Setting.CategoryColumnOrder[ i ] of
2546 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2551 Item.SubItems[ idx ] := Board.RoundName // '
\97\
\96ñ'
2553 Item.SubItems[ idx ] := '';
2556 if Board.RoundDate = ZERO_DATE then begin
2557 Item.SubItems[ idx ] := '';
2559 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate);
2566 end else if ActivListObj is TBoard then begin
2568 //=====
\83X
\83\8c\83\8a\83X
\83g =====
2569 Board := TBoard(ActivListObj);
2571 if GikoSys.Setting.ListIconVisible then
2572 ListView.StateImages := StateIconImageList
2574 ListView.StateImages := nil;
2576 case GikoForm.ViewType of
2577 gvtAll: BoardCnt := Board.Count;
2578 gvtLog: BoardCnt := Board.GetLogThreadCount;
2579 gvtNew: BoardCnt := Board.GetNewThreadCount;
2580 gvtUser: BoardCnt := Board.GetUserThreadCount;
2585 // if Board = nil then Exit;
2586 if BoardCnt <= 0 then Exit;
2587 if Item = nil then Exit;
2588 if Item.Index > BoardCnt then Exit;
2589 if ListView.Items.Count = 0 then Exit;
2591 // if not (Board.Items[Item.Index] is TThreadItem) then Exit;
2594 case GikoForm.ViewType of
2595 gvtAll: if Item.Index >= Board.Count then Exit else
2596 ThreadItem := TThreadItem(Board.Items[Item.Index]);
2597 gvtLog: ThreadItem := Board.GetLogThread(Item.Index);
2598 gvtNew: ThreadItem := Board.GetNewThread(Item.Index);
2599 gvtUser: ThreadItem := Board.GetUserThread(Item.Index);
2602 if ThreadItem = nil then Exit;
2604 // if ListNumberVisibleAction.Checked then
2605 // RepStr := IntToStr(ThreadItem.No) + ': ' + ThreadItem.Title
2607 RepStr := ThreadItem.Title;
2608 RepStr := CustomStringReplace(RepStr, '<', '<' );
2609 RepStr := CustomStringReplace(RepStr, '>', '>' );
2610 RepStr := CustomStringReplace(RepStr, '"', '"' );
2611 RepStr := CustomStringReplace(RepStr, '&', '&' );
2612 //RepStr := StringReplace(RepStr, '
\81\97\81M', ',', [rfReplaceAll]);
2614 if Item.SubItems.Count <> ListView.Columns.Count then begin
2615 Item.SubItems.Clear;
2616 for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do
2617 Item.SubItems.Add('');
2620 if ListNumberVisibleAction.Checked then
2621 Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
2623 Item.Caption := RepStr;
2625 case ThreadItem.AgeSage of
2626 gasNone: Item.StateIndex := -1;
2627 gasNew: Item.StateIndex := 0;
2628 gasAge: Item.StateIndex := 1;
2629 gasSage: Item.StateIndex := 2;
2632 if ThreadItem.IsLogFile then begin
2634 for i := 0 to ListView.Columns.Count - 1 do begin
2635 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2636 case GikoSys.Setting.BoardColumnOrder[ i ] of
2638 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2642 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2645 Item.SubItems[ idx ] := IntToStr(ThreadItem.Count);
2648 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count);
2651 if ThreadItem.NewResCount = 0 then
2652 Item.SubItems[ idx ] := ''
2654 Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount);
2657 Item.SubItems[ idx ] := '';
2660 if ThreadItem.Round then
2661 Item.SubItems[ idx ] := ThreadItem.RoundName
2663 Item.SubItems[ idx ] := '';
2666 if ThreadItem.RoundDate = ZERO_DATE then begin
2667 Item.SubItems[ idx ] := '';
2669 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate);
2672 if ThreadItem.CreateDate = ZERO_DATE then begin
2673 Item.SubItems[ idx ] := '';
2675 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2680 if ThreadItem.NewArrival then
2681 Item.ImageIndex := ITEM_ICON_THREADNEW1
2683 Item.ImageIndex := ITEM_ICON_THREADLOG1;
2686 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2687 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2688 case GikoSys.Setting.BoardColumnOrder[ i ] of
2690 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2694 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2697 if not GikoSys.Setting.CreationTimeLogs then
2698 if ThreadItem.CreateDate = ZERO_DATE then
2699 Item.SubItems[ idx ] := ''
2701 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2704 if ThreadItem.CreateDate = ZERO_DATE then begin
2705 Item.SubItems[ idx ] := '';
2707 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2709 Item.SubItems[ idx ] := '';
2714 if ThreadItem.NewArrival then
2715 Item.ImageIndex := ITEM_ICON_THREADNEW1
2717 Item.ImageIndex := ITEM_ICON_THREAD1;
2720 Item.Data := ThreadItem;
2725 procedure TGikoForm.ListViewDataFind(Sender: TObject; Find: TItemFind;
2726 const FindString: String; const FindPosition: TPoint; FindData: Pointer;
2727 StartIndex: Integer; Direction: TSearchDirection; Wrap: Boolean;
2728 var Index: Integer);
2734 procedure TGikoForm.ListViewDataHint(Sender: TObject; StartIndex,
2740 procedure TGikoForm.ListViewDataStateChange(Sender: TObject; StartIndex,
2741 EndIndex: Integer; OldState, NewState: TItemStates);
2746 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
2754 threadItem : TThreadItem;
2756 Protocol, Host, Path, Document, Port, Bookmark: string;
2761 ActiveFileName: string;
2767 if not( TObject(Sender) is TWebBrowser )then
2771 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
2772 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
2773 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
2780 if PreviewTimer.Enabled then
2781 PreviewTimer.Enabled := False;
2782 Application.CancelHint;
2784 if GetActiveContent <> nil then
2785 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
2787 ActiveFileName := '';
2789 FActiveContent := nil;
2793 StatusBar.Panels[1].Text := Text;
2795 if FHint <> nil then begin
2796 FHint.ReleaseHandle;
2799 if FPreviewBrowser <> nil then
2800 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2802 if not GikoSys.Setting.UnActivePopup then
2803 if not GikoForm.Active then
2806 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
2807 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
2810 Ext := AnsiLowerCase(ExtractFileExt(Text));
2811 if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
2812 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
2813 if FPreviewBrowser = nil then begin
2814 FPreviewBrowser := TPreviewBrowser.Create(Self);
2815 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2816 TOleControl(FPreviewBrowser).Parent := nil;
2818 FPreviewBrowser.Navigate(BLANK_HTML);//
\91O
\89ñ
\82Ì
\83v
\83\8c\83r
\83\85\81[
\89æ
\91\9c\8fÁ
\8b\8e\97p
2819 FPreviewURL := Text;
2820 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
2821 PreviewTimer.Enabled := True;
2822 end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
2823 if Pos('mailto:', Text) = 1 then begin
2824 s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
2825 //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g3
\82Ì466
\8e\81\82É
\8a´
\8eÓ
2827 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
2828 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
2829 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
2830 if (Assigned(e)) then begin
2831 tmp2 := ZenToHan(e.Get_outerText);
2832 if (GikoSys.IsNumeric(tmp2)) then begin
2833 //
\82\93\82Í
\83\8c\83X
\94Ô
\8d\86\82Á
\82Û
\82¢
\82Á
\82·
\81B
2834 wkIntSt := StrToInt(tmp2);
2835 wkIntTo := StrToInt(tmp2);
2836 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
2837 FHint.PopupType := gptThread;
2838 SetResPopupText(GetActiveContent, wkIntSt, wkIntTo, False, False);
2840 FHint.PopupType := gptRaw;
2845 threadItem := GetActiveContent;
2846 if Pos('about:blank..', Text) = 1 then begin
2847 if (AnsiPos('http://jbbs.livedoor.com/', threadItem.URL) <> 0) then begin
2848 URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2849 Gikosys.GetPopupResNumber(Text,PathRec.FSt,PathRec.FTo);
2850 if ( PathRec.FSt <> 0 ) and ( PathRec.FTo <> 0 ) then
2851 buf := IntToStr(PathRec.FSt) + '-' + IntToStr(PathRec.FTo)
2852 else if( PathRec.FSt <> 0 ) then
2853 buf := IntToStr(PathRec.FSt);
2854 end else if AnsiPos('machi.to/bbs/', threadItem.URL) <> 0 then begin
2855 URL := threaditem.URL;
2856 buf := Copy(Text,AnsiPos('&st=',Text),Length(Text)-AnsiPos('&st=',Text) + 1);
2858 URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2859 buf := Copy(Text,LastDelimiter('/',Text)+1,Length(Text)-LastDelimiter('/',Text));
2865 PathRec := Gikosys.Parse2chURL2(URL);
2866 if (PathRec.FNoParam) then begin
2870 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2871 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
2873 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
2875 URL := GikoSys.GetBrowsableThreadURL( URL );
2876 wkIntSt := PathRec.FSt;
2877 wkIntTo := PathRec.FTo;
2879 if (wkIntSt = 0) and (wkIntTo = 0) then begin
2882 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
2884 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
2886 end else if wkIntSt > wkIntTo then begin
2891 //if wkIntSt = 0 then
2893 //if wkINtTo = 0 then
2895 //if PathRec.FFirst then
2897 if PathRec.FStBegin then
2899 if PathRec.FToEnd then
2902 //ATitle := ActiveFileName <> PathRec.FKey;
2903 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
2908 threadItem := BBSsFindThreadFromURL( URL );
2910 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
2911 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
2912 if board <> nil then begin
2913 if not board.IsThreadDatRead then
2914 GikoSys.ReadSubjectFile( board );
2915 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
2919 if threadItem <> nil then begin
2920 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
2921 FHint.PopupType := gptThread;
2922 SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
2928 // ShowTextPopup(s);
2929 if FHint.PopupType = gptRaw then begin
2930 if FHint.Caption <> '' then
2933 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2939 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2942 //SysMenuApp: HMenu;
2944 FEnabledCloseButton := Enabled;
2945 SysMenu := GetSystemMenu(Handle, False);
2946 //SysMenuApp := GetSystemMenu(Application.Handle, False);
2948 if Enabled then begin
2949 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2950 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2952 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2953 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2956 DrawMenuBar(Handle);
2957 //DrawMenuBar(Application.Handle);
2960 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2961 var AllowChange: Boolean);
2963 //
\83\
\81[
\83g
\8f\87\82ð
\95Û
\91¶
\82·
\82é
\82æ
\82¤
\82É
\82µ
\82½
\82Ì
\82Å
\8dí
\8f\9c
2964 // if FTreeType = gtt2ch then
2965 // FSortIndex := -1;
2968 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2969 Shift: TShiftState);
2971 if GetActiveList is TBoard then begin
2972 if Key = VK_BACK then begin
2973 // UpFolderButtonClick(Sender);
2974 end else if Key = VK_SPACE then begin
2975 ListDoubleClick(Shift);
2976 end else if Key = VK_RETURN then begin
2979 end else begin // TBBS, TCategory
2980 if Key = VK_BACK then begin
2981 // UpFolderButtonClick(Sender);
2982 end else if Key = VK_SPACE then begin
2984 end else if Key = VK_RETURN then begin
2985 ListDoubleClick(Shift);
2990 function TGikoForm.GetHttpState: Boolean;
2992 Result := FHttpState;
2996 \brief ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
2998 Delphi 6 Personal
\82Å
\82Ì ListView
\82Å
\82Í ListViewColumnClick
\83C
\83x
\83\93\83g
\82Å
2999 \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
3001 function TGikoForm.ActiveListTrueColumn( column : TListColumn ) : TListColumn;
3007 //
\90³
\82µ
\82
\95Ï
\8a·
\82·
\82é
\95û
\96@
\82ª
\95ª
\82©
\82ç
\82È
\82¢
\82Ì
\82Å
\95Û
\97¯
3013 if TObject( FActiveList ) is TBBS then
3014 orderList := GikoSys.Setting.BBSColumnOrder
3015 else if TObject( FActiveList ) is TCategory then
3016 orderList := GikoSys.Setting.CategoryColumnOrder
3017 else if TObject( FActiveList ) is TBoard then
3018 orderList := GikoSys.Setting.BoardColumnOrder
3024 for i := 0 to ListView.Columns.Count - 1 do begin
3025 if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin
3027 Result := ListView.Column[ i ]
3028 else if idx <= i then
3029 Result := ListView.Column[ idx - 1 ];
3037 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
3038 Column: TListColumn);
3043 idx := ActiveListTrueColumn( Column ).Tag;
3045 if TObject( FActiveList ) is TBBS then
3046 orderList := GikoSys.Setting.BBSColumnOrder
3047 else if TObject( FActiveList ) is TCategory then
3048 orderList := GikoSys.Setting.CategoryColumnOrder
3049 else if TObject( FActiveList ) is TBoard then
3050 orderList := GikoSys.Setting.BoardColumnOrder
3054 id := Integer( orderList[ idx ] );
3056 if FSortIndex = id then
3057 FSortOrder := not FSortOrder
3059 FSortOrder := False;
3061 ListViewSort(Sender, Column);
3064 procedure TGikoForm.ListViewSort(Sender: TObject; Column: TListColumn);
3066 i, id, idx : Integer;
3069 wkCategory: TCategory;
3072 idx := ActiveListTrueColumn( Column ).Tag;
3074 for i := 0 to ListView.Columns.Count - 1 do begin
3075 ListView.Column[i].ImageIndex := -1;
3079 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1
3081 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2;
3083 Sort.SortNoFlag := ListNumberVisibleAction.Checked;
3085 //if TObject(TreeView.Selected.Data) is TBBS then begin
3086 if TObject( FActiveList ) is TBBS then begin
3087 //wkBBS := TBBS(TreeView.Selected.Data);
3088 wkBBS := TBBS( FActiveList );
3089 orderList := GikoSys.Setting.BBSColumnOrder;
3090 id := Integer( orderList[ idx ] );
3091 Sort.SortOrder := FSortOrder;
3092 Sort.SortIndex := id;
3093 GikoSys.Setting.BBSSortIndex := id;
3094 GikoSys.Setting.BBSSortOrder := FSortOrder;
3095 wkBBS.Sort(CategorySortProc);
3096 //end else if TObject(TreeView.Selected.Data) is TCategory then begin
3097 end else if TObject( FActiveList ) is TCategory then begin
3098 //wkCategory := TCategory(TreeView.Selected.Data);
3099 wkCategory := TCategory( FActiveList );
3100 orderList := GikoSys.Setting.CategoryColumnOrder;
3101 id := Integer( orderList[ idx ] );
3102 Sort.SortOrder := FSortOrder;
3103 Sort.SortIndex := id;
3104 GikoSys.Setting.CategorySortIndex := id;
3105 GikoSys.Setting.CategorySortOrder := FSortOrder;
3106 wkCategory.CustomSort(BoardSortProc);
3107 //end else if TObject(TreeView.Selected.Data) is TBoard then begin
3108 end else if TObject( FActiveList ) is TBoard then begin
3109 //wkBoard := TBoard(TreeView.Selected.Data);
3110 wkBoard := TBoard( FActiveList );
3111 orderList := GikoSys.Setting.BoardColumnOrder;
3112 id := Integer( orderList[ idx ] );
3113 Sort.SortOrder := FSortOrder;
3114 Sort.SortIndex := id;
3115 GikoSys.Setting.BoardSortIndex := id;
3116 GikoSys.Setting.BoardSortOrder := FSortOrder;
3117 wkBoard.CustomSort(ThreadItemSortProc);
3124 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
3125 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
3129 DefaultDraw := True;
3131 DefaultDraw := False;
3132 if (cdsSelected in State) or (cdsHot in State) then begin
3133 Sender.Canvas.Brush.Color := clHighlight;
3134 Sender.Canvas.Font.Color := clHighlightText;
3136 Sender.Canvas.Brush.Color := clBtnFace;
3137 Sender.Canvas.Font.Color := clBtnText;
3139 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
3140 Sender.Canvas.FillRect(ARect);
3141 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
3144 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
3149 Nodes := TreeView.Items;
3151 for i := 0 to Nodes.Count - 1 do begin
3152 if Nodes.Item[i].Data = Data then begin
3153 Result := Nodes.Item[i];
3160 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
3161 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
3162 Headers: OleVariant; var Cancel: WordBool);
3167 kMenuName: string = 'menu:';
3170 if Pos(kMenuName, URL) <> 0 then begin
3171 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
3173 if not GikoSys.IsNumeric(sNo) then Exit;
3177 KokoPopupMenu.Tag := StrToInt(sNo);
3178 KokoPopupMenu.Popup(p.x, p.y);
3179 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
3180 Cancel := not GikoSys.Setting.OpenMailer;
3185 procedure TGikoForm.ListViewAdvancedCustomDrawItem(Sender: TCustomListView;
3186 Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
3187 var DefaultDraw: Boolean);
3189 ThreadItem: TThreadItem;
3191 // TListView(Sender).Canvas.Font.Style := [];
3192 if TObject(Item.Data) is TThreadItem then begin
3193 ThreadItem := TThreadItem(Item.Data);
3194 if ( FUseOddResOddColor ) and ( ThreadItem.Count <> 0 ) and ( ThreadItem.AllResCount <> ThreadItem.Count) then begin
3195 ListView.Canvas.Brush.Color := FOddColor;
3197 ListView.Canvas.Brush.Color := FListViewBackGroundColor;
3199 // if (ThreadItem.Kokomade <> ThreadItem.Count) and (ThreadItem.IsLogFile) then
3200 if ThreadItem.UnRead then
3201 TListView(Sender).Canvas.Font.Style := [fsBold];
3205 procedure TGikoForm.AppFormDeactivate(Sender: TObject);
3207 Application.ProcessMessages;
3208 if Application.Terminated then
3210 if PreviewTimer.Enabled then
3211 PreviewTimer.Enabled := False;
3212 //
\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
3213 if FHint <> nil then begin
3214 FHint.ReleaseHandle;
3219 if FPreviewBrowser <> nil then
3220 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
3224 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
3225 const ARect: TRect; var DefaultDraw: Boolean);
3229 IsBoardNode: Boolean;
3235 Category: TCategory;
3239 DefaultDraw := True;
3241 if FTreeType = gttHistory then Exit;
3243 TreeView.Canvas.Font.Color := clBlue;
3244 IsBoardNode := False;
3245 for i := 0 to TreeView.Items.Count - 1 do begin
3247 if not TreeView.Items[i].IsVisible then
3250 if TObject(TreeView.Items[i].Data) is TCategory then begin
3251 if TreeView.Items[i].Expanded then
3254 IsBoardNode := False;
3255 Category := TCategory(TreeView.Items[i].Data);
3256 for j := 0 to Category.Count - 1 do begin
3257 Board := Category.Items[j];
3258 if Board <> nil then begin
3259 if Board.UnRead > 0 then begin
3267 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
3268 IsBoardNode := True;
3269 Board := TBoard(TreeView.Items[i].Data);
3270 Cnt := Board.UnRead;
3276 Bitmap := TBitmap.Create;
3278 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
3279 Bitmap.Canvas.Font.Style := [fsBold];
3280 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
3285 NodeRect := TreeView.Items[i].DisplayRect(True);
3288 CntText := '(' + IntToStr(Cnt) + ')'
3289 else if Cnt = 1 then
3293 TextWidth := TreeView.Canvas.TextWidth(CntText);
3295 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
3297 NodeRect.Left + NodeWidth + TextWidth + 8,
3299 DrawText(TreeView.Canvas.Handle,
3303 DT_SINGLELINE or DT_VCENTER);
3305 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
3308 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
3309 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
3312 Category: TCategory;
3315 DefaultDraw := True;
3317 if FTreeType = gttHistory then Exit;
3319 TreeView.Canvas.Font.Style := [];
3320 if Node <> nil then begin
3321 if TObject(Node.Data) is TCategory then begin
3322 Category := TCategory(Node.Data);
3323 for i := 0 to Category.Count - 1 do begin
3324 Board := Category.Items[i];
3325 if Board <> nil then begin
3326 if Board.UnRead > 0 then begin
3327 TreeView.Canvas.Font.Style := [fsBold];
3332 end else if TObject(Node.Data) is TBoard then begin
3333 Board := TBoard(Node.Data);
3334 if Board.UnRead > 0 then
3335 TreeView.Canvas.Font.Style := [fsBold];
3340 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
3342 TreeView.Invalidate;
3344 if TObject(Node.Data) is TBBS then begin
3345 TBBS(Node.Data).NodeExpand := True;
3346 end else if TObject(Node.Data) is TCategory then begin
3347 TCategory(Node.Data).NodeExpand := True;
3348 end else if TObject(Node.Data) is TBoard then begin
3349 TBoard(Node.Data).NodeExpand := True;
3353 {procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean);
3355 TreeSplitter.Visible := PanelVisible;
3356 CabinetPanel.Visible := PanelVisible;
3357 CabinetToolButton.Down := PanelVisible;
3360 procedure TGikoForm.ListViewAllSelect;
3366 procedure TGikoForm.TreeViewDblClick(Sender: TObject);
3371 GetCursorPos(APoint);
3372 APoint := TreeView.ScreenToClient(APoint);
3373 HitTest := TreeView.GetHitTestInfoAt(APoint.x, APoint.y);
3374 if not (htOnLabel in HitTest) then Exit;
3376 TreeDoubleClick( TreeView.Selected );
3379 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
3381 AddMessageList(Msg, nil, Icon);
3384 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
3388 boardPlugIn : TBoardPlugIn;
3392 if Item.DownType = gdtBoard then
3393 ATitle := Item.Board.Title
3395 ATitle := Item.ThreadItem.Title;
3397 ATitle := '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j';
3399 if Item.State in [gdsComplete, gdsDiffComplete] then begin
3401 if Item.DownType = gdtBoard then begin
3404 AddMessageList(ATitle + ' [
\83X
\83\8c\88ê
\97\97\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3405 if GetActiveList = Item.Board then begin
3407 SetActiveList(Item.Board);
3409 Item.Board.Modified := True;
3410 Item.Board.IsThreadDatRead := True;
3412 end else if Item.DownType = gdtThread then begin
3415 Item.ThreadItem.NewArrival := True;
3416 if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3417 boardPlugIn := Item.ThreadItem.BoardPlugIn;
3418 Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
3419 ATitle := Item.ThreadItem.Title;
3420 end else if ATitle = '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j' then begin
3421 ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
3423 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3424 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then
3425 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3427 if GikoSys.Setting.BrowserTabVisible then begin
3428 if GetActiveContent = Item.ThreadItem then
3429 InsertBrowserTab(Item.ThreadItem)
3430 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
3431 InsertBrowserTab(Item.ThreadItem, True)
3433 InsertBrowserTab(Item.ThreadItem, False);
3435 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
3436 InsertBrowserTab(Item.ThreadItem);
3439 if Item.State = gdsComplete then begin
3441 AddMessageList(ATitle + ' [
\83X
\83\8c\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3443 PlaySound('NewDiff');
3444 AddMessageList(ATitle + ' [
\83X
\83\8c\8d·
\95ª
\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3447 //
\8f\84\89ñ
\82 \82è
\82Ì
\8fê
\8d\87\81\95\82P
\82O
\82O
\82O
\92´
\82Í
\8f\84\89ñ
\8dí
\8f\9c
3448 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
3449 Item.ThreadItem.Round := False;
3450 Item.ThreadItem.RoundName := '';
3451 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);
3457 end else if Item.State = gdsNotModify then begin
3459 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
3460 //SetContent(Item.ThreadItem);
3461 InsertBrowserTab(Item.ThreadItem);
3463 AddMessageList(ATitle + ' [
\96¢
\8dX
\90V]', nil, gmiSAD);
3464 PlaySound('NoChange');
3465 Screen.Cursor := crDefault;
3466 end else if Item.State = gdsAbort then begin
3468 AddMessageList(ATitle + ' [
\92\86\92f]', nil, gmiSAD);
3469 end else if Item.State = gdsError then begin
3474 AddMessageList(ATitle + ' [
\83G
\83\89\81[(' + IntToStr(Item.ResponseCode) + s + ')]', nil, gmiNG);
3475 // if Item.ResponseCode = 302 then
3476 // 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);
3482 if FWorkCount < 0 then FWorkCount := 0;
3483 if FWorkCount = 0 then begin
3485 Animate.Active := False;
3487 Screen.Cursor := crDefault;
3494 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
3496 // SetProgressValue(Number, 0, AWorkCountMax);
3497 // ProgressBar.Visible := True;
3498 ProgressBar.Position := 0;
3499 ProgressBar.Max := AWorkCountMax;
3500 FDownloadTitle := AWorkTitle;
3501 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8aJ
\8en
\82µ
\82Ü
\82·';
3502 FDownloadMax := AWorkCountMax;
3505 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
3507 ProgressBar.Position := 0;
3508 if FDownloadMax <> 0 then
3509 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8a®
\97¹
\82µ
\82Ü
\82µ
\82½';
3512 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
3514 ProgressBar.Position := AWorkCount;
3515 // SetProgressValue(Number, AWorkCount);
3516 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86 (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
3520 procedure TGikoForm.SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
3522 Component: TComponent;
3524 Component := FindComponent('ProgressBar' + IntToStr(Number + 1));
3525 if Component <> nil then begin
3526 if not (Component is TProgressBar) then Exit;
3528 TProgressBar(Component).Max := Max;
3529 TProgressBar(Component).Position := Value;
3534 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
3536 ListItem: TListItem;
3538 MessageListView.Items.BeginUpdate;
3540 ListItem := MessageListView.Items.Add;
3541 ListItem.Caption := ACaption;
3542 ListItem.Data := AObject;
3543 ListItem.MakeVisible(False);
3545 gmiOK: ListItem.ImageIndex := 0;
3546 gmiSAD: ListItem.ImageIndex := 1;
3547 gmiNG: ListItem.ImageIndex := 2;
3548 gmiWhat: ListItem.ImageIndex := 3;
3551 MessageListView.Items.EndUpdate;
3555 {procedure TGikoForm.BrowserTabChange(Sender: TObject);
3558 ThreadItem: TThreadItem;
3560 ThreadItem := GetActiveContent;
3561 if ThreadItem <> nil then begin
3562 SetContent(ThreadItem);
3566 procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
3570 favItem : TFavoriteThreadItem;
3571 newBrowser : TBrowserRecord;
3574 if Threaditem = nil then Exit;
3576 if ThreadItem.IsLogFile then begin
3577 //
\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é
3578 //
\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é
3579 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
3580 (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
3581 j := FBrowsers.IndexOf(FActiveContent.FBrowser);
3582 if j = BROWSER_COUNT - 1 then
3583 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3585 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
3586 if not AddHistory( favItem ) then
3589 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3590 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
3591 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3592 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
3593 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3594 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3595 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3596 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3597 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3598 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3603 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3604 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3605 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3607 if ActiveTab then begin
3608 BrowserTab.TabIndex := i;
3609 BrowserTab.OnChange(nil);
3616 idx := BrowserTab.TabIndex;
3617 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
3618 newBrowser := TBrowserRecord.Create;
3619 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3620 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3621 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3622 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3623 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3624 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3629 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3630 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3631 //newBrowser.Browser.Navigate(BLANK_HTML);
3632 newBrowser.thread := ThreadItem;
3633 newBrowser.Repaint := true;
3634 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3636 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3637 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3638 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
3642 if ActiveTab then begin
3643 BrowserTab.TabIndex := 0;
3647 newBrowser := TBrowserRecord.Create;
3648 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3649 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3650 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3651 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3652 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3653 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3658 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3659 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3660 //newBrowser.Browser.Navigate(BLANK_HTML);
3661 newBrowser.thread := ThreadItem;
3662 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3663 newBrowser.Repaint := true;
3665 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3666 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3667 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
3671 if ActiveTab then begin
3672 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
3673 BrowserTab.TabIndex := 0
3675 BrowserTab.TabIndex := i;
3678 if(ActiveTab) or (idx = -1) then begin
3679 BrowserTab.OnChange(nil);
3682 if BrowserNullTab = nil then begin
3683 BrowserNullTab := TBrowserRecord.Create;
3684 BrowserNullTab.Browser := Browser;
3686 BrowserNullTab.thread := ThreadItem;
3687 BrowserTab.TabIndex := -1;
3688 SetContent(BrowserNullTab);
3691 if GikoSys.Setting.URLDisplay then
3692 AddressComboBox.Text := ThreadItem.URL;
3696 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
3701 // HtmlName: string;
3704 // OldCursor: TCursor;
3708 ThreadItem: TThreadItem;
3709 Thread: TBrowserRecord;
3710 ThreadTitle, ThreadPTitle: string;
3711 ThreadScrollTop: Integer;
3712 ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
3715 idx := BrowserTab.TabIndex;
3716 if (FActiveContent <> nil) and
3717 (FActiveContent.Thread <> Thread.Thread) and
3718 (Assigned(FActiveContent.Browser.Document)) then begin
3722 //Application.ProcessMessages;
3723 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
3724 //if FActiveContent.Browser <> BrowserNullTab.Browser then
3725 // TOleControl(FActiveContent.Browser).Visible := false;
3728 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
3733 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
3734 Thread.Browser.Navigate(BLANK_HTML);
3735 BrowserBoardNameLabel.Caption := '';
3736 ItemBoardImage.Picture := nil;
3737 BrowserNameLabel.Caption := '';
3738 ItemImage.Picture := nil;
3739 BrowserNullTab.Thread := nil;
3740 //TOleControl(BrowserNullTab.Browser).Visible := true;
3741 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
3742 FActiveContent := nil;
3744 end else if Thread.Browser = nil then begin
3745 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
3746 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3747 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3748 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3749 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := nil;
3750 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
3751 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
3752 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
3757 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3758 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3760 ThreadTitle := Thread.Thread.Title;
3761 ThreadPTitle := Thread.Thread.ParentBoard.Title;
3762 ThreadScrollTop := Thread.Thread.ScrollTop;
3763 ThreadIsLog := Thread.Thread.IsLogFile;
3764 ThreadItem := Thread.Thread;
3765 ThreadNewArraical := Thread.Thread.NewArrival;
3766 ThreadUnRead := Thread.Thread.UnRead;
3767 BBSID := ThreadItem.ParentBoard.BBSID;
3768 FileName := ThreadItem.FileName;
3770 if GetCapture = ListView.Handle then
3773 Screen.Cursor := crHourGlass;
3777 if ThreadItem.UnRead then begin
3778 ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
3779 if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
3782 { if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
3783 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
3784 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
3787 ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
3788 if (not Assigned(Thread.Browser.Document)) then begin
3789 Thread.Browser.Navigate('about:blank');
3791 FActiveContent := Thread;
3792 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3793 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3794 Application.ProcessMessages;
3795 if idx <> BrowserTab.TabIndex then begin
3799 if not ThreadIsLog then begin
3800 Self.Caption := CAPTION_NAME ;
3802 s := '<HTML><BODY><CENTER>
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Í
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ</CENTER></BODY></HTML>';
3803 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3805 doc.charset := 'Shift_JIS';
3811 Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
3812 //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«
3813 //
\90V
\8bK
\82ÉThread
\82ð
\8aJ
\82¢
\82½
\82Æ
\82«
\82É
\90^
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\81B
3814 // if(Thread.Repaint) or (Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
3815 if Thread.Repaint then begin
3816 //Thread.LastSize := ThreadItem.Size;
3817 Thread.Repaint := false;
3819 Thread.Browser.OnStatusTextChange := nil;
3820 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3821 GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
3823 // if (Assigned(Thread.Browser)) and (Thread.Browser <> nil) then
3824 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
3825 //
\82È
\82º
\82©
\82±
\82±
\82Å
\96¾
\8e¦
\93I
\82ÉDocumentComplete
\82ð
\8cÄ
\82Î
\82È
\82¢
\82Æ
\82¤
\82Ü
\82
\82¢
\82©
\82È
\82¢
3826 //
\92Ç
\8bL
\81@200406/19
3827 //Visible
\82Ì
\82Æ
\82«
\82µ
\82©DocumentComplete
\82Í
\8cÄ
\82Î
\82ê
\82È
\82¢
\82ç
\82µ
\82¢
3828 Thread.FBrowser.OnDocumentComplete(Thread.FBrowser, Thread.FBrowser.Parent, url);
3829 // Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
3830 Application.ProcessMessages;
3831 //
\82±
\82±
\82ÅApplication.ProcessMessages
\82ð
\8cÄ
\82Ô
\82±
\82Æ
\82É
\82æ
\82Á
\82ÄWebBrowser
\82ð
\8dX
\90V
\82³
\82¹
\82é
\81B
3832 //
\91\8a\82µ
\82È
\82¢
\82Æ
\88ê
\89æ
\96Ê
\95ª
\82µ
\82©
\95`
\89æ
\82Å
\82«
\82Ä
\82È
\82¢
\82Ì
\82Å
\82»
\82ê
\88È
\8fã
\82Ì
\83X
\83N
\83\8d\81[
\83\8b\97Ê
\82ð
\8ew
\92è
\82µ
\82Ä
\82à
\96³
\8cø
\82É
\82È
\82é
3833 //
\81@by
\82à
\82¶
\82ã(2004/01/20)
3835 //if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
3836 if(Thread <> nil) and (ThreadItem <>nil) then begin
3837 if ThreadUnRead then
3838 BrowserMovement('new', Thread)
3839 else if ThreadScrollTop <> 0 then begin
3841 doc.Body.ScrollTop := ThreadScrollTop;
3844 MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
3849 FActiveContent := nil;
3854 FActiveContent := nil;
3859 // Application.ProcessMessages;
3862 ThreadItem.UnRead := False;
3865 if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
3866 //FActiveContent := Thread;
3868 BrowserBoardNameLabel.Caption := ThreadPTitle;
3869 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
3870 BrowserNameLabel.Caption := ThreadTitle;
3871 ItemImage.Picture := nil;
3873 if ThreadNewArraical then
3874 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
3876 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
3878 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
3880 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
3881 BrowserNameLabel.Left := ItemImage.Left + 20;
3883 FActiveContent := nil;
3886 Screen.Cursor := crDefault;
3890 function TGikoForm.GetActiveContent: TThreadItem;
3893 if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
3894 and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
3895 Result := FActiveContent.Thread
3897 FActiveContent := nil;
3901 FActiveContent := nil;
3906 procedure TGikoForm.SetActiveList(Obj: TObject);
3911 // if FActiveList <> Obj then begin
3914 if ListView.Selected <> nil then
3915 idx := ListView.Selected.Index
3918 ListView.Items.Count := 0;
3919 ListView.Items.Clear;
3920 ListView.Selected := nil;
3921 // ListView.Columns.Clear;
3923 Self.Caption := CAPTION_NAME;
3924 //Application.Title := CAPTION_NAME;
3926 // ActiveListColumnSave;
3928 if Obj is TBBS then begin
3929 SetCategoryListItem(TBBS(Obj));
3930 end else if Obj is TCategory then begin
3931 SetBoardListItem(TCategory(Obj));
3932 end else if Obj is TBoard then begin
3933 SetThreadListItem(TBoard(Obj));
3936 if idx >= 0 then begin
3937 ListView.ItemIndex := idx;
3938 ListView.ItemFocused := ListView.Items.Item[ idx ];
3944 //
\81\9a\81\9a\83q
\83\8d\83\86\83L
\83\81\83\82
3945 //
\82»
\82Ì
\82¤
\82¿interface
\82ð
\8eg
\82¤
3946 function TGikoForm.GetActiveList: TObject;
3948 Result := FActiveList;
3951 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
3953 SetListViewType(AViewType, '', False);
3956 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
3960 if ActiveList is TBoard then begin
3961 Board := TBoard(ActiveList);
3963 Board.ParentCategory.ParenTBBS.SelectText := SelectText;
3964 Board.ParentCategory.ParenTBBS.KubetsuChk := KubetsuChk;
3965 // Board.SelectText := SelectText;
3966 // Board.KubetsuChk := KubetsuChk;
3967 ViewType := AViewType;
3968 SetActiveList(Board);
3969 SetThreadListItem(Board);
3973 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
3974 const ARect: TRect; var DefaultDraw: Boolean);
3980 if ListView.Items.Count = 0 then begin
3981 DefaultDraw := True;
3983 ListView.Canvas.Brush.Color := ListView.Color;
3984 ListView.Canvas.FillRect(ARect);
3988 ListView.Canvas.Font.Color := clWindowText;
3989 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
3992 ListView.Canvas.Font.Color := clBlue;
3993 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';
3996 ListView.Canvas.Font.Color := clGreen;
3997 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\90V
\92\85\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4000 ListView.Canvas.Font.Color := clNavy;
4001 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';
4002 if GetActiveList is TBoard then
4003 s := Format(s, [TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText]);
4011 p := Point((ListView.ClientWidth div 2) - (ListView.Canvas.TextWidth(s) div 2),
4012 (ListView.ClientHeight div 2) - (ListView.Canvas.TextHeight(s) div 2));
4013 ListView.Canvas.TextOut(p.X, p.Y, s);
4015 DefaultDraw := True;
4019 procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
4021 Item: TDownloadItem;
4023 if not Board.IsThreadDatRead then
4024 GikoSys.ReadSubjectFile(Board);
4025 Item := TDownloadItem.Create;
4027 Item.Board := Board;
4028 Item.DownType := gdtBoard;
4029 Item.ForceDownload := ForceDownload;
4030 // AbortToolButton.Enabled := True;
4031 // Animate.Active := True;
4032 // FDownload.Add(Item);
4033 FControlThread.AddItem(Item);
4034 // Animate.Active := False;
4035 // AbortToolButton.Enabled := False;
4036 if FWorkCount = 0 then begin
4038 Animate.Active := True;
4041 Screen.Cursor := crAppStart;
4049 procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
4051 Item: TDownloadItem;
4053 Item := TDownloadItem.Create;
4055 Item.ThreadItem := ThreadItem;
4056 Item.DownType := gdtThread;
4057 Item.ForceDownload := ForceDownload;
4058 // AbortToolButton.Enabled := True;
4059 // Animate.Active := True;
4060 // FDownload.Add(Item);
4061 FControlThread.AddItem(Item);
4062 // Animate.Active := False;
4063 // AbortToolButton.Enabled := False;
4064 if FWorkCount = 0 then begin
4066 Animate.Active := True;
4069 Screen.Cursor := crAppStart;
4077 procedure TGikoForm.PlaySound(SoundEventName: string);
4081 FileName := GikoSys.Setting.FindSoundFileName(SoundEventName);
4082 if FileExists(FileName) then begin
4083 if not sndPlaySound(PChar(FileName), SND_ASYNC or SND_NOSTOP) then begin
4084 sndPlaySound(nil, SND_SYNC);
4085 Application.ProcessMessages;
4087 sndPlaySound(PChar(FileName), SND_ASYNC);
4092 function TGikoForm.AddHistory( favItem : TFavoriteThreadItem ): Boolean;
4095 Item: TFavoriteThreadItem;
4099 // if (GetActiveContent = ThreadItem) and
4100 // (ThreadItem.Count <= ThreadItem.Kokomade) then
4102 // if GetActiveContent = ThreadItem then
4106 if FTreeType = gttHistory then
4107 TreeView.Selected := nil;
4109 for i := 0 to FHistoryList.Count - 1 do begin
4110 if TObject(FHistoryList[i]) is TFavoriteThreadItem then begin
4111 Item := TFavoriteThreadItem(FHistoryList[i]);
4112 if Item.URL = favItem.URL then begin
4113 // SetContent(ThreadItem);
4114 FHistoryList.Move(i, 0);
4115 if FTreeType = gttHistory then
4116 if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
4117 TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
4124 if FHistoryList.Count > 0 then
4125 FHistoryList.Insert( 0, favItem )
4127 FHistoryList.Add( favItem );
4128 // SetContent(ThreadItem);
4130 if FTreeType = gttHistory then begin
4131 Node := TreeView.Items.Add( nil, favItem.Title );
4132 Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
4134 if favItem.NewArrival then begin
4135 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4136 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4138 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4139 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4142 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4143 //
\81¦favItem.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4144 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4145 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4146 Node.Data := favItem;
4150 procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
4154 for i := 0 to FHistoryList.Count - 1 do begin
4155 if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
4156 TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
4157 FHistoryList.Delete(i);
4158 FHistoryList.Capacity := FHistoryList.Count;
4164 procedure TGikoForm.ClearHistory;
4168 //FHistoryList.Clear;
4171 for i := FHistoryList.Count - 1 downto 0 do begin
4172 if TObject(FHistoryList[ i ]) is TFavoriteThreadItem then
4173 TFavoriteThreadItem(FHistoryList[ i ]).Free
4174 else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
4175 TFavoriteBoardItem(FHistoryList[ i ]).Free;
4177 //FHistoryList.Delete(i);
4183 FHistoryList.Capacity := FHistoryList.Count;
4187 procedure TGikoForm.SaveHistory;
4190 saveList : TstringList;
4193 saveList := TStringList.Create;
4196 FHistoryList.Capacity := FHistoryList.Count;
4197 saveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
4198 saveList.Add('<address>');
4199 bound := FHistoryList.Count - 1;
4200 for i := bound downto 0 do begin
4201 // title
\82Í
\8d¡
\82Ì
\82Æ
\82±
\82ë
\8eg
\82Á
\82Ä
\82¢
\82È
\82¢
4203 '<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
4204 ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
4206 saveList.Add('</address>');
4207 saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
4214 procedure TGikoForm.LoadHistory;
4218 XMLDoc : IXMLDocument;
4220 HistoryNode : IXMLNode;
4222 favItem : TFavoriteThreadItem;
4225 fileName := GikoSys.GetConfigDir + 'History.xml';
4227 if FileExists( fileName ) then begin
4229 XMLDoc := IXMLDocument.Create;
4230 //XMLDoc := LoadXMLDocument(FileName);
4231 LoadXMLDocument(FileName, XMLDoc);
4233 XMLNode := XMLDoc.DocumentElement;
4235 if XMLNode.NodeName = 'address' then begin
4236 bound := XMLNode.ChildNodes.Count - 1;
4237 for i := 0 to bound do begin
4238 HistoryNode := XMLNode.ChildNodes[i];
4239 if HistoryNode.NodeName = 'history' then begin
4240 //if FReadCount >= sl.Count then begin
4241 s := Trim(HistoryNode.Attributes['url']);
4242 if s <> '' then begin
4243 favItem := TFavoriteThreadItem.Create(
4244 s, HistoryNode.Attributes[ 'title' ] );
4245 if not AddHistory( favItem ) then
4261 procedure TGikoForm.ShowBBSTreeOld(
4269 FavoriteTreeView.Visible := False;
4270 FavoriteToolBar.Hide;
4271 TreeView.Visible := True;
4273 b := CabinetSelectPopupMenu.Items.Count - 1;
4274 for i := 0 to b do begin
4275 item := CabinetSelectPopupMenu.Items[ i ];
4276 if item is TBBSMenuItem then begin
4277 if TBBSMenuItem( item ).Data = inBBS then begin
4278 item.Checked := True;
4279 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4280 CabinetMenu.Items[ i ].Checked := True;
4281 GikoSys.Setting.CabinetIndex := i;
4285 item.Checked := False;
4286 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4287 CabinetMenu.Items[ i ].Checked := False;
4289 CabinetSelectToolButton.Caption := inBBS.Title;
4291 CabinetHistoryAction.Checked := False;
4292 CabinetFavoriteAction.Checked := False;
4294 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4295 FTreeType := gtt2ch;
4296 HistoryToolBar.Hide;
4297 SetBoardTreeNode( inBBS );
4298 TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
4299 //?c???[??g?b?v?????I????
4300 if GetActiveList = nil then
4301 TreeView.Selected := TreeView.Items[0]
4303 for i := 0 to TreeView.Items.Count - 1 do begin
4304 if TreeView.Items[i].Data = GetActiveList then begin
4305 TreeView.Selected := TreeView.Items[i];
4309 TreeView.Selected := TreeView.Items[0]
4317 procedure TGikoForm.ShowBBSTree(
4326 FavoriteTreeView.Visible := False;
4327 FavoriteToolBar.Hide;
4328 TreeView.Visible := True;
4330 b := CabinetSelectPopupMenu.Items.Count - 1;
4331 for i := 0 to b do begin
4332 item := CabinetSelectPopupMenu.Items[ i ];
4333 if item is TBBSMenuItem then begin
4334 if TBBSMenuItem( item ).Data = inBBS then begin
4335 item.Checked := True;
4336 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4337 CabinetMenu.Items[ i ].Checked := True;
4338 GikoSys.Setting.CabinetIndex := i;
4342 item.Checked := False;
4343 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4344 CabinetMenu.Items[ i ].Checked := False;
4346 CabinetSelectToolButton.Caption := inBBS.Title;
4348 CabinetHistoryAction.Checked := False;
4349 CabinetFavoriteAction.Checked := False;
4351 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4352 FTreeType := gtt2ch;
4353 HistoryToolBar.Hide;
4354 SetBoardTreeNode( inBBS );
4355 TreeView.Items.GetFirstNode.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
4356 //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
4357 if GetActiveList = nil then begin
4359 TreeClick( TreeView.Items[0] );
4363 for i := 0 to TreeView.Items.Count - 1 do begin
4364 if TreeView.Items[i].Data = GetActiveList then begin
4365 TreeClick( TreeView.Items[i] );
4369 TreeClick( TreeView.Items[0] );
4377 procedure TGikoForm.ShowHistoryTree;
4382 if CabinetPanel.Visible then begin
4383 if FTreeType = gttHistory then begin
4384 CabinetVisible( False );
4385 CabinetHistoryAction.Checked := False;
4387 CabinetHistoryAction.Checked := True;
4390 CabinetVisible( True );
4391 CabinetHistoryAction.Checked := True;
4394 // BBS...BBS, History, Favorite
4395 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 2;
4397 FavoriteTreeView.Visible := False;
4398 TreeView.Visible := True;
4400 CabinetBBSAction.Checked := False;
4401 CabinetFavoriteAction.Checked := False;
4403 if FTreeType <> gttHistory then begin
4404 b := CabinetSelectPopupMenu.Items.Count - 1;
4405 for i := 0 to b do begin
4406 item := CabinetSelectPopupMenu.Items[ i ];
4407 if item is TBBSMenuItem then begin
4408 item.Checked := False;
4409 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4410 CabinetMenu.Items[ i ].Checked := False;
4414 FTreeType := gttHistory;
4415 HistoryToolBar.Show;
4416 FavoriteToolBar.Hide;
4418 CabinetSelectToolButton.Caption := '
\97\9a\97ð
\83\8a\83X
\83g';
4422 procedure TGikoForm.SetHistoryTreeNode;
4426 Item: TFavoriteThreadItem;
4428 TreeView.Items.BeginUpdate;
4430 TreeView.Items.Clear;
4431 for i := 0 to FHistoryList.Count - 1 do begin
4432 Item := TFavoriteThreadItem(FHistoryList[i]);
4433 Node := TreeView.Items.Add(nil, Item.Title);
4435 if Item.Item.NewArrival then begin
4436 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4437 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4439 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4440 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4443 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4444 //
\81¦Item.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4445 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4446 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4450 TreeView.Items.EndUpdate;
4454 procedure TGikoForm.SelectTreeNode(Item: TObject; CallEvent: Boolean);
4456 ChangeEvent: TTVChangedEvent;
4457 ChangingEvent: TTVChangingEvent;
4461 if Item is TCategory then
4462 bbs := TCategory( Item ).ParenTBBS
4463 else if Item is TBoard then
4464 bbs := TBoard( Item ).ParentCategory.ParenTBBS
4468 if (FTreeType = gtt2ch) and (FActiveBBS = bbs) then begin
4469 if Item <> FActiveList then begin
4471 ChangingEvent := nil;
4473 if not CallEvent then begin
4474 ChangeEvent := TreeView.OnChange;
4475 ChangingEvent := TreeView.OnChanging;
4478 if not CallEvent then begin
4479 TreeView.OnChange := nil;
4480 TreeView.OnChanging := nil;
4482 //Application.ProcessMessages;
4483 for i := 0 to TreeView.Items.Count - 1 do begin
4484 if TreeView.Items[i].Data = Item then begin
4485 TreeView.Items[i].Selected := True;
4487 TreeClick(TreeView.Items[i]);
4491 //Application.ProcessMessages;
4493 if not CallEvent then begin
4494 TreeView.OnChange := ChangeEvent;
4495 TreeView.OnChanging := ChangingEvent;
4500 if Item <> FActiveList then begin
4501 ActiveListColumnSave;
4503 if (Item is TBBS) or (Item is TCategory) then begin
4504 ListView.Columns.Clear;
4505 SetActiveList( Item );
4506 end else if Item is TBoard then begin
4507 if not TBoard( Item ).IsThreadDatRead then begin
4508 Screen.Cursor := crHourGlass;
4510 if not TBoard( Item ).IsThreadDatRead then
4511 GikoSys.ReadSubjectFile(TBoard( Item ));
4513 Screen.Cursor := crDefault;
4516 SetActiveList( Item );
4520 if Item is TBoard then begin // not TCategory
4521 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4522 if GikoSys.Setting.ListWidthState = glsMax then begin
4523 BrowserMinAction.Execute;
4524 if GikoForm.Visible then
4528 if GikoSys.Setting.ListHeightState = glsMax then begin
4529 BrowserMinAction.Execute;
4530 if GikoForm.Visible then
4538 procedure TGikoForm.ListViewMouseDown(Sender: TObject;
4539 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
4541 listItem : TListItem;
4542 threadItem : TThreadItem;
4548 if not (GetActiveList is TBoard) then Exit;
4549 listItem := ListView.GetItemAt( X, Y );
4550 if listItem = nil then Exit;
4551 if not (TObject(listItem.Data) is TThreadItem) then Exit;
4553 threadItem := TThreadItem(ListItem.Data);
4554 InsertBrowserTab(threadItem, False);
4555 if threadItem.IsLogFile then
4556 ListView.UpdateItems(listItem.Index, listItem.Index);
4560 //
\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Å
4561 if (ssDouble in Shift) then
4562 ListDoubleClick(Shift)
4567 { if ssDouble in Shift then begin
4568 DoubleClickOccurred[Button] := True;
4570 DoubleClickOccurred[Button] := False;
4571 t := GetTickCount+GetDoubleClickTime;
4572 while GetTickCount < t do begin
4573 Application.ProcessMessages;
4574 if DoubleClickOccurred[Button] then
4579 if ssDouble in Shift then begin
4581 mbLeft: ListDoubleClick;
4594 procedure TGikoForm.ListClick;
4596 ListItem: TListItem;
4597 ThreadItem: TThreadItem;
4599 if ListView.SelCount <> 1 then Exit;
4600 ListItem := ListView.Selected;
4601 if ListItem = nil then Exit;
4602 if not (TObject(ListItem.Data) is TThreadItem) then Exit;
4604 ThreadItem := TThreadItem(ListItem.Data);
4605 if ThreadItem.IsLogFile then begin
4606 // if AddHistory(ThreadItem) then
4607 // SetContent(ThreadItem);
4608 InsertBrowserTab(ThreadItem);
4609 ListView.UpdateItems(ListItem.Index, ListItem.Index);
4611 // SetContent(ThreadItem);
4612 InsertBrowserTab(ThreadItem);
4615 if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
4616 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4617 if GikoSys.Setting.ListWidthState = glsMin then begin
4618 BrowserMaxAndFocusAction.Execute;
4621 if GikoSys.Setting.ListHeightState = glsMin then begin
4622 BrowserMaxAndFocusAction.Execute;
4628 procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
4630 ThreadItem: TThreadItem;
4633 shiftDown := (ssShift in Shift);
4635 if ListView.Selected = nil then Exit;
4637 if TObject(ListView.Selected.Data) is TCategory then begin
4638 SelectTreeNode(ListView.Selected.Data, True);
4639 // TreeView.Selected.Expanded := True;
4640 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4641 //TreeViewChange(nil, TreeView.Selected);
4642 end else if TObject(ListView.Selected.Data) is TBoard then begin
4643 SelectTreeNode(ListView.Selected.Data, True);
4644 // TreeView.Selected.Expanded := True;
4645 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4646 //TreeViewChange(nil, TreeView.Selected);
4647 end else if TObject(ListView.Selected.Data) is TThreadItem then begin
4648 //if TObject(ListView.Selected.Data) is TThreadItem then begin
4649 Application.ProcessMessages;
4650 ThreadItem := TThreadItem(ListView.Selected.Data);
4651 DownloadContent(ThreadItem, shiftDown);
4654 if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
4655 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4656 if GikoSys.Setting.ListWidthState = glsMin then begin
4657 // BrowserMaxAndFocusAction.Execute;
4658 BrowserMaxAction.Execute;
4659 SetFocusForBrowserAction.Execute;
4662 if GikoSys.Setting.ListHeightState = glsMin then begin
4663 // BrowserMaxAndFocusAction.Execute;
4664 BrowserMaxAction.Execute;
4665 SetFocusForBrowserAction.Execute;
4671 procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
4676 activeBrower :TWebBrowser;
4678 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4680 while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
4681 (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4682 Application.ProcessMessages;
4685 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4686 if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
4687 activeBrower := BrowserRecord.FBrowser;
4691 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4693 top := top + item.offsetTop;
4694 item := item.offsetParent;
4695 until AnsiCompareText(item.tagName, 'body' ) = 0;
4697 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4703 procedure TGikoForm.BrowserMovement(const AName: string);
4708 activeBrower :TWebBrowser;
4710 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4712 while (Browser.ReadyState <> READYSTATE_COMPLETE) and
4713 (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4714 Application.ProcessMessages;
4717 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4718 if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
4719 activeBrower := FActiveContent.Browser;
4723 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4725 top := top + item.offsetTop;
4726 item := item.offsetParent;
4727 until AnsiCompareText(item.tagName, 'body' ) = 0;
4729 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4735 procedure TGikoForm.TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
4737 if TObject(Node.Data) is TBBS then begin
4738 TBBS(Node.Data).NodeExpand := False;
4739 end else if TObject(Node.Data) is TCategory then begin
4740 TCategory(Node.Data).NodeExpand := False;
4741 end else if TObject(Node.Data) is TBoard then begin
4742 TBoard(Node.Data).NodeExpand := False;
4746 procedure TGikoForm.MessageListViewResize(Sender: TObject);
4748 // MessageListView.Column[0].Width := MessageListView.ClientWidth - 16;
4751 procedure TGikoForm.SelectListItem(List: TList);
4753 // TmpTreeNode: TTreeNode;
4754 TmpListItem: TListItem;
4757 TmpListItem := ListView.Selected;
4758 while TmpListItem <> nil do begin
4759 List.Add(TmpListItem.Data);
4760 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
4765 procedure TGikoForm.ExitActionExecute(Sender: TObject);
4770 procedure TGikoForm.AllSelectActionExecute(Sender: TObject);
4775 procedure TGikoForm.StdToolBarVisibleActionExecute(Sender: TObject);
4777 CoolBand: TCoolBand;
4779 CoolBand := GetCoolBand(MainCoolBar, StdToolBar);
4780 if CoolBand = nil then
4782 GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
4783 CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
4784 // StdToolBar.Visible := StdToolBarVisibleAction.Checked;
4785 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4787 //StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
4788 StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
4791 procedure TGikoForm.AddressBarVisibleActionExecute(Sender: TObject);
4793 CoolBand: TCoolBand;
4795 CoolBand := GetCoolBand(MainCoolBar, AddressToolBar);
4796 if CoolBand = nil then
4798 GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
4799 CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
4800 //AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
4801 AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
4804 procedure TGikoForm.LinkBarVisibleActionExecute(Sender: TObject);
4806 CoolBand: TCoolBand;
4808 CoolBand := GetCoolBand(MainCoolBar, LinkToolBar);
4809 if CoolBand = nil then
4811 GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
4812 CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
4813 //LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
4814 LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
4817 procedure TGikoForm.ListToolBarVisibleActionExecute(Sender: TObject);
4819 CoolBand: TCoolBand;
4821 CoolBand := GetCoolBand(ListCoolBar, ListToolBar);
4822 if CoolBand = nil then
4824 CoolBand.Visible := ListToolBarVisibleAction.Checked;
4825 // ListToolBar.Visible := ListToolBarVisibleAction.Checked;
4826 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4827 GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
4830 procedure TGikoForm.ListNameBarVisibleActionExecute(Sender: TObject);
4832 CoolBand: TCoolBand;
4834 CoolBand := GetCoolBand(ListCoolBar, ListNameToolBar);
4835 if CoolBand = nil then
4837 CoolBand.Visible := ListNameBarVisibleAction.Checked;
4838 GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
4841 procedure TGikoForm.BrowserToolBarVisibleActionExecute(Sender: TObject);
4843 CoolBand: TCoolBand;
4845 CoolBand := GetCoolBand(BrowserCoolBar, BrowserToolBar);
4846 if CoolBand = nil then
4848 CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
4849 // BrowserToolBar.Visible := BrowserToolBarVisibleAction.Checked;
4850 GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
4853 procedure TGikoForm.BrowserNameBarVisibleActionExecute(Sender: TObject);
4855 CoolBand: TCoolBand;
4857 CoolBand := GetCoolBand(BrowserCoolBar, BrowserNameToolBar);
4858 if CoolBand = nil then
4860 CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
4861 GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
4864 procedure TGikoForm.MsgBarVisibleActionExecute(Sender: TObject);
4866 MessageSplitter.Visible := MsgBarVisibleAction.Checked;
4867 MessagePanel.Top := MessageSplitter.Top + MessageSplitter.Height;
4868 MessageSplitter.Top := MessagePanel.Top + 1;
4869 MessagePanel.Visible := MsgBarVisibleAction.Checked;
4870 GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
4873 procedure TGikoForm.StatusBarVisibleActionExecute(Sender: TObject);
4875 StatusBar.Visible := StatusBarVisibleAction.Checked;
4876 GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
4879 procedure TGikoForm.IconStyleExecute(Sender: TObject);
4881 case ListView.ViewStyle of
4882 vsIcon: SmallIconAction.Execute;
4883 vsSmallIcon: ListIconAction.Execute;
4884 vsList: DetailIconAction.Execute;
4885 vsReport: LargeIconAction.Execute;
4889 procedure TGikoForm.LargeIconActionExecute(Sender: TObject);
4891 ListView.ViewStyle := vsIcon;
4892 LargeIconAction.Checked := True;
4895 procedure TGikoForm.SmallIconActionExecute(Sender: TObject);
4897 ListView.ViewStyle := vsSmallIcon;
4898 SmallIconAction.Checked := True;
4901 procedure TGikoForm.ListIconActionExecute(Sender: TObject);
4903 ListView.ViewStyle := vsList;
4904 ListIconAction.Checked := True;
4907 procedure TGikoForm.DetailIconActionExecute(Sender: TObject);
4909 ListView.ViewStyle := vsReport;
4910 DetailIconAction.Checked := True;
4913 procedure TGikoForm.SearchActionExecute(Sender: TObject);
4918 if FSearchDialog = nil then begin
4919 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
4920 chk := GikoForm.GetActiveList
4924 FSearchDialog := TSearchDialog.Create(Self, chk);
4925 FSearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
4935 procedure TGikoForm.OptionActionExecute(Sender: TObject);
4939 Dlg := TOptionDialog.Create(Self);
4947 procedure TGikoForm.GikoNaviWebPageActionExecute(Sender: TObject);
4949 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
4951 GikoSys.OpenBrowser(URL_GIKONAVI, gbtAuto);
4954 procedure TGikoForm.MonazillaWebPageActionExecute(Sender: TObject);
4956 URL_MONAZILLA: string = 'http://www.monazilla.org/';
4958 GikoSys.OpenBrowser(URL_MONAZILLA, gbtAuto);
4961 procedure TGikoForm.BBS2chWebPageActionExecute(Sender: TObject);
4963 URL_2ch: string = 'http://www.2ch.net/';
4965 GikoSys.OpenBrowser(URL_2ch, gbtAuto);
4968 procedure TGikoForm.GikoFolderOpenActionExecute(Sender: TObject);
4970 // GikoSys.OpenBrowser(GikoSys.GetAppDir, gbtIE);
4971 GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
4974 procedure TGikoForm.AboutActionExecute(Sender: TObject);
4978 Dlg := TAboutDialog.Create(Self);
4986 procedure TGikoForm.CabinetHistoryActionExecute(Sender: TObject);
4991 procedure TGikoForm.CabinetVisible( isVisible : Boolean );
4993 TreeSplitter.Visible := isVisible;
4994 CabinetPanel.Visible := isVisible;
4995 CabinetVisibleAction.Checked := isVisible;
4998 procedure TGikoForm.CabinetVisibleActionExecute(Sender: TObject);
5001 gttHistory: CabinetHistoryAction.Execute;
5002 gttFavorite: CabinetFavoriteAction.Execute;
5004 CabinetBBSAction.Execute;
5008 procedure TGikoForm.AllItemActionExecute(Sender: TObject);
5011 if ViewType <> gvtAll then
5012 SetListViewType(gvtAll);
5013 GikoSys.Setting.ThreadRange := gtrAll;
5014 AllItemAction.Checked := True;
5015 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5017 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5018 if SelectComboBox.Parent <> nil then begin
5019 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5020 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5027 procedure TGikoForm.LogItemActionExecute(Sender: TObject);
5030 if ViewType <> gvtLog then
5031 SetListViewType(gvtLog);
5032 GikoSys.Setting.ThreadRange := gtrLog;
5033 LogItemAction.Checked := True;
5034 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5036 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5037 if SelectComboBox.Parent <> nil then begin
5038 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5039 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5046 procedure TGikoForm.NewItemActionExecute(Sender: TObject);
5050 if ViewType <> gvtNew then
5051 SetListViewType(gvtNew);
5052 GikoSys.Setting.ThreadRange := gtrNew;
5053 NewItemAction.Checked := True;
5054 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5056 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5057 if SelectComboBox.Parent <> nil then begin
5058 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5059 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5066 procedure TGikoForm.SelectItemActionExecute(Sender: TObject);
5069 Dlg: TListSelectDialog;
5072 if SelectComboBox.Parent <> nil then begin
5073 if SelectComboBox.Left + SelectComboBox.Width < ListToolBar.Width then begin
5074 // SelectComboBox
\82ª
\82 \82é
\8fê
\8d\87\82Í
\83t
\83H
\81[
\83J
\83X
\82ð
\88Ú
\82·
5075 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5076 if GikoSys.Setting.ListWidthState = glsMax then
5077 BrowserMinAction.Execute;
5079 if GikoSys.Setting.ListHeightState = glsMax then
5080 BrowserMinAction.Execute;
5082 SelectComboBox.SetFocus;
5089 if SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
5090 SelectComboBox.Text := '';
5091 SelectComboBox.Color := clWindow;
5094 AllItemAction.Checked := False;
5095 LogItemAction.Checked := False;
5096 NewItemAction.Checked := False;
5097 //SelectItemAction.Checked := True;
5099 Dlg := TListSelectDialog.Create(Self);
5101 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
5102 Dlg.SelectComboBox.Text := SelectComboBox.Text;
5104 if Dlg.ModalResult = mrCancel then begin
5105 if Length( SelectComboBox.Text ) = 0 then begin
5106 AllItemAction.Checked := True;
5107 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5108 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5111 if GetActiveList is TBoard then
5112 SetListViewType(gvtUser, TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
5114 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
5116 GikoSys.Setting.SelectTextList.Delete(idx);
5117 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
5118 while Dlg.SelectComboBox.Items.Count > 100 do begin
5119 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
5122 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
5123 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5124 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5126 SelectComboBox.Text := Dlg.SelectComboBox.Text;
5127 SelectComboBox.Color := clWindow;
5129 SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
5136 procedure TGikoForm.ListNumberVisibleActionExecute(Sender: TObject);
5138 GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
5142 procedure TGikoForm.UpFolderActionExecute(Sender: TObject);
5144 if GetActiveList is TBoard then begin
5145 // if FTreeType = gtt2ch then
5146 SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5147 //SetActiveList(TBoard(GetActiveList).ParentCategory);
5148 end else if GetActiveList is TCategory then begin
5149 // if FTreeType = gtt2ch then
5150 SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);
5151 //SetActiveList(TCategory(GetActiveList).ParenTBBS);
5153 // if TreeView.Selected = nil then Exit;
5154 // if TreeView.Selected.Level = 0 then Exit;
5155 // TreeView.Selected.Parent.Selected := True;
5158 procedure TGikoForm.RoundActionExecute(Sender: TObject);
5162 Dlg := TRoundDialog.Create(Self);
5170 procedure TGikoForm.StopActionExecute(Sender: TObject);
5172 FControlThread.DownloadAbort;
5173 if FWorkCount <> 0 then FWorkCount := 0;
5175 Animate.Active := False;
5178 Screen.Cursor := crDefault;
5181 procedure TGikoForm.MsgBarCloseActionExecute(Sender: TObject);
5183 // MessagePanel.Visible := False;
5184 // MessageSplitter.Visible := False;
5185 // MsgBarVisibleAction.Checked := False;
5186 MsgBarVisibleAction.Execute;
5189 procedure TGikoForm.BrowserMaxActionExecute(Sender: TObject);
5191 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5192 case GikoSys.Setting.ListWidthState of
5194 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5195 if FActiveContent <> nil then
5196 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5197 ViewPanel.Width := FBrowserSizeWidth;
5198 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5199 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5200 GikoSys.Setting.ListWidthState := glsNormal;
5201 if FActiveContent <> nil then
5202 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5204 glsMin, glsNormal: begin
5205 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5206 if FActiveContent <> nil then
5207 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5208 if GikoSys.Setting.ListWidthState = glsNormal then
5209 FBrowserSizeWidth := ViewPanel.Width;
5210 if FActiveContent <> nil then
5211 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5212 ViewPanel.Width := 1;
5213 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5214 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5215 GikoSys.Setting.ListWidthState := glsMax;
5219 case GikoSys.Setting.ListHeightState of
5221 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5222 if FActiveContent <> nil then
5223 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5224 ViewPanel.Height := FBrowserSizeHeight;
5225 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5226 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5227 GikoSys.Setting.ListHeightState := glsNormal;
5228 if FActiveContent <> nil then
5229 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5231 glsMin, glsNormal: begin
5232 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5233 if FActiveContent <> nil then
5234 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5235 if GikoSys.Setting.ListHeightState = glsNormal then
5236 FBrowserSizeHeight := ViewPanel.Height;
5237 if FActiveContent <> nil then
5238 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5239 ViewPanel.Height := 1;
5240 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5241 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5242 GikoSys.Setting.ListHeightState := glsMax;
5246 // Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
5247 // System.Round(BrowserToolBar.ButtonWidth div 2),
5248 // System.Round(BrowserToolBar.ButtonHeight div 2)));
5249 //BrowserTab.OnChange(nil);
5252 procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
5255 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5256 case GikoSys.Setting.ListWidthState of
5257 glsMax, glsNormal: begin
5258 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5259 if FActiveContent <> nil then
5260 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5261 if GikoSys.Setting.ListWidthState = glsNormal then
5262 FBrowserSizeWidth := ViewPanel.Width;
5263 if FActiveContent <> nil then
5264 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5265 ViewPanel.Width := ThreadMainPanel.Width - 80;
5266 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5267 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5268 GikoSys.Setting.ListWidthState := glsMin;
5271 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5272 if FActiveContent <> nil then
5273 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5274 ViewPanel.Width := FBrowserSizeWidth;
5275 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5276 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5277 GikoSys.Setting.ListWidthState := glsNormal;
5278 if FActiveContent <> nil then
5279 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5283 case GikoSys.Setting.ListHeightState of
5284 glsMax, glsNormal: begin
5285 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5286 if FActiveContent <> nil then
5287 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5288 if GikoSys.Setting.ListHeightState = glsNormal then
5289 FBrowserSizeHeight := ViewPanel.Height;
5290 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5291 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5292 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5293 GikoSys.Setting.ListHeightState := glsMin;
5294 if FActiveContent <> nil then
5295 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5298 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5299 if FActiveContent <> nil then
5300 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5301 ViewPanel.Height := FBrowserSizeHeight;
5302 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5303 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5304 GikoSys.Setting.ListHeightState := glsNormal;
5305 if FActiveContent <> nil then
5306 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5312 procedure TGikoForm.ScrollTopActionExecute(Sender: TObject);
5314 BrowserMovement('top');
5317 procedure TGikoForm.ScrollLastActionExecute(Sender: TObject);
5319 BrowserMovement('bottom');
5322 procedure TGikoForm.ScrollNewActionExecute(Sender: TObject);
5324 BrowserMovement('new');
5327 procedure TGikoForm.ScrollKokoActionExecute(Sender: TObject);
5329 BrowserMovement('koko');
5332 procedure TGikoForm.EditorActionExecute(Sender: TObject);
5334 Editor: TEditorForm;
5337 Item := GetActiveContent;
5338 if Item = nil then Exit;
5339 Editor := TEditorForm.Create(Self);
5340 Editor.SetThreadItem(Item);
5341 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5343 Editor.BodyEdit.SetFocus;
5346 procedure TGikoForm.IEActionExecute(Sender: TObject);
5348 ShowThreadAction.Execute;
5351 procedure TGikoForm.ShowThreadActionExecute(Sender: TObject);
5353 ThreadItem: TThreadItem;
5355 ThreadItem := GetActiveContent;
5356 if ThreadItem = nil then Exit;
5357 GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
5360 procedure TGikoForm.ShowBoardActionExecute(Sender: TObject);
5362 ThreadItem: TThreadItem;
5364 ThreadItem := GetActiveContent;
5365 if ThreadItem = nil then Exit;
5366 GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
5369 //(Thread)URL
\82ð
\83R
\83s
\81[
5370 procedure TGikoForm.URLCopyActionExecute(Sender: TObject);
5375 if TObject(GetActiveContent) is TBoard then
5376 s := s + TBoard(GetActiveContent).URL + #13#10
5377 else if TObject(GetActiveContent) is TThreadItem then
5378 s := s + TThreadItem(GetActiveContent).URL + #13#10;
5380 Clipboard.AsText := s;
5383 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ð
\83R
\83s
\81[
5384 procedure TGikoForm.NameCopyActionExecute(Sender: TObject);
5389 if TObject(GetActiveContent) is TBoard then
5390 s := s + TBoard(GetActiveContent).Title + #13#10
5391 else if TObject(GetActiveContent) is TThreadItem then
5392 s := s + TThreadItem(GetActiveContent).Title + #13#10;
5394 Clipboard.AsText := s;
5397 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ÆURL
\82ð
\83R
\83s
\81[
5398 procedure TGikoForm.NameURLCopyActionExecute(Sender: TObject);
5403 if TObject(GetActiveContent) is TBoard then
5404 s := s + TBoard(GetActiveContent).Title + #13#10 + TBoard(GetActiveContent).URL + #13#10
5405 else if TObject(GetActiveContent) is TThreadItem then
5406 s := s + TThreadItem(GetActiveContent).Title + #13#10 + TThreadItem(GetActiveContent).URL + #13#10;
5408 Clipboard.AsText := s;
5411 procedure TGikoForm.ItemReloadActionExecute(Sender: TObject);
5413 ThreadItem: TThreadItem;
5416 ThreadItem := GetActiveContent;
5417 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5418 if ThreadItem <> nil then
5419 DownloadContent(ThreadItem, shiftDown);
5422 procedure TGikoForm.SelectListReloadActionExecute(Sender: TObject);
5429 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5430 if GetActiveList is TCategory then begin
5431 List := TList.Create;
5433 SelectListItem(List);
5434 if List.Count > 5 then begin
5435 msg := '5
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5436 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5437 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5440 for i := 0 to List.Count - 1 do begin
5441 if TObject(List[i]) is TBoard then
5442 DownloadList(TBoard(List[i]), shiftDown);
5447 end else if GetActiveList is TBoard then begin
5448 DownloadList(TBoard(GetActiveList), shiftDown);
5452 procedure TGikoForm.SelectThreadReloadActionExecute(Sender: TObject);
5459 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5460 List := TList.Create;
5462 SelectListItem(List);
5463 if List.Count > 10 then begin
5464 msg := '10
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5465 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5466 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5469 for i := 0 to List.Count - 1 do begin
5470 if TObject(List[i]) is TThreadItem then
5471 DownloadContent(TThreadItem(List[i]), shiftDown);
5478 procedure TGikoForm.SelectListReloadActionUpdate(Sender: TObject);
5480 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
5481 SelectListReloadAction.Enabled := True
5482 else if GetActiveList is TBoard then
5483 SelectListReloadAction.Enabled := True
5485 SelectListReloadAction.Enabled := False;
5488 procedure TGikoForm.SelectThreadReloadActionUpdate(Sender: TObject);
5490 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
5491 SelectThreadReloadAction.Enabled := True
5493 SelectThreadReloadAction.Enabled := False;
5496 procedure TGikoForm.AllItemActionUpdate(Sender: TObject);
5498 AllItemAction.Enabled := (GetActiveList is TBoard);
5501 procedure TGikoForm.LogItemActionUpdate(Sender: TObject);
5503 LogItemAction.Enabled := (GetActiveList is TBoard);
5506 procedure TGikoForm.NewItemActionUpdate(Sender: TObject);
5508 NewItemAction.Enabled := (GetActiveList is TBoard);
5511 procedure TGikoForm.SelectItemActionUpdate(Sender: TObject);
5513 SelectItemAction.Enabled := (GetActiveList is TBoard);
5516 procedure TGikoForm.UpFolderActionUpdate(Sender: TObject);
5518 UpFolderAction.Enabled := not (GetActiveList is TBBS);
5521 procedure TGikoForm.ThreadEditorActionUpdate(Sender: TObject);
5523 ThreadEditorAction.Enabled := (GetActiveList is TBoard);
5526 procedure TGikoForm.FormResize(Sender: TObject);
5532 MessageListView.Column[0].Width := MessageListView.ClientWidth - 32;
5533 MainCoolBar.Width := TopPanel.Width - TopRightPanel.Width;
5535 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5536 if GikoSys.Setting.ListWidthState = glsMin then begin
5537 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5538 ViewPanel.Width := ThreadMainPanel.Width - 80;
5541 if GikoSys.Setting.ListHeightState = glsMin then begin
5542 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5543 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5547 if FIsMinimize = mtMinimized then begin
5548 if FActiveContent <> nil then begin
5549 //Application.ProcessMessages;
5550 doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
5551 doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
5552 FIsMinimize := mtNone;
5557 FIsIgnoreResize := True;
5558 PostMessage( Handle, USER_RESIZED, 0, 0 );
5563 procedure TGikoForm.ScrollTopActionUpdate(Sender: TObject);
5565 ScrollTopAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5568 procedure TGikoForm.ScrollLastActionUpdate(Sender: TObject);
5570 ScrollLastAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5573 procedure TGikoForm.ScrollNewActionUpdate(Sender: TObject);
5575 ScrollNewAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5578 procedure TGikoForm.ScrollKokoActionUpdate(Sender: TObject);
5580 ScrollKokoAction.Enabled := (GetActiveContent <> nil)
5581 and (GetActiveContent.IsLogFile)
5582 and (GetActiveContent.Kokomade <> -1);
5586 procedure TGikoForm.EditorActionUpdate(Sender: TObject);
5588 EditorAction.Enabled := GetActiveContent <> nil;
5591 procedure TGikoForm.IEActionUpdate(Sender: TObject);
5593 IEAction.Enabled := GetActiveContent <> nil;
5596 procedure TGikoForm.ShowThreadActionUpdate(Sender: TObject);
5598 ShowThreadAction.Enabled := GetActiveContent <> nil;
5601 procedure TGikoForm.ShowBoardActionUpdate(Sender: TObject);
5603 ShowBoardAction.Enabled := GetActiveContent <> nil;
5606 procedure TGikoForm.ItemReloadActionUpdate(Sender: TObject);
5608 ItemReloadAction.Enabled := GetActiveContent <> nil;
5611 procedure TGikoForm.URLCopyActionUpdate(Sender: TObject);
5613 URLCopyAction.Enabled := GetActiveContent <> nil;
5616 procedure TGikoForm.NameCopyActionUpdate(Sender: TObject);
5618 NameCopyAction.Enabled := GetActiveContent <> nil;
5621 procedure TGikoForm.NameURLCopyActionUpdate(Sender: TObject);
5623 NameURLCopyAction.Enabled := GetActiveContent <> nil;
5626 procedure TGikoForm.BrowserTabCloseActionUpdate(Sender: TObject);
5628 BrowserTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5631 procedure TGikoForm.NotSelectTabCloseActionUpdate(Sender: TObject);
5633 NotSelectTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 1);
5636 procedure TGikoForm.AllTabCloseActionUpdate(Sender: TObject);
5638 AllTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5641 procedure TGikoForm.ActiveLogDeleteActionUpdate(Sender: TObject);
5643 ActiveLogDeleteAction.Enabled := GetActiveContent <> nil;
5646 procedure TGikoForm.LogDeleteActionExecute(Sender: TObject);
5648 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';
5649 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';
5650 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
5652 ThreadItem: TThreadItem;
5653 TmpListItem: TListItem;
5657 List := TList.Create;
5659 TmpListItem := ListView.Selected;
5660 while TmpListItem <> nil do begin
5661 if TObject(TmpListItem.Data) is TThreadItem then begin
5662 ThreadItem := TThreadItem(TmpListItem.Data);
5663 if ThreadItem.IsLogFile then
5664 List.Add(ThreadItem);
5666 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
5669 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
5670 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
5671 if List.Count = 1 then begin
5672 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
5675 if MsgBox(Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
5681 for i := 0 to List.Count - 1 do begin
5682 ThreadItem := TThreadItem(List[i]);
5683 DeleteHistory(ThreadItem);
5684 DeleteTab(ThreadItem);
5685 ThreadItem.DeleteLogFile;
5692 procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
5697 idx := BrowserTab.TabIndex;
5698 FTabHintIndex := -1;
5699 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5700 if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
5701 BrowserTab.Tabs.BeginUpdate;
5703 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5704 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5705 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5708 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5710 if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
5711 FActiveContent := nil;
5712 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5713 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5715 FBrowsers.Move(j, BROWSER_COUNT - 1);
5717 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5718 BrowserTab.Tabs.Delete(i);
5719 if idx > i then begin
5720 BrowserTab.TabIndex := idx - 1;
5722 if BrowserTab.Tabs.Count -1 >= idx then
5723 BrowserTab.TabIndex := idx
5725 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5727 if BrowserTab.Tabs.Count = 0 then begin
5728 BrowserNullTab.Thread := nil;
5730 if(BrowserTab.TabIndex <> -1) and
5731 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5732 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5733 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5734 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5736 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5737 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5738 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5739 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5744 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5745 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5746 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5747 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5749 BrowserTab.Tabs.EndUpdate;
5750 if( FActiveContent = nil) then
5751 BrowserTab.OnChange(nil);
5756 procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
5761 idx := BrowserTab.TabIndex;
5762 FTabHintIndex := -1;
5763 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5764 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
5765 BrowserTab.Tabs.BeginUpdate;
5767 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5768 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5769 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5773 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5775 if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then
5776 FActiveContent := nil;
5777 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5778 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5780 FBrowsers.Move(j, BROWSER_COUNT - 1);
5782 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5783 BrowserTab.Tabs.Delete(i);
5784 if idx > i then begin
5785 BrowserTab.TabIndex := idx - 1;
5787 if BrowserTab.Tabs.Count -1 >= idx then
5788 BrowserTab.TabIndex := idx
5790 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5792 if(BrowserTab.TabIndex <> -1) and
5793 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5794 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5795 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5796 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5798 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5799 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5800 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5801 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5806 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5807 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5808 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5809 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5812 BrowserTab.Tabs.EndUpdate;
5813 if( FActiveContent = nil) then
5814 BrowserTab.OnChange(nil);
5820 procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
5823 ThreadItem: TThreadItem;
5825 No := KokoPopupMenu.Tag;
5826 if No = 0 then Exit;
5827 ThreadItem := GetActiveContent;
5828 if ThreadItem = nil then Exit;
5829 ThreadItem.Kokomade := No;
5830 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5831 FActiveContent.FRepaint := true;
5832 InsertBrowserTab(FActiveContent.Thread, true);
5833 Application.ProcessMessages;
5836 procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
5838 ThreadItem: TThreadItem;
5840 ThreadItem := GetActiveContent;
5841 if ThreadItem = nil then Exit;
5842 ThreadItem.Kokomade := -1;
5843 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5844 FActiveContent.FRepaint := true;
5845 InsertBrowserTab(FActiveContent.Thread, true);
5846 Application.ProcessMessages;
5849 function TGikoForm.Hook(var Message: TMessage): Boolean;
5858 procedure TGikoForm.KokoResActionExecute(Sender: TObject);
5860 Editor: TEditorForm;
5864 Number := KokoPopupMenu.Tag;
5865 if Number = 0 then Exit;
5866 Item := GetActiveContent;
5867 if Item = nil then Exit;
5869 Editor := TEditorForm.Create(Self);
5870 Editor.SetThreadItem(Item);
5871 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5872 Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
5874 Editor.BodyEdit.SetFocus;
5877 procedure TGikoForm.ListPopupMenuPopup(Sender: TObject);
5879 ItemRoundPMenu.Visible := (GetActiveList is TBoard);
5880 ItemReservPMenu.Visible := (GetActiveList is TBoard);
5881 LPMSep01.Visible := (GetActiveList is TBoard);
5882 ListRoundPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5883 ListReservPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5884 LPMSep02.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5885 KidokuPMenu.Visible := (GetActiveList is TBoard);
5886 MidokuPMenu.Visible := (GetActiveList is TBoard);
5887 UrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5888 NameUrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5889 AllSelectPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5890 LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5891 DeletePMenu.Visible := (GetActiveList is TBoard);
5892 LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5893 BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
5894 ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
5896 AddRoundNameMenu(ItemReservPMenu);
5897 AddRoundNameMenu(ListReservPMenu);
5900 procedure TGikoForm.BoardIEActionExecute(Sender: TObject);
5904 if GetActiveList is TBoard then begin
5905 URL := TBoard(GetActiveList).URL;
5906 GikoSys.OpenBrowser(URL, gbtAuto);
5910 procedure TGikoForm.SelectItemURLCopyActionExecute(Sender: TObject);
5917 List := TList.Create;
5919 SelectListItem(List);
5920 for i := 0 to List.Count - 1 do begin
5921 if TObject(List[i]) is TBoard then
5922 s := s + TBoard(List[i]).URL + #13#10
5923 else if TObject(List[i]) is TThreadItem then
5924 s := s + TThreadItem(List[i]).URL + #13#10;
5927 Clipboard.AsText := s;
5933 procedure TGikoForm.SelectItemNameCopyActionExecute(Sender: TObject);
5940 List := TList.Create;
5942 SelectListItem(List);
5943 for i := 0 to List.Count - 1 do begin
5944 if TObject(List[i]) is TBoard then
5945 s := s + TBoard(List[i]).Title + #13#10
5946 else if TObject(List[i]) is TThreadItem then
5947 s := s + TThreadItem(List[i]).Title + #13#10;
5950 Clipboard.AsText := s;
5956 procedure TGikoForm.SelectItemNameURLCopyActionExecute(Sender: TObject);
5963 List := TList.Create;
5965 SelectListItem(List);
5966 for i := 0 to List.Count - 1 do begin
5967 if TObject(List[i]) is TBoard then
5968 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
5969 else if TObject(List[i]) is TThreadItem then
5970 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
5973 Clipboard.AsText := s;
5979 procedure TGikoForm.BoardIEActionUpdate(Sender: TObject);
5981 if GetActiveList is TBoard then
5982 BoardIEAction.Enabled := True
5984 BoardIEAction.Enabled := False;
5987 procedure TGikoForm.SelectItemURLCopyActionUpdate(Sender: TObject);
5989 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
5990 SelectItemURLCopyAction.Enabled := True
5992 SelectItemURLCopyAction.Enabled := False;
5995 procedure TGikoForm.SelectItemNameCopyActionUpdate(Sender: TObject);
5997 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
5998 SelectItemNameCopyAction.Enabled := True
6000 SelectItemNameCopyAction.Enabled := False;
6003 procedure TGikoForm.SelectItemNameURLCopyActionUpdate(Sender: TObject);
6005 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6006 SelectItemNameURLCopyAction.Enabled := True
6008 SelectItemNameURLCopyAction.Enabled := False;
6011 procedure TGikoForm.AllSelectActionUpdate(Sender: TObject);
6013 if ListView.SelCount > 0 then
6014 AllSelectAction.Enabled := True
6016 AllSelectAction.Enabled := False;
6019 procedure TGikoForm.LogDeleteActionUpdate(Sender: TObject);
6021 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
6022 LogDeleteAction.Enabled := True
6024 LogDeleteAction.Enabled := False;
6027 procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
6030 // ThreadItem: TThreadItem;
6032 idx := BrowserTab.TabIndex;
6033 if idx <> -1 then begin
6034 if BrowserTab.Tabs.Objects[idx] <> nil then begin
6035 //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
6036 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6041 procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
6046 idx := BrowserTab.TabIndex;
6047 if idx = -1 then Exit;
6048 BrowserTab.Tabs.BeginUpdate;
6049 for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
6050 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6051 BrowserTab.Tabs.Delete(i);
6053 if idx > 0 then begin
6054 for i := BrowserTab.TabIndex - 1 downto 0 do begin
6055 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6056 BrowserTab.Tabs.Delete(i);
6059 BrowserTab.Tabs.EndUpdate;
6062 procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
6066 if GikoSys.Setting.ShowDialogForAllTabClose then
6067 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
6070 FActiveContent := nil;
6071 BrowserNullTab.Thread := nil;
6072 BrowserTab.OnChange := nil;
6073 BrowserTab.Tabs.BeginUpdate;
6074 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6075 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6077 BrowserTab.Tabs.Clear;
6078 BrowserTab.Tabs.EndUpdate;
6079 BrowserTab.OnChange := BrowserTabChange;
6080 SetContent(BrowserNullTab);
6081 Self.Caption := CAPTION_NAME ;
6084 procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
6087 TmpTreeNode: TTreeNode;
6089 TmpTreeNode := FClickNode;
6090 TreeView.Selected := FClickNode;
6093 if TObject(TmpTreeNode.Data) is TBoard then
6094 Board := TBoard(TmpTreeNode.Data)
6095 else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
6096 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
6098 if Board <> nil then
6099 DownloadList(Board);
6102 procedure TGikoForm.TreeSelectThreadReloadExecute(Sender: TObject);
6104 ThreadItem: TThreadItem;
6105 TmpTreeNode: TTreeNode;
6107 TmpTreeNode := FClickNode;
6108 TreeView.Selected := FClickNode;
6111 if TObject(TmpTreeNode.Data) is TThreadItem then
6112 ThreadItem := TThreadItem(TmpTreeNode.Data)
6113 else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
6114 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
6116 if ThreadItem <> nil then
6117 DownloadContent(ThreadItem);
6120 procedure TGikoForm.TreeSelectURLCopyExecute(Sender: TObject);
6122 TmpTreeNode: TTreeNode;
6125 TmpTreeNode := FClickNode;
6126 TreeView.Selected := FClickNode;
6127 if TObject(TmpTreeNode.Data) is TBoard then begin
6128 s := TBoard(TmpTreeNode.Data).URL + #13#10;
6129 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6130 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6131 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6132 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
6133 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6134 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6136 Clipboard.AsText := s;
6139 procedure TGikoForm.TreeSelectNameURLCopyExecute(Sender: TObject);
6141 TmpTreeNode: TTreeNode;
6144 TmpTreeNode := FClickNode;
6145 TreeView.Selected := FClickNode;
6146 if TObject(TmpTreeNode.Data) is TBoard then begin
6147 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
6148 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6149 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6150 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6151 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
6152 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6153 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6155 Clipboard.AsText := s;
6158 procedure TGikoForm.TreePopupMenuPopup(Sender: TObject);
6160 FClickNode := TreeView.Selected;
6161 if FClickNode = nil then begin
6162 TreeSelectThreadPupupMenu.Visible := False;
6163 TreeSelectBoardPupupMenu.Visible := False;
6164 TPMSep01.Visible := False;
6165 TreeSelectURLPupupMenu.Visible := False;
6166 TreeSelectNamePupupMenu.Visible := False;
6167 TreeSelectNameURLPupupMenu.Visible := False;
6168 TreeSelectFavoriteAddPupupMenu.Visible := False;
6169 TreeSelectLogDeleteSeparator.Visible := False;
6170 TreeSelectLogDeletePopupMenu.Visible := False;
6171 end else if TObject(FClickNode.Data) is TBoard then begin
6172 TreeSelectThreadPupupMenu.Visible := False;
6173 TreeSelectBoardPupupMenu.Visible := True;
6174 TPMSep01.Visible := True;
6175 TreeSelectURLPupupMenu.Visible := True;
6176 TreeSelectNamePupupMenu.Visible := True;
6177 TreeSelectNameURLPupupMenu.Visible := True;
6178 TreeSelectFavoriteAddPupupMenu.Visible := True;
6179 TreeSelectLogDeleteSeparator.Visible := False;
6180 TreeSelectLogDeletePopupMenu.Visible := False;
6181 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
6182 TreeSelectThreadPupupMenu.Visible := False;
6183 TreeSelectBoardPupupMenu.Visible := True;
6184 TPMSep01.Visible := True;
6185 TreeSelectURLPupupMenu.Visible := True;
6186 TreeSelectNamePupupMenu.Visible := True;
6187 TreeSelectNameURLPupupMenu.Visible := True;
6188 TreeSelectFavoriteAddPupupMenu.Visible := True;
6189 TreeSelectLogDeleteSeparator.Visible := False;
6190 TreeSelectLogDeletePopupMenu.Visible := False;
6191 end else if (TObject(FClickNode.Data) is TThreadItem) then begin
6192 TreeSelectThreadPupupMenu.Visible := True;
6193 TreeSelectBoardPupupMenu.Visible := False;
6194 TPMSep01.Visible := True;
6195 TreeSelectURLPupupMenu.Visible := True;
6196 TreeSelectNamePupupMenu.Visible := True;
6197 TreeSelectNameURLPupupMenu.Visible := True;
6198 TreeSelectFavoriteAddPupupMenu.Visible := True;
6199 TreeSelectLogDeleteSeparator.Visible := True;
6200 TreeSelectLogDeletePopupMenu.Visible := True;
6201 end else if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
6202 TreeSelectThreadPupupMenu.Visible := True;
6203 TreeSelectBoardPupupMenu.Visible := False;
6204 TPMSep01.Visible := True;
6205 TreeSelectURLPupupMenu.Visible := True;
6206 TreeSelectNamePupupMenu.Visible := True;
6207 TreeSelectNameURLPupupMenu.Visible := True;
6208 TreeSelectFavoriteAddPupupMenu.Visible := True;
6209 TreeSelectLogDeleteSeparator.Visible := True;
6210 TreeSelectLogDeletePopupMenu.Visible := True;
6211 end else if (TObject(FClickNode.Data) is TCategory) then begin
6212 TreeSelectThreadPupupMenu.Visible := False;
6213 TreeSelectBoardPupupMenu.Visible := False;
6214 TPMSep01.Visible := False;
6215 TreeSelectURLPupupMenu.Visible := False;
6216 TreeSelectNamePupupMenu.Visible := True;
6217 TreeSelectNameURLPupupMenu.Visible := False;
6218 TreeSelectFavoriteAddPupupMenu.Visible := False;
6219 TreeSelectLogDeleteSeparator.Visible := False;
6220 TreeSelectLogDeletePopupMenu.Visible := False;
6221 end else if FClickNode.IsFirstNode then begin
6222 TreeSelectThreadPupupMenu.Visible := False;
6223 TreeSelectBoardPupupMenu.Visible := False;
6224 TPMSep01.Visible := False;
6225 TreeSelectURLPupupMenu.Visible := False;
6226 TreeSelectNamePupupMenu.Visible := True;
6227 TreeSelectNameURLPupupMenu.Visible := False;
6228 TreeSelectFavoriteAddPupupMenu.Visible := False;
6229 TreeSelectLogDeleteSeparator.Visible := False;
6230 TreeSelectLogDeletePopupMenu.Visible := False;
6232 TreeSelectThreadPupupMenu.Visible := False;
6233 TreeSelectBoardPupupMenu.Visible := False;
6234 TPMSep01.Visible := False;
6235 TreeSelectURLPupupMenu.Visible := False;
6236 TreeSelectNamePupupMenu.Visible := False;
6237 TreeSelectNameURLPupupMenu.Visible := False;
6238 TreeSelectFavoriteAddPupupMenu.Visible := False;
6239 TreeSelectLogDeleteSeparator.Visible := False;
6240 TreeSelectLogDeletePopupMenu.Visible := False;
6244 procedure TGikoForm.BrowserNewWindow2(Sender: TObject;
6245 var ppDisp: IDispatch; var Cancel: WordBool);
6256 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6257 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6258 Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6259 if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
6260 or (AnsiPos('
\81\84\81\84', Text) = 1) or (AnsiPos('
\81\84', Text) = 1) then begin
6261 if GikoSys.Setting.ResAnchorJamp then begin
6262 Text := ZenToHan(Text);
6264 if(AnsiPos('>>', Text) = 1) then begin
6265 Text := Copy(Text, 3, Length(Text) - 2);
6267 Text := Copy(Text, 2, Length(Text) - 1);
6269 if AnsiPos('-', Text) <> 0 then begin
6270 wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
6271 Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
6272 wkIntTo := StrToIntDef(Text, 0);
6273 if wkIntTo < wkIntSt then
6276 wkIntSt := StrToIntDef(Text, 0);
6278 if wkIntSt <> 0 then
6279 BrowserMovement(IntToStr(wkIntSt));
6282 URL := GikoSys.GetHRefText(Html);
6283 URL := GikoSys.HTMLDecode(URL);
6284 if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
6285 ( AnsiPos('ftp://', URL) = 1) then begin
6286 //
\83A
\83h
\83\8c\83X
\83o
\81[
\82Ì
\97\9a\97ð
6287 if GikoSys.Setting.LinkAddAddressBar then begin
6288 idx := AddressComboBox.Items.IndexOf(URL);
6289 if idx = -1 then begin
6290 AddressComboBox.Items.Insert(0, URL);
6291 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
6292 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
6294 AddressComboBox.Items.Delete(idx);
6295 AddressComboBox.Items.Insert(0, URL);
6303 { ShiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
6304 CtrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
6307 Memo1.Lines.Add('ShiftDown');
6309 Memo1.Lines.Add('CtrlDown');
6311 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6312 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6313 Url := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6317 URL := GetHRefText(URL);
6319 ParseURI(URL, Protocol, Host, path, Document, Port, Bookmark);
6321 b := Parse2chURL(path, document, bbs, num);
6322 memo1.Lines.Add('bbs: ' + bbs);
6323 memo1.Lines.Add('key: ' + num);
6325 Memo1.Lines.Add('Parse2chURL: True')
6327 Memo1.Lines.Add('Parse2chURL: False');
6329 // AppPath := 'C:\Borland\Projects\Test\TestBrowser\TestBrowser.exe';
6334 procedure TGikoForm.ListSplitterCanResize(Sender: TObject;
6335 var NewSize: Integer; var Accept: Boolean);
6337 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6338 if ViewPanel.Width < 2 then begin
6339 ViewPanel.Width := 1;
6340 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6341 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6342 GikoSys.Setting.ListWidthState := glsMax;
6343 end else if ViewPanel.Width > (ThreadMainPanel.Width - 80) then begin
6344 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6345 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6346 GikoSys.Setting.ListWidthState := glsMin;
6348 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6349 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6350 GikoSys.Setting.ListWidthState := glsNormal;
6353 if ViewPanel.Height < 2 then begin
6354 ViewPanel.Height := 1;
6355 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6356 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6357 GikoSys.Setting.ListHeightState := glsMax;
6358 end else if ViewPanel.Height > (ThreadMainPanel.Height - BrowserCoolBar.Height - 7) then begin
6359 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6360 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6361 GikoSys.Setting.ListHeightState := glsMin;
6363 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6364 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6365 GikoSys.Setting.ListHeightState := glsNormal;
6370 procedure TGikoForm.ListSplitterMoved(Sender: TObject);
6372 if Mouse.Capture <> 0 then
6374 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6375 if (ViewPanel.Width > 1) and (ViewPanel.Width <= (ThreadMainPanel.Width - 80)) then
6376 FBrowserSizeWidth := ViewPanel.Width;
6378 if (ViewPanel.Height > 1) and (ViewPanel.Height <= (ThreadMainPanel.Height - BrowserCoolBar.Height)) then
6379 FBrowserSizeHeight := ViewPanel.Height;
6381 { if (Mouse.Capture = 0) and (ViewPanel.Height > 1) and (not ArrangeAction.Checked) then
6382 FBrowserSizeHeight := ViewPanel.Height
6383 else if (Mouse.Capture = 0) and (ViewPanel.Width > 1) and (ArrangeAction.Checked) then
6384 FBrowserSizeWidth := ViewPanel.Width;}
6387 procedure TGikoForm.BrowserTabChange(Sender: TObject);
6393 // if NewTab = -1 then
6394 // ThreadItem := nil;
6395 if not BrowserTab.Dragging then begin
6396 FTabHintIndex := -1;
6397 BrowserTab.Hint := '';
6398 idx := BrowserTab.TabIndex;
6399 if idx = -1 then begin
6400 BrowserNullTab.Thread := nil;
6401 SetContent(BrowserNullTab);
6403 end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
6404 if TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser <> nil then begin
6405 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser);
6407 FBrowsers.Move(j ,0);
6409 if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
6410 (FActiveContent.Browser <> BrowserNullTab.Browser) and
6411 (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
6412 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6414 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
6415 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
6416 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
6417 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
6418 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
6419 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
6420 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
6424 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
6425 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
6426 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6428 TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
6429 // GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6430 // OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6431 SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6433 if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
6434 AddressComboBox.Text := GetActiveContent.URL;
6436 if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
6437 (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
6440 SetFocusForBrowserAction.Execute;
6449 procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
6450 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
6456 if Button = mbMiddle then begin
6457 //
\83}
\83E
\83X
\92\86\83{
\83^
\83\93
6460 p := BrowserTab.ScreenToClient(p);
6461 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6463 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6464 //end else if Button = mbRight then begin
6465 //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é
6466 //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
6467 { //
\83}
\83E
\83X
\89E
\83{
\83^
\83\93
6470 // GetCursorPos(p2);
6471 p := BrowserTab.ScreenToClient(p);
6472 // idx := BrowserTab.ItemAtPos(p);
6473 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6474 if idx <> -1 then begin
6475 OldIndex := BrowserTab.TabIndex;
6476 BrowserTab.TabIndex := idx;
6477 if OldIndex <> idx then
6478 BrowserTab.OnChange(nil);
6479 BrowserTabPopupMenu.Tag := idx;
6480 BrowserTabPopupMenu.Popup(p2.X, p2.Y);
6483 end else if BUtton = mbLeft then begin
6484 FDragWFirst := true;
6485 FMouseDownPos.X := X;
6486 FMouseDownPos.Y := Y;
6491 procedure TGikoForm.SetBrowserTabState;
6494 CoolBand: TCoolBand;
6496 BrowserBottomPanel.AutoSize := False;
6497 if GikoSys.Setting.BrowserTabVisible then begin
6498 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
6499 BrowserTab.Style := tsTabs;
6500 if GikoSys.Setting.BrowserTabPosition = gtpTop then
6501 BrowserTab.TabPosition := tpTop
6503 BrowserTab.TabPosition := tpBottom;
6504 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
6505 BrowserTab.TabPosition := tpTop;
6506 BrowserTab.Style := tsButtons;
6508 BrowserTab.TabPosition := tpTop;
6509 BrowserTab.Style := tsFlatButtons
6512 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
6513 BrowserTab.Parent := BrowserTabToolBar;
6514 BrowserBottomPanel.Hide;
6515 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6516 if CoolBand <> nil then
6517 CoolBand.Visible := True;
6518 // BrowserTab.Parent := BrowserTopPanel;
6519 // BrowserTab.Parent := BrowserCoolBar;
6520 // BrowserTab.Top := 26;
6521 // BrowserTopPanel.Height := 44;
6524 BrowserTab.Parent := BrowserBottomPanel;
6525 BrowserTab.Top := 0;
6526 BrowserTab.Left := 0;
6527 BrowserBottomPanel.Show;
6528 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6529 if CoolBand <> nil then
6530 CoolBand.Visible := False;
6531 // BrowserTopPanel.Height := 26;
6535 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6536 if CoolBand <> nil then
6537 CoolBand.Visible := False;
6538 BrowserBottomPanel.Visible := False;
6539 // BrowserTab.Visible := False;
6540 // BrowserTopPanel.Height := 26;
6541 AllTabCloseAction.Execute;
6545 procedure TGikoForm.BrowserTabDragOver(Sender, Source: TObject; X,
6546 Y: Integer; State: TDragState; var Accept: Boolean);
6550 idx := BrowserTab.IndexOfTabAt(X, Y);
6551 Accept := (Source = BrowserTab) and (BrowserTab.TabIndex <> idx);
6554 procedure TGikoForm.BrowserTabDragDrop(Sender, Source: TObject; X,
6559 idx := BrowserTab.IndexOfTabAt(X, Y);
6561 BrowserTab.Tabs.Move(BrowserTab.TabIndex, idx);
6564 procedure TGikoForm.BrowserTabMouseMove(Sender: TObject;
6565 Shift: TShiftState; X, Y: Integer);
6568 ThreadItem: TThreadItem;
6571 TabIdx := BrowserTab.IndexOfTabAt(x, y);
6573 if ( ssLeft in Shift ) and ( BrowserTab.Style = tsTabs ) then begin
6574 if FDragWFirst = false then begin
6575 FDragWFirst := true;
6577 BrowserTab.EndDrag(false);
6578 BrowserTab.BeginDrag(false, DandD_THRESHOLD);
6579 FDragWFirst := false;
6582 BrowserTab.EndDrag(false);
6583 FDragWFirst := false;
6586 if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
6587 Application.CancelHint;
6588 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
6589 if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
6590 BrowserTab.Hint := ThreadItem.Title;
6591 Application.ShowHint := True;
6593 BrowserTab.Hint := '';
6594 Application.ShowHint := True;
6596 FTabHintIndex := TabIdx;
6601 procedure TGikoForm.BrowserDocumentComplete(Sender: TObject;
6602 const pDisp: IDispatch; var URL: OleVariant);
6604 FDispHtmlDocument: DispHTMLDocument;
6605 BrowserRecord :TBrowserRecord;
6608 // AddMessageList('DocumentComplete', nil);
6609 if TObject(Sender) is TWebBrowser then begin
6610 if TWebBrowser(Sender) <> Browser then begin
6611 BrowserRecord := nil;
6612 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6613 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
6614 BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
6618 if BrowserRecord <> nil then begin
6619 if BrowserRecord.FEvent <> nil then
6620 BrowserRecord.FEvent.Free;
6621 FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
6622 BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6623 BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
6624 BrowserRecord.FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6627 if GetActiveContent <> nil then begin
6628 FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
6629 if FEvent <> nil then
6631 FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6632 FEvent.OnContextMenu := OnDocumentContextMenu;
6633 FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6639 procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
6644 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then begin
6645 List := TList.Create;
6647 SelectListItem(List);
6648 for i := 0 to List.Count - 1 do begin
6649 if TObject(List[i]) is TThreadItem then begin
6650 if TThreadItem(List[i]).IsLogFile then begin
6651 SelectReservAction.Enabled := True;
6656 SelectReservAction.Enabled := False;
6660 end else if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
6661 SelectReservAction.Enabled := True
6663 SelectReservAction.Enabled := False;
6666 procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
6668 AddRoundNameMenu(RoundNamePopupMenu.Items);
6671 procedure TGikoForm.AddRoundNameMenu(MenuItem: TMenuItem);
6677 Item := TMenuItem.Create(Self);
6678 Item.Caption := '
\90V
\82µ
\82¢
\96¼
\91O
\82Å
\8f\84\89ñ
\97\
\96ñ(&N)...';
6679 Item.OnClick := SelectNewRoundNameExecute;
6681 Item := TMenuItem.Create(Self);
6682 Item.Caption := '
\8f\84\89ñ
\83\8a\83X
\83g
\82©
\82ç
\8dí
\8f\9c(&D)';
6683 Item.OnClick := SelectDeleteRoundExecute;
6685 Item := TMenuItem.Create(Self);
6686 Item.Caption := '-';
6688 for i := 0 to RoundList.RoundNameList.Count - 1 do begin
6689 Item := TMenuItem.Create(Self);
6690 Item.Caption := RoundList.RoundNameList[i];
6691 Item.OnClick := SetSelectRoundName;
6696 procedure TGikoForm.SelectNewRoundNameExecute(Sender: TObject);
6699 Dlg: TRoundNameDialog;
6702 Dlg := TRoundNameDialog.Create(Self);
6705 if Dlg.ModalResult <> mrCancel then begin
6706 s := Trim(Dlg.RoundNameEdit.Text);
6707 RoundList.RoundNameList.Add(s);
6708 SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
6715 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);
6717 threadItem : TThreadItem;
6719 if ParentName <> 'dummy1' then begin
6720 SetSelectItemRound(RoundFlag, RoundName);
6722 threadItem := GetActiveContent;
6723 if threadItem <> nil then begin
6724 threadItem.RoundName := RoundName;
6725 threadItem.Round := RoundFlag;
6730 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);
6735 List := TList.Create;
6737 SelectListItem(List);
6738 for i := 0 to List.Count - 1 do begin
6739 if TObject(List[i]) is TBoard then begin
6740 TBoard(List[i]).RoundName := RoundName;
6741 TBoard(List[i]).Round := RoundFlag;
6742 end else if TObject(List[i]) is TThreadItem then begin
6743 if TThreadItem(List[i]).IsLogFile then begin
6744 TThreadItem(List[i]).RoundName := RoundName;
6745 TThreadItem(List[i]).Round := RoundFlag;
6754 procedure TGikoForm.SelectDeleteRoundExecute(Sender: TObject);
6756 SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
6760 procedure TGikoForm.SelectReservActionExecute(Sender: TObject);
6762 //
\82±
\82Ì
\83R
\83\81\83\93\83g
\8dí
\8f\9c\82µ
\82Ä
\82Í
\91Ê
\96Ú
6765 procedure TGikoForm.SetSelectRoundName(Sender: TObject);
6767 MenuItem: TMenuItem;
6769 if Sender is TMenuItem then begin
6770 MenuItem := TMenuItem(Sender);
6771 SetSelectItemRound(True, StripHotKey(MenuItem.Caption), TMenuItem(Sender).Parent.Name);
6776 procedure TGikoForm.NewBoardActionExecute(Sender: TObject);
6778 Dlg: TNewBoardDialog;
6782 for i := 0 to Screen.CustomFormCount - 1 do begin
6783 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
6784 Msg := '
\83\8c\83X
\83G
\83f
\83B
\83^
\82ð
\91S
\82Ä
\95Â
\82¶
\82Ä
\82
\82¾
\82³
\82¢';
6785 MsgBox(Handle, Msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6789 Dlg := TNewBoardDialog.Create(Self);
6797 procedure TGikoForm.LoginActionExecute(Sender: TObject);
6802 if GikoSys.Dolib.Connected then begin
6803 //
\83\8d\83O
\83A
\83E
\83g
6804 GikoSys.Dolib.Disconnect;
6805 LoginAction.Checked := False;
6806 AddMessageList('
\83\8d\83O
\83A
\83E
\83g
\82µ
\82Ü
\82µ
\82½', nil, gmiOK);
6807 LoginAction.Caption := '
\83\8d\83O
\83C
\83\93(&L)';
6809 TmpCursor := Screen.Cursor;
6810 Screen.Cursor := crHourGlass;
6812 //
\92Ê
\8fí
\83\8d\83O
\83C
\83\93
6813 if not GikoSys.Setting.ForcedLogin then begin
6814 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6815 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6816 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6817 if GikoSys.Setting.ReadProxy then begin
6818 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6819 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6821 GikoSys.Dolib.ProxyAddress := '';
6822 GikoSys.Dolib.ProxyPort := 0;
6824 if GikoSys.Dolib.Connect then begin
6825 LoginAction.Checked := True;
6826 AddMessageList('
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6827 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6828 LoginToolButton.Style := tbsCheck;
6830 // 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);
6831 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6833 LoginAction.Checked := False;
6834 LoginToolButton.Down := False;
6835 LoginToolButton.Style := tbsButton;
6838 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
6839 + '
\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
6840 + '
\82±
\82Ì
\83\82\81[
\83h
\82Å
\83\8d\83O
\83C
\83\93\82ð
\8e\8e\82Ý
\82Ü
\82·
\82©
\81H' + #13#10;
6841 if MsgBox(Handle, msg, '
\8cx
\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
6842 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6843 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6844 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6845 if GikoSys.Setting.ReadProxy then begin
6846 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6847 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6849 GikoSys.Dolib.ProxyAddress := '';
6850 GikoSys.Dolib.ProxyPort := 0;
6852 //SSL
\8fá
\8aQ
\97p
\8b
\90§
\83\8d\83O
\83C
\83\93
6853 GikoSys.Dolib.ForcedConnect;
6854 if GikoSys.Dolib.Connect then begin
6855 LoginAction.Checked := True;
6856 AddMessageList('
\8b
\90§
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6857 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6858 LoginToolButton.Style := tbsCheck;
6860 // 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);
6861 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6863 LoginAction.Checked := False;
6864 LoginToolButton.Down := False;
6865 LoginToolButton.Style := tbsButton;
6868 LoginAction.Checked := False;
6869 LoginToolButton.Down := False;
6870 LoginToolButton.Style := tbsButton;
6874 Screen.Cursor := TmpCursor;
6879 procedure TGikoForm.KeySettingActionExecute(Sender: TObject);
6881 Dlg: TKeySettingForm;
6883 Dlg := TKeySettingForm.Create(Self);
6885 if Dlg.ShowModal = mrOk then
6886 GikoSys.SaveKeySetting(ActionList);
6887 GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
6893 procedure TGikoForm.ArrangeActionExecute(Sender: TObject);
6895 if ArrangeAction.Checked then begin
6897 ViewPanel.Align := alNone;
6898 ListSplitter.Align := alNone;
6899 ThreadPanel.Align := alNone;
6901 ViewPanel.Width := FBrowserSizeWidth;
6902 ViewPanel.Align := alLeft;
6904 ListSplitter.Width := 5;
6905 ListSplitter.Align := alLeft;
6907 ViewPanel.Left := -10;
6909 ThreadPanel.Align := alClient;
6911 GikoSys.Setting.ListOrientation := gloHorizontal;
6912 case GikoSys.Setting.ListWidthState of
6914 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6915 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6916 ViewPanel.Width := 1;
6919 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6920 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6923 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6924 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6925 ViewPanel.Width := ThreadMainPanel.Width - 80;
6930 ViewPanel.Align := alNone;
6931 ListSplitter.Align := alNone;
6932 ThreadPanel.Align := alNone;
6934 ViewPanel.Height := FBrowserSizeHeight;
6935 ViewPanel.Align := alTop;
6937 ListSplitter.Height := 5;
6938 ListSplitter.Align := alTop;
6940 ViewPanel.Top := -10;
6942 ThreadPanel.Align := alClient;
6943 GikoSys.Setting.ListOrientation := gloVertical;
6944 case GikoSys.Setting.ListHeightState of
6946 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6947 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6948 ViewPanel.Height := 1;
6951 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6952 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6955 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6956 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6957 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
6964 procedure TGikoForm.PaneInitActionExecute(Sender: TObject);
6966 CabinetPanel.Width := 150;
6967 MessagePanel.Height := 40;
6969 FBrowserSizeWidth := 200;
6970 FBrowserSizeHeight := 200;
6971 if ArrangeAction.Checked then begin
6972 ViewPanel.Width := FBrowserSizeWidth;
6974 ViewPanel.Height := FBrowserSizeHeight;
6976 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6977 if GikoSys.Setting.ListHeightState = glsMax then begin
6978 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6979 GikoSys.Setting.ListHeightState := glsNormal;
6982 if GikoSys.Setting.ListWidthState = glsMax then begin
6983 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6984 GikoSys.Setting.ListWidthState := glsNormal;
6989 procedure TGikoForm.ActiveLogDeleteActionExecute(Sender: TObject);
6991 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';
6992 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
6995 ThreadItem: TThreadItem;
6997 idx := BrowserTab.TabIndex;
6998 if idx <> -1 then begin
6999 if BrowserTab.Tabs.Objects[idx] <> nil then begin
7000 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).FThread;
7001 if GikoSys.Setting.DeleteMsg then
7002 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7003 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7005 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
7006 ThreadItem.DeleteLogFile;
7007 if ThreadItem.ParentBoard = FActiveList then
7013 function TGikoForm.GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
7018 if CoolBar = nil then
7020 for i := 0 to CoolBar.Bands.Count - 1 do begin
7021 if CoolBar.Bands[i].Control = Control then begin
7022 Result := CoolBar.Bands[i];
7028 procedure TGikoForm.BrowserTabToolBarResize(Sender: TObject);
7030 if BrowserTab.Parent = BrowserTabToolBar then
7031 BrowserTab.Width := BrowserTabToolBar.Width;
7034 procedure TGikoForm.SelectTextClearActionExecute(Sender: TObject);
7036 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';
7037 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7039 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7040 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7042 GikoSys.Setting.SelectTextList.Clear;
7043 SelectComboBox.Items.Clear;
7044 SelectComboBox.Text := '';
7045 SetListViewType( gvtAll );
7048 procedure TGikoForm.NameTextClearActionExecute(Sender: TObject);
7052 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';
7053 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7055 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7056 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7058 GikoSys.Setting.NameList.Clear;
7059 for i := 0 to Screen.CustomFormCount - 1 do begin
7060 if TObject(Screen.CustomForms[i]) is TEditorForm then
7061 TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
7065 procedure TGikoForm.MailTextClearActionExecute(Sender: TObject);
7069 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';
7070 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7072 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7073 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7075 GikoSys.Setting.MailList.Clear;
7076 for i := 0 to Screen.CustomFormCount - 1 do begin
7077 if TObject(Screen.CustomForms[i]) is TEditorForm then
7078 TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
7082 procedure TGikoForm.LeftmostTabSelectActionExecute(Sender: TObject);
7084 if BrowserTab.Tabs.Count > 0 then begin
7085 BrowserTab.TabIndex := 0;
7086 BrowserTab.OnChange(nil);
7090 procedure TGikoForm.LeftTabSelectActionExecute(Sender: TObject);
7092 if BrowserTab.Tabs.Count > 0 then begin
7093 if BrowserTab.TabIndex = -1 then begin
7094 BrowserTab.TabIndex := 0;
7095 BrowserTab.OnChange(nil);
7096 end else if BrowserTab.TabIndex > 0 then begin
7097 BrowserTab.TabIndex := BrowserTab.TabIndex - 1;
7098 BrowserTab.OnChange(nil);
7103 procedure TGikoForm.RightTabSelectActionExecute(Sender: TObject);
7105 if BrowserTab.Tabs.Count > 0 then begin
7106 if BrowserTab.TabIndex = -1 then begin
7107 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7108 BrowserTab.OnChange(nil);
7109 end else if BrowserTab.TabIndex < (BrowserTab.Tabs.Count - 1) then begin
7110 BrowserTab.TabIndex := BrowserTab.TabIndex + 1;
7111 BrowserTab.OnChange(nil);
7116 procedure TGikoForm.RightmostTabSelectActionExecute(Sender: TObject);
7118 if BrowserTab.Tabs.Count > 0 then begin
7119 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7120 BrowserTab.OnChange(nil);
7124 procedure TGikoForm.LeftmostTabSelectActionUpdate(Sender: TObject);
7126 LeftmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7129 procedure TGikoForm.LeftTabSelectActionUpdate(Sender: TObject);
7131 LeftTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7134 procedure TGikoForm.RightTabSelectActionUpdate(Sender: TObject);
7136 RightTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7139 procedure TGikoForm.RightmostTabSelectActionUpdate(Sender: TObject);
7141 RightmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7144 procedure TGikoForm.WMSettingChange(var Message: TWMWinIniChange);
7149 procedure TGikoForm.SetMenuFont;
7151 // GikoSys.MenuFont(MenuToolBar.Font);
7152 // MenuToolBar.Buttons[0].AutoSize := False;
7153 // MenuToolBar.Buttons[0].AutoSize := True;
7154 // MenuToolBar.Font.Color := clMenuText;
7155 GikoSys.MenuFont(MainCoolBar.Font);
7156 MenuToolBar.Buttons[0].AutoSize := False;
7157 MenuToolBar.Buttons[0].AutoSize := True;
7158 MainCoolBar.AutoSize := False;
7159 MainCoolBar.AutoSize := True;
7161 GikoSys.MenuFont(ListCoolBar.Font);
7162 GikoSys.MenuFont(BrowserCoolBar.Font);
7163 // MenuToolBar.Font.Color := clMenuText;
7166 procedure TGikoForm.FavoriteMenuClick(Sender: TObject);
7172 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á
7173 NewMenu := TMenuItem.Create(MainMenu);
7174 NewMenu.Action := FavoriteAddAction;
7175 FavoriteMenu.Add(NewMenu);
7176 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\90®
\97\9d
7177 NewMenu := TMenuItem.Create(FavoriteMenu);
7178 NewMenu.Action := FavoriteArrangeAction;
7179 FavoriteMenu.Add(NewMenu);
7180 //
\83Z
\83p
\83\8c\81[
\83^
7181 NewMenu := TMenuItem.Create(FavoriteMenu);
7182 NewMenu.Caption := '-';
7183 FavoriteMenu.Add(NewMenu);
7185 CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
7188 procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
7193 for i := 0 to Node.Count - 1 do begin
7194 NewMenu := TFavoriteMenuItem.Create(Self);
7195 NewMenu.AutoHotkeys := maAutomatic;
7196 NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&');
7197 TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data;
7198 MenuItem.Add(NewMenu);
7200 if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
7201 NewMenu.ImageIndex := TOOL_ICON_FAV_FOLDER;
7202 CreateFavMenu(Node.Item[i], NewMenu);
7203 end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
7204 NewMenu.ImageIndex := TOOL_ICON_FAV_BOARD;
7205 NewMenu.OnClick := FavoriteClick;
7206 end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
7207 NewMenu.ImageIndex := TOOL_ICON_FAV_THREAD;
7208 NewMenu.OnClick := FavoriteClick;
7213 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
7215 Dlg : TFavoriteAddDialog;
7221 if Item is TFavoriteBoardItem then
7222 Item := TFavoriteBoardItem( Item ).Item
7223 else if Item is TFavoriteThreadItem then
7224 Item := TFavoriteThreadItem( Item ).Item;
7226 Node := FavoriteTreeView.Items.GetFirstNode;
7227 if Item is TBoard then begin
7228 ItemURL := TBoard( Item ).URL;
7229 while Node <> nil do begin
7231 if TObject( Data ) is TFavoriteBoardItem then begin
7232 if ItemURL = TFavoriteBoardItem( Data ).URL then begin
7233 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
7238 Node := Node.GetNext;
7240 Dlg := TFavoriteAddDialog.Create(Self);
7242 Dlg.SetBoard( TBoard( Item ) );
7247 end else if Item is TThreadItem then begin
7248 ItemURL := TThreadItem( Item ).URL;
7249 while Node <> nil do begin
7251 if TObject( Data ) is TFavoriteThreadItem then begin
7252 if ItemURL = TFavoriteThreadItem( Data ).URL then begin
7253 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
7258 Node := Node.GetNext;
7260 Dlg := TFavoriteAddDialog.Create(Self);
7262 Dlg.SetThreadItem( TThreadItem( Item ) );
7272 procedure TGikoForm.FavoriteAddActionExecute(Sender: TObject);
7274 ShowFavoriteAddDialog(GetActiveContent);
7277 procedure TGikoForm.FavoriteClick(Sender: TObject);
7280 FavoriteClick( Sender, True );
7284 procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean);
7287 ThreadItem: TThreadItem;
7288 FavBoard: TFavoriteBoardItem;
7289 FavThread: TFavoriteThreadItem;
7293 if Sender is TFavoriteMenuItem then
7294 Item := TFavoriteMenuItem(Sender).Data
7295 else if Sender is TLinkToolButton then
7296 Item := TLinkToolButton(Sender).Data
7297 else if Sender is TTreeNode then
7298 Item := TTreeNode( Sender ).Data
7302 if TObject(Item) is TFavoriteBoardItem then begin
7303 FavBoard := TFavoriteBoardItem(Item);
7304 Board := FavBoard.Item;
7305 if Board <> nil then begin
7306 if (FTreeType = gtt2ch) and (FActiveBBS <> Board.ParentCategory.ParenTBBS) then
7307 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7308 SelectTreeNode(Board, True);
7310 end else if TObject(Item) is TFavoriteThreadItem then begin
7311 FavThread := TFavoriteThreadItem(Item);
7312 ThreadItem := FavThread.Item;
7313 if ThreadItem = nil then
7316 InsertBrowserTab(ThreadItem, ActiveTab);
7318 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7319 if GikoSys.Setting.ListWidthState = glsMin then begin
7320 BrowserMaxAndFocusAction.Execute;
7323 if GikoSys.Setting.ListHeightState = glsMin then begin
7324 BrowserMaxAndFocusAction.Execute;
7330 procedure TGikoForm.FavoriteAddActionUpdate(Sender: TObject);
7332 FavoriteAddAction.Enabled := (GetActiveContent <> nil);
7335 procedure TGikoForm.BoardFavoriteAddActionExecute(Sender: TObject);
7337 if TObject(ListView.Selected.Data) is TBoard then
7338 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7341 procedure TGikoForm.BoardFavoriteAddActionUpdate(Sender: TObject);
7343 BoardFavoriteAddAction.Enabled := (GetActiveList is TCategory) and (ListView.SelCount > 0);
7346 procedure TGikoForm.ThreadFavoriteAddActionExecute(Sender: TObject);
7348 if TObject(ListView.Selected.Data) is TThreadItem then
7349 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7352 procedure TGikoForm.ThreadFavoriteAddActionUpdate(Sender: TObject);
7354 ThreadFavoriteAddAction.Enabled := (GetActiveList is TBoard) and (ListView.SelCount > 0);
7357 procedure TGikoForm.TreeSelectFavoriteAddActionExecute(Sender: TObject);
7359 ShowFavoriteAddDialog(TObject(FClickNode.Data));
7362 procedure TGikoForm.FavoriteArrangeActionExecute(Sender: TObject);
7364 Dlg: TFavoriteArrangeDialog;
7366 Dlg := TFavoriteArrangeDialog.Create(Self);
7372 PostMessage( Handle, USER_SETLINKBAR, 0, 0 );
7375 procedure TGikoForm.BBSMenuItemOnClick(
7380 if Sender is TBBSMenuItem then
7381 ShowBBSTree( TBBSMenuItem( Sender ).Data );
7385 procedure TGikoForm.MainCoolBarResize(Sender: TObject);
7387 TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
7390 procedure TGikoForm.MoveToActionExecute(Sender: TObject);
7395 URL := Trim(AddressComboBox.Text);
7398 idx := AddressComboBox.Items.IndexOf(URL);
7399 if idx = -1 then begin
7400 AddressComboBox.Items.Insert(0, URL);
7401 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
7402 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
7404 AddressComboBox.Items.Delete(idx);
7405 AddressComboBox.Items.Insert(0, URL);
7409 procedure TGikoForm.MoveToURL(URL: string);
7412 protocol, host, path, document, port, bookmark : string;
7413 URL2, protocol2, host2, path2, document2, port2, bookmark2 : string;
7415 BBSID, BBSKey: string;
7416 tmpBoard, Board: TBoard;
7417 ThreadItem: TThreadItem;
7420 tmpThread : TThreadItem;
7421 // category : TCategory;
7422 // categoryNode : TTreeNode;
7423 // boardNode : TTreeNode;
7424 shiftDown : Boolean;
7428 GikoSys.ParseURI( URL, protocol, host, path, document, port, bookmark );
7429 GikoSys.Parse2chURL( URL, path, document, BBSID, BBSKey );
7432 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7433 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7434 if shiftDown then begin
7435 GikoSys.OpenBrowser(URL, gbtUserApp);
7437 end else if ctrlDown then begin
7438 GikoSys.OpenBrowser(URL, gbtIE);
7442 //=====
\83v
\83\89\83O
\83C
\83\93
7445 bi := High( BoardPlugIns );
7446 for i := Low( BoardPlugIns ) to bi do begin
7447 if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7448 case BoardPlugIns[ i ].AcceptURL( URL ) of
7451 tmpThread := TThreadItem.Create( BoardPlugIns[ i ], URL );
7452 boardURL := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );
7453 Board := BBSsFindBoardFromURL( boardURL );
7454 if Board = nil then begin
7455 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7456 //GikoSys.OpenBrowser(URL, gbtUserApp);
7459 Board := GikoSys.GetUnknownBoard( tmpThread.BoardPlugIn, boardURL );
7460 if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
7461 ShowBBSTree( BBSs[ 1 ] );
7464 if not Board.IsThreadDatRead then begin
7465 GikoSys.ReadSubjectFile( Board );
7470 ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7471 if ThreadItem = nil then begin
7472 ThreadItem := tmpThread;
7473 Board.Insert( 0, ThreadItem );
7474 if ActiveList is TBoard then begin
7475 if TBoard(ActiveList) = Board then
7476 ListView.Items.Count := ListView.Items.Count + 1;
7478 InsertBrowserTab( ThreadItem );
7479 DownloadContent( ThreadItem );
7483 InsertBrowserTab( ThreadItem );
7484 if not ThreadItem.IsLogFile then begin
7485 DownloadContent( ThreadItem );
7495 tmpBoard := TBoard.Create(BoardPlugIns[ i ], URL);
7496 Board := BBSsFindBoardFromURL( tmpBoard.URL );
7498 if Board <> nil then begin
7499 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7500 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7501 SelectTreeNode( Board, True );
7509 // 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¢
7513 if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7514 boardURL := GikoSys.Get2chThreadURL2BoardURL( URL );
7515 Board := BBSsFindBoardFromURL( boardURL );
7517 Board := BBSsFindBoardFromBBSID( BBSID );
7519 if Board = nil then begin
7520 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7521 //
\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)
7522 Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
7524 if Board = nil then begin
7525 //
\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
7526 GikoSys.OpenBrowser(URL, gbtUserApp);
7529 //
\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é
7531 GikoSys.ParseURI(URL2 , protocol2, host2, path2, document2, port2, bookmark2 );
7532 tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
7533 tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
7534 if ( not GikoSys.Is2chHost(tmp1)) and (tmp1 <> tmp2) then begin
7535 GikoSys.OpenBrowser(URL, gbtUserApp);
7540 if not Board.IsThreadDatRead then
7541 GikoSys.ReadSubjectFile(Board);
7542 URL := GikoSys.Get2chBrowsableThreadURL( URL );
7543 ThreadItem := Board.FindThreadFromURL( URL );
7544 //
\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)
7545 if ThreadItem = nil then begin
7546 ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
7549 if ThreadItem = nil then begin
7550 //shift ->
\90Ý
\92è
\83u
\83\89\83E
\83U
\81i
\96³
\82¯
\82ê
\82ÎIE
\81j
7552 {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7553 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7555 GikoSys.OpenBrowser(URL, gbtUserApp)
7556 else if ctrlDown then
7557 GikoSys.OpenBrowser(URL, gbtIE)
7560 ThreadItem := TThreadItem.Create( nil, URL );
7561 ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
7562 if AnsiPos(Host, Board.URL) = 0 then
7563 ThreadItem.DownloadHost := Host
7565 ThreadItem.DownloadHost := '';
7566 Board.Insert(0, ThreadItem);
7567 if ActiveList is TBoard then begin
7568 if TBoard(ActiveList) = Board then
7569 ListView.Items.Count := ListView.Items.Count + 1;
7571 InsertBrowserTab(ThreadItem);
7572 DownloadContent(ThreadItem);
7575 if ThreadItem.IsLogFile then
7576 InsertBrowserTab(ThreadItem)
7578 if AnsiPos(Host, Board.URL) = 0 then
7579 ThreadItem.DownloadHost := Host
7581 ThreadItem.DownloadHost := '';
7582 InsertBrowserTab(ThreadItem);
7583 DownloadContent(ThreadItem);
7587 Board := BBSsFindBoardFromURL( URL );
7588 if Board = nil then begin
7589 GikoSys.OpenBrowser(URL, gbtAuto);
7591 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7592 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7593 SelectTreeNode( Board, True );
7598 procedure TGikoForm.AddressToolBarResize(Sender: TObject);
7600 AddressComboBox.Width := AddressToolBar.Width - MoveToToolButton.Width - 10;
7601 CoolBarResized( Sender, MainCoolBar );
7604 procedure TGikoForm.AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
7605 Shift: TShiftState);
7607 if Key = VK_RETURN then
7608 MoveToAction.Execute;
7611 procedure TGikoForm.BrowserEnter(Sender: TObject);
7613 Browser.DoObjectVerb(OLEIVERB_UIACTIVATE);
7616 procedure TGikoForm.WMCopyData(var Message: TWMCopyData);
7618 CDS:PCopyDataStruct;
7622 CDS := Message.CopyDataStruct;
7623 GetMem(PC, CDS^.cbData);
7625 lstrcpy(PC,CDS^.lpData);
7626 SetString(sURL, PC,lstrlen(PC));
7631 Message.Result := 1;
7634 procedure TGikoForm.WndProc(var Message: TMessage);
7639 if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then
7642 if Message.WParam = SC_MINIMIZE then
7645 TreeClick( TreeView.Selected );
7659 procedure TGikoForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
7661 hComboEdit: THandle;
7662 // KeyData: Integer;
7665 if AddressComboBox.Focused or SelectComboBox.Focused then begin
7666 if Msg.CharCode in [VK_BACK] then begin
7667 hComboEdit := GetFocus;
7668 if hComboEdit <> 0 then
7669 SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, Msg.KeyData);
7670 // SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, $000E0001);
7673 if Msg.CharCode in [VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT] then begin
7674 hComboEdit := GetFocus;
7675 if hComboEdit <> 0 then
7676 SendMessage(hComboEdit, WM_KEYDOWN, Msg.CharCode, Msg.KeyData);
7680 //
\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ð
7681 KeyData := Msg.KeyData;
7682 if (KeyData and $20000000) = 0 then begin
7683 if Msg.CharCode in [Ord('F'), Ord('V'), Ord('B'), Ord('R'),
7684 Ord('A'), Ord('T'), Ord('H')] then begin
7685 if not ActionList.IsShortCut(Msg) then begin
7693 procedure TGikoForm.BrowserTabVisibleActionExecute(Sender: TObject);
7695 GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
7699 procedure TGikoForm.BrowserTabTopActionExecute(Sender: TObject);
7701 BrowserTabBottomAction.Checked := False;
7702 BrowserTabTopAction.Checked := True;
7703 GikoSys.Setting.BrowserTabPosition := gtpTop;
7707 procedure TGikoForm.BrowserTabBottomActionExecute(Sender: TObject);
7709 BrowserTabTopAction.Checked := False;
7710 BrowserTabBottomAction.Checked := True;
7711 GikoSys.Setting.BrowserTabPosition := gtpBottom;
7715 procedure TGikoForm.BrowserTabTabStyleActionExecute(Sender: TObject);
7717 BrowserTabButtonStyleAction.Checked := False;
7718 BrowserTabFlatStyleAction.Checked := False;
7719 BrowserTabTabStyleAction.Checked := True;
7720 GikoSys.Setting.BrowserTabStyle := gtsTab;
7724 procedure TGikoForm.BrowserTabButtonStyleActionExecute(Sender: TObject);
7726 BrowserTabTabStyleAction.Checked := False;
7727 BrowserTabFlatStyleAction.Checked := False;
7728 BrowserTabButtonStyleAction.Checked := True;
7729 GikoSys.Setting.BrowserTabStyle := gtsButton;
7733 procedure TGikoForm.BrowserTabFlatStyleActionExecute(Sender: TObject);
7735 BrowserTabFlatStyleAction.Checked := True;
7736 BrowserTabTabStyleAction.Checked := False;
7737 BrowserTabButtonStyleAction.Checked := False;
7738 GikoSys.Setting.BrowserTabStyle := gtsFlat;
7742 procedure TGikoForm.PreviewTimerTimer(Sender: TObject);
7748 HtmlFileName: string;
7752 TargetFrameName: OleVariant;
7753 PostData: OleVariant;
7754 Headers: OleVariant;
7755 WindowHeight: Integer;
7756 WindowWidth: Integer;
7760 Protocol, Host, Path, Document, Port, Bookmark: string;
7762 PreviewTimer.Enabled := False;
7766 case GikoSys.Setting.PreviewSize of
7773 WindowHeight := 192;
7777 WindowHeight := 384;
7781 WindowHeight := 480;
7783 else begin //gpsMedium
7785 WindowHeight := 288;
7789 ARect := Rect(0, 0, WindowWidth, WindowHeight);
7791 case GikoSys.Setting.PopupPosition of
7792 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7793 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7794 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
7795 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
7796 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
7797 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
7798 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7799 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7800 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Ó
7803 html := '<html><head>'#13#10
7805 + 'function init() {'#13#10
7806 + ' if ((document.body.clientHeight >= Image1.height) && (document.body.clientWidth >= Image1.width)) {'#13#10
7808 + ' var dh, ih;'#13#10
7809 + ' dh = document.body.clientWidth / document.body.clientHeight;'#13#10
7810 + ' ih = Image1.width / Image1.height;'#13#10
7811 + ' if (document.body.clientWidth < document.body.clientHeight) {'#13#10
7812 + ' if (ih > dh)'#13#10
7813 + ' Image1.width = document.body.clientWidth;'#13#10
7815 + ' Image1.height = document.body.clientHeight;'#13#10
7817 + ' if (ih < dh)'#13#10
7818 + ' Image1.height = document.body.clientHeight;'#13#10
7820 + ' Image1.width = document.body.clientWidth;'#13#10
7823 + ' Message.style.display = "none";'#13#10
7827 + '<body topmargin="0" leftmargin="0" style="border-width: 1px; overflow:hidden; border-style: solid;" onLoad="init()">'#13#10
7828 + '<div align="center" id="Message">
\83v
\83\8c\83r
\83\85\81[
\8dì
\90¬
\92\86</div>'#13#10
7829 + '<div align="center"><img name="Image1" border="0" src="%ImageURL%"></div>'#13#10
7831 sl := TStringList.Create;
7834 HtmlFileName := GikoSys.GetAppDir + HTML_FILE_NAME;
7835 sl.Text := AnsiReplaceStr(html, '%ImageURL%', FPreviewURL);
7836 sl.SaveToFile(HtmlFileName);
7843 NavURL := HtmlFileName;
7845 TargetFrameName := '';
7848 GikoSys.ParseURI(FPreviewURL, Protocol, Host, Path, Document, Port, Bookmark);
7849 Referer := Protocol + '://' + Host;
7851 Referer := Referer + ':' + Port;
7852 Referer := Referer + Path;
7853 Headers := 'Referer: ' + Referer;
7854 FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
7855 if ARect.Top + WindowHeight > Screen.DesktopHeight then
7856 ARect.Top := Screen.DesktopHeight - WindowHeight;
7857 if ARect.Left + WindowWidth > Screen.DesktopWidth then
7858 ARect.Left := Screen.DesktopWidth - WindowWidth;
7859 if ARect.Left < Screen.DesktopLeft then ARect.Left := Screen.DesktopLeft;
7860 if ARect.Bottom < Screen.DesktopTop then ARect.Bottom := Screen.DesktopTop;
7862 SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW);
7863 ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE);
7865 // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE);
7866 // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW);
7870 procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor);
7872 if PreviewTimer.Enabled then
7873 PreviewTimer.Enabled := False;
7874 if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin
7875 FHint.ReleaseHandle;
7878 if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then
7879 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
7880 Message.Result := 1;
7884 procedure TGikoForm.MessageHideButtonClick(Sender: TObject);
7886 MsgBarCloseAction.Execute;
7889 function TGikoForm.OnDocumentContextMenu(Sender: TObject): WordBool;
7891 Doc: IHtmlDocument2;
7892 Range: IHTMLTxtRange;
7895 ThreadItem: TThreadItem;
7898 Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
7899 if Assigned(Doc) then begin
7900 Range := Doc.selection.createRange as IHTMLTxtRange;
7901 s := CustomStringReplace(Range.text, '
\81@', ' ');//
\91S
\8ap
\8bó
\94\92\82ð
\94¼
\8ap
\8bó
\94\92\82É
7902 s := ZenToHan(Trim(s));
7903 if GikoSys.IsNumeric(s) then begin
7905 ThreadItem := GetActiveContent;
7906 if ThreadItem <> nil then begin
7908 FHint.PopupType := gptThread;
7909 SetResPopupText(ThreadItem, Num, Num, False, False);
7910 if FHint.ResCount <> 0 then
7921 procedure TGikoForm.SetResPopupText(threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
7933 boardPlugIn : TBoardPlugIn;
7936 if StNum > ToNum then begin
7942 //
\8dÅ
\91å10
\83\8c\83X
\82Ü
\82Å
\95\
\8e¦
7943 if StNum + MAX_POPUP_RES < ToNum then
7944 ToNum := StNum + MAX_POPUP_RES;
7946 //
\83^
\83C
\83g
\83\8b\95\
\8e¦
7948 if ThreadItem <> nil then
7949 FHint.Title := ThreadItem.Title;
7951 if ThreadItem <> nil then begin
7952 if ThreadItem.IsBoardPlugInAvailable then begin
7953 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
7954 boardPlugIn := ThreadItem.BoardPlugIn;
7956 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
7957 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
7958 for i := StNum to ToNum do begin
7960 //
\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½
7961 tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
7962 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
7963 Res := GikoSys.DivideStrLine(tmp);
7964 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
7965 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
7967 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
7970 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
7971 Body := CustomStringReplace(Body, '<br>', #10,true);
7972 Body := CustomStringReplace(Body, '</a>', '',true);
7973 Body := GikoSys.DeleteLink(Body);
7974 Body := CustomStringReplace(Body, '<', '<');
7975 Body := CustomStringReplace(Body, '>', '>');
7976 Body := CustomStringReplace(Body, '"', '"');
7977 Body := CustomStringReplace(Body, '&', '&');
7978 Body := CustomStringReplace(Body, ' ', ' ');
7980 FHint.Add(Header, Body);
7981 //FHint.Title := '';
7985 for i := StNum to ToNum do begin
7987 FileName := ThreadItem.FilePath;
7988 tmp := GikoSys.ReadThreadFile(FileName, Line);
7989 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
7990 Res := GikoSys.DivideStrLine(tmp);
7991 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
7992 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
7994 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
7996 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
7997 Body := CustomStringReplace(Body, '<br>', #10,true);
7998 Body := CustomStringReplace(Body, '</a>', '',true);
7999 Body := GikoSys.DeleteLink(Body);
8000 Body := CustomStringReplace(Body, '<', '<');
8001 Body := CustomStringReplace(Body, '>', '>');
8002 Body := CustomStringReplace(Body, '"', '"');
8003 Body := CustomStringReplace(Body, '&', '&');
8004 Body := CustomStringReplace(Body, ' ', ' ');
8005 FHint.Add(Header, Body);
8006 //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
8015 procedure TGikoForm.ShowTextPopup;
8020 // if Trim(s) = '' then
8023 FHint.Font.Name := GikoSys.Setting.HintFontName;
8024 FHint.Font.Size := GikoSys.Setting.HintFontSize;
8025 FHint.Font.Color := GikoSys.Setting.HintFontColor;
8026 FHint.Color := GikoSys.Setting.HintBackColor;
8027 FHint.HeaderBold := GikoSys.Setting.ResPopupHeaderBold;
8029 if FHint.PopupType = gptRaw then
8030 ARect := FHint.CalcHintRect(Screen.Width, FHint.Caption, nil)
8032 ARect := FHint.CalcHintRect(Screen.Width, '', nil);
8033 case GikoSys.Setting.PopupPosition of
8034 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8035 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8036 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
8037 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
8038 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
8039 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
8040 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8041 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8042 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Ó
8044 //FHint.ActivateHint(ARect, s);
8045 if FHint.PopupType = gptRaw then
8046 FHint.ActivateHint(ARect, FHint.Caption)
8048 FHint.ActivateHint(ARect, '');
8050 FHint.ReleaseHandle;
8055 procedure TGikoForm.GikoHelpActionExecute(Sender: TObject);
8059 FileName := GikoSys.GetAppDir + 'batahlp.chm';
8060 if not FileExists(FileName) then begin
8063 '
\83w
\83\8b\83v
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½' + #13#10 +
8064 '
\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 +
8065 '
\83w
\83\8b\83v
\82Í
\83M
\83R
\83i
\83r
\82Ì
\83T
\83C
\83g
\82É
\92u
\82¢
\82Ä
\82 \82è
\82Ü
\82·',
8070 ShellExecute(Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
8073 procedure TGikoForm.ToolButton18Click(Sender: TObject);
8075 DEL_MSG = '
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
8076 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
8078 if FTreeType = gttHistory then begin
8079 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
8080 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
8084 TreeView.Items.Clear;
8088 procedure TGikoForm.KotehanActionExecute(Sender: TObject);
8090 Dlg: TKotehanDialog;
8092 Dlg := TKotehanDialog.Create(Self);
8100 procedure TGikoForm.SetLinkBar;
8104 ToolButton: TLinkToolButton;
8105 MenuItem: TMenuItem;
8106 oldIgnoreResize : Boolean;
8108 oldIgnoreResize := FIsIgnoreResize;
8109 FIsIgnoreResize := True;
8110 MainCoolBar.Bands.BeginUpdate;
8112 LinkBarPopupMenu.Items.Clear;
8113 for i := LinkToolBar.ButtonCount - 1 downto 0 do
8114 //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
8115 LinkToolBar.Buttons[i].Free;
8116 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8117 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8118 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8119 ToolButton := TLinkToolButton.Create(LinkToolBar);
8120 // ToolButton.Parent := LinkToolBar;
8121 if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteFolder then begin
8122 MenuItem := TMenuItem.Create(Self);
8123 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem);
8124 LinkBarPopupMenu.Items.Add(MenuItem);
8125 ToolButton.MenuItem := MenuItem;
8126 ToolButton.ImageIndex := TOOL_ICON_FAV_FOLDER;
8127 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteBoardItem then begin
8128 ToolButton.ImageIndex := TOOL_ICON_FAV_BOARD;
8129 ToolButton.OnClick := FavoriteClick;
8130 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteThreadItem then begin
8131 ToolButton.ImageIndex := TOOL_ICON_FAV_THREAD;
8132 ToolButton.OnClick := FavoriteClick;
8134 ToolButton.Caption := FavoriteTreeView.Items[i].Item[j].Text;
8135 ToolButton.Left := 10000;
8136 ToolButton.Data := FavoriteTreeView.Items[i].Item[j].Data;
8137 ToolButton.AutoSize := True;
8138 ToolButton.OnDragDrop := LinkToolButtonDragDrop;
8139 ToolButton.OnDragOver := FavoriteDragOver;
8140 ToolButton.OnMouseDown := LinkToolButtonOnMouseDown;
8141 ToolButton.OnMouseMove := LinkToolButtonOnMouseMove;
8142 ToolButton.OnMouseUp := LinkToolButtonOnMouseUp;
8143 ToolButton.OnStartDrag := LinkToolButtonStartDrag;
8144 //ToolButton.DragMode := dmAutomatic;
8145 ToolButton.DragMode := dmManual;
8146 ToolButton.PopupMenu := FavoriteTreePopupMenu;
8148 LinkToolBar.InsertControl(ToolButton);
8153 { if LinkToolBar.ButtonCount = 0 then begin
8154 ToolButton := TLinkToolButton.Create(LinkToolBar);
8155 ToolButton.Style := tbsButton;
8156 ToolButton.ImageIndex := -1;
8157 ToolButton.Caption := '';
8158 LinkToolBar.InsertControl(ToolButton);
8161 MainCoolBar.Bands.EndUpdate;
8162 LoadCoolBarSettings;
8163 FIsIgnoreResize := oldIgnoreResize;
8167 procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8175 if Sender = FavoriteTreeView then begin
8176 Node := FavoriteTreeView.GetNodeAt(X, Y);
8181 bound := Node.DisplayRect( False );
8182 height := bound.Bottom - bound.Top;
8183 if (bound.Top + height / 2) <= Y then
8184 Node := FavoriteTreeView.GetNodeAt(X, Y + height);
8189 if Node.IsFirstNode then
8194 if FDropSpaceNode <> nil then
8195 if FDropSpaceNode.AbsoluteIndex = Node.AbsoluteIndex then
8198 if Change then begin
8199 if FDropSpaceNode <> nil then
8200 FDropSpaceNode.Free;
8202 FDropSpaceNode := FavoriteDM.TreeView.Items.AddChildObject(Node.Parent, '', nil );
8203 FDropSpaceNode.MoveTo( Node, naInsert );
8204 FDropSpaceNode.ImageIndex := -1;
8205 FDropSpaceNode.SelectedIndex := -1;
8209 if Source = FavoriteTreeView then begin
8210 if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
8215 end else if Source = BrowserTab then
8217 else if Source = ListView then
8219 else if Source is TLinkToolButton then
8221 else if Source = TreeView then
8227 procedure TGikoForm.FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8230 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
8233 procedure TGikoForm.LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
8235 // FDragging := true;
8238 procedure TGikoForm.LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
8240 SenderNode: TTreeNode;
8241 LinkToolButton: TLinkToolButton;
8244 LinkToolButton := TLinkToolButton( Sender );
8245 SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
8247 FavoriteDragDrop( SenderNode, Source );
8251 procedure TGikoForm.LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8253 favButton : TLinkToolButton;
8254 favThreadItem : TFavoriteThreadItem;
8260 if Sender is TLinkToolButton then begin
8261 favButton := TLinkToolButton( Sender );
8262 if TObject( favButton.Data ) is TFavoriteThreadItem then begin
8263 favThreadItem := TFavoriteThreadItem( favButton.Data );
8264 if favThreadItem.Item <> nil then
8265 InsertBrowserTab( favThreadItem.Item, False );
8273 procedure TGikoForm.LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
8277 TToolButton( Sender ).DragMode := dmManual;
8278 if ssLeft in Shift then begin
8279 // 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)
8280 if FDragTime = 0 then begin
8281 FDragTime := GetTickCount();
8283 Now := GetTickCount();
8284 if (Now - FDragTime) > 500 then begin
8285 if FDragButton <> TToolButton( Sender ) then begin
8287 FDragButton := TToolButton( Sender );
8288 TToolButton(Sender).BeginDrag(false ,5);
8291 {$IF Defined(debug)}
8292 ShowMessage('Error');
8303 procedure TGikoForm.LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8308 function TGikoForm.GetWidthAllToolButton(ToolBar: TToolBar): Integer;
8313 for i := 0 to ToolBar.ButtonCount - 1 do
8314 if ToolBar.Buttons[i].Visible then
8315 Result := Result + ToolBar.Buttons[i].Width;
8318 procedure TGikoForm.MainCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8320 Control : TWinControl;
8323 Control := FindControl(BandInfo^.hwndChild);
8324 if Control = nil then
8327 for i := MainCoolBar.Bands.Count - 1 downto 0 do begin
8328 if MainCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8329 idx := MainCoolBar.Bands[ i ].ID;
8333 Canvas.Font.Handle := GetStockObject( DEFAULT_GUI_FONT );
8334 if (Control = MenuToolBar) or (Control = StdToolBar) then begin
8335 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8336 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8337 BandInfo^.cxMinChild := 0;
8338 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth;
8339 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8340 end else if Control = LinkToolBar then begin
8341 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8342 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8343 BandInfo^.cxMinChild := 0;
8344 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83\8a\83\93\83N' );
8345 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8346 end else begin // AddressToolBar
8347 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8348 BandInfo^.cxMinChild := 0;
8349 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83A
\83h
\83\8c\83X' );
8353 procedure TGikoForm.MainCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8359 ChevronPopupMenu.Items.Clear;
8361 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8362 if MainCoolBar.Bands[ i ].Visible then begin
8363 if Idx = Int64(RebarChevron^.uBand) then begin
8370 if (Idx >= 0) and (MainCoolBar.Bands.Count > Idx) then begin
8371 if MainCoolBar.Bands[Idx].Control = MenuToolbar then begin
8373 end else if MainCoolBar.Bands[Idx].Control = StdToolbar then begin
8374 ToolBarChevronMenu(StdToolBar);
8375 end else if MainCoolBar.Bands[Idx].Control = LinkToolbar then begin
8379 p := MainCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8380 ChevronPopupMenu.Popup(p.x, p.y);
8384 procedure TGikoForm.MenuBarChevronMenu;
8385 procedure SetSubMenu(MenuItem: TMenuItem; PopupItem: TMenuItem);
8391 for i := 0 to MenuItem.Count - 1 do begin
8393 if MenuItem[i] is TFavoriteMenuItem then begin
8394 Item := TFavoriteMenuItem.Create(Self);
8395 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(MenuItem[i]).Data;
8397 Item := TMenuItem.Create(Self);
8398 Item.Caption := MenuItem[i].Caption;
8399 Item.Action := MenuItem[i].Action;
8400 Item.ImageIndex := MenuItem[i].ImageIndex;
8401 Item.OnClick := MenuItem[i].OnClick;
8402 PopupItem.Add(Item);
8403 if MenuItem[i].Count > 0 then
8404 SetSubMenu(MenuItem[i], Item);
8413 ChevronPopupMenu.Items.Clear;
8414 ChevronPopupMenu.Images := MainMenu.Images;
8415 bw := GetWidthAllToolButton(MenuToolBar);
8416 if MenuToolBar.Width < bw then begin
8418 for i := 0 to MenuToolBar.ButtonCount - 1 do begin
8419 w := w + MenuToolBar.Buttons[i].Width;
8420 if MenuToolBar.Width <= w then begin
8421 Item := TMenuItem.Create(Self);
8422 Item.Caption := MenuToolBar.Buttons[i].MenuItem.Caption;
8423 //Item.Action := MenuToolBar.Buttons[i].MenuItem.Action;
8424 ChevronPopupMenu.Items.Add(Item);
8425 SetSubMenu(MenuToolbar.Buttons[i].MenuItem, Item);
8431 procedure TGikoForm.ToolBarChevronMenu(ToolBar: TToolBar);
8432 procedure SetSubMenu(PopupMenu: TPopupMenu; PopupItem: TMenuItem);
8437 if Assigned(PopupMenu.OnPopup) then
8438 PopupMenu.OnPopup(nil);
8439 for i := 0 to PopupMenu.Items.Count - 1 do begin
8441 if PopupMenu.Items[i] is TFavoriteMenuItem then begin
8442 Item := TFavoriteMenuItem.Create(Self);
8443 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(PopupMenu.Items[i]).Data;
8445 Item := TMenuItem.Create(Self);
8446 Item.Caption := PopupMenu.Items[i].Caption;
8447 Item.Action := PopupMenu.Items[i].Action;
8448 Item.ImageIndex := PopupMenu.Items[i].ImageIndex;
8449 Item.OnClick := PopupMenu.Items[i].OnClick;
8450 PopupItem.Add(Item);
8459 ChevronPopupMenu.Items.Clear;
8460 ChevronPopupMenu.Images := ToolBar.HotImages;
8461 bw := GetWidthAllToolButton(ToolBar);
8462 if ToolBar.Width < bw then begin
8464 for i := 0 to ToolBar.ButtonCount - 1 do begin
8465 w := w + ToolBar.Buttons[i].Width;
8466 if ToolBar.Width <= w then begin
8467 Case ToolBar.Buttons[i].Tag of
8470 Item := TMenuItem.Create(Self);
8471 if ToolBar.Buttons[i].Style = tbsSeparator then
8474 Item.Caption := ToolBar.Buttons[i].Caption;
8475 Item.Action := ToolBar.Buttons[i].Action;
8476 //Item.Visible := True;
8478 ChevronPopupMenu.Items.Add(Item);
8479 if ToolBar.Buttons[i].DropdownMenu <> nil then begin
8481 Item.OnClick := nil;
8482 SetSubMenu(ToolBar.Buttons[i].DropdownMenu, Item);
8486 //
\8f«
\97\88\82Ì
\82½
\82ß
\82Ì
\97\
\96ñ
8493 procedure TGikoForm.LinkBarChevronMenu;
8498 Item: TFavoriteMenuItem;
8500 Button: TLinkToolButton;
8502 ChevronPopupMenu.Items.Clear;
8503 ChevronPopupMenu.Images := LinkToolBar.Images;
8504 bw := GetWidthAllToolButton(LinkToolBar);
8505 if LinkToolBar.Width < bw then begin
8507 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8508 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8509 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8510 w := w + LinkToolBar.Buttons[j].Width;
8511 if LinkToolBar.Width <= w then begin
8512 if LinkToolBar.Buttons[j] is TLinkToolButton then begin
8513 Button := TLinkToolButton(LinkToolBar.Buttons[j]);
8514 Item := TFavoriteMenuItem.Create(Self);
8515 if TObject(Button.Data) is TFavoriteFolder then begin
8516 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], Item);
8517 end else if TObject(Button.Data) is TFavoriteBoardItem then begin
8518 Item.OnClick := FavoriteClick;
8519 end else if TObject(Button.Data) is TFavoriteThreadItem then begin
8520 Item.OnClick := FavoriteClick;
8522 Item.Data := Button.Data;
8523 Item.Caption := LinkToolBar.Buttons[j].Caption;
8524 Item.ImageIndex := LinkToolBar.Buttons[j].ImageIndex;
8525 ChevronPopupMenu.Items.Add(Item);
8536 \brief
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
8537 \param bar
\83o
\83\93\83h
\82ª
\8f\8a\91®
\82·
\82é CoolBar
8538 \param band
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
\83o
\83\93\83h
8540 \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É
8541 \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
8543 procedure TGikoForm.ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
8545 bandInfo : tagREBARBANDINFOA;
8546 pBandInfo : PReBarBandInfoA;
8553 pBandInfo := @bandInfo;
8554 ZeroMemory( pBandInfo, sizeof( bandInfo ) );
8555 bandInfo.cbSize := sizeof( bandInfo );
8556 bandInfo.hwndChild := h;
8557 bandInfo.cyMinChild := bar.Height;
8558 bar.OnBandInfo( nil, pBandInfo );
8559 // band
\82Ì
\83C
\83\93\83f
\83b
\83N
\83X
\82ð
\92T
\82·
8561 for i := bar.Bands.Count - 1 downto 0 do begin
8562 if bar.Bands[ i ].Control.Handle = h then begin
8568 lResult := SendMessage( bar.Handle, RB_SETBANDINFO, i, Integer( pBandInfo ) );
8572 procedure TGikoForm.ListCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8574 Control: TWinControl;
8577 Control := FindControl(BandInfo^.hwndChild);
8578 if Control = nil then
8581 for i := ListCoolBar.Bands.Count - 1 downto 0 do begin
8582 if ListCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8583 idx := ListCoolBar.Bands[ i ].ID;
8587 if Control = ListToolBar then begin
8588 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8589 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8590 BandInfo^.cxMinChild := 0;
8591 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8592 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8594 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8595 BandInfo^.cxMinChild := 0;
8596 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8600 procedure TGikoForm.ListCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8605 ChevronPopupMenu.Items.Clear;
8606 Idx := RebarChevron^.uBand;
8607 if (Idx >= 0) and (ListCoolBar.Bands.Count > Idx) then begin
8608 if ListCoolBar.Bands[Idx].Control = ListToolBar then begin
8609 ToolBarChevronMenu(ListToolBar);
8612 p := ListCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8613 ChevronPopupMenu.Popup(p.x, p.y);
8617 procedure TGikoForm.BrowserCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8619 Control: TWinControl;
8622 Control := FindControl(BandInfo^.hwndChild);
8623 if Control = nil then
8626 for i := BrowserCoolBar.Bands.Count - 1 downto 0 do begin
8627 if BrowserCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8628 idx := BrowserCoolBar.Bands[ i ].ID;
8632 if Control = BrowserToolBar then begin
8633 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8634 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8635 BandInfo^.cxMinChild := 0;
8636 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8637 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8639 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8640 BandInfo^.cxMinChild := 0;
8641 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8645 procedure TGikoForm.BrowserCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8650 ChevronPopupMenu.Items.Clear;
8651 Idx := RebarChevron^.uBand;
8652 if (Idx >= 0) and (BrowserCoolBar.Bands.Count > Idx) then begin
8653 if BrowserCoolBar.Bands[Idx].Control = BrowserToolBar then
8654 ToolBarChevronMenu(BrowserToolBar)
8657 p := BrowserCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8658 ChevronPopupMenu.Popup(p.x, p.y);
8662 procedure TGikoForm.ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
8664 if Column^.iImage = -1 then begin
8665 Column^.mask := Column^.mask or LVCF_FMT;
8667 Column^.mask := Column^.mask or LVCF_FMT or LVCF_IMAGE;
8668 Column^.fmt := Column^.fmt or LVCFMT_IMAGE or LVCFMT_BITMAP_ON_RIGHT;
8672 procedure TGikoForm.ThreadEditorActionExecute(Sender: TObject);
8674 Editor: TEditorForm;
8676 if not (GetActiveList is TBoard) then
8678 Editor := TEditorForm.Create(Self);
8679 Editor.SetBoard(TBoard(GetActiveList));
8681 Editor.BodyEdit.SetFocus;
8684 procedure TGikoForm.ToolBarSettingActionExecute(Sender: TObject);
8686 Dlg: TToolBarSettingDialog;
8688 //Component: TComponent;
8690 Dlg := TToolBarSettingDialog.Create(Self, ActionList);
8692 Dlg.AddToolBar(StdToolBar, gttStandard);
8693 Dlg.AddToolBar(ListToolBar, gttList);
8694 Dlg.AddToolBar(BrowserToolBar, gttBrowser);
8695 case FToolBarSettingSender of
8696 tssMain: Dlg.ToolBarIndex := 0;
8697 tssList: Dlg.ToolBarIndex := 1;
8698 tssBrowser: Dlg.ToolBarIndex := 2;
8701 if ToolBarSettingAction.ActionComponent.GetParentComponent is TPopupMenu then begin
8702 Component := TPopupMenu( ToolBarSettingAction.ActionComponent.GetParentComponent ).PopupComponent;
8704 if Component = MainCoolBar then
8705 Dlg.ToolBarComboBox.ItemIndex := 0
8706 else if Component = ListCoolBar then
8707 Dlg.ToolBarComboBox.ItemIndex := 1
8708 else if Component = BrowserCoolBar then
8709 Dlg.ToolBarComboBox.ItemIndex := 2;
8712 if Dlg.ShowModal = mrOK then begin
8715 //
\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é
8716 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8717 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth + 1;
8718 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth - 1;
8720 for i := 0 to ListCoolBar.Bands.Count - 1 do begin
8721 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth + 1;
8722 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth - 1;
8724 for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
8725 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;
8726 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;
8728 SaveToolBarSetting(StdToolBar);
8729 SaveToolBarSetting(ListToolBar);
8730 for i := ListToolBar.ControlCount - 1 downto 0 do
8732 if ListToolBar.Controls[ i ].Action = SelectItemAction then
8734 //
\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·
8735 if (i + 1) < ListToolBar.ControlCount then
8736 if ListToolBar.Controls[ i + 1 ] is TToolButton then
8737 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
8738 ListToolBar.Controls[ i + 1 ].Visible := False;
8740 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
8741 ListToolBar.Controls[ i ].Visible := False;
8742 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
8743 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
8744 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
8745 SelectComboBox.Parent := ListToolBar;
8746 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
8747 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
8748 SelectComboBoxSplitter.Parent := ListToolBar;
8753 ResetBandInfo( ListCoolBar, ListToolBar );
8754 SaveToolBarSetting(BrowserToolBar);
8758 FToolBarSettingSender := tssNone;
8762 function TGikoForm.FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
8767 for i := bar.ButtonCount - 1 downto 0 do begin
8768 if bar.Buttons[ i ].Action = action then begin
8769 Result := bar.Buttons[ i ];
8778 procedure TGikoForm.SetToolBarPopup;
8781 aIEButton : TToolButton;
8782 aCabinetBBSButton : TToolButton;
8783 aResRangeButton : TToolButton;
8784 aThreadRangeButton: TToolButton;
8786 for i := 0 to StdToolBar.ButtonCount - 1 do begin
8788 for i := 0 to ListToolBar.ButtonCount - 1 do begin
8789 if ListToolBar.Buttons[i].Action = IconStyle then
8790 ListToolBar.Buttons[i].DropdownMenu := ListIconPopupMenu;
8791 if ListToolBar.Buttons[i].Action = SelectReservAction then
8792 ListToolBar.Buttons[i].DropdownMenu := RoundNamePopupMenu;
8794 aIEButton := FindToolBarButton( BrowserToolBar, IEAction );
8795 if aIEButton <> nil then
8796 aIEButton.DropdownMenu := BrowserPopupMenu;
8797 aCabinetBBSButton := FindToolBarButton( StdToolBar, CabinetBBSAction );
8798 if aCabinetBBSButton <> nil then
8799 aCabinetBBSButton.DropdownMenu := BBSSelectPopupMenu;
8800 aResRangeButton := FindToolBarButton( BrowserToolBar, ResRangeAction );
8801 if aResRangeButton <> nil then
8802 aResRangeButton.DropdownMenu := ResRangePopupMenu;
8803 aThreadRangeButton:= FindToolBarButton( ListToolBar, ThreadRangeAction );
8804 if aThreadRangeButton <> nil then
8805 aThreadRangeButton.DropdownMenu := ThreadRangePopupMenu;
8808 procedure TGikoForm.FormMouseWheel(Sender: TObject; Shift: TShiftState;
8809 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
8818 Wnd := WindowFromPoint(MousePos);
8820 if WheelDelta > 0 then
8825 if (Wnd = BrowserTab.Handle) or
8826 (Wnd = BrowserTab.Parent.Handle) then begin
8827 BrowserTab.ScrollTabs(Delta);
8828 end else if Wnd = ListView.Handle then begin
8829 if ListView.ViewStyle = vsList then
8830 ListView.Scroll( Delta * Mouse.WheelScrollLines * Abs( ListView.Font.Height ) + Delta * ICON_SIZE, 0 )
8832 ListView.Scroll( 0, Delta * Mouse.WheelScrollLines * Abs( ListView.Font.Height ) + Delta * ICON_SIZE );
8839 procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
8841 if Length( SelectComboBox.Text ) = 0 then
8843 AllItemAction.Checked := True;
8844 LogItemAction.Checked := False;
8845 NewItemAction.Checked := False;
8847 //
\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é
8848 if AllItemAction.Checked then
8849 AllItemAction.Checked := False;
8850 if LogItemAction.Checked then
8851 LogItemAction.Checked := False;
8852 if NewItemAction.Checked then
8853 NewItemaction.Checked := False;
8856 if Length( SelectComboBox.Text ) = 0 then
8857 SetListViewType( gvtAll )
8859 SetListViewType( gvtUser, SelectComboBox.Text, false);
8862 procedure TGikoForm.SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
8863 Shift: TShiftState);
8866 if Key = VK_Return then
8869 end else if Length( SelectComboBox.Text ) = 0 then
8871 AllItemAction.Checked := True;
8872 LogItemAction.Checked := False;
8873 NewItemAction.Checked := False;
8875 //
\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é
8876 if AllItemAction.Checked then
8877 AllItemAction.Checked := False;
8878 if LogItemAction.Checked then
8879 LogItemAction.Checked := False;
8880 if NewItemAction.Checked then
8881 NewItemaction.Checked := False;
8886 procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
8891 if Length( SelectComboBox.Text ) = 0 then
8893 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
8894 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
8899 //
\8di
\82è
\8d\9e\82Ý
\8c\9f\8dõ
\82Ì
\97\9a\97ð
\8dX
\90V
8900 procedure TGikoForm.ModifySelectList;
8907 if SelectComboBox.Parent = nil then
8910 if Length( SelectComboBox.Text ) > 0 then
8912 oldText := SelectComboBox.Text;
8913 idx := GikoSys.Setting.SelectTextList.IndexOf( oldText );
8915 GikoSys.Setting.SelectTextList.Delete( idx );
8916 idx := SelectComboBox.Items.IndexOf( oldText );
8918 SelectComboBox.Items.Delete( idx );
8919 GikoSys.Setting.SelectTextList.Insert( 0, oldText );
8920 SelectComboBox.Items.Insert( 0, oldText );
8921 SelectComboBox.Text := oldText;
8929 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\8dÄ
\93Ç
\82Ý
\8d\9e\82Ý
\82·
\82é
8930 procedure TGikoForm.SelectResActionExecute(Sender: TObject);
8932 Dlg: TListSelectDialog;
8933 ThreadItem : TThreadItem;
8934 FilterList : TStringList;
8937 Dlg := TListSelectDialog.Create(Self);
8939 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
8940 Dlg.SelectComboBox.Text := FSelectResWord;
8942 if Dlg.ModalResult = mrOK then begin
8943 SelectResAction.Checked := True;
8944 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
8945 //
\8bó
\93ü
\97Í
\82Å OK
\82Í
\8di
\82è
\8d\9e\82Ý
\89ð
\8f\9c\82Æ
\93¯
\88Ó
\8b`
8946 ResRangeAction.Execute;
8948 GikoSys.ResRange := Ord( grrSelect );
8950 //
\8dÅ
\8cã
\82É
\90Ý
\92è
\82µ
\82½
\82à
\82Ì
\82ð
\8ao
\82¦
\82Ä
\82¨
\82
8951 FSelectResWord := Dlg.SelectComboBox.Text;
8953 //
\8c\9f\8dõ
\97\9a\97ð
\82Ì
\8dX
\90V
8954 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
8956 GikoSys.Setting.SelectTextList.Delete(idx);
8957 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
8958 while Dlg.SelectComboBox.Items.Count > 100 do begin
8959 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
8963 if SelectComboBox.Parent <> nil then
8964 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
8968 //
\83t
\83B
\83\8b\83^
\82Ì
\90Ý
\92è
8969 FilterList := TStringList.Create;
8971 GikoSys.FSelectResFilter.Reverse := True;
8972 FilterList.Delimiter := ' '; //
\8bæ
\90Ø
\82è
\8eq
\82ð
\94¼
\8ap
\83X
\83y
\81[
\83X
\82É
\90Ý
\92è
8973 FilterList.DelimitedText := Dlg.SelectComboBox.Text;
8975 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
8980 //
\83X
\83\8c\83b
\83h
\82Ì
\8dÄ
\95`
\89æ
8981 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
8982 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
8984 ThreadItem := GetActiveContent;
8985 if ThreadItem <> nil then
8986 InsertBrowserTab( ThreadItem, True );
8989 //
\83L
\83\83\83\93\83Z
\83\8b
8990 if GikoSys.ResRange <> Ord( grrSelect ) then
8991 ResRangeAction.Execute;
8999 procedure TGikoForm.SelectResActionUpdate(Sender: TObject);
9001 SelectResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9004 procedure TGikoForm.FormKeyUp(Sender: TObject; var Key: Word;
9005 Shift: TShiftState);
9009 //
\91S
\82Ä
\82Ì
\83\8c\83X
\82ð
\95\
\8e¦
9010 procedure TGikoForm.AllResActionExecute(Sender: TObject);
9012 ThreadItem : TThreadItem;
9013 FilterList : TStringList;
9016 if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
9017 and (FActiveContent.FBrowser.Busy) then Exit;
9019 FResRangeMenuSelect := Ord( grrAll );
9020 AllResAction.Checked := True;
9022 if GikoSys.ResRange <> Ord( grrAll ) then begin
9023 GikoSys.ResRange := Ord( grrAll );
9025 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
9026 FilterList := TStringList.Create;
9028 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
9029 GikoSys.FSelectResFilter.Reverse := False;
9034 FSelectResWord := '';
9036 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
9037 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
9038 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9040 ThreadItem := GetActiveContent;
9041 if ThreadItem <> nil then
9042 InsertBrowserTab( ThreadItem, True );
9046 procedure TGikoForm.AllResActionUpdate(Sender: TObject);
9048 AllResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9051 procedure TGikoForm.ReloadClick(Sender: TObject);
9053 ThreadItem : TThreadItem;
9056 if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
9057 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);
9059 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9060 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9062 ThreadItem := GetActiveContent;
9063 if ThreadItem <> nil then
9064 InsertBrowserTab( ThreadItem, True );
9069 procedure TGikoForm.GoBackClick(Sender: TObject);
9071 ThreadItem : TThreadItem;
9075 if GikoSys.FAbon.GoForward =false then begin
9076 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);
9078 s := GikoSys.FAbon.NGwordname;
9079 StatusBar.Panels.Items[2].Text := s;
9080 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9081 StatusBarResize(Sender);
9082 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9083 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9085 ThreadItem := GetActiveContent;
9086 if ThreadItem <> nil then
9087 InsertBrowserTab( ThreadItem, True );
9092 procedure TGikoForm.GoFowardClick(Sender: TObject);
9094 ThreadItem : TThreadItem;
9098 if GikoSys.FAbon.GoBack =false then begin
9099 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);
9101 s := GikoSys.FAbon.NGwordname;
9102 StatusBar.Panels.Items[2].Text := s;
9103 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9104 StatusBarResize(Sender);
9105 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9106 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9108 ThreadItem := GetActiveContent;
9109 if ThreadItem <> nil then
9110 InsertBrowserTab( ThreadItem, True );
9115 procedure TGikoForm.SelectComboBoxSplitterMouseMove(Sender: TObject;
9116 Shift: TShiftState; X, Y: Integer);
9121 If (SelectComboBox.Parent <> nil) and (IsDraggingSelectComboBox) Then begin
9124 pos := SelectComboBoxSplitter.ClientToScreen( pos );
9125 w := SelectComboBox.Width + (pos.X - DraggingSelectComboBoxPosition.X);
9127 If w <= 50 Then Begin
9128 //
\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
9129 //
\81u
\8e~
\82Ü
\82Á
\82½(50pixel)
\88Ê
\92u
\81v
\82É
\82È
\82é
\82æ
\82¤
\82É
9130 pos.X := pos.X + (50 - w);
9132 //
\8f¬
\82³
\82
\82È
\82è
\82·
\82¬
\82È
\82¢
\82æ
\82¤
\82É
9136 //
\83`
\83\89\82Â
\82«
\8cy
\8c¸
\82Ì
\88×
9137 If SelectComboBox.Width <> w Then Begin
9138 SelectComboBox.Width := w;
9139 GikoSys.Setting.SelectComboBoxWidth := w;
9140 DraggingSelectComboBoxPosition := pos;
9142 //
\83V
\83F
\83u
\83\8d\83\93\88Ê
\92u
\82ª
\95Ï
\82í
\82é
\82Ì
\82Å BandInfo
\82Ì
\8dÄ
\90Ý
\92è
9143 ResetBandInfo( ListCoolBar, ListToolBar );
9148 procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;
9149 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9153 IsDraggingSelectComboBox := True;
9156 DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );
9159 procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;
9160 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9162 IsDraggingSelectComboBox := False;
9165 procedure TGikoForm.StatusBarResize(Sender: TObject);
9167 StatusBar.Panels[1].Width := StatusBar.Width -
9168 StatusBar.Panels[0].Width -
9169 StatusBar.Panels[2].Width;
9171 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\92Ê
\8fí
\81v
9172 procedure TGikoForm.IndividualAbon1Click(Sender: TObject);
9174 ThreadItem : TThreadItem;
9177 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);
9178 ThreadItem := GetActiveContent;
9179 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9180 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9182 if ThreadItem <> nil then
9183 InsertBrowserTab( ThreadItem, True );
9185 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\93§
\96¾
\81v
9186 procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
9188 ThreadItem : TThreadItem;
9191 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);
9192 ThreadItem := GetActiveContent;
9193 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9194 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9195 if ThreadItem <> nil then
9196 InsertBrowserTab( ThreadItem, True );
9198 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c\81i
\81j
9199 procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
9201 ThreadItem : TThreadItem;
9205 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9206 GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);
9207 ThreadItem := GetActiveContent;
9208 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9209 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9210 if ThreadItem <> nil then
9211 InsertBrowserTab( ThreadItem, True );
9213 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9214 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9217 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c
9218 procedure TGikoForm.N42Click(Sender: TObject);
9220 IndividualForm :TIndividualAbonForm;
9221 ThreadItem : TThreadItem;
9225 IndividualForm := TIndividualAbonForm.Create(Self);
9227 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9228 for i :=0 to GikoSys.FAbon.GetAbonResCount-1 do begin
9229 IndividualForm.ComboBox1.Items.Add(GikoSys.FAbon.GetAbonResString(i));
9231 if IndividualForm.ShowModal = mrOK then begin
9232 GikoSys.FAbon.DeleteIndividualAbon(IndividualForm.ResNumber);
9234 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9235 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9236 ThreadItem := GetActiveContent;
9237 if ThreadItem <> nil then
9238 InsertBrowserTab( ThreadItem, True );
9240 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9241 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9244 IndividualForm.Free;
9248 procedure TGikoForm.SelectComboBoxEnter(Sender: TObject);
9251 if (Length( SelectComboBox.Text ) = 0) or
9252 (SelectComboBox.Text = SELECTCOMBOBOX_NAME) then
9254 SelectComboBox.Text := '';
9255 SelectComboBox.Color := clWindow;
9260 procedure TGikoForm.N51Click(Sender: TObject);
9264 //
\94Â
\96¼
\8c\9f\8dõ
9265 procedure TGikoForm.TreeSelectSearchBoardNameExecute(Sender: TObject);
9269 CurItem : TTreeNode;
9272 if InputQuery('
\94Â
\96¼
\8c\9f\8dõ','
\94Â
\96¼
\82Ì
\93ü
\97Í',s) then begin
9275 if TreeView.Selected = nil then
9276 CurItem := TreeView.Items.GetFirstNode
9278 CurItem := TreeView.Selected.GetNext;
9279 if CurItem = nil then
9280 CurItem := TreeView.Items.GetFirstNode;
9282 while CurItem <> nil do begin
9283 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
9286 CurItem := CurItem.GetNext;
9289 if CurItem = nil then begin
9290 msg := '
\90æ
\93ª
\82É
\96ß
\82è
\82Ü
\82·
\82©
\81H';
9291 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9292 CurItem := TreeView.Items.GetFirstNode;
9296 TreeView.Select(CurItem);
9299 TreeView.Select(CurItem);
9301 msg := '
\8e\9f\82É
\8ds
\82«
\82Ü
\82·
\82©
\81H';
9302 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9316 procedure TGikoForm.CabinetFavoriteActionExecute(Sender: TObject);
9322 if CabinetPanel.Visible then begin
9323 if FTreeType = gttFavorite then begin
9324 CabinetVisible( False );
9325 CabinetFavoriteAction.Checked := False;
9327 CabinetFavoriteAction.Checked := True;
9330 CabinetVisible( True );
9331 CabinetFavoriteAction.Checked := True;
9334 // BBS...BBS, History, Favorite
9335 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 1;
9337 b := CabinetSelectPopupMenu.Items.Count - 1;
9338 for i := 0 to b do begin
9339 item := CabinetSelectPopupMenu.Items[ i ];
9340 if item is TBBSMenuItem then begin
9341 item.Checked := False;
9342 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
9343 CabinetMenu.Items[ i ].Checked := False;
9347 //
\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Ö
9348 HistoryToolBar.Hide;
9349 FavoriteToolBar.Show;
9350 TreeView.Visible := False;
9351 FavoriteTreeView.Visible := True;
9353 CabinetSelectToolButton.Caption := '
\82¨
\8bC
\82É
\93ü
\82è';
9354 FTreeType := gttFavorite;
9356 //
\83\81\83j
\83\85\81[
\8by
\82Ñ
\83{
\83^
\83\93\82Ì
\83`
\83F
\83b
\83N
\82ð
\90Ý
\92è
9357 CabinetBBSAction.Checked := False;
9358 CabinetHistoryAction.Checked := False;
9360 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\83c
\83\8a\81[
\82ð
\93W
\8aJ
9361 FavoriteTreeView.Items.GetFirstNode.Expanded := True;
9365 procedure TGikoForm.FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
9368 if (SenderNode = nil) or (SourceNode = nil) or (SenderNode = SourceNode) then
9371 if TObject(SenderNode.Data) is TFavoriteFolder then
9372 SourceNode.MoveTo(SenderNode, naAddChild)
9374 SourceNode.MoveTo(SenderNode, naInsert);
9378 procedure TGikoForm.FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
9382 FavoBoardItem: TFavoriteBoardItem;
9383 FavoThreadItem: TFavoriteThreadItem;
9385 ThreadItem: TThreadItem;
9388 if (SenderNode = nil) or (Source = nil) then
9391 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9392 FavNode := SenderNode.Parent
9394 FavNode := SenderNode;
9398 if Source is TBoard then begin
9399 Board := TBoard( Source );
9400 FavoBoardItem := TFavoriteBoardItem.CreateWithItem( Board );
9401 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, FavoBoardItem);
9402 Node.ImageIndex := 15;
9403 Node.SelectedIndex := 15;
9404 end else if Source is TFavoriteBoardItem then begin
9405 FavoBoardItem := TFavoriteBoardItem( Source );
9406 Board := FavoBoardItem.Item;
9407 if Board <> nil then
9408 if not Board.IsThreadDatRead then
9409 GikoSys.ReadSubjectFile(Board);
9410 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, Source);
9411 Node.ImageIndex := 15;
9412 Node.SelectedIndex := 15;
9413 end else if Source is TThreadItem then begin
9414 ThreadItem := TThreadItem( Source );
9415 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9416 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9417 Node.ImageIndex := 16;
9418 Node.SelectedIndex := 16;
9419 end else if Source is TBrowserRecord then begin
9420 ThreadItem := TBrowserRecord( Source ).FThread;
9421 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9422 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9423 Node.ImageIndex := 16;
9424 Node.SelectedIndex := 16;
9425 end else if Source is TFavoriteThreadItem then begin
9426 FavoThreadItem := TFavoriteThreadItem( Source );
9427 ThreadItem := FavoThreadItem.Item;
9428 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, Source);
9429 Node.ImageIndex := 16;
9430 Node.SelectedIndex := 16;
9433 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9435 FavoriteMoveTo( SenderNode, Node );
9439 procedure TGikoForm.FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
9442 SourceNode: TTreeNode;
9443 LinkToolButton: TLinkToolButton;
9446 if SenderNode = nil then
9449 if not (TObject( SenderNode.Data ) is TFavoriteFolder) then
9450 if FDropSpaceNode <> nil then
9451 SenderNode := FDropSpaceNode;
9453 if Source = FavoriteTreeView then begin
9455 SourceNode := FavoriteTreeView.Selected;
9456 FavoriteMoveTo( SenderNode, SourceNode );
9458 end else if Source is TLinkToolButton then begin
9460 LinkToolButton := TLinkToolButton( Source );
9461 //ShowMessage(LinkToolButton.Text);
9462 SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
9463 FavoriteMoveTo( SenderNode, SourceNode );
9465 end else if Source = BrowserTab then begin
9467 idx := BrowserTab.TabIndex;
9468 FavoriteAddTo( SenderNode, BrowserTab.Tabs.Objects[idx] );
9469 end else if Source = ListView then begin
9471 FavoriteAddTo( SenderNode, ListView.Selected.Data );
9473 end else if Source = TreeView then begin
9475 FavoriteAddTo( SenderNode, TreeView.Selected.Data );
9483 procedure TGikoForm.FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
9486 SenderNode: TTreeNode;
9489 SenderNode := FavoriteTreeView.GetNodeAt(X, Y);
9490 if SenderNode <> nil then begin
9491 FavoriteDragDrop( SenderNode, Source );
9494 if FDropSpaceNode <> nil then begin
9495 FDropSpaceNode.Free;
9496 FDropSpaceNode := nil;
9501 procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject;
9502 Node: TTreeNode; var S: String);
9505 FavoriteTreeView.ReadOnly := True;
9510 procedure TGikoForm.FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
9511 Shift: TShiftState);
9517 FClickNode := FavoriteTreeView.Selected;
9518 FavoriteTreeViewRenameActionExecute( Sender );
9522 FClickNode := FavoriteTreeView.Selected;
9523 FavoriteTreeViewDeleteActionExecute( Sender );
9527 FavoriteClick( FavoriteTreeView.Selected );
9528 FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
9531 FavoriteTreeViewDblClick( Sender );
9536 procedure TGikoForm.FavoriteTreePopupMenuPopup(Sender: TObject);
9539 LinkToolButton: TLinkToolButton;
9542 if FavoriteTreePopupMenu.PopupComponent = FavoriteTreeView then begin
9544 FClickNode := FavoriteTreeView.Selected;
9546 end else if FavoriteTreePopupMenu.PopupComponent is TLinkToolButton then begin
9548 LinkToolButton := TLinkToolButton( FavoriteTreePopupMenu.PopupComponent );
9549 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9550 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9551 FClickNode := FavoriteTreeView.Items[i];
9555 for i := 0 to FClickNode.Count - 1 do begin
9556 if FClickNode.Item[i].Data = LinkToolButton.Data then begin
9557 FClickNode := FClickNode.Item[i];
9564 if FClickNode = nil then begin
9565 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9566 FavoriteTreeDeletePopupMenu.Visible := False;
9567 FavoriteTreeRenamePopupMenu.Visible := False;
9568 FavoriteTreeNewFolderPopupMenu.Visible := False;
9569 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9570 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9571 FavoriteTreeURLCopyPopupMenu.Visible := False;
9572 FavoriteTreeNameCopyPopupMenu.Visible := False;
9573 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9574 FavoriteTreeReloadPopupMenu.Visible := False;
9575 FavoriteTreeLogDeletePopupMenu.Visible := False;
9576 end else if FClickNode.IsFirstNode then begin
9577 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9578 FavoriteTreeDeletePopupMenu.Visible := False;
9579 FavoriteTreeRenamePopupMenu.Visible := False;
9580 FavoriteTreeNewFolderPopupMenu.Visible := True;
9581 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9582 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9583 FavoriteTreeURLCopyPopupMenu.Visible := False;
9584 FavoriteTreeNameCopyPopupMenu.Visible := True;
9585 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9586 FavoriteTreeReloadPopupMenu.Visible := False;
9587 FavoriteTreeLogDeletePopupMenu.Visible := False;
9588 end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9589 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9590 FavoriteTreeDeletePopupMenu.Visible := True;
9591 FavoriteTreeRenamePopupMenu.Visible := False;
9592 FavoriteTreeNewFolderPopupMenu.Visible := True;
9593 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9594 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9595 FavoriteTreeURLCopyPopupMenu.Visible := False;
9596 FavoriteTreeNameCopyPopupMenu.Visible := True;
9597 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9598 FavoriteTreeReloadPopupMenu.Visible := False;
9599 FavoriteTreeLogDeletePopupMenu.Visible := False;
9600 end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
9601 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9602 FavoriteTreeDeletePopupMenu.Visible := True;
9603 FavoriteTreeRenamePopupMenu.Visible := True;
9604 FavoriteTreeNewFolderPopupMenu.Visible := True;
9605 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9606 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9607 FavoriteTreeURLCopyPopupMenu.Visible := False;
9608 FavoriteTreeNameCopyPopupMenu.Visible := True;
9609 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9610 FavoriteTreeReloadPopupMenu.Visible := False;
9611 FavoriteTreeLogDeletePopupMenu.Visible := False;
9612 end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
9613 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9614 FavoriteTreeDeletePopupMenu.Visible := True;
9615 FavoriteTreeRenamePopupMenu.Visible := True;
9616 FavoriteTreeNewFolderPopupMenu.Visible := True;
9617 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9618 //FavoriteTreeBrowseThreadPopupMenu.Visible := True;
9619 FavoriteTreeURLCopyPopupMenu.Visible := True;
9620 FavoriteTreeNameCopyPopupMenu.Visible := True;
9621 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9622 FavoriteTreeReloadPopupMenu.Visible := True;
9623 FavoriteTreeLogDeletePopupMenu.Visible := True;
9624 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
9625 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9626 FavoriteTreeDeletePopupMenu.Visible := True;
9627 FavoriteTreeRenamePopupMenu.Visible := True;
9628 FavoriteTreeNewFolderPopupMenu.Visible := True;
9629 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9630 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9631 FavoriteTreeURLCopyPopupMenu.Visible := True;
9632 FavoriteTreeNameCopyPopupMenu.Visible := True;
9633 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9634 FavoriteTreeReloadPopupMenu.Visible := True;
9635 FavoriteTreeLogDeletePopupMenu.Visible := False;
9637 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9638 FavoriteTreeDeletePopupMenu.Visible := False;
9639 FavoriteTreeRenamePopupMenu.Visible := False;
9640 FavoriteTreeNewFolderPopupMenu.Visible := False;
9641 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9642 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9643 FavoriteTreeURLCopyPopupMenu.Visible := False;
9644 FavoriteTreeNameCopyPopupMenu.Visible := False;
9645 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9646 FavoriteTreeReloadPopupMenu.Visible := False;
9647 FavoriteTreeLogDeletePopupMenu.Visible := False;
9652 procedure TGikoForm.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
9654 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';
9655 DEL_MSG = '
\81g^0
\81h
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
9656 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9659 if FClickNode = nil then
9661 if FClickNode.IsFirstNode then
9663 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
9664 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9665 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9668 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9673 //FDeleteList.Add(FClickNode.Data);
9674 //SetDeleteItemList(FClickNode);
9682 procedure TGikoForm.FavoriteTreeViewRenameActionExecute(Sender: TObject);
9687 if FClickNode = nil then
9689 if FClickNode.IsFirstNode then
9691 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then
9693 FavoriteTreeView.ReadOnly := False;
9694 if (FTreeType = gttFavorite) and (CabinetPanel.Visible) then begin
9695 node := FClickNode.Parent;
9696 while node <> nil do begin
9697 node.Expanded := True;
9698 node := node.Parent;
9700 FClickNode.EditText;
9702 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 );
9709 procedure TGikoForm.FavoriteTreeViewNewFolderActionExecute(
9712 NewFavFolder: TFavoriteFolder;
9716 if FClickNode = nil then
9720 if not (TObject(FClickNode.Data) is TFavoriteFolder) then begin
9721 FavoriteTreeView.Selected := FClickNode.Parent;
9722 FClickNode := FClickNode.Parent;
9725 NewFavFolder := TFavoriteFolder.Create;
9726 Node := FavoriteTreeView.Items.AddChildObject(FClickNode, '
\90V
\82µ
\82¢
\83t
\83H
\83\8b\83_', NewFavFolder);
9727 Node.ImageIndex := 14;
9728 Node.SelectedIndex := 14;
9729 // FClickNode.Selected.Expanded := True;
9730 FavoriteTreeView.Selected := Node;
9732 FavoriteTreeViewRenameAction.Execute;
9738 procedure TGikoForm.ToolButton19Click(Sender: TObject);
9741 FavoriteArrangeActionExecute( nil );
9745 procedure TGikoForm.FavoriteBrowseFolder( node: TTreeNode );
9750 if not (TObject(node.Data) is TFavoriteFolder) then
9753 for i := 0 to node.Count - 1 do
9755 if TObject(node.Item[i].Data) is TFavoriteFolder then
9756 FavoriteBrowseFolder( node.Item[i] )
9757 else if TObject(node.Item[i].Data) is TFavoriteThreadItem then
9758 FavoriteClick( node.Item[i], False );
9763 procedure TGikoForm.FavoriteTreeViewBrowseFolderActionExecute(
9767 FavoriteBrowseFolder( FClickNode );
9768 //BrowserTab.OnChange(nil);
9772 procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject);
9775 FClickNode := FavoriteTreeView.Selected;
9776 FavoriteTreeViewReloadActionExecute( Sender );
9780 procedure TGikoForm.FavoriteTreeViewLogDeleteActionExecute(
9783 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';
9784 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9786 ThreadItem: TThreadItem;
9787 FavThread: TFavoriteThreadItem;
9790 if FClickNode = nil then Exit;
9791 if not (TObject(FClickNode.Data) is TFavoriteThreadItem) then Exit;
9793 FavThread := TFavoriteThreadItem( FClickNode.Data );
9794 ThreadItem := FavThread.Item;
9797 if GikoSys.Setting.DeleteMsg then begin
9798 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
9799 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9803 DeleteHistory(ThreadItem);
9804 DeleteTab(ThreadItem);
9805 ThreadItem.DeleteLogFile;
9813 procedure TGikoForm.FavoriteTreeViewReloadActionExecute(Sender: TObject);
9815 ThreadItem: TThreadItem;
9816 FavThread: TFavoriteThreadItem;
9818 FavBoard: TFavoriteBoardItem;
9822 if FClickNode = nil then Exit;
9824 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
9826 if TObject( FClickNode.Data ) is TFavoriteThreadItem then begin
9827 FavThread := TFavoriteThreadItem( FClickNode.Data );
9828 ThreadItem := FavThread.Item;
9829 if ThreadItem <> nil then
9830 DownloadContent(ThreadItem, shiftDown);
9831 end else if TObject( FClickNode.Data ) is TFavoriteBoardItem then begin
9832 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9833 Board := FavBoard.Item;
9834 DownloadList(Board, shiftDown);
9839 procedure TGikoForm.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
9841 FavThread : TFavoriteThreadItem;
9842 FavBoard : TFavoriteBoardItem;
9846 if FClickNode = nil then Exit;
9848 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9850 FavThread := TFavoriteThreadItem( FClickNode.Data );
9851 s := FavThread.URL + #13#10;
9853 Clipboard.AsText := s;
9855 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9857 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9858 s := FavBoard.URL + #13#10;
9860 Clipboard.AsText := s;
9866 procedure TGikoForm.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
9868 ThreadItem: TThreadItem;
9869 FavThread: TFavoriteThreadItem;
9871 FavBoard: TFavoriteBoardItem;
9875 if FClickNode = nil then Exit;
9877 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9879 FavThread := TFavoriteThreadItem( FClickNode.Data );
9880 ThreadItem := FavThread.Item;
9883 s := ThreadItem.Title + #13#10;
9885 Clipboard.AsText := s;
9889 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9891 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9892 Board := FavBoard.Item;
9893 if Board <> nil then
9894 if not Board.IsThreadDatRead then
9895 GikoSys.ReadSubjectFile(Board);
9898 s := Board.Title + #13#10;
9900 Clipboard.AsText := s;
9908 procedure TGikoForm.FavoriteTreeViewNameURLCopyActionExecute(
9911 ThreadItem: TThreadItem;
9912 FavThread: TFavoriteThreadItem;
9914 FavBoard: TFavoriteBoardItem;
9918 if FClickNode = nil then Exit;
9920 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9922 FavThread := TFavoriteThreadItem( FClickNode.Data );
9923 ThreadItem := FavThread.Item;
9926 s := ThreadItem.URL + #13#10 + ThreadItem.Title + #13#10;
9928 Clipboard.AsText := s;
9932 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9934 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9935 Board := FavBoard.Item;
9936 if Board <> nil then
9937 if not Board.IsThreadDatRead then
9938 GikoSys.ReadSubjectFile(Board);
9941 s := Board.URL + #13#10 + Board.Title + #13#10;
9943 Clipboard.AsText := s;
9951 function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
9957 for i := 0 to Node.Count - 1 do begin
9958 if Node.Item[i].Data = FindPointer then begin
9959 Result := Node.Item[i];
9961 end else if Node.Item[i].Count > 0 then begin
9962 Found := TreeNodeDataFind( Node.Item[i], FindPointer );
9963 if Found <> nil then begin
9974 procedure TGikoForm.LinkToolBarDragDrop(Sender, Source: TObject; X,
9978 SenderNode: TTreeNode;
9982 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9983 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9984 SenderNode := FavoriteTreeView.Items[i];
9989 FavoriteDragDrop( SenderNode, Source );
9993 procedure TGikoForm.BrowserTabMouseUp(Sender: TObject;
9994 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9996 if FDragWFirst <> true then begin
9997 FDragWFirst := false;
9998 end else if (X = FMouseDownPos.X) and (Y = FMouseDownPos.Y) then begin
9999 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10000 if GikoSys.Setting.ListWidthState = glsMin then begin
10001 BrowserMaxAndFocusAction.Execute;
10004 if GikoSys.Setting.ListHeightState = glsMin then begin
10005 BrowserMaxAndFocusAction.Execute;
10011 procedure TGikoForm.LinkToolBarDragOver(Sender, Source: TObject; X,
10012 Y: Integer; State: TDragState; var Accept: Boolean);
10015 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
10019 procedure TGikoForm.ResRangeActionExecute(Sender: TObject);
10021 case FResRangeMenuSelect of
10022 Ord( grrAll ): AllResAction.Execute;
10023 Ord( grrKoko ): OnlyKokoResAction.Execute;
10024 Ord( grrNew ): OnlyNewResAction.Execute;
10025 100: OnlyAHundredResAction.Execute;
10029 procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
10033 if FDropSpaceNode <> nil then begin
10034 FDropSpaceNode.Free;
10035 FDropSpaceNode := nil;
10041 procedure TGikoForm.ListCoolBarContextPopup(Sender: TObject;
10042 MousePos: TPoint; var Handled: Boolean);
10045 FToolBarSettingSender := tssList;
10046 MousePos := ListCoolBar.ClientToScreen( MousePos );
10047 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10051 procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
10052 MousePos: TPoint; var Handled: Boolean);
10055 FToolBarSettingSender := tssMain;
10056 MousePos := MainCoolBar.ClientToScreen( MousePos );
10057 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10061 procedure TGikoForm.BrowserCoolBarContextPopup(Sender: TObject;
10062 MousePos: TPoint; var Handled: Boolean);
10065 FToolBarSettingSender := tssBrowser;
10066 MousePos := BrowserCoolBar.ClientToScreen( MousePos );
10067 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10070 procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
10073 if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
10074 ShowMessage('
\83t
\83@
\83C
\83\8b\82ð
\8fo
\97Í
\82µ
\82Ü
\82µ
\82½');
10076 ShowMessage('
\83t
\83@
\83C
\83\8b\82Ì
\8fo
\97Í
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½');
10079 procedure TGikoForm.SetListViewBackGroundColor(value: TColor);
10081 if FListViewBackGroundColor <> value then begin
10082 FListViewBackGroundColor := value;
10083 ListView.Color := FListViewBackGroundColor;
10086 procedure TGikoForm.ExportFavoriteFileBeforeExecute(Sender: TObject);
10088 ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
10091 procedure TGikoForm.CabinetBBSActionExecute(Sender: TObject);
10094 if CabinetPanel.Visible then begin
10095 if FTreeType = gtt2ch then begin
10096 CabinetVisible( False );
10098 CabinetBBSAction.Checked := False;
10100 CabinetBBSAction.Checked := True;
10103 CabinetVisible( True );
10104 CabinetBBSAction.Checked := True;
10107 if FActiveBBS = nil then
10108 ShowBBSTree( BBSs[ 0 ] )
10110 ShowBBSTree( FActiveBBS );
10114 procedure TGikoForm.FavoriteTreeViewBrowseThreadActionExecute(
10117 threadItem : TThreadItem;
10120 if FClickNode = nil then Exit;
10122 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10124 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10125 if threadItem = nil then
10127 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
10133 procedure TGikoForm.FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
10135 threadItem : TThreadItem;
10136 boardItem : TBoard;
10139 if FClickNode = nil then Exit;
10141 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10143 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10144 if threadItem = nil then
10146 GikoSys.OpenBrowser( threadItem.ParentBoard.URL, gbtAuto );
10148 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10150 boardItem := TFavoriteBoardItem( FClickNode.Data ).Item;
10151 if boardItem = nil then
10153 GikoSys.OpenBrowser( boardItem.URL, gbtAuto );
10159 procedure TGikoForm.UpBoardActionExecute(Sender: TObject);
10162 SelectTreeNode( GetActiveContent.ParentBoard, True );
10166 procedure TGikoForm.UpBoardActionUpdate(Sender: TObject);
10169 UpBoardAction.Enabled := GetActiveContent <> nil;
10173 procedure TGikoForm.BrowserTabContextPopup(Sender: TObject;
10174 MousePos: TPoint; var Handled: Boolean);
10178 idx := BrowserTab.IndexOfTabAt(MousePos.X, MousePos.Y);
10179 if BrowserTab.TabIndex <> idx then begin
10180 BrowserTab.TabIndex := idx;
10181 BrowserTab.OnChange(nil);
10186 procedure TGikoForm.KoreCopyExecute(Sender: TObject);
10188 KonoresCopy(KokoPopupMenu.Tag, true);
10190 procedure TGikoForm.KonoresCopy(Number: Integer; ReplaceTag : Boolean);
10192 ThreadItem: TThreadItem;
10198 boardPlugIn : TBoardPlugIn;
10200 if Number = 0 then Exit;
10201 ThreadItem := GetActiveContent;
10203 if ThreadItem <> nil then begin
10204 if ThreadItem.IsBoardPlugInAvailable then begin
10205 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
10206 boardPlugIn := ThreadItem.BoardPlugIn;
10208 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
10209 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
10210 //
\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
10211 tmp := boardPlugIn.GetDat( DWORD( threadItem ), Number );
10213 FileName := ThreadItem.FilePath;
10214 tmp := GikoSys.ReadThreadFile(FileName, Number);
10216 if tmp <> '' then begin
10217 Res := GikoSys.DivideStrLine(tmp);
10219 Header := IntToStr(Number) + '
\81F' + Res.FName + '
\81F' + Res.FDateTime + #13#10;
10220 if ReplaceTag then begin
10221 Header := CustomStringReplace(Header, '</b>', '',true);
10222 Header := CustomStringReplace(Header, '<b>', '',true);
10224 if ThreadItem.IsBoardPlugInAvailable then begin
10225 Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
10226 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10228 Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
10229 Body := CustomStringReplace(Body, ' <br>', #13#10,true);
10230 Body := CustomStringReplace(Body, '<br> ', #13#10,true);
10231 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10234 Body := CustomStringReplace(Body, '</a>', '',true);
10236 Body := GikoSys.DeleteLink(Body);
10237 if ReplaceTag then begin
10238 Body := CustomStringReplace(Body, '<', '<');
10239 Body := CustomStringReplace(Body, '>', '>');
10240 Body := CustomStringReplace(Body, '"', '"');
10241 Body := CustomStringReplace(Body, '&', '&');
10242 //Body := CustomStringReplace(Body, ' ', ' ');
10245 Header := Header + Body;
10247 Clipboard.SetTextBuf( PChar(Header) );
10253 procedure TGikoForm.BrowserTabPopupMenuPopup(Sender: TObject);
10255 AddRoundNameMenu(dummy1);
10258 procedure TGikoForm.FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
10260 FavoriteDM.URLReplace(oldURLs, newURLs);
10263 procedure TGikoForm.RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
10265 RoundList.URLReplace(oldURLs, newURLs);
10268 procedure TGikoForm.TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
10272 tempString: string;
10275 oldBoardName: string;
10277 newBoardName: string;
10278 TabList: TStringList;
10280 TabList := TStringList.Create;
10281 if oldURLs.Count <> newURLs.Count then
10283 //
\82±
\82±
\82©
\82ç
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10284 for j :=0 to oldURLs.Count - 1 do begin
10285 for i :=0 to TabList.Count - 1 do begin
10286 if TabList.Text = oldURLs[j] then
10287 TabList.Text := newURLs[j];
10290 //
\82±
\82±
\82Ü
\82Å
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10292 //
\82±
\82±
\82©
\82ç
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10293 //
\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
10294 for i := 0 to oldURLs.Count - 1 do begin
10295 tmpURL := Copy(oldURLs[i], 1, Length(oldURLs[i]) -1);
10296 oldHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10297 oldBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10298 tmpURL := Copy(newURLs[i], 1, Length(newURLs[i]) -1);
10299 newHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10300 newBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10302 for j := 0 to TabList.Count - 1 do begin
10303 tempString := TabList.Text;
10304 if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
10305 tempString := StringReplace(tempString, oldHost, newHost,[]);
10306 TabList.Text := tempString;
10310 //
\82±
\82±
\82Ü
\82Å
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10314 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
10315 procedure TGikoForm.OnMinimize;
10317 FIsMinimize := mtMinimizing;
10318 if FActiveContent <> nil then
10319 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
10320 PostMessage( Handle, USER_MINIMIZED, 0, 0 );
10323 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
10324 procedure TGikoForm.OnMinimized;
10326 FIsMinimize := mtMinimized;
10327 FIsIgnoreResize := False;
10330 procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
10332 coolSet : TCoolSet;
10333 toolbar : TToolBar;
10335 affectedBand : TCoolBand;
10338 if (FOldFormWidth = Width) and not IsIconic( Handle ) and not FIsIgnoreResize then begin
10339 FIsIgnoreResize := True;
10340 PostMessage( Handle, USER_RESIZED, 0, 0 );
10341 if not (Sender is TToolBar) or (CoolBar = nil) then
10343 toolbar := TToolBar( Sender );
10345 //
\95Ï
\8dX
\82³
\82ê
\82½
\83N
\81[
\83\8b\83o
\81[
\82Ì
\92l
\82ð
\95Û
\91¶
10346 if CoolBar = MainCoolBar then begin
10347 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
10348 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10349 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10350 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10351 GikoSys.Setting.MainCoolSet[i] := CoolSet;
10353 end else if CoolBar = ListCoolBar then begin
10354 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
10355 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10356 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10357 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10358 GikoSys.Setting.ListCoolSet[i] := CoolSet;
10360 end else if CoolBar = BrowserCoolBar then begin
10361 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
10362 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10363 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10364 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10365 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
10368 //
\95\9d\82Ì
\95Ï
\8dX
\82³
\82ê
\82½
\83o
\83\93\83h
\82ð
\8c©
\82Â
\82¯
\82é
10369 affectedBand := nil;
10370 for i := CoolBar.Bands.Count - 1 downto 0 do begin
10371 if CoolBar.Bands[ i ].Control.Handle = toolbar.Handle then begin
10372 band := CoolBar.Bands[ i ];
10373 if band.Break or (i = 0) then begin
10374 if i + 1 < CoolBar.Bands.Count then
10375 if not CoolBar.Bands[ i + 1 ].Break then
10376 affectedBand := CoolBar.Bands[ i + 1 ];
10379 affectedBand := CoolBar.Bands[ i - 1 ];
10384 //
\83h
\83\89\83b
\83O
\92\86\82Í band.Width
\82ª
\8dX
\90V
\82³
\82ê
\82È
\82¢
\82Ì
\82Å
\81A
\93à
\91¤
\82Ì
\83T
\83C
\83Y
\82©
\82ç
\82Ð
\82Ë
\82è
\8fo
\82·
10385 if CoolBar = MainCoolBar then begin
10386 coolSet := GikoSys.Setting.MainCoolSet[ band.ID ];
10387 coolSet.FCoolWidth := toolbar.Width + 25;
10388 GikoSys.Setting.MainCoolSet[ band.ID ] := coolSet;
10389 if affectedBand <> nil then begin
10390 coolSet := GikoSys.Setting.MainCoolSet[ affectedBand.ID ];
10391 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10392 GikoSys.Setting.MainCoolSet[ affectedBand.ID ] := coolSet;
10394 end else if CoolBar = ListCoolBar then begin
10395 coolSet := GikoSys.Setting.ListCoolSet[ band.ID ];
10396 coolSet.FCoolWidth := toolbar.Width + 25;
10397 GikoSys.Setting.ListCoolSet[ band.ID ] := coolSet;
10398 if affectedBand <> nil then begin
10399 coolSet := GikoSys.Setting.ListCoolSet[ affectedBand.ID ];
10400 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10401 GikoSys.Setting.ListCoolSet[ affectedBand.ID ] := coolSet;
10403 end else if CoolBar = BrowserCoolBar then begin
10404 coolSet := GikoSYs.Setting.BrowserCoolSet[ band.ID ];
10405 coolSet.FCoolWidth := toolbar.Width + 25;
10406 GikoSys.Setting.BrowserCoolSet[ band.ID ] := coolSet;
10407 if affectedBand <> nil then begin
10408 coolSet := GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ];
10409 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10410 GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ] := coolSet;
10416 procedure TGikoForm.MenuToolBarResize(Sender: TObject);
10418 CoolBarResized( Sender, MainCoolBar );
10421 procedure TGikoForm.StdToolBarResize(Sender: TObject);
10423 CoolBarResized( Sender, MainCoolBar );
10426 procedure TGikoForm.LinkToolBarResize(Sender: TObject);
10428 CoolBarResized( Sender, MainCoolBar );
10431 procedure TGikoForm.ListNameToolBarResize(Sender: TObject);
10433 CoolBarResized( Sender, ListCoolBar );
10436 procedure TGikoForm.ListToolBarResize(Sender: TObject);
10438 CoolBarResized( Sender, ListCoolBar );
10441 procedure TGikoForm.BrowserNameToolBarResize(Sender: TObject);
10443 CoolBarResized( Sender, BrowserCoolBar );
10446 procedure TGikoForm.BrowserToolBarResize(Sender: TObject);
10448 CoolBarResized( Sender, BrowserCoolBar );
10451 procedure TGikoForm.BrowserTabResize(Sender: TObject);
10453 CoolBarResized( Sender, BrowserCoolBar );
10456 // *************************************************************************
10457 // ExternalBoardPlugInMain
10458 //
\83v
\83\89\83O
\83C
\83\93\83\81\83j
\83\85\81[
\82Ì
\8d\80\96Ú
\82ª
\8eÀ
\8ds
\82³
\82ê
\82½
10459 // *************************************************************************
10460 procedure TGikoForm.OnPlugInMenuItem( Sender : TObject );
10463 boardPlugIn : TBoardPlugIn;
10466 if not (Sender is TMenuItem) then
10469 item := TMenuItem( Sender );
10470 if not Assigned( Pointer( item.Tag ) ) then
10473 //
\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·
10474 boardPlugIn := TBoardPlugIn( item.Tag );
10475 boardPlugIn.PlugInMenu( item.Handle );
10478 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10479 procedure TGikoForm.TreeClick( Node : TTreeNode );
10487 if FTreeType = gttHistory then begin
10488 if Node <> nil then
10489 if TObject( Node.Data ) is TFavoriteThreadItem then
10490 if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then
10491 FavoriteClick( Node );
10495 ActiveListColumnSave;
10497 if TObject(Node.Data) is TBBS then begin
10498 SetActiveList(Node.data);
10499 end else if TObject(Node.Data) is TCategory then begin
10500 SetActiveList(Node.data);
10501 end else if TObject(Node.Data) is TBoard then begin
10502 if not TBoard(Node.Data).IsThreadDatRead then begin
10503 Screen.Cursor := crHourGlass;
10505 if not TBoard(Node.Data).IsThreadDatRead then
10506 GikoSys.ReadSubjectFile(Node.Data);
10508 Screen.Cursor := crDefault;
10511 SetActiveList(Node.data);
10514 if TObject( Node.Data ) is TBoard then begin // not TCategory
10515 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10516 if GikoSys.Setting.ListWidthState = glsMax then begin
10517 BrowserMinAction.Execute;
10518 if GikoForm.Visible then
10522 if GikoSys.Setting.ListHeightState = glsMax then begin
10523 BrowserMinAction.Execute;
10524 if GikoForm.Visible then
10532 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10533 procedure TGikoForm.TreeDoubleClick( Node : TTreeNode );
10536 ThreadItem : TThreadItem;
10537 shiftDown : Boolean;
10540 if Node = nil then Exit;
10542 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
10544 if FTreeType = gtt2ch then begin
10545 if not (TObject(Node.Data) is TBoard) then Exit;
10546 Board := TBoard(Node.Data);
10547 DownloadList(Board, shiftDown);
10548 end else if FTreeType = gttHistory then begin
10549 if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit;
10550 ThreadItem := TFavoriteThreadItem(Node.Data).Item;
10551 DownloadContent(ThreadItem, shiftDown);
10556 procedure TGikoForm.TreeViewClick(Sender: TObject);
10558 TreeClick( TreeView.Selected );
10561 procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word;
10562 Shift: TShiftState);
10564 if Key = VK_BACK then begin
10565 // UpFolderButtonClick(Sender);
10566 end else if Key = VK_SPACE then begin
10567 TreeDoubleClick( TreeView.Selected );
10568 end else if Key = VK_RETURN then begin
10569 TreeClick( TreeView.Selected );
10570 TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
10574 //
\83u
\83\89\83E
\83U
\82Ì
\83L
\81[
\83_
\83E
\83\93\83C
\83x
\83\93\83g //
\82È
\82ñ
\82©
\8eg
\82í
\82È
\82
\82Ä
\82à
\93®
\82¢
\82Ä
\82é
\8bC
\82ª
\82·
\82é
\81@by
\82à
\82¶
\82ã
10575 //
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
10576 function TGikoForm.BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
10578 iOIPAO : IOleInPlaceActiveObject;
10579 Dispatch : IDispatch;
10582 if Key = VK_BACK then begin
10583 UpBoardAction.Execute;
10585 {end else if Key in [VK_ESCAPE..VK_HELP] then begin
10586 //
\8f\
\8e\9a\81APage Up
\81APage Down
\93\99\82Í Browser
\82ª
\8f\9f\8eè
\82É
\8eó
\82¯
\8eæ
\82é
\82Ì
\82Å
\83C
\83x
\83\93\83g
\82ð
\83J
\83b
\83g
10589 end else if(Key in [VK_SPACE..VK_HELP]) and
10590 not(ssCtrl in State) and not(ssAlt in State) and not (ssShift in State) then begin
10593 //
\82»
\82ê
\88È
\8aO
\82Ì
\83C
\83x
\83\93\83g
\82Í Browser
\82É
\97¬
\82·
10594 if(FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10595 Dispatch := FActiveContent.Browser.Application;
10596 if Dispatch <> nil then begin
10597 Dispatch.QueryInterface( IOleInPlaceActiveObject, iOIPAO );
10598 if iOIPAO <> nil then
10599 iOIPAO.TranslateAccelerator( Msg );
10602 //
\83M
\83R
\83i
\83r
\82Å
\8eg
\82¤
\83V
\83\87\81[
\83g
\83J
\83b
\83g
\82Í
\8eó
\82¯
\8eæ
\82è
\82½
\82¢
\82Ì
\82Å
\83C
\83x
\83\93\83g
\82Í
\83J
\83b
\83g
\82µ
\82È
\82¢
10608 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
10609 procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
10614 case Msg.message of
10616 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10617 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10619 Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
10624 case Msg.wParam shr 16 of
10627 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10628 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10629 UpBoardAction.Execute;
10633 if not Handled then begin
10634 if IsDialogMessage( ListView.Handle, Msg ) then begin
10635 UpFolderAction.Execute;
10645 procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
10646 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10648 favItem : TTreeNode;
10649 favThreadItem : TFavoriteThreadItem;
10655 FMouseDownPos.X := X;
10656 FMouseDownPos.Y := Y;
10660 favItem := FavoriteTreeView.GetNodeAt( X, Y );
10661 if favItem = nil then Exit;
10663 if TObject( favItem.Data ) is TFavoriteThreadItem then begin
10664 favThreadItem := TFavoriteThreadItem( favItem.Data );
10665 if favThreadItem.Item <> nil then
10666 InsertBrowserTab( favThreadItem.Item, False );
10673 procedure TGikoForm.MessagePanelResize(Sender: TObject);
10676 if FIsIgnoreResize then
10679 if GikoSys.Setting.ListOrientation = gloVertical then begin
10680 if GikoSys.Setting.ListHeightState = glsMin then begin
10681 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
10682 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
10688 procedure TGikoForm.OnResized;
10691 FOldFormWidth := Width;
10692 FIsIgnoreResize := False;
10696 procedure TGikoForm.TreeSelectNameCopyExecute(Sender: TObject);
10700 TreeView.Selected := FClickNode;
10701 s := FClickNode.Text;
10702 Clipboard.AsText := s;
10705 procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject;
10706 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10709 if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold) and
10710 (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10711 FavoriteClick( TObject( FavoriteTreeView.Selected ) );
10716 destructor TBrowserRecord.Destroy;
10720 if Self.FEvent <> nil then
10722 if Self.FBrowser <> nil then begin
10723 if Self.Thread <> nil then begin
10724 //
\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Å
10725 //
\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
10726 if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin
10727 doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
10728 Self.Thread.ScrollTop := doc.Body.ScrollTop;
10731 //TOleControl(Self.FBrowser).Visible := false;
10732 ShowWindow(Self.FBrowser.Handle, SW_HIDE);
10737 procedure TGikoForm.ResRangeActionUpdate(Sender: TObject);
10739 ResRangeAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
10742 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
10746 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
10747 FActiveContent.FBrowser.SetFocus;
10752 procedure TGikoForm.SetFocusForBrowserActionExecute(Sender: TObject);
10754 FActiveContent.FBrowser.SetFocus;
10757 procedure TGikoForm.SetFocusForBrowserActionUpdate(Sender: TObject);
10759 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10760 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10761 SetFocusForBrowserAction.Enabled := true
10763 SetFocusForBrowserAction.Enabled := false;
10766 procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
10770 if FActiveContent <> nil then
10771 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10773 if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
10774 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é
10775 else if ListView.Items.Count > 0 then begin
10776 ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
10777 rct := ListView.ItemFocused.DisplayRect(drBounds);
10778 ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
10779 if ListView.ViewStyle <> vsReport then begin
10780 ListView.Scroll(rct.Left, 0);
10785 procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
10787 if FActiveContent <> nil then
10788 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10789 if TreeView.Visible then begin
10791 if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
10792 TreeView.Items.Item[0].Selected := true;
10793 end else if FavoriteTreeView.Visible then begin
10794 FavoriteTreeView.SetFocus;
10795 if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
10796 FavoriteTreeView.Items.Item[0].Selected := true;
10799 procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
10801 SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
10804 //
\83u
\83\89\83E
\83U
\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
\81B
10805 procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
10807 BrowserMaxAction.Execute;
10808 SetFocusForBrowserAction.Execute;
10811 procedure TGikoForm.BrowserMaxAndFocusActionUpdate(Sender: TObject);
10813 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10814 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10815 BrowserMaxAndFocusAction.Enabled := true
10817 BrowserMaxAndFocusAction.Enabled := false;
10819 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
10820 procedure TGikoForm.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
10822 BrowserMinAction.Execute;
10823 SetFocusForThreadListAction.Execute;
10826 procedure TGikoForm.ListViewExit(Sender: TObject);
10832 procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
10833 Selected: Boolean);
10836 if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
10837 if (TObject( Item.Data ) is TThreadItem) then begin
10838 SelectTimer.Interval := GikoSys.Setting.SelectInterval;
10840 SelectTimer.Interval := 0
10842 SelectTimer.Interval := 0;
10846 procedure TGikoForm.SelectTimerTimer(Sender: TObject);
10848 if not (ListView.Selected = nil) then
10849 if( FActiveContent = nil) or
10850 (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
10851 SelectTimer.Interval := 0;
10856 procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
10861 List := TList.Create;
10863 Screen.Cursor := crHourGlass;
10864 SelectListItem(List);
10865 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10866 (GikoSys.Setting.ListHeightState = glsMax)) or
10867 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10868 (GikoSys.Setting.ListWidthState = glsMax)) then
10869 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10870 else if(List.Count = 0) then
10871 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10873 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðdat
\82Ì
\82Ü
\82Ü
\95Û
\91¶';
10874 FileSaveAs1.Dialog.Filter := 'DAT
\83t
\83@
\83C
\83\8b(*.dat)|*.dat';
10875 for i := 0 to List.Count - 1 do begin
10876 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
10877 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
10878 if FileSaveAs1.Execute then begin
10879 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
10880 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
10881 CopyFile(PChar(TThreadItem(List[i]).FilePath),
10882 PChar(FileSaveAs1.Dialog.FileName), true);
10889 Screen.Cursor := crDefault;
10895 procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
10902 List := TList.Create;
10904 Screen.Cursor := crHourGlass;
10905 SelectListItem(List);
10906 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10907 (GikoSys.Setting.ListHeightState = glsMax)) or
10908 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10909 (GikoSys.Setting.ListWidthState = glsMax)) then
10910 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10911 else if(List.Count = 0) then
10912 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10914 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðHTML
\89»
\82µ
\82Ä
\95Û
\91¶';
10915 FileSaveAs1.Dialog.Filter := 'HTML
\83t
\83@
\83C
\83\8b(*.html)|*.html';
10916 for i := 0 to List.Count - 1 do begin
10917 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
10918 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
10919 if FileSaveAs1.Execute then begin
10920 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
10921 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
10922 html := TStringList.Create;
10923 title := TThreadItem(List[i]).Title;
10925 GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
10926 html.SaveToFile(FileSaveAs1.Dialog.FileName);
10927 SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
10937 Screen.Cursor := crDefault;
10941 procedure TGikoForm.SkinorCSSFilesCopy(path: string);
10943 tmp, tmpD, tmpF: string;
10946 files: TStringList;
10949 if GikoSys.Setting.UseSkin then begin
10950 current := ExtractFilePath(GikoSys.GetSkinDir);
10951 tmp := GikoSys.Setting.CSSFileName;
10952 end else if GikoSys.Setting.UseCSS then begin
10953 current := ExtractFilePath(GikoSys.GetStyleSheetDir);
10954 tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
10956 dirs := TStringList.Create;
10959 if tmp <> current then begin
10960 GikoSys.GetDirectoryList(current, '*.*', dirs, true);
10961 for i := 0 to dirs.Count - 1 do begin
10962 files := TStringList.Create;
10964 gikoSys.GetFileList(dirs[i], '*.*', files, true);
10965 tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
10966 if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
10967 ForceDirectories(tmpD);
10969 if(dirs[i] = tmp) and (dirs[i] <> current) then begin
10970 for j := 0 to files.Count - 1 do begin
10971 tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
10972 if not FileExists(tmpF) then begin
10973 CopyFile(PChar(files[j]), PChar(tmpF),True);
10982 tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
10983 if not DirectoryExists(tmpD) then
10984 ForceDirectories(tmpD);
10985 tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
10986 , GikoSys.GetConfigDir, path);
10987 if not FileExists(tmpF) then begin
10988 CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
10989 , PChar(tmpF), True);
10998 procedure TGikoForm.KidokuActionExecute(Sender: TObject);
11003 List := TList.Create;
11005 SelectListItem(List);
11006 for i := 0 to List.Count - 1 do begin
11007 if TObject(List[i]) is TThreadItem then begin
11008 TThreadItem(List[i]).UnRead := false;
11009 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
11012 if TreeView.Visible then
11019 procedure TGikoForm.MidokuActionExecute(Sender: TObject);
11024 List := TList.Create;
11026 SelectListItem(List);
11027 for i := 0 to List.Count - 1 do begin
11028 if TObject(List[i]) is TThreadItem then begin
11029 TThreadItem(List[i]).UnRead := true;
11030 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
11033 if TreeView.Visible then
11040 procedure TGikoForm.BrowserPanelCanResize(Sender: TObject; var NewWidth,
11041 NewHeight: Integer; var Resize: Boolean);
11045 for i := 0 to BROWSER_COUNT - 1 do
11046 SetWindowPos(TWebBrowser(FBrowsers[i]).Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
11048 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
11049 SetWindowPos(FActiveContent.Browser.Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
11053 procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
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 begin
11061 if(GetActiveContent <> nil) then begin
11062 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
11064 end else if GetActiveList is TCategory then begin
11065 List := TList.Create;
11067 SelectListItem(List);
11068 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
11072 end else if GetActiveList is TBoard then begin
11073 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
11078 procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
11080 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11081 LogFolderOpenAction.Enabled := True
11082 else if GetActiveList is TBoard then
11083 LogFolderOpenAction.Enabled := True
11085 LogFolderOpenAction.Enabled := False;
11088 function TGikoForm.GetTabURLs(AStringList: TStringList) : Boolean;
11090 rec : TBrowserRecord;
11091 i, bound : Integer;
11093 bound := BrowserTab.Tabs.Count -1;
11094 if bound = -1 then begin
11096 Exit; //for
\82É
\94ò
\82Î
\82È
\82¢
\82Å
\91\80\8dì
\82ð
\94²
\82¯
\82é
11099 for i := 0 to bound do begin
11100 rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
11101 if( rec <> nil) and (rec.Thread <> nil) then
11102 AStringList.Add( rec.Thread.URL );
11107 procedure TGikoForm.TabsSaveActionExecute(Sender: TObject);
11109 if not SaveTabURLs then begin
11110 ShowMessage('
\95Û
\91¶
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ');
11114 function TGikoForm.SaveTabURLs : Boolean;
11116 SaveStringList: TStringList;
11118 SaveStringList := TStringList.Create;
11120 Result := GetTabURLs(SaveStringList);
11121 SaveStringList.SaveToFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
11123 SaveStringList.Free
11127 procedure TGikoForm.TabsOpenActionExecute(Sender: TObject);
11129 if not LoadTabURLs then begin
11130 ShowMessage('
\95\
\8e¦
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
11134 procedure TGikoForm.FileTabSaveClick(Sender: TObject);
11136 SaveStringList: TStringList;
11138 SaveTabList := TStringList.Create;
11139 SaveTabList := GetTabURLs;
11140 if TabSaveDialog.Execute then begin
11141 SaveTabList.SaveToFile(TabSaveDialog.FileName);
11146 function TGikoForm.LoadTabURLs : Boolean;
11148 i, bound : Integer;
11149 item : TThreadItem;
11150 URLs : TStringList;
11151 GikoTab : TGikoTabAppend;
11154 fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
11155 URLs := TStringList.Create();
11156 GikoTab := GikoSys.Setting.BrowserTabAppend;
11159 if FileExists(fileName) then
11160 URLs.LoadFromFile(fileName);
11163 ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11165 bound := URLs.Count - 1;
11166 if bound = -1 then begin
11172 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11173 for i := 0 to URLs.Count - 1 do begin
11174 item := BBSsFindThreadFromURL( URLs[ i ] );
11175 if item <> nil then
11176 InsertBrowserTab( item, false );
11179 GikoSys.Setting.BrowserTabAppend := GikoTab;
11185 procedure TGikoForm.TabsSaveToFileActionExecute(Sender: TObject);
11187 SaveTabList: TStringList;
11190 SaveTabList := TStringList.Create;
11192 Result := GetTabURLs(SaveTabList);
11193 // if TabSaveDialog.Execute then begin
11194 // SaveTabList.SaveToFile(TabSaveDialog.FileName);
11201 procedure TGikoForm.TabsOpenFromFileActionExecute(Sender: TObject);
11204 item : TThreadItem;
11205 URLs : TStringList;
11206 GikoTab: TGikoTabAppend;
11208 URLs := TStringList.Create();
11209 GikoTab := GikoSys.Setting.BrowserTabAppend;
11212 // if TabOpenDialog.Execute then begin
11213 // URLs.LoadFromFile(TabOpenDialog.FileName);
11216 on EFOpenError do ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11219 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11220 for i := 0 to URLs.Count - 1 do begin
11221 item := BBSsFindThreadFromURL( URLs[ i ] );
11222 if item <> nil then
11223 InsertBrowserTab( item, false );
11226 GikoSys.Setting.BrowserTabAppend := GikoTab;
11231 procedure TGikoForm.OnlyAHundredResActionExecute(Sender: TObject);
11233 ThreadItem : TThreadItem;
11234 FilterList : TStringList;
11237 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11238 and (FActiveContent.FBrowser.Busy) then Exit;
11240 FResRangeMenuSelect := 100;
11241 OnlyAHundredResAction.Checked := True;
11243 if GikoSys.ResRange <> 100 then begin
11244 GikoSys.ResRange := 100;
11246 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11247 FilterList := TStringList.Create;
11249 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11250 GikoSys.FSelectResFilter.Reverse := False;
11252 FilterList.Destroy;
11255 FSelectResWord := '';
11257 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11258 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11259 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11261 ThreadItem := GetActiveContent;
11262 if ThreadItem <> nil then
11263 InsertBrowserTab( ThreadItem, True );
11267 procedure TGikoForm.OnlyKokoResActionExecute(Sender: TObject);
11269 ThreadItem : TThreadItem;
11270 FilterList : TStringList;
11273 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11274 and (FActiveContent.FBrowser.Busy) then Exit;
11276 FResRangeMenuSelect := Ord( grrKoko );
11277 OnlyKokoResAction.Checked := True;
11279 if GikoSys.ResRange <> Ord( grrKoko ) then begin
11280 GikoSys.ResRange := Ord( grrKoko );
11282 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11283 FilterList := TStringList.Create;
11285 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11286 GikoSys.FSelectResFilter.Reverse := False;
11288 FilterList.Destroy;
11291 FSelectResWord := '';
11293 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11294 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11295 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11297 ThreadItem := GetActiveContent;
11298 if ThreadItem <> nil then
11299 InsertBrowserTab( ThreadItem, True );
11303 procedure TGikoForm.OnlyNewResActionExecute(Sender: TObject);
11305 ThreadItem : TThreadItem;
11306 FilterList : TStringList;
11309 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11310 and (FActiveContent.FBrowser.Busy) then Exit;
11312 FResRangeMenuSelect := Ord( grrNew );
11313 OnlyNewResAction.Checked := True;
11315 if GikoSys.ResRange <> Ord( grrNew ) then begin
11316 GikoSys.ResRange := Ord( grrNew );
11318 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11319 FilterList := TStringList.Create;
11321 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11322 GikoSys.FSelectResFilter.Reverse := False;
11324 FilterList.Destroy;
11327 FSelectResWord := '';
11329 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11330 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11331 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11333 ThreadItem := GetActiveContent;
11334 if ThreadItem <> nil then
11335 InsertBrowserTab( ThreadItem, True );
11339 procedure TGikoForm.BrowsBoradHeadActionExecute(Sender: TObject);
11341 RefURL, URL : string;
11345 if GetActiveList is TCategory then begin
11346 List := TList.Create;
11348 SelectListItem(List);
11349 RefURL := TBoard(List[0]).URL;
11353 end else if GetActiveList is TBoard then begin
11354 RefURL := TBoard(GetActiveList).URL
11356 if RefURL <> '' then begin
11357 if RefURL[Length(RefURL)] <> '/' then
11358 URL := RefURL + '/' + 'head.txt'
11360 URL := RefURL + 'head.txt';
11364 ShowMessage('
\94Â
\82ð
\93Á
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B');
11369 procedure TGikoForm.BrowsBoradHeadActionUpdate(Sender: TObject);
11371 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11372 BrowsBoradHeadAction.Enabled := True
11373 else if GetActiveList is TBoard then
11374 BrowsBoradHeadAction.Enabled := True
11376 BrowsBoradHeadAction.Enabled := False;
11379 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\95Ò
\8fW
\82·
\82é
\82½
\82ß
\82É
\8aJ
\82
11380 procedure TGikoForm.EditNGActionExecute(Sender: TObject);
11382 GikoSys.FAbon.EditNGwords;
11385 procedure TGikoForm.ThreadRangeActionUpdate(Sender: TObject);
11387 ThreadRangeAction.Enabled := (GetActiveList is TBoard);
11390 procedure TGikoForm.ThreadRangeActionExecute(Sender: TObject);
11392 case GikoSys.Setting.ThreadRange of
11393 gtrAll: AllItemAction.Execute;
11394 gtrLog: LogItemAction.Execute;
11395 gtrNew: NewItemAction.Execute;
11399 procedure TGikoForm.TabAutoSaveActionExecute(Sender: TObject);
11404 procedure TGikoForm.TabAutoLoadActionExecute(Sender: TObject);
11409 procedure TGikoForm.ListViewColumnDragged(Sender: TObject);
11413 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶
11414 procedure TGikoForm.ActiveListColumnSave;
11416 ActivListObj : TObject;
11417 i, id, idx : Integer;
11418 BBSOrder : TGikoBBSColumnList;
11419 CategoryOrder : TGikoCategoryColumnList;
11420 BoardOrder : TGikoBoardColumnList;
11423 ActivListObj := ActiveList;
11424 if ActivListObj is TBBS then begin
11425 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
11426 BBSOrder := TGikoBBSColumnList.Create;
11428 for i := 0 to ListView.Columns.Count - 1 do begin
11429 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11430 idx := ListView.Column[ i ].Tag;
11431 id := Ord( GikoSys.Setting.BBSColumnOrder[ idx ] );
11432 BBSOrder.Add( TGikoBBSColumnID( id ) );
11433 //
\95\9d\82Ì
\95Û
\91¶
11434 GikoSys.Setting.BBSColumnWidth[ id ] := ListView.Column[ i ].Width;
11436 for i := 0 to ListView.Columns.Count - 1 do
11437 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11438 GikoSys.Setting.BBSColumnOrder[ i ] := BBSOrder[ i ];
11442 end else if ActivListObj is TCategory then begin
11443 //=====
\94Â
\83\8a\83X
\83g =====
11444 CategoryOrder := TGikoCategoryColumnList.Create;
11446 for i := 0 to ListView.Columns.Count - 1 do begin
11447 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11448 idx := ListView.Column[ i ].Tag;
11449 id := Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] );
11450 CategoryOrder.Add( TGikoCategoryColumnID( id ) );
11451 //
\95\9d\82Ì
\95Û
\91¶
11452 GikoSys.Setting.CategoryColumnWidth[ id ] := ListView.Column[ i ].Width;
11454 for i := 0 to ListView.Columns.Count - 1 do
11455 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11456 GikoSys.Setting.CategoryColumnOrder[ i ] := CategoryOrder[ i ];
11458 CategoryOrder.Free;
11460 end else if ActivListObj is TBoard then begin
11461 //=====
\83X
\83\8c\83\8a\83X
\83g =====
11462 BoardOrder := TGikoBoardColumnList.Create;
11464 for i := 0 to ListView.Columns.Count - 1 do begin
11465 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11466 idx := ListView.Column[ i ].Tag;
11467 id := Ord( GikoSys.Setting.BoardColumnOrder[ idx ] );
11468 BoardOrder.Add( TGikoBoardColumnID( id ) );
11469 //
\95\9d\82Ì
\95Û
\91¶
11470 GikoSys.Setting.BoardColumnWidth[ id ] := ListView.Column[ i ].Width;
11472 for i := 0 to ListView.Columns.Count - 1 do
11473 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11474 GikoSys.Setting.BoardColumnOrder[ i ] := BoardOrder[ i ];
11483 OleInitialize(nil);