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);
930 //RoundList : TRoundList;
934 FEnabledCloseButton: Boolean;
935 // ThreadCreate: TThreadCreate;
937 FClickNode: TTreeNode;
940 FPreviewBrowser: TPreviewBrowser;
943 FBrowserSizeHeight: Integer;
944 FBrowserSizeWidth: Integer;
946 // FFavorite: TFavorite;
947 FTabHintIndex: Integer;
948 FListStyle: TViewStyle; //
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93\83X
\83^
\83C
\83\8b
949 FItemNoVisible: Boolean; //
\83\8a\83X
\83g
\94Ô
\8d\86\95\
\8e¦
\83t
\83\89\83O
950 FViewType: TGikoViewType; //
\83\8a\83X
\83g
\83A
\83C
\83e
\83\80\95\
\8e¦
\83^
\83C
\83v
951 FActiveList: TObject;
952 FActiveContent: TBrowserRecord; //
954 FHistoryList: TList; //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
955 FTreeType: TGikoTreeType;
959 // FLastRoundTime: TDateTime;
960 BrowserNullTab: TBrowserRecord;
961 // DoubleClickOccurred: array [TMouseButton] of Boolean;
962 FDownloadTitle: string; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\83^
\83C
\83g
\83\8b\96¼
963 FDownloadMax: Integer; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\8dÅ
\91å
\83T
\83C
\83Y
964 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
966 // Fkeynum : Integer; //
\83L
\81[
\83{
\81[
\83h
\83\8c\83X
\83|
\83b
\83v
\83A
\83b
\83v
\97p
968 IsDraggingSelectComboBox : Boolean;
969 DraggingSelectComboBoxPosition : TPoint;
971 FSearchDialog: TSearchDialog;
973 FDropSpaceNode: TTreeNode;
975 FDragTime : Cardinal; //
\83\8a\83\93\83N
\82ÌD&D
\97p
976 FDragButton : TToolButton; //
\83\8a\83\93\83N
\82ÌD&D
\97p
\82ÉDrag
\82µ
\82Ä
\82éButton
\95Û
\91¶
977 FDragWFirst : Boolean; //WebTab
\82ÌD&D
\97p
979 FListViewBackGroundColor : TColor; //ListView
\82ÌBackGroundColor
980 FUseOddResOddColor : Boolean; //
\8eæ
\93¾
\83\8c\83X
\90\94\82Æ
\83X
\83\8c\83b
\83h
\82Ì
\83\8c\83X
\90\94\82ª
\88á
\82Á
\82½
\82Æ
\82«
\82É
\91¼
\82Ì
\90F
\82Å
\95\
\8e¦
981 FOddColor : TColor; //
\82»
\82Ì
\90F
983 FSelectResWord : string; //
\83\8c\83X
\8di
\8d\9e\83\8f\81[
\83h
984 FIsIgnoreResize : Boolean; //
\83\8a\83T
\83C
\83Y
\83C
\83x
\83\93\83g
\82ð
\96³
\8e\8b\82·
\82é
\82©
\82Ç
\82¤
\82©
985 FIsMinimize : TMinimizeType; //
\8dÅ
\8f¬
\89»
\82µ
\82Ä
\82¢
\82é
\8dÅ
\92\86\82©
986 FOldFormWidth : Integer; //
\92¼
\91O
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\95\9d
987 FToolBarSettingSender : TToolBarSettingSenderType; //
\83c
\81[
\83\8b\83o
\81[
\90Ý
\92è
\82ð
\83N
\83\8a\83b
\83N
\82µ
\82½
\83N
\81[
\83\8b\83o
\81[
988 FMouseDownPos : TPoint; //
\83u
\83\89\83E
\83U
\83^
\83u
\82Å
\83}
\83E
\83X
\82ð
\89\9f\82µ
\82½
\82Æ
\82«
\82Ì
\8dÀ
\95W
990 FResRangeMenuSelect : Longint; ///< ResRangeButton
\82Å
\91I
\91ð
\82³
\82ê
\82Ä
\82¢
\82é
\8d\80\96Ú (
\83t
\83H
\81[
\83}
\83b
\83g
\82Í ResRange
\8cÝ
\8a·)
991 procedure SetBoardTreeNode( inBBS : TBBS );
992 function SetCategoryListItem(ABBS2ch: TBBS): Integer;
993 function SetBoardListItem(Category: TCategory): Integer;
994 function SetThreadListItem(Board: TBoard): Integer;
995 // function GetRoundName(index: integer): string;
997 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
998 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
999 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
1000 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
1001 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
1003 procedure SetActiveList(Obj: TObject);
1004 procedure ListClick;
1005 procedure ListDoubleClick(Shift: TShiftState);
1006 procedure BrowserMovement(const AName: string); overload;
1007 procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
1008 procedure SelectListItem(List: TList);
1009 // procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
1010 procedure DeleteTab(ThreadItem: TThreadItem); overload;
1011 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
1012 function Hook(var Message: TMessage): Boolean;
1013 procedure AddRoundNameMenu(MenuItem: TMenuItem);
1014 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
1015 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
1016 procedure SetSelectRoundName(Sender: TObject);
1017 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
1019 procedure SetMenuFont;
1020 // procedure CreateFavMenu(Folder: TFavoriteFolder);
1021 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
1022 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
1023 procedure FavoriteClick(Sender: TObject); overload;
1024 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
1025 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
1026 function OnDocumentContextMenu(Sender: TObject): WordBool;
1027 // function GetThreadText(sBoard: string; sThread: string; StNum, ToNum: Integer; Title, First: Boolean): string;
1028 procedure SetResPopupText(ThreadItem : TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
1029 procedure ShowTextPopup;
1030 //procedure ShowTextPopup(HintData: THintData);
1031 // procedure SetStdToolBar;
1032 // function GetAction(ActionName: string): TContainedAction;
1033 procedure SetLinkBar;
1034 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
1035 procedure MenuBarChevronMenu;
1036 procedure LinkBarChevronMenu;
1037 procedure ToolBarChevronMenu(ToolBar: TToolBar);
1038 procedure ModifySelectList;
1039 procedure FavoriteBrowseFolder( node: TTreeNode );
1040 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
1041 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1042 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
1043 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1044 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
1045 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
1046 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
1047 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
1048 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
1050 procedure SetListViewBackGroundColor(value: TColor);
1051 procedure BBSMenuItemOnClick( Sender : TObject );
1053 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
1054 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1055 procedure SaveCoolBarSettings;
1056 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1057 procedure LoadCoolBarSettings;
1058 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
1059 procedure OnMinimize;
1060 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
1061 procedure OnMinimized;
1062 // CoolBar
\82ª
\83T
\83C
\83Y
\95Ï
\8dX
\82³
\82ê
\82½
1063 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
1064 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1065 procedure TreeClick( Node : TTreeNode );
1066 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1067 procedure TreeDoubleClick( Node : TTreeNode );
1068 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
1069 procedure HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
1070 //
\83u
\83\89\83E
\83U
\82Ì
\83L
\81[
\83_
\83E
\83\93\83C
\83x
\83\93\83g
1071 //
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
1072 function BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
1073 //
\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
1074 procedure SetBBSMenu;
1075 function WebBrowserClick(Sender: TObject): WordBool;
1076 procedure SkinorCSSFilesCopy(path: string);
1078 function GetTabURLs(AStringList: TStringList) : Boolean;
1080 function SaveTabURLs : Boolean;
1081 //
\83^
\83u
\93Ç
\82Ý
\8fo
\82µ
1082 function LoadTabURLs : Boolean;
1083 //
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
1084 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
1086 procedure CreateParams(var Params: TCreateParams); override;
1087 procedure WndProc(var Message: TMessage); override;
1088 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
1089 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
1090 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
1094 // FDownload: TDownload;
1095 FControlThread: TThreadControl;
1096 procedure MoveToURL(URL: string);
1097 procedure InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
1098 procedure ReloadBBS;
1099 function GetHttpState: Boolean;
1100 procedure SetEnabledCloseButton(Enabled: Boolean);
1101 function GetTreeNode(Data: TObject): TTreeNode;
1102 procedure AppFormDeactivate(Sender: TObject);
1103 // procedure CabinetPanelVisible(PanelVisible: Boolean);
1104 procedure ListViewAllSelect;
1106 property ListStyle: TViewStyle read FListStyle write FListStyle;
1107 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
1108 property ViewType: TGikoViewType read FViewType write FViewType;
1110 property NameCookie: string read FNameCookie write FNameCookie;
1111 property MailCookie: string read FMailCookie write FMailCookie;
1113 procedure SetContent(inThread: TBrowserRecord);
1114 function GetActiveContent: TThreadItem;
1115 function GetActiveList: TObject;
1117 property ActiveList: TObject read GetActiveList write SetActiveList;
1118 // property LastRoundTime: TDateTime read FLastRoundTime write FLastRoundTime;
1120 procedure SetListViewType(AViewType: TGikoViewType); overload;
1121 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
1122 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
1123 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
1124 procedure PlaySound(SoundEventName: string);
1126 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
1127 procedure DeleteHistory( threadItem: TThreadItem );
1128 procedure ClearHistory;
1129 procedure SaveHistory;
1130 procedure LoadHistory;
1131 procedure ShowBBSTree( inBBS : TBBS );
1132 procedure ShowBBSTreeOld( inBBS : TBBS );
1133 procedure ShowHistoryTree;
1134 procedure SetHistoryTreeNode;
1135 // procedure SelectTreeNode(Item: TObject);
1136 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
1137 procedure SetBrowserTabState;
1138 // property Favorite: TFavorite read FFavorite write FFavorite;
1139 procedure SetToolBarPopup;
1140 procedure ShowFavoriteAddDialog( Item : TObject );
1141 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
1142 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
1143 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
1144 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
1145 property OddColor : TColor read FOddColor write FOddColor;
1147 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
1148 procedure OnPlugInMenuItem( Sender : TObject );
1149 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
1152 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
1155 TFavoriteMenuItem = class(TMenuItem)
1159 property Data: Pointer read FData write FData;
1162 TBBSMenuItem = class(TMenuItem)
1166 property Data: Pointer read FData write FData;
1169 TLinkToolButton = class(TToolButton)
1173 property Data: Pointer read FData write FData;
1176 TBrowserRecord = class( TObject )
1178 FBrowser : TWebBrowser;
1179 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
1180 FThread : TThreadItem;
1181 FLastSize : Integer;
1183 // FOnlyHundred: Boolean;
1185 destructor Destroy; override;
1186 property Browser : TWebBrowser read FBrowser write FBrowser;
1187 property Thread : TThreadItem read FThread write FThread;
1188 property LastSize : Integer read FLastSize write FLastSize;
1189 property Repaint : Boolean read FRepaint write FRepaint;
1190 // property OnlyHundred : Boolean read FOnlyHundred write FOnlyHundred;
1194 GikoForm: TGikoForm;
1199 About, Option, Round, Splash, Sort, ListSelect,
1200 NewBoard, MojuUtils,Clipbrd;
1203 CAPTION_NAME: string = '
\83M
\83R
\83i
\83r';
1204 BLANK_HTML: string = 'about:blank';
1205 SELECTCOMBOBOX_NAME: string = ''; // '
\83X
\83\8c\83b
\83h
\8di
\8d\9e\8c\9f\8dõ';
1206 SELECTCOMBOBOX_COLOR: TColor = clWindow;
1208 DandD_THRESHOLD = 5; //D&D
\82Ìè
\87\92l
\81ipixcel)
1209 //
\83c
\83\8a\81[
\81E
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93
1210 ITEM_ICON_2CH1 = 0; //2ch
\83A
\83C
\83R
\83\93
1211 ITEM_ICON_2CH2 = 1; //2ch
\83A
\83C
\83R
\83\93
1212 ITEM_ICON_CATEGORY1 = 2; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1213 ITEM_ICON_CATEGORY2 = 3; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1214 ITEM_ICON_BOARD_NOSUBJECT = 3; //
\93Ç
\82Ý
\8d\9e\82Ü
\82ê
\82Ä
\82¢
\82È
\82¢
\94Â
\83A
\83C
\83R
\83\93
1215 ITEM_ICON_BOARD1 = 4; //
\94Â
\83A
\83C
\83R
\83\93
1216 ITEM_ICON_BOARD2 = 5; //
\94Â
\83A
\83C
\83R
\83\93
1217 ITEM_ICON_THREADLOG1 = 6; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1218 ITEM_ICON_THREADLOG2 = 7; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1219 ITEM_ICON_THREAD1 = 8; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1220 ITEM_ICON_THREAD2 = 9; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1221 ITEM_ICON_THREADNEW1 = 10; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1222 ITEM_ICON_THREADNEW2 = 11; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1223 ITEM_ICON_SORT1 = 12; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1224 ITEM_ICON_SORT2 = 13; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1225 ITEM_ICON_BOARD_LOG = 17; //
\83X
\83\8c\83\8d\83O
\82 \82è
\94Â
\83A
\83C
\83R
\83\93
1226 ITEM_ICON_BOARD_NEW = 18; //
\83X
\83\8c\90V
\92\85\94Â
\83A
\83C
\83R
\83\93
1228 //
\83c
\81[
\83\8b\83o
\81[
\83A
\83C
\83R
\83\93
1229 TOOL_ICON_HEIGHT_MAX = 16; //
\8d\82\82³
\8dÅ
\91å
\83A
\83C
\83R
\83\93
1230 TOOL_ICON_HEIGHT_MIN = 17; //
\8d\82\82³
\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1231 TOOL_ICON_HEIGHT_NORMAL = 18; //
\8d\82\82³
\95W
\8f\80\83A
\83C
\83R
\83\93
1232 TOOL_ICON_WIDTH_MAX = 19; //
\95\9d\8dÅ
\91å
\83A
\83C
\83R
\83\93
1233 TOOL_ICON_WIDTH_MIN = 20; //
\95\9d\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1234 TOOL_ICON_WIDTH_NORMAL = 21; //
\95\9d\95W
\8f\80\83A
\83C
\83R
\83\93
1236 TOOL_ICON_FAV_FOLDER = 30; //
\82¨
\8bC
\82É
\93ü
\82è
\83t
\83H
\83\8b\83_
\83A
\83C
\83R
\83\93
1237 TOOL_ICON_FAV_BOARD = 31; //
\82¨
\8bC
\82É
\93ü
\82è
\94Â
\83A
\83C
\83R
\83\93
1238 TOOL_ICON_FAV_THREAD = 32; //
\82¨
\8bC
\82É
\93ü
\82è
\83X
\83\8c\83A
\83C
\83R
\83\93
1240 HTML_FILE_NAME = 'temp_preview.html';
1242 WM_XBUTTONDOWN = $020B;
1243 WM_XBUTTONUP = $020C;
1244 WM_XBUTTONDBLCLK = $020D;
1247 USER_TREECLICK = WM_USER + 2000;
1248 USER_RESIZED = WM_USER + 2001;
1249 USER_MINIMIZED = WM_USER + 2002;
1250 USER_SETLINKBAR = WM_USER + 2003;
1251 SELECTTIME_INTERBAL = 110;
1253 BROWSER_COUNT = 5; //
\83u
\83\89\83E
\83U
\82Ì
\90\94
1256 procedure TGikoForm.CreateParams(var Params: TCreateParams);
1259 if FormStyle in [fsNormal, fsStayOnTop] then begin
1260 if BorderStyle in [bsSingle, bsSizeable] then begin
1261 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
1262 Params.WndParent := 0;
1267 procedure TGikoForm.FormCreate(Sender: TObject);
1269 TVS_NOTOOLTIPS = $0080;
1275 wp: TWindowPlacement;
1277 newbrowser: TWebBrowser;
1281 Writeln('============================================================');
1282 Writeln('
\83M
\83R
\83i
\83r
\83f
\83o
\83b
\83O
\83R
\83\93\83\
\81[
\83\8b');
1284 Writeln('
\82±
\82Ì
\89æ
\96Ê
\82ð
\95Â
\82¶
\82È
\82¢
\82Å
\82
\82¾
\82³
\82¢
\81B');
1285 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¢');
1286 Writeln('============================================================');
1288 Application.OnDeactivate := AppFormDeactivate;
1289 Self.OnDeactivate := AppFormDeactivate;
1290 Application.HookMainWindow(Hook);
1291 Application.OnMessage := HandleAppMessage; //
\82È
\82ñ
\82©
\96³
\82
\82Ä
\82à
\91å
\8fä
\95v
\82É
\82È
\82Á
\82½
\81@by
\81@
\82à
\82¶
\82ã
1292 Self.DoubleBuffered := true;
1293 FTreeType := gttNone;
1295 FSearchDialog := nil;
1296 BrowserNullTab := TBrowserRecord.Create;
1297 BrowserNullTab.Browser := Browser;
1298 BrowserNullTab.Browser.Navigate(BLANK_HTML);
1299 FBrowsers := TList.Create;
1300 for i := 0 to BROWSER_COUNT -1 do begin
1301 FBrowsers.Add(TWebBrowser.Create(nil));
1302 newBrowser := FBrowsers[FBrowsers.Count - 1];
1303 TOleControl(newBrowser).Parent := BrowserPanel;
1304 newBrowser.Align := alNone;
1305 newBrowser.Left := 0;
1306 newBrowser.Top := 0;
1307 //newBrowser.DoubleBuffered := true;
1308 newBrowser.OnDocumentComplete := BrowserDocumentComplete;
1309 newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
1310 newBrowser.OnEnter := BrowserEnter;
1311 newBrowser.OnNewWindow2 := BrowserNewWindow2;
1312 newBrowser.OnStatusTextChange := BrowserStatusTextChange;
1313 //newBrowser.OnTitleChange := BrowserTitleChange;
1314 newBrowser.Navigate(BLANK_HTML);
1315 ShowWindow(newBrowser.Handle, SW_HIDE);
1318 BrowserNullTab.Browser.BringToFront;
1319 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
1321 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô
1322 FIsIgnoreResize := True;
1324 //
\8eè
\82Ì
\83J
\81[
\83\
\83\8b
1325 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
1328 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1329 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
1331 //
\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Æ)
1332 InitializeBoardPlugIns;
1334 EnabledCloseButton := True;
1337 //
\8f\84\89ñ
\83f
\81[
\83^
\93Ç
\82Ý
\8d\9e\82Ý
1338 RoundList := TRoundList.Create;
1339 RoundList.LoadRoundBoardFile;
1341 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\97ñ
\8b\93(ReadFavorite
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1342 GikoSys.ListBoardFile;
1344 RoundList.LoadRoundThreadFile;
1346 if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then
1347 GikoSys.ListBoardFile;
1349 //
\83\81\83j
\83\85\81[
\82É
\92Ç
\89Á
1352 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g(LoadHistory
\82æ
\82è
\82à
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1353 FHistoryList := TList.Create;
1355 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1358 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
1359 // FFavorite := TFavorite.Create(FavoriteTreeView);
1360 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1361 FavoriteDM.ReadFavorite;
1363 //
\83\8a\83X
\83g
\83X
\83^
\83C
\83\8b
1364 ListView.ViewStyle := GikoSys.Setting.ListStyle;
1366 //
\83\81\83C
\83\93\83N
\81[
\83\8b\83o
\81[
\88Ê
\92u
1367 // MainCoolBar.Top := 0;
1368 // MainCoolBar.Left := 0;
1370 //
\83A
\83j
\83\81\83p
\83l
\83\8b\88Ê
\92u
1371 AnimePanel.Top := 0;
1372 AnimePanel.Left := 0;
1374 //
\8ae
\8eí
\89Â
\8e\8b\8fó
\91Ô
\82È
\82Ç
\90Ý
\92è
1376 //
\83L
\83\83\83r
\83l
\83b
\83g
1377 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
1379 //
\83\81\83b
\83Z
\81[
\83W
\83o
\81[
1380 MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
1381 MsgBarVisibleActionExecute(nil);
1382 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
1384 //
\83X
\83e
\81[
\83^
\83X
\83o
\81[
1385 StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
1386 StatusBarVisibleActionExecute(nil);
1388 //
\83t
\83H
\83\93\83g
\81E
\90F
\90Ý
\92è
1389 TreeView.Items.BeginUpdate;
1390 FavoriteTreeView.Items.BeginUpdate;
1391 ListView.Items.BeginUpdate;
1393 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1394 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1395 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1396 TreeView.Color := GikoSys.Setting.CabinetBackColor;
1398 FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1399 FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1400 FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1401 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
1403 ListView.Font.Name := GikoSys.Setting.ListFontName;
1404 ListView.Font.Size := GikoSys.Setting.ListFontSize;
1405 ListView.Font.Color := GikoSys.Setting.ListFontColor;
1406 //ListView.Color := GikoSys.Setting.ListBackColor;
1407 ListViewBackGroundColor := GikoSys.Setting.ListBackColor;
1408 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
1409 FOddColor := GikoSys.Setting.OddColor;
1412 TreeView.Items.EndUpdate;
1413 FavoriteTreeView.Items.EndUpdate;
1414 ListView.Items.EndUpdate;
1416 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
1417 ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
1419 //
\83u
\83\89\83E
\83U
\83^
\83u
\83t
\83H
\83\93\83g
1420 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1421 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1422 FDragWFirst := false;
1423 SetContent(BrowserNullTab); //
\83u
\83\89\83E
\83U
\82ð
\8bó
\94\92\95\
\8e¦
1424 // TreeView.TopItem.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
1425 // TreeView.Selected := TreeView.Items[0]; //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
1428 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95\9c\8c³
1429 wp.length := sizeof(wp);
1430 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1431 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1432 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1433 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1434 wp.showCmd := SW_HIDE;
1435 SetWindowPlacement(Handle, @wp);
1437 // SetBounds(GikoSys.Setting.WindowLeft, GikoSys.Setting.WindowTop,
1438 // GikoSys.Setting.WindowWidth, GikoSys.Setting.WindowHeight);
1439 if GikoSys.Setting.WindowMax then
1440 WindowState := wsMaximized;
1442 //
\83M
\83R
\83A
\83j
\83\81
1444 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1445 if FileExists(FileName) then
1446 Animate.FileName := FileName;
1454 //
\83X
\83\8c\91S
\95\94\95\
\8e¦
\83{
\83^
\83\93\82ð
\89\9f\82³
\82ê
\82½
\8fó
\91Ô
\82É
\82·
\82é
1455 AllItemAction.Checked := True;
1456 AllResAction.Checked := True;
1458 //TreeView
\82Ì
\8e×
\96\82\8fL
\82¢ToolTip
\82ð
\94ñ
\95\
\8e¦
1459 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1460 Style := Style or TVS_NOTOOLTIPS;
1461 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1463 //
\83c
\83\8a\81[
\82ð
\83\81\83C
\83\93\82¾
\82¯
\95\
\8e¦
\82É
\82µ
\82Ä
\8dÅ
\91å
\89»
1464 TreeView.Align := alClient;
1465 FavoriteTreeView.Align := alClient;
1466 FavoriteTreeView.Visible := False;
1468 //
\83u
\83\89\83E
\83U
\83T
\83C
\83Y
\95Ï
\8dX
\82Ì
\8f\89\8aú
\89»
1469 // FBrowserSizeFlag := False;
1470 // FBrowserSizeHeight := ViewPanel.Height;
1472 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1473 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1475 ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1476 ArrangeAction.Execute;
1478 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1479 case GikoSys.Setting.ListWidthState of
1481 ViewPanel.Width := 1;
1482 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1483 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1486 ViewPanel.Width := GikoSys.Setting.ListWidth;
1487 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1488 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1491 ViewPanel.Width := GikoSys.Setting.ListWidth;
1492 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1493 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1497 case GikoSys.Setting.ListHeightState of
1499 ViewPanel.Height := 1;
1500 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1501 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1504 ViewPanel.Height := GikoSys.Setting.ListHeight;
1505 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1506 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1509 ViewPanel.Height := GikoSys.Setting.ListHeight;
1510 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1511 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1516 //
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[
\82Ì
\8f\89\8aú
\89»
1517 // ProgressBar.Visible := False;
1518 ProgressBar.Parent := StatusBar;
1519 ProgressBar.Top := 2;
1520 ProgressBar.Left := 0;
1521 ProgressBar.Width := StatusBar.Panels[0].Width;
1522 ProgressBar.Height := StatusBar.Height - 2;
1523 ProgressBar.Position := 0;
1525 //
\83_
\83E
\83\93\83\8d\81[
\83h
\83I
\83u
\83W
\83F
\83N
\83g
1526 FControlThread := TThreadControl.Create(True);
1527 FControlThread.MaxThreadCount := 1;
1528 FControlThread.Resume;
1529 FControlThread.OnDownloadEnd := DownloadEnd;
1530 FControlThread.OnDownloadMsg := DownloadMsg;
1531 FControlThread.OnWork := Work;
1532 FControlThread.OnWorkBegin := WorkBegin;
1533 FControlThread.OnWorkEnd := WorkEnd;
1534 // ProgressPanel.Width := FControlThread.MaxThreadCount * 12;
1536 //
\8di
\8d\9e\8c\9f\8dõ
\97\9a\97ð
1537 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1539 //
\83u
\83\89\83E
\83U
\83^
\83u
\90Ý
\92è
1542 BrowserBoardNameLabel.Caption := '';
1543 BrowserNameLabel.Caption := '';
1546 FTabHintIndex := -1;
1548 //
\83\8a\83\93\83N
\83o
\81[
1551 //
\83\81\83j
\83\85\81[
\83t
\83H
\83\93\83g
1554 //
\83c
\81[
\83\8b\83o
\81[Wrapable
1555 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1556 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1558 KeepDefaultToolButton(StdToolBar, TmpToolBar);
1559 KeepDefaultToolButton(ListToolBar, TmpToolBar);
1560 KeepDefaultToolButton(BrowserToolBar, TmpToolBar);
1562 MakeDefaultINIFile();
1563 //
\83c
\81[
\83\8b\83{
\83^
\83\93\93Ç
\82Ý
\8d\9e\82Ý
1564 ReadToolBarSetting(ActionList, StdToolBar);
1565 ReadToolBarSetting(ActionList, ListToolBar);
1567 for i := ListToolBar.ControlCount - 1 downto 0 do
1569 if ListToolBar.Controls[ i ].Action = SelectItemAction then
1571 //
\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·
1572 if (i + 1) < ListToolBar.ControlCount then
1573 if ListToolBar.Controls[ i + 1 ] is TToolButton then
1574 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1575 ListToolBar.Controls[ i + 1 ].Visible := False;
1577 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
1578 ListToolBar.Controls[ i ].Visible := False;
1579 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
1580 SelectComboBox.Parent := ListToolBar;
1581 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
1582 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
1583 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
1584 SelectComboBoxSplitter.Parent := ListToolBar;
1585 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
1592 ReadToolBarSetting(ActionList, BrowserToolBar);
1595 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1596 FResRangeMenuSelect := GikoSys.ResRange;
1597 case GikoSys.ResRange of
1600 AllResAction.Execute;
1604 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
1605 SelectResAction.Checked := True;
1608 // ResRangeAction.Execute;
1609 case FResRangeMenuSelect of
1610 Ord( grrKoko ): OnlyKokoResAction.Checked := True;
1611 Ord( grrNew ): OnlyNewResAction.Checked := True;
1612 100: OnlyAHundredResAction.Checked := True;
1616 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\95\
\8e¦
\94Í
\88Í
1617 // ThreadRangeAction.Execute;
1618 case GikoSys.Setting.ThreadRange of
1621 AllItemAction.Checked := True;
1626 LogItemAction.Checked := True;
1631 NewItemAction.Checked := True;
1636 //
\83A
\83h
\83\8c\83X
\83o
\81[
1637 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1639 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³
\82ÍFormShow
\82É
\88Ú
\93®
\82µ
\82½
1641 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\82ª
\96³
\82¢
\8fê
\8d\87\82Í
\83\81\83b
\83Z
\81[
\83W
\95\
\8e¦
1642 if not FileExists(GikoSys.GetBoardFileName) then begin
1643 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
1644 + '
\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
1645 + '
\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';
1646 MsgBox(SplashWindow.Handle, msg, '
\83M
\83R
\83i
\83r', MB_OK or MB_ICONINFORMATION);
1647 NewBoardAction.Execute;
1650 //
\83L
\81[
\90Ý
\92è
\93Ç
\82Ý
\8d\9e\82Ý
1651 GikoSys.LoadKeySetting(ActionList);
1653 //
\8dÅ
\8fI
\8f\84\89ñ
\8e\9e\8aÔ
1654 // FLastRoundTime := 0;
1657 FHint := TResPopup.Create(Self);
1659 //
\8dÅ
\8cã
\82É
\91I
\91ð
\82³
\82ê
\82½
\83L
\83\83\83r
\83l
\83b
\83g
\82Ì
\95\9c\8c³
1660 CabinetVisible( False );
1661 if GikoSys.Setting.CabinetVisible then begin
1662 i := CabinetSelectPopupMenu.Items.Count - 1;
1663 if GikoSys.Setting.CabinetIndex = i - 1 then
1664 CabinetHistoryAction.Execute
1665 else if GikoSys.Setting.CabinetIndex = i then
1666 CabinetFavoriteAction.Execute
1668 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1669 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1670 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 2
1671 FIsIgnoreResize := True;
1672 CabinetBBSAction.Execute;
1675 ShowBBSTreeOld( BBSs[ 0 ] );
1676 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1679 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 3
1680 FIsIgnoreResize := True;
1682 //
\83I
\81[
\83g
\83\8d\83O
\83C
\83\93
1683 if GikoSys.Setting.AutoLogin then
1684 LoginAction.Execute;
1686 //
\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
1687 for i := 1 to ParamCount do begin
1688 MoveToURL(ParamStr(i));
1693 s := GikoSys.FAbon.NGwordname;
1694 StatusBar.Panels[2].Text := s;
1695 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
1696 StatusBarResize(Sender);
1698 dummy1.Caption := ItemReservPMenu.Caption;
1699 dummy1.Hint := ItemReservPMenu.Hint;
1701 //Samba24
\82Ì
\83t
\83@
\83C
\83\8b\83`
\83F
\83b
\83N
1702 GikoSys.SambaFileExists();
1704 //
\83^
\83u
\8e©
\93®
\93Ç
\82Ý
\8d\9e\82Ý (AV
\94
\90¶
\82Ì
\82½
\82ß
\88ê
\8e\9e\95\95\88ó)
1707 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1708 procedure TGikoForm.SaveCoolBarSettings;
1714 if IsIconic( Handle ) or FIsIgnoreResize then
1717 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Main)
1718 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1719 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1720 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1721 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1722 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1724 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Board)
1725 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1726 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1727 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1728 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1729 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1731 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Browser)
1732 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1733 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1734 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1735 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1736 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1741 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1742 procedure TGikoForm.LoadCoolBarSettings;
1748 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Main)
1749 MainCoolBar.Bands.BeginUpdate;
1751 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1752 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1753 CoolSet := GikoSys.Setting.MainCoolSet[i];
1754 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1755 FIsIgnoreResize := False;
1756 SaveCoolBarSettings;
1759 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1760 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1761 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1764 MainCoolBar.Bands.EndUpdate;
1767 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Board)
1768 ListCoolBar.Bands.BeginUpdate;
1770 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1771 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1772 CoolSet := GikoSys.Setting.ListCoolSet[i];
1773 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1774 FIsIgnoreResize := False;
1775 SaveCoolBarSettings;
1778 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1779 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1780 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1783 ListCoolBar.Bands.EndUpdate;
1786 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Browser)
1787 BrowserCoolBar.Bands.BeginUpdate;
1789 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1790 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1791 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1792 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1793 FIsIgnoreResize := False;
1794 SaveCoolBarSettings;
1797 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1798 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1799 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1802 BrowserCoolBar.Bands.EndUpdate;
1810 procedure TGikoForm.FormShow(Sender: TObject);
1812 ShowWindow(Application.Handle, SW_HIDE);
1814 //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½
1815 //
\83c
\81[
\83\8b\83o
\81[
\95\
\8e¦
1816 StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1817 StdToolBarVisibleActionExecute( nil );
1818 AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1819 AddressBarVisibleActionExecute( nil );
1820 LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1821 LinkBarVisibleActionExecute( nil );
1822 ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1823 ListToolBarVisibleActionExecute( nil );
1824 ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1825 ListNameBarVisibleActionExecute( nil );
1826 BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1827 BrowserToolBarVisibleActionExecute( nil );
1828 BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1829 BrowserNameBarVisibleActionExecute( nil );
1831 //
\83u
\83\89\83E
\83U
\83^
\83u
1832 BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1833 BrowserTabVisibleActionExecute(nil);
1835 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1836 BrowserTabTopAction.Checked := True;
1837 BrowserTabTopActionExecute(nil);
1839 BrowserTabBottomAction.Checked := True;
1840 BrowserTabBottomActionExecute(nil);
1843 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1844 BrowserTabTabStyleAction.Checked := True;
1845 BrowserTabTabStyleActionExecute(nil);
1846 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1847 BrowserTabButtonStyleAction.Checked := True;
1848 BrowserTabButtonStyleActionExecute(nil);
1850 BrowserTabFlatStyleAction.Checked := True;
1851 BrowserTabFlatStyleActionExecute(nil);
1854 // ListView
\82Ì
\83w
\83b
\83_
\83h
\83\89\83b
\83O
1855 ListView.LVMInstallHeaderDrag;
1857 // CoolBar
\95\9c\8c³
1858 LoadCoolBarSettings;
1860 FIsIgnoreResize := False;
1863 //FormCrete
\82©
\82ç
\88Ú
\93®
\81B
1864 if GikoSys.Setting.TabAutoLoadSave then begin
1865 TabAutoLoadAction.Execute;
1870 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1872 // if GikoForm.WindowState <> wsMinimized then
1873 // SaveCoolBarSettings;
1874 if ( GikoSys.Setting.ShowDialogForEnd ) and
1875 (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
1880 if GikoSys.Setting.TabAutoLoadSave then begin
1881 TabAutoSaveAction.Execute;
1884 //Application.HookMainWindow(Hook);
1885 Application.UnhookMainWindow(Hook);
1886 Application.Terminate;
1889 procedure TGikoForm.FormDestroy(Sender: TObject);
1892 // CoolSet: TCoolSet;
1893 wp : TWindowPlacement;
1896 // Application.OnDeactivate := nil;
1897 // Self.OnDeactivate := nil;
1900 if GetActiveList is TBBS then begin
1901 for i := 0 to ListView.Columns.Count - 1 do
1902 GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
1903 end else if GetActiveList is TCategory then begin
1904 for i := 0 to ListView.Columns.Count - 1 do
1905 GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
1906 end else if GetActiveList is TBoard then begin
1907 for i := 0 to ListView.Columns.Count - 1 do
1908 GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
1913 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
1914 wp.length := sizeof(wp);
1915 GetWindowPlacement(Handle, @wp);
1916 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1917 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1918 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1919 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1920 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1922 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1923 GikoSys.Setting.CabinetVisible := CabinetVisibleAction.Checked;
1924 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1925 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1926 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1927 if ArrangeAction.Checked then
1928 GikoSys.Setting.ListOrientation := gloVertical
1930 GikoSys.Setting.ListOrientation := gloHorizontal;
1931 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1936 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1937 if not GikoSys.Setting.ResRangeHold then
1938 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1942 //
\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è
1943 //
\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¢
1945 //
\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
1947 if GikoForm.WindowState <> wsMinimized then
1948 SaveCoolBarSettings;
1951 GikoSys.Setting.WriteWindowSettingFile;
1952 GikoSys.Setting.WriteNameMailSettingFile;
1956 //
\82¨
\8bC
\82É
\93ü
\82è
\95Û
\91¶
1958 //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é
1959 FavoriteDM.WriteFavorite;
1965 //
\83^
\83u
\83N
\83\8d\81[
\83Y
1966 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1967 GikoSys.Setting.ShowDialogForAllTabClose := false;
1968 AllTabCloseAction.Execute;
1969 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1973 LockWindowUpdate(Self.Handle);
1974 for i := FBrowsers.Count - 1 downto 0 do begin
1975 TWebBrowser(FBrowsers[i]).Free;
1978 FBrowsers.Capacity := 0;
1983 if BrowserNullTab <> nil then begin
1984 BrowserNullTab.Browser := nil; {*BrowserNullTab
\82ÌBrowser
\82Í
\90Ý
\8cv
\8e\9e\82É
\93\
\82è
\95t
\82¯
\82Ä
\82é
\93z
1985 *
\82È
\82Ì
\82Å
\82±
\82±
\82ÅFree
\82³
\82ê
\82é
\82Æ
\8d¢
\82é
\82Ì
\82Å
\82Í
\82¸
\82µ
\82Ä
\82µ
\82Ü
\82¤
\81B
1987 BrowserNullTab.Free;
1991 LockWindowUpdate(0);
1993 TreeView.Items.BeginUpdate;
1994 TreeView.Items.GetFirstNode.Free;
1995 TreeView.Items.Clear;
1996 TreeView.Items.EndUpdate;
2000 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\95Û
\91¶
2002 //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
2003 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
2007 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
\95Û
\91¶
2021 //
\8f\84\89ñ
\83\8a\83X
\83g
\95Û
\91¶&
\94j
\8aü
2023 RoundList.SaveRoundFile;
2037 FControlThread.Terminate;
2038 FControlThread.WaitFor;
2042 FControlThread.Free;
2045 // TBBS
\82Í
\95Û
\8e\9d\82µ
\82Ä
\82¢
\82é TCategory, TBoard, TThreadItem
\82·
\82×
\82Ä
\82ð
\8aJ
\95ú
\82·
\82é
2046 // 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Å
2047 // BoardPluteIns
\82Ì
\8aJ
\95ú
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ
2049 for i := Length( BBSs ) - 1 downto 0 do begin
2050 if BBSs[ i ] <> nil then
2058 for i := Length( BoardPlugIns ) - 1 downto 0 do begin
2059 if BoardPlugIns[ i ] <> nil then
2060 BoardPlugIns[ i ].Free;
2061 BoardPlugIns[ i ] := nil;
2067 if FEvent <> nil then
2071 if FHint <> nil then begin
2072 FHint.ReleaseHandle;
2077 if TPreviewBrowser <> nil then begin
2078 FPreviewBrowser.Free;
2079 FPreviewBrowser := nil;
2086 //
\83t
\83H
\81[
\83\80\83N
\83\8d\81[
\83Y
2087 procedure TGikoForm.FormClose(Sender: TObject; var Action: TCloseAction);
2090 //
\83L
\83\83\83r
\83l
\83b
\83g
\81~
\83{
\83^
\83\93\83N
\83\8a\83b
\83N
2091 procedure TGikoForm.CabinetPanelHide(Sender: TObject);
2093 CabinetVisibleAction.Execute;
2094 // CabinetPanelVisible(false);
2097 //
\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
2098 procedure TGikoForm.SetBBSMenu;
2101 item : TBBSMenuItem;
2104 //
\83\81\83j
\83\85\81[
\82ð
\8dí
\8f\9c
2105 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
2107 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
2108 CabinetSelectPopupMenu.Items[ i ].Free;
2109 CabinetMenu.Items[ i ].Free;
2110 BBSSelectPopupMenu.Items[ i ].Free;
2116 //
\83\81\83j
\83\85\81[
\82ð
\90Ý
\92è
2117 for i := Length( BBSs ) - 1 downto 0 do begin
2119 item := TBBSMenuItem.Create( PopupMenu );
2120 item.Caption := BBSs[ i ].Title;
2121 item.Data := BBSs[ i ];
2122 item.OnClick := BBSMenuItemOnClick;
2123 CabinetSelectPopupMenu.Items.Insert( 0, item );
2124 item := TBBSMenuItem.Create( PopupMenu );
2125 item.Caption := BBSs[ i ].Title;
2126 item.Data := BBSs[ i ];
2127 item.OnClick := BBSMenuItemOnClick;
2128 CabinetMenu.Insert( 0, item );
2129 item := TBBSMenuItem.Create( PopupMenu );
2130 item.Caption := BBSs[ i ].Title;
2131 item.Data := BBSs[ i ];
2132 item.OnClick := BBSMenuItemOnClick;
2133 BBSSelectPopupMenu.Items.Insert( 0, Item );
2140 procedure TGikoForm.ReloadBBS;
2145 //
\83^
\83u
\83N
\83\8d\81[
\83Y
2146 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
2147 GikoSys.Setting.ShowDialogForAllTabClose := false;
2148 AllTabCloseAction.Execute;
2149 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
2151 SetContent(BrowserNullTab);
2152 //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
2153 TreeView.Items.Clear;
2157 for i := Length( BBSs ) - 1 downto 0 do begin
2158 if BBSs[ i ] <> nil then
2167 FTreeType := gttNone;
2169 GikoSys.ListBoardFile; //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\93Ç
\8d\9e
2171 // BBS
\83\81\83j
\83\85\81[
\82Ì
\8dX
\90V
2174 ShowBBSTree( BBSs[ 0 ] );
2176 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
2181 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
2182 FavoriteDM.WriteFavorite;
2184 FavoriteDM.ReadFavorite;
2190 //
\83{
\81[
\83h
\83c
\83\8a\81[
\90Ý
\92è
2191 procedure TGikoForm.SetBoardTreeNode(
2197 CategoryNode: TTreeNode;
2198 BoardNode: TTreeNode;
2199 Category: TCategory;
2202 //
\94Â
\83\8a\83X
\83g
\82Ì
\90Ý
\92è
2203 FActiveBBS := inBBS;
2204 TreeView.Items.BeginUpdate;
2205 TreeView.Items.Clear;
2207 if not inBBS.IsBoardFileRead then
2208 GikoSys.ReadBoardFile( inBBS );
2210 if SplashWindow <> nil then
2211 SplashWindow.ProgressBar.Max := inBBS.Count;
2215 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2216 if ( GikoSys.Setting.BBSSortIndex <> 0 ) or ( GikoSys.Setting.BBSSortOrder <> true ) then begin
2217 Sort.SortOrder := true;
2218 Sort.SortIndex := 0;
2219 Sort.SortNoFlag := true;
2220 inBBS.Sort(CategorySortProc);
2223 Root := TreeView.Items.Add( nil, inBBS.Title );
2224 Root.ImageIndex := ITEM_ICON_2CH1;
2225 Root.SelectedIndex := ITEM_ICON_2CH2;
2227 for i := 0 to inBBS.Count - 1 do begin
2228 Category := TCategory(inBBS.Items[i]);
2229 CategoryNode := TreeView.Items.AddChild(Root, Category.Title);
2230 CategoryNode.Data := Category;
2231 CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
2232 CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
2234 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2235 if ( GikoSys.Setting.CategorySortIndex <> 0 ) or ( GikoSys.Setting.CategorySortOrder <> true ) then begin
2236 Sort.SortOrder := true;
2237 Sort.SortIndex := 0;
2238 Sort.SortNoFlag := true;
2239 Category.CustomSort(BoardSortProc);
2242 for j := 0 to Category.Count - 1 do begin
2243 Board := TBoard(Category.Items[j]);
2245 BoardNode := TreeView.Items.AddChild(CategoryNode, Board.Title);
2246 BoardNode.Data := Board;
2247 //if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then begin
2248 if not Board.IsLogFile then begin
2249 BoardNode.ImageIndex := ITEM_ICON_BOARD_NOSUBJECT;
2250 BoardNode.SelectedIndex := ITEM_ICON_BOARD_NOSUBJECT;
2252 BoardNode.ImageIndex := ITEM_ICON_BOARD1;
2253 BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
2254 for k := 0 to Board.Count - 1 do begin
2255 if Board.Items[ k ].IsLogFile then begin
2256 BoardNode.ImageIndex := ITEM_ICON_BOARD_LOG;
2257 BoardNode.SelectedIndex := ITEM_ICON_BOARD_LOG;
2266 CategoryNode.Expanded := Category.NodeExpand;
2268 if SplashWindow <> nil then begin
2269 SplashWindow.ProgressBar.StepIt;
2270 Application.ProcessMessages;
2274 TreeView.Items.EndUpdate;
2278 function TGikoForm.SetCategoryListItem(ABBS2ch: TBBS): Integer;
2280 ListColumn: TListColumn;
2283 ListView.Items.BeginUpdate;
2285 Screen.Cursor := crHourGlass;
2287 ListView.Columns.Clear;
2288 for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
2289 id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
2290 if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
2291 (id <= Integer( High( TGikoBBSColumnID ) )) then begin
2292 ListColumn := ListView.Columns.Add;
2293 // ListColumn.Tag := id;
2294 ListColumn.Tag := i;
2295 ListColumn.Caption := GikoBBSColumnCaption[ id ];
2296 ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
2300 ListView.Items.Count := 0;
2301 ListView.Items.Clear;
2302 ListView.Items.Count := ABBS2ch.Count;
2304 // UpFolderAction.Enabled := False;
2305 // AllItemAction.Enabled := False;
2306 // LogItemAction.Enabled := False;
2307 // NewItemAction.Enabled := False;
2308 // SelectItemAction.Enabled := False;
2309 // ListDownloadToolButton.Enabled := False;
2310 // BoardReservToolButton.Enabled := False;
2311 // ListThreadDownloadToolButton.Enabled := False;
2313 ListNameLabel.Caption := ABBS2ch.Title;
2314 FolderImage.Picture := nil;
2315 ItemIcon16.GetBitmap(1, FolderImage.Picture.Bitmap);
2317 FSortIndex := GikoSys.Setting.BBSSortIndex;
2318 FSortOrder := GikoSys.Setting.BBSSortOrder;
2319 for i := ListView.Columns.Count - 1 downto 0 do
2320 if FSortIndex = ListView.Column[ i ].Tag then
2321 ListViewSort( nil, ListView.Column[ i ] );
2323 Result := ABBS2ch.Count;
2325 Screen.Cursor := crDefault;
2326 ListView.Items.EndUpdate;
2330 function TGikoForm.SetBoardListItem(Category: TCategory): Integer;
2332 ListColumn: TListColumn;
2335 ListView.Items.BeginUpdate;
2337 Screen.Cursor := crHourGlass;
2339 ListView.Columns.Clear;
2340 for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
2341 id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
2342 if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
2343 (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
2344 ListColumn := ListView.Columns.Add;
2345 // ListColumn.Tag := id;
2346 ListColumn.Tag := i;
2347 ListColumn.Caption := GikoCategoryColumnCaption[ id ];
2348 ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
2352 ListView.Items.Count := 0;
2353 ListView.Items.Clear;
2354 ListView.Items.Count := Category.Count;
2356 // UpFolderAction.Enabled := True;
2357 // AllItemAction.Enabled := False;
2358 // LogItemAction.Enabled := False;
2359 // NewItemAction.Enabled := False;
2360 // SelectItemAction.Enabled := False;
2361 // ListDownloadToolButton.Enabled := False;
2362 // BoardReservToolButton.Enabled := False;
2363 // ListThreadDownloadToolButton.Enabled := False;
2365 ListNameLabel.Caption := Category.Title;
2366 FolderImage.Picture := nil;
2367 ItemIcon16.GetBitmap(3, FolderImage.Picture.Bitmap);
2369 FSortIndex := GikoSys.Setting.CategorySortIndex;
2370 FSortOrder := GikoSys.Setting.CategorySortOrder;
2371 for i := ListView.Columns.Count - 1 downto 0 do
2372 if FSortIndex = ListView.Column[ i ].Tag then
2373 ListViewSort( nil, ListView.Column[ i ] );
2375 Result := Category.Count;
2377 Screen.Cursor := crDefault;
2378 ListView.Items.EndUpdate;
2382 function TGikoForm.SetThreadListItem(Board: TBoard): Integer;
2384 ListColumn: TListColumn;
2387 ListView.Items.BeginUpdate;
2389 Screen.Cursor := crHourGlass;
2391 //
\83`
\83\89\82Â
\82«
\96h
\8e~
\82Ì
\82½
\82ß
\81A
\95Ï
\8dX
\82³
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82Ì
\82Ý
2392 //
\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Ó
2393 if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
2395 ListView.Columns.Clear;
2396 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2397 id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
2398 if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
2399 (id <= Integer( High( TGikoBoardColumnID ) )) then begin
2400 ListColumn := ListView.Columns.Add;
2401 ListColumn.Caption := GikoBoardColumnCaption[ id ];
2402 // ListColumn.Tag := id;
2403 ListColumn.Tag := i;
2404 ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
2405 ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
2410 ListView.Items.Count := 0;
2411 ListView.Items.Clear;
2413 case GikoForm.ViewType of
2414 gvtAll: ListView.Items.Count := Board.Count;
2415 gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
2416 gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
2417 gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
2420 ListNameLabel.Caption := Board.Title;
2421 FolderImage.Picture := nil;
2422 ItemIcon16.GetBitmap(5, FolderImage.Picture.Bitmap);
2424 FSortIndex := GikoSys.Setting.BoardSortIndex;
2425 FSortOrder := GikoSys.Setting.BoardSortOrder;
2426 for i := ListView.Columns.Count - 1 downto 0 do
2427 if FSortIndex = ListView.Column[ i ].Tag then
2428 ListViewSort( nil, ListView.Column[ i ] );
2430 Result := Board.Count;
2432 Screen.Cursor := crDefault;
2433 ListView.Items.EndUpdate;
2437 procedure TGikoForm.ListViewData(Sender: TObject; Item: TListItem);
2439 // FileName: string;
2440 // DateTime: TDateTime;
2443 Category: TCategory;
2445 ThreadItem: TThreadItem;
2447 ActivListObj : TObject;
2450 ActivListObj := ActiveList;
2451 if ActivListObj is TBBS then begin
2452 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
2453 BBS := TBBS(ActivListObj);
2455 ListView.StateImages := nil;
2457 if BBS = nil then Exit;
2458 if BBS.Count <= 0 then Exit;
2459 if Item = nil then Exit;
2460 if Item.Index >= BBS.Count then Exit;
2461 if ListView.Items.Count = 0 then Exit;
2463 if not (BBS.Items[Item.index] is TCategory) then Exit;
2464 Category := TCategory(BBS.Items[Item.index]);
2466 if Category = nil then Exit;
2468 if ListNumberVisibleAction.Checked then
2469 Item.Caption := IntToStr(Category.No) + ': ' + Category.Title
2471 Item.Caption := Category.Title;
2473 Item.ImageIndex := ITEM_ICON_CATEGORY1;
2474 Item.Data := Category;
2476 end else if ActivListObj is TCategory then begin
2478 //=====
\94Â
\83\8a\83X
\83g =====
2479 Category := TCategory(ActivListObj);
2481 ListView.StateImages := nil;
2483 if Category = nil then Exit;
2484 if Category.Count <= 0 then Exit;
2485 if Item = nil then Exit;
2486 if Item.Index >= Category.Count then Exit;
2487 if ListView.Items.Count = 0 then Exit;
2489 if not (Category.Items[Item.Index] is TBoard) then Exit;
2490 Board := TBoard(Category.Items[Item.Index]);
2492 if Board = nil then Exit;
2494 if ListNumberVisibleAction.Checked then
2495 Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
2497 Item.Caption := Board.Title;
2499 if Item.SubItems.Count <> ListView.Columns.Count then begin
2500 Item.SubItems.Clear;
2501 for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do
2502 Item.SubItems.Add('');
2505 Item.ImageIndex := ITEM_ICON_BOARD1;
2508 for i := 0 to ListView.Columns.Count - 1 do begin
2509 // case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of
2510 case GikoSys.Setting.CategoryColumnOrder[ i ] of
2512 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2517 Item.SubItems[ idx ] := Board.RoundName // '
\97\
\96ñ'
2519 Item.SubItems[ idx ] := '';
2522 if Board.RoundDate = ZERO_DATE then begin
2523 Item.SubItems[ idx ] := '';
2525 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate);
2532 end else if ActivListObj is TBoard then begin
2534 //=====
\83X
\83\8c\83\8a\83X
\83g =====
2535 Board := TBoard(ActivListObj);
2537 if GikoSys.Setting.ListIconVisible then
2538 ListView.StateImages := StateIconImageList
2540 ListView.StateImages := nil;
2542 case GikoForm.ViewType of
2543 gvtAll: BoardCnt := Board.Count;
2544 gvtLog: BoardCnt := Board.GetLogThreadCount;
2545 gvtNew: BoardCnt := Board.GetNewThreadCount;
2546 gvtUser: BoardCnt := Board.GetUserThreadCount;
2551 // if Board = nil then Exit;
2552 if BoardCnt <= 0 then Exit;
2553 if Item = nil then Exit;
2554 if Item.Index > BoardCnt then Exit;
2555 if ListView.Items.Count = 0 then Exit;
2557 // if not (Board.Items[Item.Index] is TThreadItem) then Exit;
2560 case GikoForm.ViewType of
2561 gvtAll: if Item.Index >= Board.Count then Exit else
2562 ThreadItem := TThreadItem(Board.Items[Item.Index]);
2563 gvtLog: ThreadItem := Board.GetLogThread(Item.Index);
2564 gvtNew: ThreadItem := Board.GetNewThread(Item.Index);
2565 gvtUser: ThreadItem := Board.GetUserThread(Item.Index);
2568 if ThreadItem = nil then Exit;
2570 // if ListNumberVisibleAction.Checked then
2571 // RepStr := IntToStr(ThreadItem.No) + ': ' + ThreadItem.Title
2573 RepStr := ThreadItem.Title;
2574 RepStr := CustomStringReplace(RepStr, '<', '<' );
2575 RepStr := CustomStringReplace(RepStr, '>', '>' );
2576 RepStr := CustomStringReplace(RepStr, '"', '"' );
2577 RepStr := CustomStringReplace(RepStr, '&', '&' );
2578 //RepStr := StringReplace(RepStr, '
\81\97\81M', ',', [rfReplaceAll]);
2580 if Item.SubItems.Count <> ListView.Columns.Count then begin
2581 Item.SubItems.Clear;
2582 for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do
2583 Item.SubItems.Add('');
2586 if ListNumberVisibleAction.Checked then
2587 Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
2589 Item.Caption := RepStr;
2591 case ThreadItem.AgeSage of
2592 gasNone: Item.StateIndex := -1;
2593 gasNew: Item.StateIndex := 0;
2594 gasAge: Item.StateIndex := 1;
2595 gasSage: Item.StateIndex := 2;
2598 if ThreadItem.IsLogFile then begin
2600 for i := 0 to ListView.Columns.Count - 1 do begin
2601 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2602 case GikoSys.Setting.BoardColumnOrder[ i ] of
2604 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2608 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2611 Item.SubItems[ idx ] := IntToStr(ThreadItem.Count);
2614 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count);
2617 if ThreadItem.NewResCount = 0 then
2618 Item.SubItems[ idx ] := ''
2620 Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount);
2623 Item.SubItems[ idx ] := '';
2626 if ThreadItem.Round then
2627 Item.SubItems[ idx ] := ThreadItem.RoundName
2629 Item.SubItems[ idx ] := '';
2632 if ThreadItem.RoundDate = ZERO_DATE then begin
2633 Item.SubItems[ idx ] := '';
2635 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate);
2638 if ThreadItem.CreateDate = ZERO_DATE then begin
2639 Item.SubItems[ idx ] := '';
2641 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2646 if ThreadItem.NewArrival then
2647 Item.ImageIndex := ITEM_ICON_THREADNEW1
2649 Item.ImageIndex := ITEM_ICON_THREADLOG1;
2652 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2653 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2654 case GikoSys.Setting.BoardColumnOrder[ i ] of
2656 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2660 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2663 if not GikoSys.Setting.CreationTimeLogs then
2664 if ThreadItem.CreateDate = ZERO_DATE then
2665 Item.SubItems[ idx ] := ''
2667 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2670 if ThreadItem.CreateDate = ZERO_DATE then begin
2671 Item.SubItems[ idx ] := '';
2673 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2675 Item.SubItems[ idx ] := '';
2680 if ThreadItem.NewArrival then
2681 Item.ImageIndex := ITEM_ICON_THREADNEW1
2683 Item.ImageIndex := ITEM_ICON_THREAD1;
2686 Item.Data := ThreadItem;
2691 procedure TGikoForm.ListViewDataFind(Sender: TObject; Find: TItemFind;
2692 const FindString: String; const FindPosition: TPoint; FindData: Pointer;
2693 StartIndex: Integer; Direction: TSearchDirection; Wrap: Boolean;
2694 var Index: Integer);
2700 procedure TGikoForm.ListViewDataHint(Sender: TObject; StartIndex,
2706 procedure TGikoForm.ListViewDataStateChange(Sender: TObject; StartIndex,
2707 EndIndex: Integer; OldState, NewState: TItemStates);
2712 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
2720 threadItem : TThreadItem;
2722 Protocol, Host, Path, Document, Port, Bookmark: string;
2727 ActiveFileName: string;
2733 if not( TObject(Sender) is TWebBrowser )then
2737 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
2738 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
2739 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
2746 if PreviewTimer.Enabled then
2747 PreviewTimer.Enabled := False;
2748 Application.CancelHint;
2750 if GetActiveContent <> nil then
2751 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
2753 ActiveFileName := '';
2755 FActiveContent := nil;
2759 StatusBar.Panels[1].Text := Text;
2761 if FHint <> nil then begin
2762 FHint.ReleaseHandle;
2765 if FPreviewBrowser <> nil then
2766 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2768 if not GikoSys.Setting.UnActivePopup then
2769 if not GikoForm.Active then
2772 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
2773 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
2776 Ext := AnsiLowerCase(ExtractFileExt(Text));
2777 if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
2778 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
2779 if FPreviewBrowser = nil then begin
2780 FPreviewBrowser := TPreviewBrowser.Create(Self);
2781 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2782 TOleControl(FPreviewBrowser).Parent := nil;
2784 FPreviewBrowser.Navigate(BLANK_HTML);//
\91O
\89ñ
\82Ì
\83v
\83\8c\83r
\83\85\81[
\89æ
\91\9c\8fÁ
\8b\8e\97p
2785 FPreviewURL := Text;
2786 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
2787 PreviewTimer.Enabled := True;
2788 end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
2789 if Pos('mailto:', Text) = 1 then begin
2790 s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
2791 //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g3
\82Ì466
\8e\81\82É
\8a´
\8eÓ
2793 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
2794 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
2795 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
2796 if (Assigned(e)) then begin
2797 tmp2 := ZenToHan(e.Get_outerText);
2798 if (GikoSys.IsNumeric(tmp2)) then begin
2799 //
\82\93\82Í
\83\8c\83X
\94Ô
\8d\86\82Á
\82Û
\82¢
\82Á
\82·
\81B
2800 wkIntSt := StrToInt(tmp2);
2801 wkIntTo := StrToInt(tmp2);
2802 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
2803 FHint.PopupType := gptThread;
2804 SetResPopupText(GetActiveContent, wkIntSt, wkIntTo, False, False);
2806 FHint.PopupType := gptRaw;
2811 threadItem := GetActiveContent;
2812 if Pos('about:blank..', Text) = 1 then begin
2813 if (AnsiPos('http://jbbs.livedoor.com/', threadItem.URL) <> 0) then begin
2814 URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2815 Gikosys.GetPopupResNumber(Text,PathRec.FSt,PathRec.FTo);
2816 if ( PathRec.FSt <> 0 ) and ( PathRec.FTo <> 0 ) then
2817 buf := IntToStr(PathRec.FSt) + '-' + IntToStr(PathRec.FTo)
2818 else if( PathRec.FSt <> 0 ) then
2819 buf := IntToStr(PathRec.FSt);
2820 end else if AnsiPos('machi.to/bbs/', threadItem.URL) <> 0 then begin
2821 URL := threaditem.URL;
2822 buf := Copy(Text,AnsiPos('&st=',Text),Length(Text)-AnsiPos('&st=',Text) + 1);
2824 URL := Copy(threadItem.URL, 1, LastDelimiter('/',threadItem.URL));
2825 buf := Copy(Text,LastDelimiter('/',Text)+1,Length(Text)-LastDelimiter('/',Text));
2831 PathRec := Gikosys.Parse2chURL2(URL);
2832 if (PathRec.FNoParam) then begin
2836 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2837 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
2839 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
2841 URL := GikoSys.GetBrowsableThreadURL( URL );
2842 wkIntSt := PathRec.FSt;
2843 wkIntTo := PathRec.FTo;
2845 if (wkIntSt = 0) and (wkIntTo = 0) then begin
2848 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
2850 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
2852 end else if wkIntSt > wkIntTo then begin
2857 //if wkIntSt = 0 then
2859 //if wkINtTo = 0 then
2861 //if PathRec.FFirst then
2863 if PathRec.FStBegin then
2865 if PathRec.FToEnd then
2868 //ATitle := ActiveFileName <> PathRec.FKey;
2869 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
2874 threadItem := BBSsFindThreadFromURL( URL );
2876 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
2877 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
2878 if board <> nil then begin
2879 if not board.IsThreadDatRead then
2880 GikoSys.ReadSubjectFile( board );
2881 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
2885 if threadItem <> nil then begin
2886 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
2887 FHint.PopupType := gptThread;
2888 SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
2894 // ShowTextPopup(s);
2895 if FHint.PopupType = gptRaw then begin
2896 if FHint.Caption <> '' then
2899 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2905 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2908 //SysMenuApp: HMenu;
2910 FEnabledCloseButton := Enabled;
2911 SysMenu := GetSystemMenu(Handle, False);
2912 //SysMenuApp := GetSystemMenu(Application.Handle, False);
2914 if Enabled then begin
2915 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2916 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2918 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2919 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2922 DrawMenuBar(Handle);
2923 //DrawMenuBar(Application.Handle);
2926 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2927 var AllowChange: Boolean);
2929 //
\83\
\81[
\83g
\8f\87\82ð
\95Û
\91¶
\82·
\82é
\82æ
\82¤
\82É
\82µ
\82½
\82Ì
\82Å
\8dí
\8f\9c
2930 // if FTreeType = gtt2ch then
2931 // FSortIndex := -1;
2934 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2935 Shift: TShiftState);
2937 if GetActiveList is TBoard then begin
2938 if Key = VK_BACK then begin
2939 // UpFolderButtonClick(Sender);
2940 end else if Key = VK_SPACE then begin
2941 ListDoubleClick(Shift);
2942 end else if Key = VK_RETURN then begin
2945 end else begin // TBBS, TCategory
2946 if Key = VK_BACK then begin
2947 // UpFolderButtonClick(Sender);
2948 end else if Key = VK_SPACE then begin
2950 end else if Key = VK_RETURN then begin
2951 ListDoubleClick(Shift);
2956 function TGikoForm.GetHttpState: Boolean;
2958 Result := FHttpState;
2961 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
2962 Column: TListColumn);
2964 if FSortIndex = Column.Index then
2965 FSortOrder := not FSortOrder
2967 FSortOrder := False;
2968 ListViewSort(Sender, Column);
2971 procedure TGikoForm.ListViewSort(Sender: TObject; Column: TListColumn);
2975 wkCategory: TCategory;
2978 for i := 0 to ListView.Columns.Count - 1 do
2979 ListView.Column[i].ImageIndex := -1;
2981 ListView.Column[Column.Index].ImageIndex := ITEM_ICON_SORT1
2983 ListView.Column[Column.Index].ImageIndex := ITEM_ICON_SORT2;
2985 Sort.SortNoFlag := ListNumberVisibleAction.Checked;
2987 //if TObject(TreeView.Selected.Data) is TBBS then begin
2988 if TObject( FActiveList ) is TBBS then begin
2989 //wkBBS := TBBS(TreeView.Selected.Data);
2990 wkBBS := TBBS( FActiveList );
2991 Sort.SortOrder := FSortOrder;
2992 Sort.SortIndex := Column.Index;
2993 GikoSys.Setting.BBSSortIndex := Column.Index;
2994 GikoSys.Setting.BBSSortOrder := FSortOrder;
2995 wkBBS.Sort(CategorySortProc);
2997 //end else if TObject(TreeView.Selected.Data) is TCategory then begin
2998 end else if TObject( FActiveList ) is TCategory then begin
2999 //wkCategory := TCategory(TreeView.Selected.Data);
3000 wkCategory := TCategory( FActiveList );
3001 Sort.SortOrder := FSortOrder;
3002 Sort.SortIndex := Column.Index;
3003 GikoSys.Setting.CategorySortIndex := Column.Index;
3004 GikoSys.Setting.CategorySortOrder := FSortOrder;
3005 wkCategory.CustomSort(BoardSortProc);
3007 //end else if TObject(TreeView.Selected.Data) is TBoard then begin
3008 end else if TObject( FActiveList ) is TBoard then begin
3009 //wkBoard := TBoard(TreeView.Selected.Data);
3010 wkBoard := TBoard( FActiveList );
3011 Sort.SortOrder := FSortOrder;
3012 Sort.SortIndex := Column.Index;
3013 Sort.SortNonAcquiredCountFlag := GikoSys.Setting.NonAcquiredCount;
3014 GikoSys.Setting.BoardSortIndex := Column.Index;
3015 GikoSys.Setting.BoardSortOrder := FSortOrder;
3016 wkBoard.CustomSort(ThreadItemSortProc);
3019 FSortIndex := Column.Index;
3022 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
3023 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
3027 DefaultDraw := True;
3029 DefaultDraw := False;
3030 if (cdsSelected in State) or (cdsHot in State) then begin
3031 Sender.Canvas.Brush.Color := clHighlight;
3032 Sender.Canvas.Font.Color := clHighlightText;
3034 Sender.Canvas.Brush.Color := clBtnFace;
3035 Sender.Canvas.Font.Color := clBtnText;
3037 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
3038 Sender.Canvas.FillRect(ARect);
3039 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
3042 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
3047 Nodes := TreeView.Items;
3049 for i := 0 to Nodes.Count - 1 do begin
3050 if Nodes.Item[i].Data = Data then begin
3051 Result := Nodes.Item[i];
3058 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
3059 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
3060 Headers: OleVariant; var Cancel: WordBool);
3065 kMenuName: string = 'menu:';
3068 if Pos(kMenuName, URL) <> 0 then begin
3069 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
3071 if not GikoSys.IsNumeric(sNo) then Exit;
3075 KokoPopupMenu.Tag := StrToInt(sNo);
3076 KokoPopupMenu.Popup(p.x, p.y);
3077 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
3078 Cancel := not GikoSys.Setting.OpenMailer;
3083 procedure TGikoForm.ListViewAdvancedCustomDrawItem(Sender: TCustomListView;
3084 Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
3085 var DefaultDraw: Boolean);
3087 ThreadItem: TThreadItem;
3089 // TListView(Sender).Canvas.Font.Style := [];
3090 if TObject(Item.Data) is TThreadItem then begin
3091 ThreadItem := TThreadItem(Item.Data);
3092 if ( FUseOddResOddColor ) and ( ThreadItem.Count <> 0 ) and ( ThreadItem.AllResCount <> ThreadItem.Count) then begin
3093 ListView.Canvas.Brush.Color := FOddColor;
3095 ListView.Canvas.Brush.Color := FListViewBackGroundColor;
3097 // if (ThreadItem.Kokomade <> ThreadItem.Count) and (ThreadItem.IsLogFile) then
3098 if ThreadItem.UnRead then
3099 TListView(Sender).Canvas.Font.Style := [fsBold];
3103 procedure TGikoForm.AppFormDeactivate(Sender: TObject);
3105 Application.ProcessMessages;
3106 if Application.Terminated then
3108 if PreviewTimer.Enabled then
3109 PreviewTimer.Enabled := False;
3110 //
\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
3111 if FHint <> nil then begin
3112 FHint.ReleaseHandle;
3117 if FPreviewBrowser <> nil then
3118 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
3122 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
3123 const ARect: TRect; var DefaultDraw: Boolean);
3127 IsBoardNode: Boolean;
3133 Category: TCategory;
3137 DefaultDraw := True;
3139 if FTreeType = gttHistory then Exit;
3141 TreeView.Canvas.Font.Color := clBlue;
3142 IsBoardNode := False;
3143 for i := 0 to TreeView.Items.Count - 1 do begin
3145 if not TreeView.Items[i].IsVisible then
3148 if TObject(TreeView.Items[i].Data) is TCategory then begin
3149 if TreeView.Items[i].Expanded then
3152 IsBoardNode := False;
3153 Category := TCategory(TreeView.Items[i].Data);
3154 for j := 0 to Category.Count - 1 do begin
3155 Board := Category.Items[j];
3156 if Board <> nil then begin
3157 if Board.UnRead > 0 then begin
3165 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
3166 IsBoardNode := True;
3167 Board := TBoard(TreeView.Items[i].Data);
3168 Cnt := Board.UnRead;
3174 Bitmap := TBitmap.Create;
3176 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
3177 Bitmap.Canvas.Font.Style := [fsBold];
3178 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
3183 NodeRect := TreeView.Items[i].DisplayRect(True);
3186 CntText := '(' + IntToStr(Cnt) + ')'
3187 else if Cnt = 1 then
3191 TextWidth := TreeView.Canvas.TextWidth(CntText);
3193 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
3195 NodeRect.Left + NodeWidth + TextWidth + 8,
3197 DrawText(TreeView.Canvas.Handle,
3201 DT_SINGLELINE or DT_VCENTER);
3203 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
3206 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
3207 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
3210 Category: TCategory;
3213 DefaultDraw := True;
3215 if FTreeType = gttHistory then Exit;
3217 TreeView.Canvas.Font.Style := [];
3218 if Node <> nil then begin
3219 if TObject(Node.Data) is TCategory then begin
3220 Category := TCategory(Node.Data);
3221 for i := 0 to Category.Count - 1 do begin
3222 Board := Category.Items[i];
3223 if Board <> nil then begin
3224 if Board.UnRead > 0 then begin
3225 TreeView.Canvas.Font.Style := [fsBold];
3230 end else if TObject(Node.Data) is TBoard then begin
3231 Board := TBoard(Node.Data);
3232 if Board.UnRead > 0 then
3233 TreeView.Canvas.Font.Style := [fsBold];
3238 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
3240 TreeView.Invalidate;
3242 if TObject(Node.Data) is TBBS then begin
3243 TBBS(Node.Data).NodeExpand := True;
3244 end else if TObject(Node.Data) is TCategory then begin
3245 TCategory(Node.Data).NodeExpand := True;
3246 end else if TObject(Node.Data) is TBoard then begin
3247 TBoard(Node.Data).NodeExpand := True;
3251 {procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean);
3253 TreeSplitter.Visible := PanelVisible;
3254 CabinetPanel.Visible := PanelVisible;
3255 CabinetToolButton.Down := PanelVisible;
3258 procedure TGikoForm.ListViewAllSelect;
3264 procedure TGikoForm.TreeViewDblClick(Sender: TObject);
3269 GetCursorPos(APoint);
3270 APoint := TreeView.ScreenToClient(APoint);
3271 HitTest := TreeView.GetHitTestInfoAt(APoint.x, APoint.y);
3272 if not (htOnLabel in HitTest) then Exit;
3274 TreeDoubleClick( TreeView.Selected );
3277 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
3279 AddMessageList(Msg, nil, Icon);
3282 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
3286 boardPlugIn : TBoardPlugIn;
3290 if Item.DownType = gdtBoard then
3291 ATitle := Item.Board.Title
3293 ATitle := Item.ThreadItem.Title;
3295 ATitle := '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j';
3297 if Item.State in [gdsComplete, gdsDiffComplete] then begin
3299 if Item.DownType = gdtBoard then begin
3302 AddMessageList(ATitle + ' [
\83X
\83\8c\88ê
\97\97\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3303 if GetActiveList = Item.Board then begin
3305 SetActiveList(Item.Board);
3307 Item.Board.Modified := True;
3308 Item.Board.IsThreadDatRead := True;
3310 end else if Item.DownType = gdtThread then begin
3313 Item.ThreadItem.NewArrival := True;
3314 if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3315 boardPlugIn := Item.ThreadItem.BoardPlugIn;
3316 Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
3317 ATitle := Item.ThreadItem.Title;
3318 end else if ATitle = '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j' then begin
3319 ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
3321 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3322 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then
3323 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3325 if GikoSys.Setting.BrowserTabVisible then begin
3326 if GetActiveContent = Item.ThreadItem then
3327 InsertBrowserTab(Item.ThreadItem)
3328 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
3329 InsertBrowserTab(Item.ThreadItem, True)
3331 InsertBrowserTab(Item.ThreadItem, False);
3333 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
3334 InsertBrowserTab(Item.ThreadItem);
3337 if Item.State = gdsComplete then begin
3339 AddMessageList(ATitle + ' [
\83X
\83\8c\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3341 PlaySound('NewDiff');
3342 AddMessageList(ATitle + ' [
\83X
\83\8c\8d·
\95ª
\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3345 //
\8f\84\89ñ
\82 \82è
\82Ì
\8fê
\8d\87\81\95\82P
\82O
\82O
\82O
\92´
\82Í
\8f\84\89ñ
\8dí
\8f\9c
3346 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
3347 Item.ThreadItem.Round := False;
3348 Item.ThreadItem.RoundName := '';
3349 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);
3355 end else if Item.State = gdsNotModify then begin
3357 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
3358 //SetContent(Item.ThreadItem);
3359 InsertBrowserTab(Item.ThreadItem);
3361 AddMessageList(ATitle + ' [
\96¢
\8dX
\90V]', nil, gmiSAD);
3362 PlaySound('NoChange');
3363 Screen.Cursor := crDefault;
3364 end else if Item.State = gdsAbort then begin
3366 AddMessageList(ATitle + ' [
\92\86\92f]', nil, gmiSAD);
3367 end else if Item.State = gdsError then begin
3372 AddMessageList(ATitle + ' [
\83G
\83\89\81[(' + IntToStr(Item.ResponseCode) + s + ')]', nil, gmiNG);
3373 // if Item.ResponseCode = 302 then
3374 // 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);
3380 if FWorkCount < 0 then FWorkCount := 0;
3381 if FWorkCount = 0 then begin
3383 Animate.Active := False;
3385 Screen.Cursor := crDefault;
3392 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
3394 // SetProgressValue(Number, 0, AWorkCountMax);
3395 // ProgressBar.Visible := True;
3396 ProgressBar.Position := 0;
3397 ProgressBar.Max := AWorkCountMax;
3398 FDownloadTitle := AWorkTitle;
3399 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8aJ
\8en
\82µ
\82Ü
\82·';
3400 FDownloadMax := AWorkCountMax;
3403 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
3405 ProgressBar.Position := 0;
3406 if FDownloadMax <> 0 then
3407 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8a®
\97¹
\82µ
\82Ü
\82µ
\82½';
3410 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
3412 ProgressBar.Position := AWorkCount;
3413 // SetProgressValue(Number, AWorkCount);
3414 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86 (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
3418 procedure TGikoForm.SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
3420 Component: TComponent;
3422 Component := FindComponent('ProgressBar' + IntToStr(Number + 1));
3423 if Component <> nil then begin
3424 if not (Component is TProgressBar) then Exit;
3426 TProgressBar(Component).Max := Max;
3427 TProgressBar(Component).Position := Value;
3432 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
3434 ListItem: TListItem;
3436 MessageListView.Items.BeginUpdate;
3438 ListItem := MessageListView.Items.Add;
3439 ListItem.Caption := ACaption;
3440 ListItem.Data := AObject;
3441 ListItem.MakeVisible(False);
3443 gmiOK: ListItem.ImageIndex := 0;
3444 gmiSAD: ListItem.ImageIndex := 1;
3445 gmiNG: ListItem.ImageIndex := 2;
3446 gmiWhat: ListItem.ImageIndex := 3;
3449 MessageListView.Items.EndUpdate;
3453 {procedure TGikoForm.BrowserTabChange(Sender: TObject);
3456 ThreadItem: TThreadItem;
3458 ThreadItem := GetActiveContent;
3459 if ThreadItem <> nil then begin
3460 SetContent(ThreadItem);
3464 procedure TGikoForm.InsertBrowserTab(ThreadItem: TThreadItem; ActiveTab: Boolean = True);
3468 favItem : TFavoriteThreadItem;
3469 newBrowser : TBrowserRecord;
3472 if Threaditem = nil then Exit;
3474 if ThreadItem.IsLogFile then begin
3475 //
\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é
3476 //
\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é
3477 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
3478 (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
3479 j := FBrowsers.IndexOf(FActiveContent.FBrowser);
3480 if j = BROWSER_COUNT - 1 then
3481 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3483 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
3484 if not AddHistory( favItem ) then
3487 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3488 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
3489 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3490 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
3491 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3492 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3493 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3494 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3495 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3496 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3501 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3502 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3503 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3505 if ActiveTab then begin
3506 BrowserTab.TabIndex := i;
3507 BrowserTab.OnChange(nil);
3514 idx := BrowserTab.TabIndex;
3515 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
3516 newBrowser := TBrowserRecord.Create;
3517 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3518 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3519 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3520 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3521 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3522 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3527 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3528 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3529 //newBrowser.Browser.Navigate(BLANK_HTML);
3530 newBrowser.thread := ThreadItem;
3531 newBrowser.Repaint := true;
3532 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3534 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3535 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3536 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
3540 if ActiveTab then begin
3541 BrowserTab.TabIndex := 0;
3545 newBrowser := TBrowserRecord.Create;
3546 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3547 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3548 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3549 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3550 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3551 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3556 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3557 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3558 //newBrowser.Browser.Navigate(BLANK_HTML);
3559 newBrowser.thread := ThreadItem;
3560 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3561 newBrowser.Repaint := true;
3563 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3564 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3565 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
3569 if ActiveTab then begin
3570 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
3571 BrowserTab.TabIndex := 0
3573 BrowserTab.TabIndex := i;
3576 if(ActiveTab) or (idx = -1) then begin
3577 BrowserTab.OnChange(nil);
3580 if BrowserNullTab = nil then begin
3581 BrowserNullTab := TBrowserRecord.Create;
3582 BrowserNullTab.Browser := Browser;
3584 BrowserNullTab.thread := ThreadItem;
3585 BrowserTab.TabIndex := -1;
3586 SetContent(BrowserNullTab);
3589 if GikoSys.Setting.URLDisplay then
3590 AddressComboBox.Text := ThreadItem.URL;
3594 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
3599 // HtmlName: string;
3602 // OldCursor: TCursor;
3606 ThreadItem: TThreadItem;
3607 Thread: TBrowserRecord;
3608 ThreadTitle, ThreadPTitle: string;
3609 ThreadScrollTop: Integer;
3610 ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
3613 idx := BrowserTab.TabIndex;
3614 if (FActiveContent <> nil) and
3615 (FActiveContent.Thread <> Thread.Thread) and
3616 (Assigned(FActiveContent.Browser.Document)) then begin
3620 //Application.ProcessMessages;
3621 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
3622 //if FActiveContent.Browser <> BrowserNullTab.Browser then
3623 // TOleControl(FActiveContent.Browser).Visible := false;
3626 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
3631 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
3632 Thread.Browser.Navigate(BLANK_HTML);
3633 BrowserBoardNameLabel.Caption := '';
3634 ItemBoardImage.Picture := nil;
3635 BrowserNameLabel.Caption := '';
3636 ItemImage.Picture := nil;
3637 BrowserNullTab.Thread := nil;
3638 //TOleControl(BrowserNullTab.Browser).Visible := true;
3639 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
3640 FActiveContent := nil;
3642 end else if Thread.Browser = nil then begin
3643 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
3644 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3645 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3646 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3647 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := nil;
3648 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
3649 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
3650 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
3655 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3656 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3658 ThreadTitle := Thread.Thread.Title;
3659 ThreadPTitle := Thread.Thread.ParentBoard.Title;
3660 ThreadScrollTop := Thread.Thread.ScrollTop;
3661 ThreadIsLog := Thread.Thread.IsLogFile;
3662 ThreadItem := Thread.Thread;
3663 ThreadNewArraical := Thread.Thread.NewArrival;
3664 ThreadUnRead := Thread.Thread.UnRead;
3665 BBSID := ThreadItem.ParentBoard.BBSID;
3666 FileName := ThreadItem.FileName;
3668 if GetCapture = ListView.Handle then
3671 Screen.Cursor := crHourGlass;
3675 if ThreadItem.UnRead then begin
3676 ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
3677 if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
3680 { if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
3681 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
3682 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
3685 ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
3686 if (not Assigned(Thread.Browser.Document)) then begin
3687 Thread.Browser.Navigate('about:blank');
3689 FActiveContent := Thread;
3690 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3691 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3692 Application.ProcessMessages;
3693 if idx <> BrowserTab.TabIndex then begin
3697 if not ThreadIsLog then begin
3698 Self.Caption := CAPTION_NAME ;
3700 s := '<HTML><BODY><CENTER>
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Í
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ</CENTER></BODY></HTML>';
3701 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3703 doc.charset := 'Shift_JIS';
3709 Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
3710 //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«
3711 //
\90V
\8bK
\82ÉThread
\82ð
\8aJ
\82¢
\82½
\82Æ
\82«
\82É
\90^
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\81B
3712 // if(Thread.Repaint) or (Thread.OnlyHundred <> GikoSys.OnlyAHundredRes)then begin
3713 if Thread.Repaint then begin
3714 //Thread.LastSize := ThreadItem.Size;
3715 Thread.Repaint := false;
3717 Thread.Browser.OnStatusTextChange := nil;
3718 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3719 GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
3721 // if (Assigned(Thread.Browser)) and (Thread.Browser <> nil) then
3722 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
3723 //
\82È
\82º
\82©
\82±
\82±
\82Å
\96¾
\8e¦
\93I
\82ÉDocumentComplete
\82ð
\8cÄ
\82Î
\82È
\82¢
\82Æ
\82¤
\82Ü
\82
\82¢
\82©
\82È
\82¢
3724 //
\92Ç
\8bL
\81@200406/19
3725 //Visible
\82Ì
\82Æ
\82«
\82µ
\82©DocumentComplete
\82Í
\8cÄ
\82Î
\82ê
\82È
\82¢
\82ç
\82µ
\82¢
3726 Thread.FBrowser.OnDocumentComplete(Thread.FBrowser, Thread.FBrowser.Parent, url);
3727 // Thread.OnlyHundred := GikoSys.OnlyAHundredRes;
3728 Application.ProcessMessages;
3729 //
\82±
\82±
\82ÅApplication.ProcessMessages
\82ð
\8cÄ
\82Ô
\82±
\82Æ
\82É
\82æ
\82Á
\82ÄWebBrowser
\82ð
\8dX
\90V
\82³
\82¹
\82é
\81B
3730 //
\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é
3731 //
\81@by
\82à
\82¶
\82ã(2004/01/20)
3733 //if (Assigned(Thread)) and (Assigned(ThreadItem))then begin
3734 if(Thread <> nil) and (ThreadItem <>nil) then begin
3735 if ThreadUnRead then
3736 BrowserMovement('new', Thread)
3737 else if ThreadScrollTop <> 0 then begin
3739 doc.Body.ScrollTop := ThreadScrollTop;
3742 MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
3747 FActiveContent := nil;
3752 FActiveContent := nil;
3757 // Application.ProcessMessages;
3760 ThreadItem.UnRead := False;
3763 if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
3764 //FActiveContent := Thread;
3766 BrowserBoardNameLabel.Caption := ThreadPTitle;
3767 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
3768 BrowserNameLabel.Caption := ThreadTitle;
3769 ItemImage.Picture := nil;
3771 if ThreadNewArraical then
3772 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
3774 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
3776 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
3778 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
3779 BrowserNameLabel.Left := ItemImage.Left + 20;
3781 FActiveContent := nil;
3784 Screen.Cursor := crDefault;
3788 function TGikoForm.GetActiveContent: TThreadItem;
3791 if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
3792 and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
3793 Result := FActiveContent.Thread
3795 FActiveContent := nil;
3799 FActiveContent := nil;
3804 procedure TGikoForm.SetActiveList(Obj: TObject);
3809 // if FActiveList <> Obj then begin
3812 if ListView.Selected <> nil then
3813 idx := ListView.Selected.Index
3816 ListView.Items.Count := 0;
3817 ListView.Items.Clear;
3818 ListView.Selected := nil;
3819 // ListView.Columns.Clear;
3821 Self.Caption := CAPTION_NAME;
3822 //Application.Title := CAPTION_NAME;
3824 if Obj is TBBS then begin
3825 for i := 0 to ListView.Columns.Count - 1 do
3826 ListView.Column[i].Width := GikoSys.Setting.BBSColumnWidth[i];
3827 SetCategoryListItem(TBBS(Obj));
3828 end else if Obj is TCategory then begin
3829 for i := 0 to ListView.Columns.Count - 1 do
3830 ListView.Column[i].Width := GikoSys.Setting.CategoryColumnWidth[i];
3831 SetBoardListItem(TCategory(Obj));
3832 end else if Obj is TBoard then begin
3833 SetThreadListItem(TBoard(Obj));
3836 if idx >= 0 then begin
3837 ListView.ItemIndex := idx;
3838 ListView.ItemFocused := ListView.Items.Item[ idx ];
3844 //
\81\9a\81\9a\83q
\83\8d\83\86\83L
\83\81\83\82
3845 //
\82»
\82Ì
\82¤
\82¿interface
\82ð
\8eg
\82¤
3846 function TGikoForm.GetActiveList: TObject;
3848 Result := FActiveList;
3851 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
3853 SetListViewType(AViewType, '', False);
3856 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
3860 if ActiveList is TBoard then begin
3861 Board := TBoard(ActiveList);
3863 Board.ParentCategory.ParenTBBS.SelectText := SelectText;
3864 Board.ParentCategory.ParenTBBS.KubetsuChk := KubetsuChk;
3865 // Board.SelectText := SelectText;
3866 // Board.KubetsuChk := KubetsuChk;
3867 ViewType := AViewType;
3868 SetActiveList(Board);
3869 SetThreadListItem(Board);
3873 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
3874 const ARect: TRect; var DefaultDraw: Boolean);
3880 if ListView.Items.Count = 0 then begin
3881 DefaultDraw := True;
3883 ListView.Canvas.Brush.Color := ListView.Color;
3884 ListView.Canvas.FillRect(ARect);
3888 ListView.Canvas.Font.Color := clWindowText;
3889 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
3892 ListView.Canvas.Font.Color := clBlue;
3893 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';
3896 ListView.Canvas.Font.Color := clGreen;
3897 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\90V
\92\85\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
3900 ListView.Canvas.Font.Color := clNavy;
3901 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';
3902 if GetActiveList is TBoard then
3903 s := Format(s, [TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText]);
3911 p := Point((ListView.ClientWidth div 2) - (ListView.Canvas.TextWidth(s) div 2),
3912 (ListView.ClientHeight div 2) - (ListView.Canvas.TextHeight(s) div 2));
3913 ListView.Canvas.TextOut(p.X, p.Y, s);
3915 DefaultDraw := True;
3919 procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
3921 Item: TDownloadItem;
3923 if not Board.IsThreadDatRead then
3924 GikoSys.ReadSubjectFile(Board);
3925 Item := TDownloadItem.Create;
3927 Item.Board := Board;
3928 Item.DownType := gdtBoard;
3929 Item.ForceDownload := ForceDownload;
3930 // AbortToolButton.Enabled := True;
3931 // Animate.Active := True;
3932 // FDownload.Add(Item);
3933 FControlThread.AddItem(Item);
3934 // Animate.Active := False;
3935 // AbortToolButton.Enabled := False;
3936 if FWorkCount = 0 then begin
3938 Animate.Active := True;
3941 Screen.Cursor := crAppStart;
3949 procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
3951 Item: TDownloadItem;
3953 Item := TDownloadItem.Create;
3955 Item.ThreadItem := ThreadItem;
3956 Item.DownType := gdtThread;
3957 Item.ForceDownload := ForceDownload;
3958 // AbortToolButton.Enabled := True;
3959 // Animate.Active := True;
3960 // FDownload.Add(Item);
3961 FControlThread.AddItem(Item);
3962 // Animate.Active := False;
3963 // AbortToolButton.Enabled := False;
3964 if FWorkCount = 0 then begin
3966 Animate.Active := True;
3969 Screen.Cursor := crAppStart;
3977 procedure TGikoForm.PlaySound(SoundEventName: string);
3981 FileName := GikoSys.Setting.FindSoundFileName(SoundEventName);
3982 if FileExists(FileName) then begin
3983 if not sndPlaySound(PChar(FileName), SND_ASYNC or SND_NOSTOP) then begin
3984 sndPlaySound(nil, SND_SYNC);
3985 Application.ProcessMessages;
3987 sndPlaySound(PChar(FileName), SND_ASYNC);
3992 function TGikoForm.AddHistory( favItem : TFavoriteThreadItem ): Boolean;
3995 Item: TFavoriteThreadItem;
3999 // if (GetActiveContent = ThreadItem) and
4000 // (ThreadItem.Count <= ThreadItem.Kokomade) then
4002 // if GetActiveContent = ThreadItem then
4006 if FTreeType = gttHistory then
4007 TreeView.Selected := nil;
4009 for i := 0 to FHistoryList.Count - 1 do begin
4010 if TObject(FHistoryList[i]) is TFavoriteThreadItem then begin
4011 Item := TFavoriteThreadItem(FHistoryList[i]);
4012 if Item.URL = favItem.URL then begin
4013 // SetContent(ThreadItem);
4014 FHistoryList.Move(i, 0);
4015 if FTreeType = gttHistory then
4016 if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
4017 TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
4024 if FHistoryList.Count > 0 then
4025 FHistoryList.Insert( 0, favItem )
4027 FHistoryList.Add( favItem );
4028 // SetContent(ThreadItem);
4030 if FTreeType = gttHistory then begin
4031 Node := TreeView.Items.Add( nil, favItem.Title );
4032 Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
4034 if favItem.NewArrival then begin
4035 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4036 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4038 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4039 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4042 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4043 //
\81¦favItem.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4044 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4045 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4046 Node.Data := favItem;
4050 procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
4054 for i := 0 to FHistoryList.Count - 1 do begin
4055 if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
4056 TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
4057 FHistoryList.Delete(i);
4058 FHistoryList.Capacity := FHistoryList.Count;
4064 procedure TGikoForm.ClearHistory;
4068 //FHistoryList.Clear;
4071 for i := FHistoryList.Count - 1 downto 0 do begin
4072 if TObject(FHistoryList[ i ]) is TFavoriteThreadItem then
4073 TFavoriteThreadItem(FHistoryList[ i ]).Free
4074 else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
4075 TFavoriteBoardItem(FHistoryList[ i ]).Free;
4077 //FHistoryList.Delete(i);
4083 FHistoryList.Capacity := FHistoryList.Count;
4087 procedure TGikoForm.SaveHistory;
4090 saveList : TstringList;
4093 saveList := TStringList.Create;
4096 FHistoryList.Capacity := FHistoryList.Count;
4097 saveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
4098 saveList.Add('<address>');
4099 bound := FHistoryList.Count - 1;
4100 for i := bound downto 0 do begin
4101 // title
\82Í
\8d¡
\82Ì
\82Æ
\82±
\82ë
\8eg
\82Á
\82Ä
\82¢
\82È
\82¢
4103 '<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
4104 ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
4106 saveList.Add('</address>');
4107 saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
4114 procedure TGikoForm.LoadHistory;
4118 XMLDoc : IXMLDocument;
4120 HistoryNode : IXMLNode;
4122 favItem : TFavoriteThreadItem;
4125 fileName := GikoSys.GetConfigDir + 'History.xml';
4127 if FileExists( fileName ) then begin
4129 XMLDoc := IXMLDocument.Create;
4130 //XMLDoc := LoadXMLDocument(FileName);
4131 LoadXMLDocument(FileName, XMLDoc);
4133 XMLNode := XMLDoc.DocumentElement;
4135 if XMLNode.NodeName = 'address' then begin
4136 bound := XMLNode.ChildNodes.Count - 1;
4137 for i := 0 to bound do begin
4138 HistoryNode := XMLNode.ChildNodes[i];
4139 if HistoryNode.NodeName = 'history' then begin
4140 //if FReadCount >= sl.Count then begin
4141 s := Trim(HistoryNode.Attributes['url']);
4142 if s <> '' then begin
4143 favItem := TFavoriteThreadItem.Create(
4144 s, HistoryNode.Attributes[ 'title' ] );
4145 if not AddHistory( favItem ) then
4161 procedure TGikoForm.ShowBBSTreeOld(
4169 FavoriteTreeView.Visible := False;
4170 FavoriteToolBar.Hide;
4171 TreeView.Visible := True;
4173 b := CabinetSelectPopupMenu.Items.Count - 1;
4174 for i := 0 to b do begin
4175 item := CabinetSelectPopupMenu.Items[ i ];
4176 if item is TBBSMenuItem then begin
4177 if TBBSMenuItem( item ).Data = inBBS then begin
4178 item.Checked := True;
4179 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4180 CabinetMenu.Items[ i ].Checked := True;
4181 GikoSys.Setting.CabinetIndex := i;
4185 item.Checked := False;
4186 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4187 CabinetMenu.Items[ i ].Checked := False;
4189 CabinetSelectToolButton.Caption := inBBS.Title;
4191 CabinetHistoryAction.Checked := False;
4192 CabinetFavoriteAction.Checked := False;
4194 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4195 FTreeType := gtt2ch;
4196 HistoryToolBar.Hide;
4197 SetBoardTreeNode( inBBS );
4198 TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
4199 //?c???[??g?b?v?????I????
4200 if GetActiveList = nil then
4201 TreeView.Selected := TreeView.Items[0]
4203 for i := 0 to TreeView.Items.Count - 1 do begin
4204 if TreeView.Items[i].Data = GetActiveList then begin
4205 TreeView.Selected := TreeView.Items[i];
4209 TreeView.Selected := TreeView.Items[0]
4217 procedure TGikoForm.ShowBBSTree(
4226 FavoriteTreeView.Visible := False;
4227 FavoriteToolBar.Hide;
4228 TreeView.Visible := True;
4230 b := CabinetSelectPopupMenu.Items.Count - 1;
4231 for i := 0 to b do begin
4232 item := CabinetSelectPopupMenu.Items[ i ];
4233 if item is TBBSMenuItem then begin
4234 if TBBSMenuItem( item ).Data = inBBS then begin
4235 item.Checked := True;
4236 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4237 CabinetMenu.Items[ i ].Checked := True;
4238 GikoSys.Setting.CabinetIndex := i;
4242 item.Checked := False;
4243 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4244 CabinetMenu.Items[ i ].Checked := False;
4246 CabinetSelectToolButton.Caption := inBBS.Title;
4248 CabinetHistoryAction.Checked := False;
4249 CabinetFavoriteAction.Checked := False;
4251 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4252 FTreeType := gtt2ch;
4253 HistoryToolBar.Hide;
4254 SetBoardTreeNode( inBBS );
4255 TreeView.Items.GetFirstNode.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
4256 //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
4257 if GetActiveList = nil then begin
4259 TreeClick( TreeView.Items[0] );
4263 for i := 0 to TreeView.Items.Count - 1 do begin
4264 if TreeView.Items[i].Data = GetActiveList then begin
4265 TreeClick( TreeView.Items[i] );
4269 TreeClick( TreeView.Items[0] );
4277 procedure TGikoForm.ShowHistoryTree;
4282 if CabinetPanel.Visible then begin
4283 if FTreeType = gttHistory then begin
4284 CabinetVisible( False );
4285 CabinetHistoryAction.Checked := False;
4287 CabinetHistoryAction.Checked := True;
4290 CabinetVisible( True );
4291 CabinetHistoryAction.Checked := True;
4294 // BBS...BBS, History, Favorite
4295 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 2;
4297 FavoriteTreeView.Visible := False;
4298 TreeView.Visible := True;
4300 CabinetBBSAction.Checked := False;
4301 CabinetFavoriteAction.Checked := False;
4303 if FTreeType <> gttHistory then begin
4304 b := CabinetSelectPopupMenu.Items.Count - 1;
4305 for i := 0 to b do begin
4306 item := CabinetSelectPopupMenu.Items[ i ];
4307 if item is TBBSMenuItem then begin
4308 item.Checked := False;
4309 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4310 CabinetMenu.Items[ i ].Checked := False;
4314 FTreeType := gttHistory;
4315 HistoryToolBar.Show;
4316 FavoriteToolBar.Hide;
4318 CabinetSelectToolButton.Caption := '
\97\9a\97ð
\83\8a\83X
\83g';
4322 procedure TGikoForm.SetHistoryTreeNode;
4326 Item: TFavoriteThreadItem;
4328 TreeView.Items.BeginUpdate;
4330 TreeView.Items.Clear;
4331 for i := 0 to FHistoryList.Count - 1 do begin
4332 Item := TFavoriteThreadItem(FHistoryList[i]);
4333 Node := TreeView.Items.Add(nil, Item.Title);
4335 if Item.Item.NewArrival then begin
4336 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4337 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4339 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4340 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4343 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4344 //
\81¦Item.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4345 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4346 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4350 TreeView.Items.EndUpdate;
4354 procedure TGikoForm.SelectTreeNode(Item: TObject; CallEvent: Boolean);
4356 ChangeEvent: TTVChangedEvent;
4357 ChangingEvent: TTVChangingEvent;
4361 if Item is TCategory then
4362 bbs := TCategory( Item ).ParenTBBS
4363 else if Item is TBoard then
4364 bbs := TBoard( Item ).ParentCategory.ParenTBBS
4368 if (FTreeType = gtt2ch) and (FActiveBBS = bbs) then begin
4369 if Item <> FActiveList then begin
4371 ChangingEvent := nil;
4373 if not CallEvent then begin
4374 ChangeEvent := TreeView.OnChange;
4375 ChangingEvent := TreeView.OnChanging;
4378 if not CallEvent then begin
4379 TreeView.OnChange := nil;
4380 TreeView.OnChanging := nil;
4382 //Application.ProcessMessages;
4383 for i := 0 to TreeView.Items.Count - 1 do begin
4384 if TreeView.Items[i].Data = Item then begin
4385 TreeView.Items[i].Selected := True;
4387 TreeClick(TreeView.Items[i]);
4391 //Application.ProcessMessages;
4393 if not CallEvent then begin
4394 TreeView.OnChange := ChangeEvent;
4395 TreeView.OnChanging := ChangingEvent;
4400 if Item <> FActiveList then begin
4401 if GetActiveList is TBBS then begin
4402 for i := 0 to ListView.Columns.Count - 1 do
4403 GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
4404 end else if GetActiveList is TCategory then begin
4405 for i := 0 to ListView.Columns.Count - 1 do
4406 GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
4407 end else if GetActiveList is TBoard then begin
4408 for i := 0 to ListView.Columns.Count - 1 do
4409 GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
4412 if (Item is TBBS) or (Item is TCategory) then begin
4413 ListView.Columns.Clear;
4414 SetActiveList( Item );
4415 end else if Item is TBoard then begin
4416 if not TBoard( Item ).IsThreadDatRead then begin
4417 Screen.Cursor := crHourGlass;
4419 if not TBoard( Item ).IsThreadDatRead then
4420 GikoSys.ReadSubjectFile(TBoard( Item ));
4422 Screen.Cursor := crDefault;
4425 SetActiveList( Item );
4429 if Item is TBoard then begin // not TCategory
4430 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4431 if GikoSys.Setting.ListWidthState = glsMax then begin
4432 BrowserMinAction.Execute;
4433 if GikoForm.Visible then
4437 if GikoSys.Setting.ListHeightState = glsMax then begin
4438 BrowserMinAction.Execute;
4439 if GikoForm.Visible then
4447 procedure TGikoForm.ListViewMouseDown(Sender: TObject;
4448 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
4450 listItem : TListItem;
4451 threadItem : TThreadItem;
4457 if not (GetActiveList is TBoard) then Exit;
4458 listItem := ListView.GetItemAt( X, Y );
4459 if listItem = nil then Exit;
4460 if not (TObject(listItem.Data) is TThreadItem) then Exit;
4462 threadItem := TThreadItem(ListItem.Data);
4463 InsertBrowserTab(threadItem, False);
4464 if threadItem.IsLogFile then
4465 ListView.UpdateItems(listItem.Index, listItem.Index);
4469 //
\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Å
4470 if (ssDouble in Shift) then
4471 ListDoubleClick(Shift)
4476 { if ssDouble in Shift then begin
4477 DoubleClickOccurred[Button] := True;
4479 DoubleClickOccurred[Button] := False;
4480 t := GetTickCount+GetDoubleClickTime;
4481 while GetTickCount < t do begin
4482 Application.ProcessMessages;
4483 if DoubleClickOccurred[Button] then
4488 if ssDouble in Shift then begin
4490 mbLeft: ListDoubleClick;
4503 procedure TGikoForm.ListClick;
4505 ListItem: TListItem;
4506 ThreadItem: TThreadItem;
4508 if ListView.SelCount <> 1 then Exit;
4509 ListItem := ListView.Selected;
4510 if ListItem = nil then Exit;
4511 if not (TObject(ListItem.Data) is TThreadItem) then Exit;
4513 ThreadItem := TThreadItem(ListItem.Data);
4514 if ThreadItem.IsLogFile then begin
4515 // if AddHistory(ThreadItem) then
4516 // SetContent(ThreadItem);
4517 InsertBrowserTab(ThreadItem);
4518 ListView.UpdateItems(ListItem.Index, ListItem.Index);
4520 // SetContent(ThreadItem);
4521 InsertBrowserTab(ThreadItem);
4524 if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
4525 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4526 if GikoSys.Setting.ListWidthState = glsMin then begin
4527 BrowserMaxAndFocusAction.Execute;
4530 if GikoSys.Setting.ListHeightState = glsMin then begin
4531 BrowserMaxAndFocusAction.Execute;
4537 procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
4539 ThreadItem: TThreadItem;
4542 shiftDown := (ssShift in Shift);
4544 if ListView.Selected = nil then Exit;
4546 if TObject(ListView.Selected.Data) is TCategory then begin
4547 SelectTreeNode(ListView.Selected.Data, True);
4548 // TreeView.Selected.Expanded := True;
4549 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4550 //TreeViewChange(nil, TreeView.Selected);
4551 end else if TObject(ListView.Selected.Data) is TBoard then begin
4552 SelectTreeNode(ListView.Selected.Data, True);
4553 // TreeView.Selected.Expanded := True;
4554 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4555 //TreeViewChange(nil, TreeView.Selected);
4556 end else if TObject(ListView.Selected.Data) is TThreadItem then begin
4557 //if TObject(ListView.Selected.Data) is TThreadItem then begin
4558 Application.ProcessMessages;
4559 ThreadItem := TThreadItem(ListView.Selected.Data);
4560 DownloadContent(ThreadItem, shiftDown);
4563 if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
4564 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4565 if GikoSys.Setting.ListWidthState = glsMin then begin
4566 // BrowserMaxAndFocusAction.Execute;
4567 BrowserMaxAction.Execute;
4568 SetFocusForBrowserAction.Execute;
4571 if GikoSys.Setting.ListHeightState = glsMin then begin
4572 // BrowserMaxAndFocusAction.Execute;
4573 BrowserMaxAction.Execute;
4574 SetFocusForBrowserAction.Execute;
4580 procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
4585 activeBrower :TWebBrowser;
4587 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4589 while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
4590 (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4591 Application.ProcessMessages;
4594 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4595 if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
4596 activeBrower := BrowserRecord.FBrowser;
4600 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4602 top := top + item.offsetTop;
4603 item := item.offsetParent;
4604 until AnsiCompareText(item.tagName, 'body' ) = 0;
4606 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4612 procedure TGikoForm.BrowserMovement(const AName: string);
4617 activeBrower :TWebBrowser;
4619 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4621 while (Browser.ReadyState <> READYSTATE_COMPLETE) and
4622 (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4623 Application.ProcessMessages;
4626 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4627 if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
4628 activeBrower := FActiveContent.Browser;
4632 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4634 top := top + item.offsetTop;
4635 item := item.offsetParent;
4636 until AnsiCompareText(item.tagName, 'body' ) = 0;
4638 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4644 procedure TGikoForm.TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
4646 if TObject(Node.Data) is TBBS then begin
4647 TBBS(Node.Data).NodeExpand := False;
4648 end else if TObject(Node.Data) is TCategory then begin
4649 TCategory(Node.Data).NodeExpand := False;
4650 end else if TObject(Node.Data) is TBoard then begin
4651 TBoard(Node.Data).NodeExpand := False;
4655 procedure TGikoForm.MessageListViewResize(Sender: TObject);
4657 // MessageListView.Column[0].Width := MessageListView.ClientWidth - 16;
4660 procedure TGikoForm.SelectListItem(List: TList);
4662 // TmpTreeNode: TTreeNode;
4663 TmpListItem: TListItem;
4666 TmpListItem := ListView.Selected;
4667 while TmpListItem <> nil do begin
4668 List.Add(TmpListItem.Data);
4669 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
4674 procedure TGikoForm.ExitActionExecute(Sender: TObject);
4679 procedure TGikoForm.AllSelectActionExecute(Sender: TObject);
4684 procedure TGikoForm.StdToolBarVisibleActionExecute(Sender: TObject);
4686 CoolBand: TCoolBand;
4688 CoolBand := GetCoolBand(MainCoolBar, StdToolBar);
4689 if CoolBand = nil then
4691 GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
4692 CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
4693 // StdToolBar.Visible := StdToolBarVisibleAction.Checked;
4694 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4696 //StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
4697 StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
4700 procedure TGikoForm.AddressBarVisibleActionExecute(Sender: TObject);
4702 CoolBand: TCoolBand;
4704 CoolBand := GetCoolBand(MainCoolBar, AddressToolBar);
4705 if CoolBand = nil then
4707 GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
4708 CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
4709 //AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
4710 AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
4713 procedure TGikoForm.LinkBarVisibleActionExecute(Sender: TObject);
4715 CoolBand: TCoolBand;
4717 CoolBand := GetCoolBand(MainCoolBar, LinkToolBar);
4718 if CoolBand = nil then
4720 GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
4721 CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
4722 //LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
4723 LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
4726 procedure TGikoForm.ListToolBarVisibleActionExecute(Sender: TObject);
4728 CoolBand: TCoolBand;
4730 CoolBand := GetCoolBand(ListCoolBar, ListToolBar);
4731 if CoolBand = nil then
4733 CoolBand.Visible := ListToolBarVisibleAction.Checked;
4734 // ListToolBar.Visible := ListToolBarVisibleAction.Checked;
4735 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4736 GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
4739 procedure TGikoForm.ListNameBarVisibleActionExecute(Sender: TObject);
4741 CoolBand: TCoolBand;
4743 CoolBand := GetCoolBand(ListCoolBar, ListNameToolBar);
4744 if CoolBand = nil then
4746 CoolBand.Visible := ListNameBarVisibleAction.Checked;
4747 GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
4750 procedure TGikoForm.BrowserToolBarVisibleActionExecute(Sender: TObject);
4752 CoolBand: TCoolBand;
4754 CoolBand := GetCoolBand(BrowserCoolBar, BrowserToolBar);
4755 if CoolBand = nil then
4757 CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
4758 // BrowserToolBar.Visible := BrowserToolBarVisibleAction.Checked;
4759 GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
4762 procedure TGikoForm.BrowserNameBarVisibleActionExecute(Sender: TObject);
4764 CoolBand: TCoolBand;
4766 CoolBand := GetCoolBand(BrowserCoolBar, BrowserNameToolBar);
4767 if CoolBand = nil then
4769 CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
4770 GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
4773 procedure TGikoForm.MsgBarVisibleActionExecute(Sender: TObject);
4775 MessageSplitter.Visible := MsgBarVisibleAction.Checked;
4776 MessagePanel.Top := MessageSplitter.Top + MessageSplitter.Height;
4777 MessageSplitter.Top := MessagePanel.Top + 1;
4778 MessagePanel.Visible := MsgBarVisibleAction.Checked;
4779 GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
4782 procedure TGikoForm.StatusBarVisibleActionExecute(Sender: TObject);
4784 StatusBar.Visible := StatusBarVisibleAction.Checked;
4785 GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
4788 procedure TGikoForm.IconStyleExecute(Sender: TObject);
4790 case ListView.ViewStyle of
4791 vsIcon: SmallIconAction.Execute;
4792 vsSmallIcon: ListIconAction.Execute;
4793 vsList: DetailIconAction.Execute;
4794 vsReport: LargeIconAction.Execute;
4798 procedure TGikoForm.LargeIconActionExecute(Sender: TObject);
4800 ListView.ViewStyle := vsIcon;
4801 LargeIconAction.Checked := True;
4804 procedure TGikoForm.SmallIconActionExecute(Sender: TObject);
4806 ListView.ViewStyle := vsSmallIcon;
4807 SmallIconAction.Checked := True;
4810 procedure TGikoForm.ListIconActionExecute(Sender: TObject);
4812 ListView.ViewStyle := vsList;
4813 ListIconAction.Checked := True;
4816 procedure TGikoForm.DetailIconActionExecute(Sender: TObject);
4818 ListView.ViewStyle := vsReport;
4819 DetailIconAction.Checked := True;
4822 procedure TGikoForm.SearchActionExecute(Sender: TObject);
4827 if FSearchDialog = nil then begin
4828 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
4829 chk := GikoForm.GetActiveList
4833 FSearchDialog := TSearchDialog.Create(Self, chk);
4834 FSearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
4844 procedure TGikoForm.OptionActionExecute(Sender: TObject);
4848 Dlg := TOptionDialog.Create(Self);
4856 procedure TGikoForm.GikoNaviWebPageActionExecute(Sender: TObject);
4858 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
4860 GikoSys.OpenBrowser(URL_GIKONAVI, gbtAuto);
4863 procedure TGikoForm.MonazillaWebPageActionExecute(Sender: TObject);
4865 URL_MONAZILLA: string = 'http://www.monazilla.org/';
4867 GikoSys.OpenBrowser(URL_MONAZILLA, gbtAuto);
4870 procedure TGikoForm.BBS2chWebPageActionExecute(Sender: TObject);
4872 URL_2ch: string = 'http://www.2ch.net/';
4874 GikoSys.OpenBrowser(URL_2ch, gbtAuto);
4877 procedure TGikoForm.GikoFolderOpenActionExecute(Sender: TObject);
4879 // GikoSys.OpenBrowser(GikoSys.GetAppDir, gbtIE);
4880 GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
4883 procedure TGikoForm.AboutActionExecute(Sender: TObject);
4887 Dlg := TAboutDialog.Create(Self);
4895 procedure TGikoForm.CabinetHistoryActionExecute(Sender: TObject);
4900 procedure TGikoForm.CabinetVisible( isVisible : Boolean );
4902 TreeSplitter.Visible := isVisible;
4903 CabinetPanel.Visible := isVisible;
4904 CabinetVisibleAction.Checked := isVisible;
4907 procedure TGikoForm.CabinetVisibleActionExecute(Sender: TObject);
4910 gttHistory: CabinetHistoryAction.Execute;
4911 gttFavorite: CabinetFavoriteAction.Execute;
4913 CabinetBBSAction.Execute;
4917 procedure TGikoForm.AllItemActionExecute(Sender: TObject);
4920 if ViewType <> gvtAll then
4921 SetListViewType(gvtAll);
4922 GikoSys.Setting.ThreadRange := gtrAll;
4923 AllItemAction.Checked := True;
4924 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
4926 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
4927 if SelectComboBox.Parent <> nil then begin
4928 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
4929 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
4936 procedure TGikoForm.LogItemActionExecute(Sender: TObject);
4939 if ViewType <> gvtLog then
4940 SetListViewType(gvtLog);
4941 GikoSys.Setting.ThreadRange := gtrLog;
4942 LogItemAction.Checked := True;
4943 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
4945 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
4946 if SelectComboBox.Parent <> nil then begin
4947 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
4948 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
4955 procedure TGikoForm.NewItemActionExecute(Sender: TObject);
4959 if ViewType <> gvtNew then
4960 SetListViewType(gvtNew);
4961 GikoSys.Setting.ThreadRange := gtrNew;
4962 NewItemAction.Checked := True;
4963 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
4965 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
4966 if SelectComboBox.Parent <> nil then begin
4967 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
4968 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
4975 procedure TGikoForm.SelectItemActionExecute(Sender: TObject);
4978 Dlg: TListSelectDialog;
4981 if SelectComboBox.Parent <> nil then begin
4982 if SelectComboBox.Left + SelectComboBox.Width < ListToolBar.Width then begin
4983 // SelectComboBox
\82ª
\82 \82é
\8fê
\8d\87\82Í
\83t
\83H
\81[
\83J
\83X
\82ð
\88Ú
\82·
4984 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4985 if GikoSys.Setting.ListWidthState = glsMax then
4986 BrowserMinAction.Execute;
4988 if GikoSys.Setting.ListHeightState = glsMax then
4989 BrowserMinAction.Execute;
4991 SelectComboBox.SetFocus;
4998 if SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
4999 SelectComboBox.Text := '';
5000 SelectComboBox.Color := clWindow;
5003 AllItemAction.Checked := False;
5004 LogItemAction.Checked := False;
5005 NewItemAction.Checked := False;
5006 //SelectItemAction.Checked := True;
5008 Dlg := TListSelectDialog.Create(Self);
5010 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
5011 Dlg.SelectComboBox.Text := SelectComboBox.Text;
5013 if Dlg.ModalResult = mrCancel then begin
5014 if Length( SelectComboBox.Text ) = 0 then begin
5015 AllItemAction.Checked := True;
5016 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5017 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5020 if GetActiveList is TBoard then
5021 SetListViewType(gvtUser, TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
5023 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
5025 GikoSys.Setting.SelectTextList.Delete(idx);
5026 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
5027 while Dlg.SelectComboBox.Items.Count > 100 do begin
5028 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
5031 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
5032 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5033 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5035 SelectComboBox.Text := Dlg.SelectComboBox.Text;
5036 SelectComboBox.Color := clWindow;
5038 SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
5045 procedure TGikoForm.ListNumberVisibleActionExecute(Sender: TObject);
5047 GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
5051 procedure TGikoForm.UpFolderActionExecute(Sender: TObject);
5053 if GetActiveList is TBoard then begin
5054 // if FTreeType = gtt2ch then
5055 SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5056 //SetActiveList(TBoard(GetActiveList).ParentCategory);
5057 end else if GetActiveList is TCategory then begin
5058 // if FTreeType = gtt2ch then
5059 SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);
5060 //SetActiveList(TCategory(GetActiveList).ParenTBBS);
5062 // if TreeView.Selected = nil then Exit;
5063 // if TreeView.Selected.Level = 0 then Exit;
5064 // TreeView.Selected.Parent.Selected := True;
5067 procedure TGikoForm.RoundActionExecute(Sender: TObject);
5071 Dlg := TRoundDialog.Create(Self);
5079 procedure TGikoForm.StopActionExecute(Sender: TObject);
5081 FControlThread.DownloadAbort;
5082 if FWorkCount <> 0 then FWorkCount := 0;
5084 Animate.Active := False;
5087 Screen.Cursor := crDefault;
5090 procedure TGikoForm.MsgBarCloseActionExecute(Sender: TObject);
5092 // MessagePanel.Visible := False;
5093 // MessageSplitter.Visible := False;
5094 // MsgBarVisibleAction.Checked := False;
5095 MsgBarVisibleAction.Execute;
5098 procedure TGikoForm.BrowserMaxActionExecute(Sender: TObject);
5100 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5101 case GikoSys.Setting.ListWidthState of
5103 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5104 if FActiveContent <> nil then
5105 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5106 ViewPanel.Width := FBrowserSizeWidth;
5107 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5108 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5109 GikoSys.Setting.ListWidthState := glsNormal;
5110 if FActiveContent <> nil then
5111 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5113 glsMin, glsNormal: begin
5114 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5115 if FActiveContent <> nil then
5116 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5117 if GikoSys.Setting.ListWidthState = glsNormal then
5118 FBrowserSizeWidth := ViewPanel.Width;
5119 if FActiveContent <> nil then
5120 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5121 ViewPanel.Width := 1;
5122 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5123 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5124 GikoSys.Setting.ListWidthState := glsMax;
5128 case GikoSys.Setting.ListHeightState of
5130 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5131 if FActiveContent <> nil then
5132 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5133 ViewPanel.Height := FBrowserSizeHeight;
5134 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5135 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5136 GikoSys.Setting.ListHeightState := glsNormal;
5137 if FActiveContent <> nil then
5138 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5140 glsMin, glsNormal: begin
5141 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5142 if FActiveContent <> nil then
5143 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5144 if GikoSys.Setting.ListHeightState = glsNormal then
5145 FBrowserSizeHeight := ViewPanel.Height;
5146 if FActiveContent <> nil then
5147 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5148 ViewPanel.Height := 1;
5149 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5150 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5151 GikoSys.Setting.ListHeightState := glsMax;
5155 // Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
5156 // System.Round(BrowserToolBar.ButtonWidth div 2),
5157 // System.Round(BrowserToolBar.ButtonHeight div 2)));
5158 //BrowserTab.OnChange(nil);
5161 procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
5164 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5165 case GikoSys.Setting.ListWidthState of
5166 glsMax, glsNormal: begin
5167 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5168 if FActiveContent <> nil then
5169 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5170 if GikoSys.Setting.ListWidthState = glsNormal then
5171 FBrowserSizeWidth := ViewPanel.Width;
5172 if FActiveContent <> nil then
5173 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5174 ViewPanel.Width := ThreadMainPanel.Width - 80;
5175 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5176 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5177 GikoSys.Setting.ListWidthState := glsMin;
5180 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5181 if FActiveContent <> nil then
5182 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5183 ViewPanel.Width := FBrowserSizeWidth;
5184 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5185 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5186 GikoSys.Setting.ListWidthState := glsNormal;
5187 if FActiveContent <> nil then
5188 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5192 case GikoSys.Setting.ListHeightState of
5193 glsMax, glsNormal: begin
5194 //
\8dÅ
\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 if GikoSys.Setting.ListHeightState = glsNormal then
5198 FBrowserSizeHeight := ViewPanel.Height;
5199 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5200 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5201 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5202 GikoSys.Setting.ListHeightState := glsMin;
5203 if FActiveContent <> nil then
5204 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5207 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5208 if FActiveContent <> nil then
5209 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5210 ViewPanel.Height := FBrowserSizeHeight;
5211 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5212 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5213 GikoSys.Setting.ListHeightState := glsNormal;
5214 if FActiveContent <> nil then
5215 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5221 procedure TGikoForm.ScrollTopActionExecute(Sender: TObject);
5223 BrowserMovement('top');
5226 procedure TGikoForm.ScrollLastActionExecute(Sender: TObject);
5228 BrowserMovement('bottom');
5231 procedure TGikoForm.ScrollNewActionExecute(Sender: TObject);
5233 BrowserMovement('new');
5236 procedure TGikoForm.ScrollKokoActionExecute(Sender: TObject);
5238 BrowserMovement('koko');
5241 procedure TGikoForm.EditorActionExecute(Sender: TObject);
5243 Editor: TEditorForm;
5246 Item := GetActiveContent;
5247 if Item = nil then Exit;
5248 Editor := TEditorForm.Create(Self);
5249 Editor.SetThreadItem(Item);
5250 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5252 Editor.BodyEdit.SetFocus;
5255 procedure TGikoForm.IEActionExecute(Sender: TObject);
5257 ShowThreadAction.Execute;
5260 procedure TGikoForm.ShowThreadActionExecute(Sender: TObject);
5262 ThreadItem: TThreadItem;
5264 ThreadItem := GetActiveContent;
5265 if ThreadItem = nil then Exit;
5266 GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
5269 procedure TGikoForm.ShowBoardActionExecute(Sender: TObject);
5271 ThreadItem: TThreadItem;
5273 ThreadItem := GetActiveContent;
5274 if ThreadItem = nil then Exit;
5275 GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
5278 //(Thread)URL
\82ð
\83R
\83s
\81[
5279 procedure TGikoForm.URLCopyActionExecute(Sender: TObject);
5284 if TObject(GetActiveContent) is TBoard then
5285 s := s + TBoard(GetActiveContent).URL + #13#10
5286 else if TObject(GetActiveContent) is TThreadItem then
5287 s := s + TThreadItem(GetActiveContent).URL + #13#10;
5289 Clipboard.AsText := s;
5292 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ð
\83R
\83s
\81[
5293 procedure TGikoForm.NameCopyActionExecute(Sender: TObject);
5298 if TObject(GetActiveContent) is TBoard then
5299 s := s + TBoard(GetActiveContent).Title + #13#10
5300 else if TObject(GetActiveContent) is TThreadItem then
5301 s := s + TThreadItem(GetActiveContent).Title + #13#10;
5303 Clipboard.AsText := s;
5306 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ÆURL
\82ð
\83R
\83s
\81[
5307 procedure TGikoForm.NameURLCopyActionExecute(Sender: TObject);
5312 if TObject(GetActiveContent) is TBoard then
5313 s := s + TBoard(GetActiveContent).Title + #13#10 + TBoard(GetActiveContent).URL + #13#10
5314 else if TObject(GetActiveContent) is TThreadItem then
5315 s := s + TThreadItem(GetActiveContent).Title + #13#10 + TThreadItem(GetActiveContent).URL + #13#10;
5317 Clipboard.AsText := s;
5320 procedure TGikoForm.ItemReloadActionExecute(Sender: TObject);
5322 ThreadItem: TThreadItem;
5325 ThreadItem := GetActiveContent;
5326 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5327 if ThreadItem <> nil then
5328 DownloadContent(ThreadItem, shiftDown);
5331 procedure TGikoForm.SelectListReloadActionExecute(Sender: TObject);
5338 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5339 if GetActiveList is TCategory then begin
5340 List := TList.Create;
5342 SelectListItem(List);
5343 if List.Count > 5 then begin
5344 msg := '5
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5345 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5346 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5349 for i := 0 to List.Count - 1 do begin
5350 if TObject(List[i]) is TBoard then
5351 DownloadList(TBoard(List[i]), shiftDown);
5356 end else if GetActiveList is TBoard then begin
5357 DownloadList(TBoard(GetActiveList), shiftDown);
5361 procedure TGikoForm.SelectThreadReloadActionExecute(Sender: TObject);
5368 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5369 List := TList.Create;
5371 SelectListItem(List);
5372 if List.Count > 10 then begin
5373 msg := '10
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5374 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5375 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5378 for i := 0 to List.Count - 1 do begin
5379 if TObject(List[i]) is TThreadItem then
5380 DownloadContent(TThreadItem(List[i]), shiftDown);
5387 procedure TGikoForm.SelectListReloadActionUpdate(Sender: TObject);
5389 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
5390 SelectListReloadAction.Enabled := True
5391 else if GetActiveList is TBoard then
5392 SelectListReloadAction.Enabled := True
5394 SelectListReloadAction.Enabled := False;
5397 procedure TGikoForm.SelectThreadReloadActionUpdate(Sender: TObject);
5399 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
5400 SelectThreadReloadAction.Enabled := True
5402 SelectThreadReloadAction.Enabled := False;
5405 procedure TGikoForm.AllItemActionUpdate(Sender: TObject);
5407 AllItemAction.Enabled := (GetActiveList is TBoard);
5410 procedure TGikoForm.LogItemActionUpdate(Sender: TObject);
5412 LogItemAction.Enabled := (GetActiveList is TBoard);
5415 procedure TGikoForm.NewItemActionUpdate(Sender: TObject);
5417 NewItemAction.Enabled := (GetActiveList is TBoard);
5420 procedure TGikoForm.SelectItemActionUpdate(Sender: TObject);
5422 SelectItemAction.Enabled := (GetActiveList is TBoard);
5425 procedure TGikoForm.UpFolderActionUpdate(Sender: TObject);
5427 UpFolderAction.Enabled := not (GetActiveList is TBBS);
5430 procedure TGikoForm.ThreadEditorActionUpdate(Sender: TObject);
5432 ThreadEditorAction.Enabled := (GetActiveList is TBoard);
5435 procedure TGikoForm.FormResize(Sender: TObject);
5441 MessageListView.Column[0].Width := MessageListView.ClientWidth - 32;
5442 MainCoolBar.Width := TopPanel.Width - TopRightPanel.Width;
5444 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5445 if GikoSys.Setting.ListWidthState = glsMin then begin
5446 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5447 ViewPanel.Width := ThreadMainPanel.Width - 80;
5450 if GikoSys.Setting.ListHeightState = glsMin then begin
5451 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5452 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5456 if FIsMinimize = mtMinimized then begin
5457 if FActiveContent <> nil then begin
5458 //Application.ProcessMessages;
5459 doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
5460 doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
5461 FIsMinimize := mtNone;
5466 FIsIgnoreResize := True;
5467 PostMessage( Handle, USER_RESIZED, 0, 0 );
5472 procedure TGikoForm.ScrollTopActionUpdate(Sender: TObject);
5474 ScrollTopAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5477 procedure TGikoForm.ScrollLastActionUpdate(Sender: TObject);
5479 ScrollLastAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5482 procedure TGikoForm.ScrollNewActionUpdate(Sender: TObject);
5484 ScrollNewAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5487 procedure TGikoForm.ScrollKokoActionUpdate(Sender: TObject);
5489 ScrollKokoAction.Enabled := (GetActiveContent <> nil)
5490 and (GetActiveContent.IsLogFile)
5491 and (GetActiveContent.Kokomade <> -1);
5495 procedure TGikoForm.EditorActionUpdate(Sender: TObject);
5497 EditorAction.Enabled := GetActiveContent <> nil;
5500 procedure TGikoForm.IEActionUpdate(Sender: TObject);
5502 IEAction.Enabled := GetActiveContent <> nil;
5505 procedure TGikoForm.ShowThreadActionUpdate(Sender: TObject);
5507 ShowThreadAction.Enabled := GetActiveContent <> nil;
5510 procedure TGikoForm.ShowBoardActionUpdate(Sender: TObject);
5512 ShowBoardAction.Enabled := GetActiveContent <> nil;
5515 procedure TGikoForm.ItemReloadActionUpdate(Sender: TObject);
5517 ItemReloadAction.Enabled := GetActiveContent <> nil;
5520 procedure TGikoForm.URLCopyActionUpdate(Sender: TObject);
5522 URLCopyAction.Enabled := GetActiveContent <> nil;
5525 procedure TGikoForm.NameCopyActionUpdate(Sender: TObject);
5527 NameCopyAction.Enabled := GetActiveContent <> nil;
5530 procedure TGikoForm.NameURLCopyActionUpdate(Sender: TObject);
5532 NameURLCopyAction.Enabled := GetActiveContent <> nil;
5535 procedure TGikoForm.BrowserTabCloseActionUpdate(Sender: TObject);
5537 BrowserTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5540 procedure TGikoForm.NotSelectTabCloseActionUpdate(Sender: TObject);
5542 NotSelectTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 1);
5545 procedure TGikoForm.AllTabCloseActionUpdate(Sender: TObject);
5547 AllTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5550 procedure TGikoForm.ActiveLogDeleteActionUpdate(Sender: TObject);
5552 ActiveLogDeleteAction.Enabled := GetActiveContent <> nil;
5555 procedure TGikoForm.LogDeleteActionExecute(Sender: TObject);
5557 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';
5558 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';
5559 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
5561 ThreadItem: TThreadItem;
5562 TmpListItem: TListItem;
5566 List := TList.Create;
5568 TmpListItem := ListView.Selected;
5569 while TmpListItem <> nil do begin
5570 if TObject(TmpListItem.Data) is TThreadItem then begin
5571 ThreadItem := TThreadItem(TmpListItem.Data);
5572 if ThreadItem.IsLogFile then
5573 List.Add(ThreadItem);
5575 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
5578 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
5579 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
5580 if List.Count = 1 then begin
5581 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
5584 if MsgBox(Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
5590 for i := 0 to List.Count - 1 do begin
5591 ThreadItem := TThreadItem(List[i]);
5592 DeleteHistory(ThreadItem);
5593 DeleteTab(ThreadItem);
5594 ThreadItem.DeleteLogFile;
5601 procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
5606 idx := BrowserTab.TabIndex;
5607 FTabHintIndex := -1;
5608 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5609 if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
5610 BrowserTab.Tabs.BeginUpdate;
5612 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5613 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5614 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5617 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5619 if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
5620 FActiveContent := nil;
5621 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5622 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5624 FBrowsers.Move(j, BROWSER_COUNT - 1);
5626 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5627 BrowserTab.Tabs.Delete(i);
5628 if idx > i then begin
5629 BrowserTab.TabIndex := idx - 1;
5631 if BrowserTab.Tabs.Count -1 >= idx then
5632 BrowserTab.TabIndex := idx
5634 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5636 if BrowserTab.Tabs.Count = 0 then begin
5637 BrowserNullTab.Thread := nil;
5639 if(BrowserTab.TabIndex <> -1) and
5640 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5641 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5642 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5643 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5645 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5646 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5647 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5648 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5653 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5654 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5655 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5656 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5658 BrowserTab.Tabs.EndUpdate;
5659 if( FActiveContent = nil) then
5660 BrowserTab.OnChange(nil);
5665 procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
5670 idx := BrowserTab.TabIndex;
5671 FTabHintIndex := -1;
5672 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5673 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
5674 BrowserTab.Tabs.BeginUpdate;
5676 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5677 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5678 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5682 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5684 if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then
5685 FActiveContent := nil;
5686 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5687 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5689 FBrowsers.Move(j, BROWSER_COUNT - 1);
5691 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5692 BrowserTab.Tabs.Delete(i);
5693 if idx > i then begin
5694 BrowserTab.TabIndex := idx - 1;
5696 if BrowserTab.Tabs.Count -1 >= idx then
5697 BrowserTab.TabIndex := idx
5699 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5701 if(BrowserTab.TabIndex <> -1) and
5702 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5703 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5704 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5705 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5707 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5708 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5709 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5710 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5715 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5716 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5717 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5718 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5721 BrowserTab.Tabs.EndUpdate;
5722 if( FActiveContent = nil) then
5723 BrowserTab.OnChange(nil);
5729 procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
5732 ThreadItem: TThreadItem;
5734 No := KokoPopupMenu.Tag;
5735 if No = 0 then Exit;
5736 ThreadItem := GetActiveContent;
5737 if ThreadItem = nil then Exit;
5738 ThreadItem.Kokomade := No;
5739 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5740 FActiveContent.FRepaint := true;
5741 InsertBrowserTab(FActiveContent.Thread, true);
5742 Application.ProcessMessages;
5745 procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
5747 ThreadItem: TThreadItem;
5749 ThreadItem := GetActiveContent;
5750 if ThreadItem = nil then Exit;
5751 ThreadItem.Kokomade := -1;
5752 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5753 FActiveContent.FRepaint := true;
5754 InsertBrowserTab(FActiveContent.Thread, true);
5755 Application.ProcessMessages;
5758 function TGikoForm.Hook(var Message: TMessage): Boolean;
5767 procedure TGikoForm.KokoResActionExecute(Sender: TObject);
5769 Editor: TEditorForm;
5773 Number := KokoPopupMenu.Tag;
5774 if Number = 0 then Exit;
5775 Item := GetActiveContent;
5776 if Item = nil then Exit;
5778 Editor := TEditorForm.Create(Self);
5779 Editor.SetThreadItem(Item);
5780 Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
5782 Editor.BodyEdit.SetFocus;
5785 procedure TGikoForm.ListPopupMenuPopup(Sender: TObject);
5787 ItemRoundPMenu.Visible := (GetActiveList is TBoard);
5788 ItemReservPMenu.Visible := (GetActiveList is TBoard);
5789 LPMSep01.Visible := (GetActiveList is TBoard);
5790 ListRoundPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5791 ListReservPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5792 LPMSep02.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5793 KidokuPMenu.Visible := (GetActiveList is TBoard);
5794 MidokuPMenu.Visible := (GetActiveList is TBoard);
5795 UrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5796 NameUrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5797 AllSelectPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5798 LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5799 DeletePMenu.Visible := (GetActiveList is TBoard);
5800 LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5801 BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
5802 ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
5804 AddRoundNameMenu(ItemReservPMenu);
5805 AddRoundNameMenu(ListReservPMenu);
5808 procedure TGikoForm.BoardIEActionExecute(Sender: TObject);
5812 if GetActiveList is TBoard then begin
5813 URL := TBoard(GetActiveList).URL;
5814 GikoSys.OpenBrowser(URL, gbtAuto);
5818 procedure TGikoForm.SelectItemURLCopyActionExecute(Sender: TObject);
5825 List := TList.Create;
5827 SelectListItem(List);
5828 for i := 0 to List.Count - 1 do begin
5829 if TObject(List[i]) is TBoard then
5830 s := s + TBoard(List[i]).URL + #13#10
5831 else if TObject(List[i]) is TThreadItem then
5832 s := s + TThreadItem(List[i]).URL + #13#10;
5835 Clipboard.AsText := s;
5841 procedure TGikoForm.SelectItemNameCopyActionExecute(Sender: TObject);
5848 List := TList.Create;
5850 SelectListItem(List);
5851 for i := 0 to List.Count - 1 do begin
5852 if TObject(List[i]) is TBoard then
5853 s := s + TBoard(List[i]).Title + #13#10
5854 else if TObject(List[i]) is TThreadItem then
5855 s := s + TThreadItem(List[i]).Title + #13#10;
5858 Clipboard.AsText := s;
5864 procedure TGikoForm.SelectItemNameURLCopyActionExecute(Sender: TObject);
5871 List := TList.Create;
5873 SelectListItem(List);
5874 for i := 0 to List.Count - 1 do begin
5875 if TObject(List[i]) is TBoard then
5876 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
5877 else if TObject(List[i]) is TThreadItem then
5878 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
5881 Clipboard.AsText := s;
5887 procedure TGikoForm.BoardIEActionUpdate(Sender: TObject);
5889 if GetActiveList is TBoard then
5890 BoardIEAction.Enabled := True
5892 BoardIEAction.Enabled := False;
5895 procedure TGikoForm.SelectItemURLCopyActionUpdate(Sender: TObject);
5897 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
5898 SelectItemURLCopyAction.Enabled := True
5900 SelectItemURLCopyAction.Enabled := False;
5903 procedure TGikoForm.SelectItemNameCopyActionUpdate(Sender: TObject);
5905 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
5906 SelectItemNameCopyAction.Enabled := True
5908 SelectItemNameCopyAction.Enabled := False;
5911 procedure TGikoForm.SelectItemNameURLCopyActionUpdate(Sender: TObject);
5913 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
5914 SelectItemNameURLCopyAction.Enabled := True
5916 SelectItemNameURLCopyAction.Enabled := False;
5919 procedure TGikoForm.AllSelectActionUpdate(Sender: TObject);
5921 if ListView.SelCount > 0 then
5922 AllSelectAction.Enabled := True
5924 AllSelectAction.Enabled := False;
5927 procedure TGikoForm.LogDeleteActionUpdate(Sender: TObject);
5929 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
5930 LogDeleteAction.Enabled := True
5932 LogDeleteAction.Enabled := False;
5935 procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
5938 // ThreadItem: TThreadItem;
5940 idx := BrowserTab.TabIndex;
5941 if idx <> -1 then begin
5942 if BrowserTab.Tabs.Objects[idx] <> nil then begin
5943 //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
5944 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
5949 procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
5954 idx := BrowserTab.TabIndex;
5955 if idx = -1 then Exit;
5956 BrowserTab.Tabs.BeginUpdate;
5957 for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
5958 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5959 BrowserTab.Tabs.Delete(i);
5961 if idx > 0 then begin
5962 for i := BrowserTab.TabIndex - 1 downto 0 do begin
5963 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5964 BrowserTab.Tabs.Delete(i);
5967 BrowserTab.Tabs.EndUpdate;
5970 procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
5974 if GikoSys.Setting.ShowDialogForAllTabClose then
5975 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
5978 FActiveContent := nil;
5979 BrowserNullTab.Thread := nil;
5980 BrowserTab.OnChange := nil;
5981 BrowserTab.Tabs.BeginUpdate;
5982 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
5983 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5985 BrowserTab.Tabs.Clear;
5986 BrowserTab.Tabs.EndUpdate;
5987 BrowserTab.OnChange := BrowserTabChange;
5988 SetContent(BrowserNullTab);
5989 Self.Caption := CAPTION_NAME ;
5992 procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
5995 TmpTreeNode: TTreeNode;
5997 TmpTreeNode := FClickNode;
5998 TreeView.Selected := FClickNode;
6001 if TObject(TmpTreeNode.Data) is TBoard then
6002 Board := TBoard(TmpTreeNode.Data)
6003 else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
6004 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
6006 if Board <> nil then
6007 DownloadList(Board);
6010 procedure TGikoForm.TreeSelectThreadReloadExecute(Sender: TObject);
6012 ThreadItem: TThreadItem;
6013 TmpTreeNode: TTreeNode;
6015 TmpTreeNode := FClickNode;
6016 TreeView.Selected := FClickNode;
6019 if TObject(TmpTreeNode.Data) is TThreadItem then
6020 ThreadItem := TThreadItem(TmpTreeNode.Data)
6021 else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
6022 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
6024 if ThreadItem <> nil then
6025 DownloadContent(ThreadItem);
6028 procedure TGikoForm.TreeSelectURLCopyExecute(Sender: TObject);
6030 TmpTreeNode: TTreeNode;
6033 TmpTreeNode := FClickNode;
6034 TreeView.Selected := FClickNode;
6035 if TObject(TmpTreeNode.Data) is TBoard then begin
6036 s := TBoard(TmpTreeNode.Data).URL + #13#10;
6037 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6038 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6039 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6040 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
6041 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6042 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6044 Clipboard.AsText := s;
6047 procedure TGikoForm.TreeSelectNameURLCopyExecute(Sender: TObject);
6049 TmpTreeNode: TTreeNode;
6052 TmpTreeNode := FClickNode;
6053 TreeView.Selected := FClickNode;
6054 if TObject(TmpTreeNode.Data) is TBoard then begin
6055 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
6056 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6057 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6058 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6059 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
6060 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6061 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6063 Clipboard.AsText := s;
6066 procedure TGikoForm.TreePopupMenuPopup(Sender: TObject);
6068 FClickNode := TreeView.Selected;
6069 if FClickNode = nil then begin
6070 TreeSelectThreadPupupMenu.Visible := False;
6071 TreeSelectBoardPupupMenu.Visible := False;
6072 TPMSep01.Visible := False;
6073 TreeSelectURLPupupMenu.Visible := False;
6074 TreeSelectNamePupupMenu.Visible := False;
6075 TreeSelectNameURLPupupMenu.Visible := False;
6076 TreeSelectFavoriteAddPupupMenu.Visible := False;
6077 TreeSelectLogDeleteSeparator.Visible := False;
6078 TreeSelectLogDeletePopupMenu.Visible := False;
6079 end else if TObject(FClickNode.Data) is TBoard then begin
6080 TreeSelectThreadPupupMenu.Visible := False;
6081 TreeSelectBoardPupupMenu.Visible := True;
6082 TPMSep01.Visible := True;
6083 TreeSelectURLPupupMenu.Visible := True;
6084 TreeSelectNamePupupMenu.Visible := True;
6085 TreeSelectNameURLPupupMenu.Visible := True;
6086 TreeSelectFavoriteAddPupupMenu.Visible := True;
6087 TreeSelectLogDeleteSeparator.Visible := False;
6088 TreeSelectLogDeletePopupMenu.Visible := False;
6089 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
6090 TreeSelectThreadPupupMenu.Visible := False;
6091 TreeSelectBoardPupupMenu.Visible := True;
6092 TPMSep01.Visible := True;
6093 TreeSelectURLPupupMenu.Visible := True;
6094 TreeSelectNamePupupMenu.Visible := True;
6095 TreeSelectNameURLPupupMenu.Visible := True;
6096 TreeSelectFavoriteAddPupupMenu.Visible := True;
6097 TreeSelectLogDeleteSeparator.Visible := False;
6098 TreeSelectLogDeletePopupMenu.Visible := False;
6099 end else if (TObject(FClickNode.Data) is TThreadItem) then begin
6100 TreeSelectThreadPupupMenu.Visible := True;
6101 TreeSelectBoardPupupMenu.Visible := False;
6102 TPMSep01.Visible := True;
6103 TreeSelectURLPupupMenu.Visible := True;
6104 TreeSelectNamePupupMenu.Visible := True;
6105 TreeSelectNameURLPupupMenu.Visible := True;
6106 TreeSelectFavoriteAddPupupMenu.Visible := True;
6107 TreeSelectLogDeleteSeparator.Visible := True;
6108 TreeSelectLogDeletePopupMenu.Visible := True;
6109 end else if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
6110 TreeSelectThreadPupupMenu.Visible := True;
6111 TreeSelectBoardPupupMenu.Visible := False;
6112 TPMSep01.Visible := True;
6113 TreeSelectURLPupupMenu.Visible := True;
6114 TreeSelectNamePupupMenu.Visible := True;
6115 TreeSelectNameURLPupupMenu.Visible := True;
6116 TreeSelectFavoriteAddPupupMenu.Visible := True;
6117 TreeSelectLogDeleteSeparator.Visible := True;
6118 TreeSelectLogDeletePopupMenu.Visible := True;
6119 end else if (TObject(FClickNode.Data) is TCategory) then begin
6120 TreeSelectThreadPupupMenu.Visible := False;
6121 TreeSelectBoardPupupMenu.Visible := False;
6122 TPMSep01.Visible := False;
6123 TreeSelectURLPupupMenu.Visible := False;
6124 TreeSelectNamePupupMenu.Visible := True;
6125 TreeSelectNameURLPupupMenu.Visible := False;
6126 TreeSelectFavoriteAddPupupMenu.Visible := False;
6127 TreeSelectLogDeleteSeparator.Visible := False;
6128 TreeSelectLogDeletePopupMenu.Visible := False;
6129 end else if FClickNode.IsFirstNode then begin
6130 TreeSelectThreadPupupMenu.Visible := False;
6131 TreeSelectBoardPupupMenu.Visible := False;
6132 TPMSep01.Visible := False;
6133 TreeSelectURLPupupMenu.Visible := False;
6134 TreeSelectNamePupupMenu.Visible := True;
6135 TreeSelectNameURLPupupMenu.Visible := False;
6136 TreeSelectFavoriteAddPupupMenu.Visible := False;
6137 TreeSelectLogDeleteSeparator.Visible := False;
6138 TreeSelectLogDeletePopupMenu.Visible := False;
6140 TreeSelectThreadPupupMenu.Visible := False;
6141 TreeSelectBoardPupupMenu.Visible := False;
6142 TPMSep01.Visible := False;
6143 TreeSelectURLPupupMenu.Visible := False;
6144 TreeSelectNamePupupMenu.Visible := False;
6145 TreeSelectNameURLPupupMenu.Visible := False;
6146 TreeSelectFavoriteAddPupupMenu.Visible := False;
6147 TreeSelectLogDeleteSeparator.Visible := False;
6148 TreeSelectLogDeletePopupMenu.Visible := False;
6152 procedure TGikoForm.BrowserNewWindow2(Sender: TObject;
6153 var ppDisp: IDispatch; var Cancel: WordBool);
6164 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6165 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6166 Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6167 if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
6168 or (AnsiPos('
\81\84\81\84', Text) = 1) or (AnsiPos('
\81\84', Text) = 1) then begin
6169 if GikoSys.Setting.ResAnchorJamp then begin
6170 Text := ZenToHan(Text);
6172 if(AnsiPos('>>', Text) = 1) then begin
6173 Text := Copy(Text, 3, Length(Text) - 2);
6175 Text := Copy(Text, 2, Length(Text) - 1);
6177 if AnsiPos('-', Text) <> 0 then begin
6178 wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
6179 Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
6180 wkIntTo := StrToIntDef(Text, 0);
6181 if wkIntTo < wkIntSt then
6184 wkIntSt := StrToIntDef(Text, 0);
6186 if wkIntSt <> 0 then
6187 BrowserMovement(IntToStr(wkIntSt));
6190 URL := GikoSys.GetHRefText(Html);
6191 URL := GikoSys.HTMLDecode(URL);
6192 if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
6193 ( AnsiPos('ftp://', URL) = 1) then begin
6194 //
\83A
\83h
\83\8c\83X
\83o
\81[
\82Ì
\97\9a\97ð
6195 if GikoSys.Setting.LinkAddAddressBar then begin
6196 idx := AddressComboBox.Items.IndexOf(URL);
6197 if idx = -1 then begin
6198 AddressComboBox.Items.Insert(0, URL);
6199 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
6200 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
6202 AddressComboBox.Items.Delete(idx);
6203 AddressComboBox.Items.Insert(0, URL);
6211 { ShiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
6212 CtrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
6215 Memo1.Lines.Add('ShiftDown');
6217 Memo1.Lines.Add('CtrlDown');
6219 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6220 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6221 Url := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6225 URL := GetHRefText(URL);
6227 ParseURI(URL, Protocol, Host, path, Document, Port, Bookmark);
6229 b := Parse2chURL(path, document, bbs, num);
6230 memo1.Lines.Add('bbs: ' + bbs);
6231 memo1.Lines.Add('key: ' + num);
6233 Memo1.Lines.Add('Parse2chURL: True')
6235 Memo1.Lines.Add('Parse2chURL: False');
6237 // AppPath := 'C:\Borland\Projects\Test\TestBrowser\TestBrowser.exe';
6242 procedure TGikoForm.ListSplitterCanResize(Sender: TObject;
6243 var NewSize: Integer; var Accept: Boolean);
6245 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6246 if ViewPanel.Width < 2 then begin
6247 ViewPanel.Width := 1;
6248 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6249 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6250 GikoSys.Setting.ListWidthState := glsMax;
6251 end else if ViewPanel.Width > (ThreadMainPanel.Width - 80) then begin
6252 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6253 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6254 GikoSys.Setting.ListWidthState := glsMin;
6256 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6257 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6258 GikoSys.Setting.ListWidthState := glsNormal;
6261 if ViewPanel.Height < 2 then begin
6262 ViewPanel.Height := 1;
6263 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6264 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6265 GikoSys.Setting.ListHeightState := glsMax;
6266 end else if ViewPanel.Height > (ThreadMainPanel.Height - BrowserCoolBar.Height - 7) then begin
6267 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6268 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6269 GikoSys.Setting.ListHeightState := glsMin;
6271 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6272 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6273 GikoSys.Setting.ListHeightState := glsNormal;
6278 procedure TGikoForm.ListSplitterMoved(Sender: TObject);
6280 if Mouse.Capture <> 0 then
6282 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6283 if (ViewPanel.Width > 1) and (ViewPanel.Width <= (ThreadMainPanel.Width - 80)) then
6284 FBrowserSizeWidth := ViewPanel.Width;
6286 if (ViewPanel.Height > 1) and (ViewPanel.Height <= (ThreadMainPanel.Height - BrowserCoolBar.Height)) then
6287 FBrowserSizeHeight := ViewPanel.Height;
6289 { if (Mouse.Capture = 0) and (ViewPanel.Height > 1) and (not ArrangeAction.Checked) then
6290 FBrowserSizeHeight := ViewPanel.Height
6291 else if (Mouse.Capture = 0) and (ViewPanel.Width > 1) and (ArrangeAction.Checked) then
6292 FBrowserSizeWidth := ViewPanel.Width;}
6295 procedure TGikoForm.BrowserTabChange(Sender: TObject);
6301 // if NewTab = -1 then
6302 // ThreadItem := nil;
6303 if not BrowserTab.Dragging then begin
6304 FTabHintIndex := -1;
6305 BrowserTab.Hint := '';
6306 idx := BrowserTab.TabIndex;
6307 if idx = -1 then begin
6308 BrowserNullTab.Thread := nil;
6309 SetContent(BrowserNullTab);
6311 end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
6312 if TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser <> nil then begin
6313 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser);
6315 FBrowsers.Move(j ,0);
6317 if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
6318 (FActiveContent.Browser <> BrowserNullTab.Browser) and
6319 (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
6320 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6322 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
6323 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
6324 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
6325 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
6326 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
6327 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
6328 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
6332 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
6333 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
6334 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6336 TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
6337 // GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6338 // OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6339 SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6341 if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
6342 AddressComboBox.Text := GetActiveContent.URL;
6344 if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
6345 (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
6348 SetFocusForBrowserAction.Execute;
6357 procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
6358 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
6364 if Button = mbMiddle then begin
6365 //
\83}
\83E
\83X
\92\86\83{
\83^
\83\93
6368 p := BrowserTab.ScreenToClient(p);
6369 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6371 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6372 //end else if Button = mbRight then begin
6373 //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é
6374 //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
6375 { //
\83}
\83E
\83X
\89E
\83{
\83^
\83\93
6378 // GetCursorPos(p2);
6379 p := BrowserTab.ScreenToClient(p);
6380 // idx := BrowserTab.ItemAtPos(p);
6381 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6382 if idx <> -1 then begin
6383 OldIndex := BrowserTab.TabIndex;
6384 BrowserTab.TabIndex := idx;
6385 if OldIndex <> idx then
6386 BrowserTab.OnChange(nil);
6387 BrowserTabPopupMenu.Tag := idx;
6388 BrowserTabPopupMenu.Popup(p2.X, p2.Y);
6391 end else if BUtton = mbLeft then begin
6392 FDragWFirst := true;
6393 FMouseDownPos.X := X;
6394 FMouseDownPos.Y := Y;
6399 procedure TGikoForm.SetBrowserTabState;
6402 CoolBand: TCoolBand;
6404 BrowserBottomPanel.AutoSize := False;
6405 if GikoSys.Setting.BrowserTabVisible then begin
6406 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
6407 BrowserTab.Style := tsTabs;
6408 if GikoSys.Setting.BrowserTabPosition = gtpTop then
6409 BrowserTab.TabPosition := tpTop
6411 BrowserTab.TabPosition := tpBottom;
6412 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
6413 BrowserTab.TabPosition := tpTop;
6414 BrowserTab.Style := tsButtons;
6416 BrowserTab.TabPosition := tpTop;
6417 BrowserTab.Style := tsFlatButtons
6420 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
6421 BrowserTab.Parent := BrowserTabToolBar;
6422 BrowserBottomPanel.Hide;
6423 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6424 if CoolBand <> nil then
6425 CoolBand.Visible := True;
6426 // BrowserTab.Parent := BrowserTopPanel;
6427 // BrowserTab.Parent := BrowserCoolBar;
6428 // BrowserTab.Top := 26;
6429 // BrowserTopPanel.Height := 44;
6432 BrowserTab.Parent := BrowserBottomPanel;
6433 BrowserTab.Top := 0;
6434 BrowserTab.Left := 0;
6435 BrowserBottomPanel.Show;
6436 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6437 if CoolBand <> nil then
6438 CoolBand.Visible := False;
6439 // BrowserTopPanel.Height := 26;
6443 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6444 if CoolBand <> nil then
6445 CoolBand.Visible := False;
6446 BrowserBottomPanel.Visible := False;
6447 // BrowserTab.Visible := False;
6448 // BrowserTopPanel.Height := 26;
6449 AllTabCloseAction.Execute;
6453 procedure TGikoForm.BrowserTabDragOver(Sender, Source: TObject; X,
6454 Y: Integer; State: TDragState; var Accept: Boolean);
6458 idx := BrowserTab.IndexOfTabAt(X, Y);
6459 Accept := (Source = BrowserTab) and (BrowserTab.TabIndex <> idx);
6462 procedure TGikoForm.BrowserTabDragDrop(Sender, Source: TObject; X,
6467 idx := BrowserTab.IndexOfTabAt(X, Y);
6469 BrowserTab.Tabs.Move(BrowserTab.TabIndex, idx);
6472 procedure TGikoForm.BrowserTabMouseMove(Sender: TObject;
6473 Shift: TShiftState; X, Y: Integer);
6476 ThreadItem: TThreadItem;
6479 TabIdx := BrowserTab.IndexOfTabAt(x, y);
6481 if ( ssLeft in Shift ) and ( BrowserTab.Style = tsTabs ) then begin
6482 if FDragWFirst = false then begin
6483 FDragWFirst := true;
6485 BrowserTab.EndDrag(false);
6486 BrowserTab.BeginDrag(false, DandD_THRESHOLD);
6487 FDragWFirst := false;
6490 BrowserTab.EndDrag(false);
6491 FDragWFirst := false;
6494 if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
6495 Application.CancelHint;
6496 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
6497 if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
6498 BrowserTab.Hint := ThreadItem.Title;
6499 Application.ShowHint := True;
6501 BrowserTab.Hint := '';
6502 Application.ShowHint := True;
6504 FTabHintIndex := TabIdx;
6509 procedure TGikoForm.BrowserDocumentComplete(Sender: TObject;
6510 const pDisp: IDispatch; var URL: OleVariant);
6512 FDispHtmlDocument: DispHTMLDocument;
6513 BrowserRecord :TBrowserRecord;
6516 // AddMessageList('DocumentComplete', nil);
6517 if TObject(Sender) is TWebBrowser then begin
6518 if TWebBrowser(Sender) <> Browser then begin
6519 BrowserRecord := nil;
6520 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6521 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
6522 BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
6526 if BrowserRecord <> nil then begin
6527 if BrowserRecord.FEvent <> nil then
6528 BrowserRecord.FEvent.Free;
6529 FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
6530 BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6531 BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
6532 BrowserRecord.FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6535 if GetActiveContent <> nil then begin
6536 FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
6537 if FEvent <> nil then
6539 FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6540 FEvent.OnContextMenu := OnDocumentContextMenu;
6541 FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6547 procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
6552 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then begin
6553 List := TList.Create;
6555 SelectListItem(List);
6556 for i := 0 to List.Count - 1 do begin
6557 if TObject(List[i]) is TThreadItem then begin
6558 if TThreadItem(List[i]).IsLogFile then begin
6559 SelectReservAction.Enabled := True;
6564 SelectReservAction.Enabled := False;
6568 end else if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
6569 SelectReservAction.Enabled := True
6571 SelectReservAction.Enabled := False;
6574 procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
6576 AddRoundNameMenu(RoundNamePopupMenu.Items);
6579 procedure TGikoForm.AddRoundNameMenu(MenuItem: TMenuItem);
6585 Item := TMenuItem.Create(Self);
6586 Item.Caption := '
\90V
\82µ
\82¢
\96¼
\91O
\82Å
\8f\84\89ñ
\97\
\96ñ(&N)...';
6587 Item.OnClick := SelectNewRoundNameExecute;
6589 Item := TMenuItem.Create(Self);
6590 Item.Caption := '
\8f\84\89ñ
\83\8a\83X
\83g
\82©
\82ç
\8dí
\8f\9c(&D)';
6591 Item.OnClick := SelectDeleteRoundExecute;
6593 Item := TMenuItem.Create(Self);
6594 Item.Caption := '-';
6596 for i := 0 to RoundList.RoundNameList.Count - 1 do begin
6597 Item := TMenuItem.Create(Self);
6598 Item.Caption := RoundList.RoundNameList[i];
6599 Item.OnClick := SetSelectRoundName;
6604 procedure TGikoForm.SelectNewRoundNameExecute(Sender: TObject);
6607 Dlg: TRoundNameDialog;
6610 Dlg := TRoundNameDialog.Create(Self);
6613 if Dlg.ModalResult <> mrCancel then begin
6614 s := Trim(Dlg.RoundNameEdit.Text);
6615 RoundList.RoundNameList.Add(s);
6616 SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
6623 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);
6625 threadItem : TThreadItem;
6627 if ParentName <> 'dummy1' then begin
6628 SetSelectItemRound(RoundFlag, RoundName);
6630 threadItem := GetActiveContent;
6631 if threadItem <> nil then begin
6632 threadItem.RoundName := RoundName;
6633 threadItem.Round := RoundFlag;
6638 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);
6643 List := TList.Create;
6645 SelectListItem(List);
6646 for i := 0 to List.Count - 1 do begin
6647 if TObject(List[i]) is TBoard then begin
6648 TBoard(List[i]).RoundName := RoundName;
6649 TBoard(List[i]).Round := RoundFlag;
6650 end else if TObject(List[i]) is TThreadItem then begin
6651 if TThreadItem(List[i]).IsLogFile then begin
6652 TThreadItem(List[i]).RoundName := RoundName;
6653 TThreadItem(List[i]).Round := RoundFlag;
6662 procedure TGikoForm.SelectDeleteRoundExecute(Sender: TObject);
6664 SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
6668 procedure TGikoForm.SelectReservActionExecute(Sender: TObject);
6670 //
\82±
\82Ì
\83R
\83\81\83\93\83g
\8dí
\8f\9c\82µ
\82Ä
\82Í
\91Ê
\96Ú
6673 procedure TGikoForm.SetSelectRoundName(Sender: TObject);
6675 MenuItem: TMenuItem;
6677 if Sender is TMenuItem then begin
6678 MenuItem := TMenuItem(Sender);
6679 SetSelectItemRound(True, StripHotKey(MenuItem.Caption), TMenuItem(Sender).Parent.Name);
6684 procedure TGikoForm.NewBoardActionExecute(Sender: TObject);
6686 Dlg: TNewBoardDialog;
6690 for i := 0 to Screen.CustomFormCount - 1 do begin
6691 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
6692 Msg := '
\83\8c\83X
\83G
\83f
\83B
\83^
\82ð
\91S
\82Ä
\95Â
\82¶
\82Ä
\82
\82¾
\82³
\82¢';
6693 MsgBox(Handle, Msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6697 Dlg := TNewBoardDialog.Create(Self);
6705 procedure TGikoForm.LoginActionExecute(Sender: TObject);
6710 if GikoSys.Dolib.Connected then begin
6711 //
\83\8d\83O
\83A
\83E
\83g
6712 GikoSys.Dolib.Disconnect;
6713 LoginAction.Checked := False;
6714 AddMessageList('
\83\8d\83O
\83A
\83E
\83g
\82µ
\82Ü
\82µ
\82½', nil, gmiOK);
6715 LoginAction.Caption := '
\83\8d\83O
\83C
\83\93(&L)';
6717 TmpCursor := Screen.Cursor;
6718 Screen.Cursor := crHourGlass;
6720 //
\92Ê
\8fí
\83\8d\83O
\83C
\83\93
6721 if not GikoSys.Setting.ForcedLogin then begin
6722 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6723 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6724 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6725 if GikoSys.Setting.ReadProxy then begin
6726 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6727 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6729 GikoSys.Dolib.ProxyAddress := '';
6730 GikoSys.Dolib.ProxyPort := 0;
6732 if GikoSys.Dolib.Connect then begin
6733 LoginAction.Checked := True;
6734 AddMessageList('
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6735 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6736 LoginToolButton.Style := tbsCheck;
6738 // 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);
6739 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6741 LoginAction.Checked := False;
6742 LoginToolButton.Down := False;
6743 LoginToolButton.Style := tbsButton;
6746 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
6747 + '
\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
6748 + '
\82±
\82Ì
\83\82\81[
\83h
\82Å
\83\8d\83O
\83C
\83\93\82ð
\8e\8e\82Ý
\82Ü
\82·
\82©
\81H' + #13#10;
6749 if MsgBox(Handle, msg, '
\8cx
\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
6750 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6751 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6752 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6753 if GikoSys.Setting.ReadProxy then begin
6754 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6755 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6757 GikoSys.Dolib.ProxyAddress := '';
6758 GikoSys.Dolib.ProxyPort := 0;
6760 //SSL
\8fá
\8aQ
\97p
\8b
\90§
\83\8d\83O
\83C
\83\93
6761 GikoSys.Dolib.ForcedConnect;
6762 if GikoSys.Dolib.Connect then begin
6763 LoginAction.Checked := True;
6764 AddMessageList('
\8b
\90§
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6765 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6766 LoginToolButton.Style := tbsCheck;
6768 // 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);
6769 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6771 LoginAction.Checked := False;
6772 LoginToolButton.Down := False;
6773 LoginToolButton.Style := tbsButton;
6776 LoginAction.Checked := False;
6777 LoginToolButton.Down := False;
6778 LoginToolButton.Style := tbsButton;
6782 Screen.Cursor := TmpCursor;
6787 procedure TGikoForm.KeySettingActionExecute(Sender: TObject);
6789 Dlg: TKeySettingForm;
6791 Dlg := TKeySettingForm.Create(Self);
6793 if Dlg.ShowModal = mrOk then
6794 GikoSys.SaveKeySetting(ActionList);
6795 GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
6801 procedure TGikoForm.ArrangeActionExecute(Sender: TObject);
6803 if ArrangeAction.Checked then begin
6805 ViewPanel.Align := alNone;
6806 ListSplitter.Align := alNone;
6807 ThreadPanel.Align := alNone;
6809 ViewPanel.Width := FBrowserSizeWidth;
6810 ViewPanel.Align := alLeft;
6812 ListSplitter.Width := 5;
6813 ListSplitter.Align := alLeft;
6815 ViewPanel.Left := -10;
6817 ThreadPanel.Align := alClient;
6819 GikoSys.Setting.ListOrientation := gloHorizontal;
6820 case GikoSys.Setting.ListWidthState of
6822 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6823 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6824 ViewPanel.Width := 1;
6827 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6828 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6831 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6832 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6833 ViewPanel.Width := ThreadMainPanel.Width - 80;
6838 ViewPanel.Align := alNone;
6839 ListSplitter.Align := alNone;
6840 ThreadPanel.Align := alNone;
6842 ViewPanel.Height := FBrowserSizeHeight;
6843 ViewPanel.Align := alTop;
6845 ListSplitter.Height := 5;
6846 ListSplitter.Align := alTop;
6848 ViewPanel.Top := -10;
6850 ThreadPanel.Align := alClient;
6851 GikoSys.Setting.ListOrientation := gloVertical;
6852 case GikoSys.Setting.ListHeightState of
6854 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6855 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6856 ViewPanel.Height := 1;
6859 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6860 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6863 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6864 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6865 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
6872 procedure TGikoForm.PaneInitActionExecute(Sender: TObject);
6874 CabinetPanel.Width := 150;
6875 MessagePanel.Height := 40;
6877 FBrowserSizeWidth := 200;
6878 FBrowserSizeHeight := 200;
6879 if ArrangeAction.Checked then begin
6880 ViewPanel.Width := FBrowserSizeWidth;
6882 ViewPanel.Height := FBrowserSizeHeight;
6884 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6885 if GikoSys.Setting.ListHeightState = glsMax then begin
6886 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6887 GikoSys.Setting.ListHeightState := glsNormal;
6890 if GikoSys.Setting.ListWidthState = glsMax then begin
6891 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6892 GikoSys.Setting.ListWidthState := glsNormal;
6897 procedure TGikoForm.ActiveLogDeleteActionExecute(Sender: TObject);
6899 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';
6900 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
6903 ThreadItem: TThreadItem;
6905 idx := BrowserTab.TabIndex;
6906 if idx <> -1 then begin
6907 if BrowserTab.Tabs.Objects[idx] <> nil then begin
6908 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).FThread;
6909 if GikoSys.Setting.DeleteMsg then
6910 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
6911 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
6913 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6914 ThreadItem.DeleteLogFile;
6915 if ThreadItem.ParentBoard = FActiveList then
6921 function TGikoForm.GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
6926 if CoolBar = nil then
6928 for i := 0 to CoolBar.Bands.Count - 1 do begin
6929 if CoolBar.Bands[i].Control = Control then begin
6930 Result := CoolBar.Bands[i];
6936 procedure TGikoForm.BrowserTabToolBarResize(Sender: TObject);
6938 if BrowserTab.Parent = BrowserTabToolBar then
6939 BrowserTab.Width := BrowserTabToolBar.Width;
6942 procedure TGikoForm.SelectTextClearActionExecute(Sender: TObject);
6944 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';
6945 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
6947 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
6948 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
6950 GikoSys.Setting.SelectTextList.Clear;
6951 SelectComboBox.Items.Clear;
6952 SelectComboBox.Text := '';
6953 SetListViewType( gvtAll );
6956 procedure TGikoForm.NameTextClearActionExecute(Sender: TObject);
6960 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';
6961 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
6963 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
6964 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
6966 GikoSys.Setting.NameList.Clear;
6967 for i := 0 to Screen.CustomFormCount - 1 do begin
6968 if TObject(Screen.CustomForms[i]) is TEditorForm then
6969 TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
6973 procedure TGikoForm.MailTextClearActionExecute(Sender: TObject);
6977 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';
6978 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
6980 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
6981 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
6983 GikoSys.Setting.MailList.Clear;
6984 for i := 0 to Screen.CustomFormCount - 1 do begin
6985 if TObject(Screen.CustomForms[i]) is TEditorForm then
6986 TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
6990 procedure TGikoForm.LeftmostTabSelectActionExecute(Sender: TObject);
6992 if BrowserTab.Tabs.Count > 0 then begin
6993 BrowserTab.TabIndex := 0;
6994 BrowserTab.OnChange(nil);
6998 procedure TGikoForm.LeftTabSelectActionExecute(Sender: TObject);
7000 if BrowserTab.Tabs.Count > 0 then begin
7001 if BrowserTab.TabIndex = -1 then begin
7002 BrowserTab.TabIndex := 0;
7003 BrowserTab.OnChange(nil);
7004 end else if BrowserTab.TabIndex > 0 then begin
7005 BrowserTab.TabIndex := BrowserTab.TabIndex - 1;
7006 BrowserTab.OnChange(nil);
7011 procedure TGikoForm.RightTabSelectActionExecute(Sender: TObject);
7013 if BrowserTab.Tabs.Count > 0 then begin
7014 if BrowserTab.TabIndex = -1 then begin
7015 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7016 BrowserTab.OnChange(nil);
7017 end else if BrowserTab.TabIndex < (BrowserTab.Tabs.Count - 1) then begin
7018 BrowserTab.TabIndex := BrowserTab.TabIndex + 1;
7019 BrowserTab.OnChange(nil);
7024 procedure TGikoForm.RightmostTabSelectActionExecute(Sender: TObject);
7026 if BrowserTab.Tabs.Count > 0 then begin
7027 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7028 BrowserTab.OnChange(nil);
7032 procedure TGikoForm.LeftmostTabSelectActionUpdate(Sender: TObject);
7034 LeftmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7037 procedure TGikoForm.LeftTabSelectActionUpdate(Sender: TObject);
7039 LeftTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7042 procedure TGikoForm.RightTabSelectActionUpdate(Sender: TObject);
7044 RightTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7047 procedure TGikoForm.RightmostTabSelectActionUpdate(Sender: TObject);
7049 RightmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7052 procedure TGikoForm.WMSettingChange(var Message: TWMWinIniChange);
7057 procedure TGikoForm.SetMenuFont;
7059 // GikoSys.MenuFont(MenuToolBar.Font);
7060 // MenuToolBar.Buttons[0].AutoSize := False;
7061 // MenuToolBar.Buttons[0].AutoSize := True;
7062 // MenuToolBar.Font.Color := clMenuText;
7063 GikoSys.MenuFont(MainCoolBar.Font);
7064 MenuToolBar.Buttons[0].AutoSize := False;
7065 MenuToolBar.Buttons[0].AutoSize := True;
7066 MainCoolBar.AutoSize := False;
7067 MainCoolBar.AutoSize := True;
7069 GikoSys.MenuFont(ListCoolBar.Font);
7070 GikoSys.MenuFont(BrowserCoolBar.Font);
7071 // MenuToolBar.Font.Color := clMenuText;
7074 procedure TGikoForm.FavoriteMenuClick(Sender: TObject);
7080 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á
7081 NewMenu := TMenuItem.Create(MainMenu);
7082 NewMenu.Action := FavoriteAddAction;
7083 FavoriteMenu.Add(NewMenu);
7084 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\90®
\97\9d
7085 NewMenu := TMenuItem.Create(FavoriteMenu);
7086 NewMenu.Action := FavoriteArrangeAction;
7087 FavoriteMenu.Add(NewMenu);
7088 //
\83Z
\83p
\83\8c\81[
\83^
7089 NewMenu := TMenuItem.Create(FavoriteMenu);
7090 NewMenu.Caption := '-';
7091 FavoriteMenu.Add(NewMenu);
7093 CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
7096 procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
7101 for i := 0 to Node.Count - 1 do begin
7102 NewMenu := TFavoriteMenuItem.Create(Self);
7103 NewMenu.AutoHotkeys := maAutomatic;
7104 NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&');
7105 TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data;
7106 MenuItem.Add(NewMenu);
7108 if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
7109 NewMenu.ImageIndex := TOOL_ICON_FAV_FOLDER;
7110 CreateFavMenu(Node.Item[i], NewMenu);
7111 end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
7112 NewMenu.ImageIndex := TOOL_ICON_FAV_BOARD;
7113 NewMenu.OnClick := FavoriteClick;
7114 end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
7115 NewMenu.ImageIndex := TOOL_ICON_FAV_THREAD;
7116 NewMenu.OnClick := FavoriteClick;
7121 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
7123 Dlg : TFavoriteAddDialog;
7129 if Item is TFavoriteBoardItem then
7130 Item := TFavoriteBoardItem( Item ).Item
7131 else if Item is TFavoriteThreadItem then
7132 Item := TFavoriteThreadItem( Item ).Item;
7134 Node := FavoriteTreeView.Items.GetFirstNode;
7135 if Item is TBoard then begin
7136 ItemURL := TBoard( Item ).URL;
7137 while Node <> nil do begin
7139 if TObject( Data ) is TFavoriteBoardItem then begin
7140 if ItemURL = TFavoriteBoardItem( Data ).URL then begin
7141 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
7146 Node := Node.GetNext;
7148 Dlg := TFavoriteAddDialog.Create(Self);
7150 Dlg.SetBoard( TBoard( Item ) );
7155 end else if Item is TThreadItem then begin
7156 ItemURL := TThreadItem( Item ).URL;
7157 while Node <> nil do begin
7159 if TObject( Data ) is TFavoriteThreadItem then begin
7160 if ItemURL = TFavoriteThreadItem( Data ).URL then begin
7161 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
7166 Node := Node.GetNext;
7168 Dlg := TFavoriteAddDialog.Create(Self);
7170 Dlg.SetThreadItem( TThreadItem( Item ) );
7180 procedure TGikoForm.FavoriteAddActionExecute(Sender: TObject);
7182 ShowFavoriteAddDialog(GetActiveContent);
7185 procedure TGikoForm.FavoriteClick(Sender: TObject);
7188 FavoriteClick( Sender, True );
7192 procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean);
7195 ThreadItem: TThreadItem;
7196 FavBoard: TFavoriteBoardItem;
7197 FavThread: TFavoriteThreadItem;
7201 if Sender is TFavoriteMenuItem then
7202 Item := TFavoriteMenuItem(Sender).Data
7203 else if Sender is TLinkToolButton then
7204 Item := TLinkToolButton(Sender).Data
7205 else if Sender is TTreeNode then
7206 Item := TTreeNode( Sender ).Data
7210 if TObject(Item) is TFavoriteBoardItem then begin
7211 FavBoard := TFavoriteBoardItem(Item);
7212 Board := FavBoard.Item;
7213 if Board <> nil then begin
7214 if (FTreeType = gtt2ch) and (FActiveBBS <> Board.ParentCategory.ParenTBBS) then
7215 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7216 SelectTreeNode(Board, True);
7218 end else if TObject(Item) is TFavoriteThreadItem then begin
7219 FavThread := TFavoriteThreadItem(Item);
7220 ThreadItem := FavThread.Item;
7221 if ThreadItem = nil then
7224 InsertBrowserTab(ThreadItem, ActiveTab);
7226 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7227 if GikoSys.Setting.ListWidthState = glsMin then begin
7228 BrowserMaxAndFocusAction.Execute;
7231 if GikoSys.Setting.ListHeightState = glsMin then begin
7232 BrowserMaxAndFocusAction.Execute;
7238 procedure TGikoForm.FavoriteAddActionUpdate(Sender: TObject);
7240 FavoriteAddAction.Enabled := (GetActiveContent <> nil);
7243 procedure TGikoForm.BoardFavoriteAddActionExecute(Sender: TObject);
7245 if TObject(ListView.Selected.Data) is TBoard then
7246 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7249 procedure TGikoForm.BoardFavoriteAddActionUpdate(Sender: TObject);
7251 BoardFavoriteAddAction.Enabled := (GetActiveList is TCategory) and (ListView.SelCount > 0);
7254 procedure TGikoForm.ThreadFavoriteAddActionExecute(Sender: TObject);
7256 if TObject(ListView.Selected.Data) is TThreadItem then
7257 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7260 procedure TGikoForm.ThreadFavoriteAddActionUpdate(Sender: TObject);
7262 ThreadFavoriteAddAction.Enabled := (GetActiveList is TBoard) and (ListView.SelCount > 0);
7265 procedure TGikoForm.TreeSelectFavoriteAddActionExecute(Sender: TObject);
7267 ShowFavoriteAddDialog(TObject(FClickNode.Data));
7270 procedure TGikoForm.FavoriteArrangeActionExecute(Sender: TObject);
7272 Dlg: TFavoriteArrangeDialog;
7274 Dlg := TFavoriteArrangeDialog.Create(Self);
7280 PostMessage( Handle, USER_SETLINKBAR, 0, 0 );
7283 procedure TGikoForm.BBSMenuItemOnClick(
7288 if Sender is TBBSMenuItem then
7289 ShowBBSTree( TBBSMenuItem( Sender ).Data );
7293 procedure TGikoForm.MainCoolBarResize(Sender: TObject);
7295 TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
7298 procedure TGikoForm.MoveToActionExecute(Sender: TObject);
7303 URL := Trim(AddressComboBox.Text);
7306 idx := AddressComboBox.Items.IndexOf(URL);
7307 if idx = -1 then begin
7308 AddressComboBox.Items.Insert(0, URL);
7309 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
7310 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
7312 AddressComboBox.Items.Delete(idx);
7313 AddressComboBox.Items.Insert(0, URL);
7317 procedure TGikoForm.MoveToURL(URL: string);
7320 protocol, host, path, document, port, bookmark : string;
7321 URL2, protocol2, host2, path2, document2, port2, bookmark2 : string;
7323 BBSID, BBSKey: string;
7324 tmpBoard, Board: TBoard;
7325 ThreadItem: TThreadItem;
7328 tmpThread : TThreadItem;
7329 // category : TCategory;
7330 // categoryNode : TTreeNode;
7331 // boardNode : TTreeNode;
7332 shiftDown : Boolean;
7336 GikoSys.ParseURI( URL, protocol, host, path, document, port, bookmark );
7337 GikoSys.Parse2chURL( URL, path, document, BBSID, BBSKey );
7340 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7341 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7342 if shiftDown then begin
7343 GikoSys.OpenBrowser(URL, gbtUserApp);
7345 end else if ctrlDown then begin
7346 GikoSys.OpenBrowser(URL, gbtIE);
7350 //=====
\83v
\83\89\83O
\83C
\83\93
7353 bi := High( BoardPlugIns );
7354 for i := Low( BoardPlugIns ) to bi do begin
7355 if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7356 case BoardPlugIns[ i ].AcceptURL( URL ) of
7359 tmpThread := TThreadItem.Create( BoardPlugIns[ i ], URL );
7360 boardURL := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );
7361 Board := BBSsFindBoardFromURL( boardURL );
7362 if Board = nil then begin
7363 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7364 //GikoSys.OpenBrowser(URL, gbtUserApp);
7367 Board := GikoSys.GetUnknownBoard( tmpThread.BoardPlugIn, boardURL );
7368 if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
7369 ShowBBSTree( BBSs[ 1 ] );
7372 if not Board.IsThreadDatRead then begin
7373 GikoSys.ReadSubjectFile( Board );
7378 ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7379 if ThreadItem = nil then begin
7380 ThreadItem := tmpThread;
7381 Board.Insert( 0, ThreadItem );
7382 if ActiveList is TBoard then begin
7383 if TBoard(ActiveList) = Board then
7384 ListView.Items.Count := ListView.Items.Count + 1;
7386 InsertBrowserTab( ThreadItem );
7387 DownloadContent( ThreadItem );
7391 InsertBrowserTab( ThreadItem );
7392 if not ThreadItem.IsLogFile then begin
7393 DownloadContent( ThreadItem );
7403 tmpBoard := TBoard.Create(BoardPlugIns[ i ], URL);
7404 Board := BBSsFindBoardFromURL( tmpBoard.URL );
7406 if Board <> nil then begin
7407 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7408 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7409 SelectTreeNode( Board, True );
7417 // 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¢
7421 if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7422 boardURL := GikoSys.Get2chThreadURL2BoardURL( URL );
7423 Board := BBSsFindBoardFromURL( boardURL );
7425 Board := BBSsFindBoardFromBBSID( BBSID );
7427 if Board = nil then begin
7428 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7429 //
\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)
7430 Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
7432 if Board = nil then begin
7433 //
\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
7434 GikoSys.OpenBrowser(URL, gbtUserApp);
7437 //
\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é
7439 GikoSys.ParseURI(URL2 , protocol2, host2, path2, document2, port2, bookmark2 );
7440 tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
7441 tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
7442 if ( not GikoSys.Is2chHost(tmp1)) and (tmp1 <> tmp2) then begin
7443 GikoSys.OpenBrowser(URL, gbtUserApp);
7448 if not Board.IsThreadDatRead then
7449 GikoSys.ReadSubjectFile(Board);
7450 URL := GikoSys.Get2chBrowsableThreadURL( URL );
7451 ThreadItem := Board.FindThreadFromURL( URL );
7452 //
\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)
7453 if ThreadItem = nil then begin
7454 ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
7457 if ThreadItem = nil then begin
7458 //shift ->
\90Ý
\92è
\83u
\83\89\83E
\83U
\81i
\96³
\82¯
\82ê
\82ÎIE
\81j
7460 {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7461 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7463 GikoSys.OpenBrowser(URL, gbtUserApp)
7464 else if ctrlDown then
7465 GikoSys.OpenBrowser(URL, gbtIE)
7468 ThreadItem := TThreadItem.Create( nil, URL );
7469 ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
7470 if AnsiPos(Host, Board.URL) = 0 then
7471 ThreadItem.DownloadHost := Host
7473 ThreadItem.DownloadHost := '';
7474 Board.Insert(0, ThreadItem);
7475 if ActiveList is TBoard then begin
7476 if TBoard(ActiveList) = Board then
7477 ListView.Items.Count := ListView.Items.Count + 1;
7479 InsertBrowserTab(ThreadItem);
7480 DownloadContent(ThreadItem);
7483 if ThreadItem.IsLogFile then
7484 InsertBrowserTab(ThreadItem)
7486 if AnsiPos(Host, Board.URL) = 0 then
7487 ThreadItem.DownloadHost := Host
7489 ThreadItem.DownloadHost := '';
7490 InsertBrowserTab(ThreadItem);
7491 DownloadContent(ThreadItem);
7495 Board := BBSsFindBoardFromURL( URL );
7496 if Board = nil then begin
7497 GikoSys.OpenBrowser(URL, gbtAuto);
7499 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7500 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7501 SelectTreeNode( Board, True );
7506 procedure TGikoForm.AddressToolBarResize(Sender: TObject);
7508 AddressComboBox.Width := AddressToolBar.Width - MoveToToolButton.Width - 10;
7509 CoolBarResized( Sender, MainCoolBar );
7512 procedure TGikoForm.AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
7513 Shift: TShiftState);
7515 if Key = VK_RETURN then
7516 MoveToAction.Execute;
7519 procedure TGikoForm.BrowserEnter(Sender: TObject);
7521 Browser.DoObjectVerb(OLEIVERB_UIACTIVATE);
7524 procedure TGikoForm.WMCopyData(var Message: TWMCopyData);
7526 CDS:PCopyDataStruct;
7530 CDS := Message.CopyDataStruct;
7531 GetMem(PC, CDS^.cbData);
7533 lstrcpy(PC,CDS^.lpData);
7534 SetString(sURL, PC,lstrlen(PC));
7539 Message.Result := 1;
7542 procedure TGikoForm.WndProc(var Message: TMessage);
7547 if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then
7550 if Message.WParam = SC_MINIMIZE then
7553 TreeClick( TreeView.Selected );
7567 procedure TGikoForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
7569 hComboEdit: THandle;
7570 // KeyData: Integer;
7573 if AddressComboBox.Focused or SelectComboBox.Focused then begin
7574 if Msg.CharCode in [VK_BACK] then begin
7575 hComboEdit := GetFocus;
7576 if hComboEdit <> 0 then
7577 SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, Msg.KeyData);
7578 // SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, $000E0001);
7581 if Msg.CharCode in [VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT] then begin
7582 hComboEdit := GetFocus;
7583 if hComboEdit <> 0 then
7584 SendMessage(hComboEdit, WM_KEYDOWN, Msg.CharCode, Msg.KeyData);
7588 //
\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ð
7589 KeyData := Msg.KeyData;
7590 if (KeyData and $20000000) = 0 then begin
7591 if Msg.CharCode in [Ord('F'), Ord('V'), Ord('B'), Ord('R'),
7592 Ord('A'), Ord('T'), Ord('H')] then begin
7593 if not ActionList.IsShortCut(Msg) then begin
7601 procedure TGikoForm.BrowserTabVisibleActionExecute(Sender: TObject);
7603 GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
7607 procedure TGikoForm.BrowserTabTopActionExecute(Sender: TObject);
7609 BrowserTabBottomAction.Checked := False;
7610 BrowserTabTopAction.Checked := True;
7611 GikoSys.Setting.BrowserTabPosition := gtpTop;
7615 procedure TGikoForm.BrowserTabBottomActionExecute(Sender: TObject);
7617 BrowserTabTopAction.Checked := False;
7618 BrowserTabBottomAction.Checked := True;
7619 GikoSys.Setting.BrowserTabPosition := gtpBottom;
7623 procedure TGikoForm.BrowserTabTabStyleActionExecute(Sender: TObject);
7625 BrowserTabButtonStyleAction.Checked := False;
7626 BrowserTabFlatStyleAction.Checked := False;
7627 BrowserTabTabStyleAction.Checked := True;
7628 GikoSys.Setting.BrowserTabStyle := gtsTab;
7632 procedure TGikoForm.BrowserTabButtonStyleActionExecute(Sender: TObject);
7634 BrowserTabTabStyleAction.Checked := False;
7635 BrowserTabFlatStyleAction.Checked := False;
7636 BrowserTabButtonStyleAction.Checked := True;
7637 GikoSys.Setting.BrowserTabStyle := gtsButton;
7641 procedure TGikoForm.BrowserTabFlatStyleActionExecute(Sender: TObject);
7643 BrowserTabFlatStyleAction.Checked := True;
7644 BrowserTabTabStyleAction.Checked := False;
7645 BrowserTabButtonStyleAction.Checked := False;
7646 GikoSys.Setting.BrowserTabStyle := gtsFlat;
7650 procedure TGikoForm.PreviewTimerTimer(Sender: TObject);
7656 HtmlFileName: string;
7660 TargetFrameName: OleVariant;
7661 PostData: OleVariant;
7662 Headers: OleVariant;
7663 WindowHeight: Integer;
7664 WindowWidth: Integer;
7668 Protocol, Host, Path, Document, Port, Bookmark: string;
7670 PreviewTimer.Enabled := False;
7674 case GikoSys.Setting.PreviewSize of
7681 WindowHeight := 192;
7685 WindowHeight := 384;
7689 WindowHeight := 480;
7691 else begin //gpsMedium
7693 WindowHeight := 288;
7697 ARect := Rect(0, 0, WindowWidth, WindowHeight);
7699 case GikoSys.Setting.PopupPosition of
7700 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7701 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7702 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
7703 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
7704 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
7705 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
7706 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7707 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7708 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Ó
7711 html := '<html><head>'#13#10
7713 + 'function init() {'#13#10
7714 + ' if ((document.body.clientHeight >= Image1.height) && (document.body.clientWidth >= Image1.width)) {'#13#10
7716 + ' var dh, ih;'#13#10
7717 + ' dh = document.body.clientWidth / document.body.clientHeight;'#13#10
7718 + ' ih = Image1.width / Image1.height;'#13#10
7719 + ' if (document.body.clientWidth < document.body.clientHeight) {'#13#10
7720 + ' if (ih > dh)'#13#10
7721 + ' Image1.width = document.body.clientWidth;'#13#10
7723 + ' Image1.height = document.body.clientHeight;'#13#10
7725 + ' if (ih < dh)'#13#10
7726 + ' Image1.height = document.body.clientHeight;'#13#10
7728 + ' Image1.width = document.body.clientWidth;'#13#10
7731 + ' Message.style.display = "none";'#13#10
7735 + '<body topmargin="0" leftmargin="0" style="border-width: 1px; overflow:hidden; border-style: solid;" onLoad="init()">'#13#10
7736 + '<div align="center" id="Message">
\83v
\83\8c\83r
\83\85\81[
\8dì
\90¬
\92\86</div>'#13#10
7737 + '<div align="center"><img name="Image1" border="0" src="%ImageURL%"></div>'#13#10
7739 sl := TStringList.Create;
7742 HtmlFileName := GikoSys.GetAppDir + HTML_FILE_NAME;
7743 sl.Text := AnsiReplaceStr(html, '%ImageURL%', FPreviewURL);
7744 sl.SaveToFile(HtmlFileName);
7751 NavURL := HtmlFileName;
7753 TargetFrameName := '';
7756 GikoSys.ParseURI(FPreviewURL, Protocol, Host, Path, Document, Port, Bookmark);
7757 Referer := Protocol + '://' + Host;
7759 Referer := Referer + ':' + Port;
7760 Referer := Referer + Path;
7761 Headers := 'Referer: ' + Referer;
7762 FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
7763 if ARect.Top + WindowHeight > Screen.DesktopHeight then
7764 ARect.Top := Screen.DesktopHeight - WindowHeight;
7765 if ARect.Left + WindowWidth > Screen.DesktopWidth then
7766 ARect.Left := Screen.DesktopWidth - WindowWidth;
7767 if ARect.Left < Screen.DesktopLeft then ARect.Left := Screen.DesktopLeft;
7768 if ARect.Bottom < Screen.DesktopTop then ARect.Bottom := Screen.DesktopTop;
7770 SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW);
7771 ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE);
7773 // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE);
7774 // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW);
7778 procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor);
7780 if PreviewTimer.Enabled then
7781 PreviewTimer.Enabled := False;
7782 if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin
7783 FHint.ReleaseHandle;
7786 if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then
7787 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
7788 Message.Result := 1;
7792 procedure TGikoForm.MessageHideButtonClick(Sender: TObject);
7794 MsgBarCloseAction.Execute;
7797 function TGikoForm.OnDocumentContextMenu(Sender: TObject): WordBool;
7799 Doc: IHtmlDocument2;
7800 Range: IHTMLTxtRange;
7803 ThreadItem: TThreadItem;
7806 Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
7807 if Assigned(Doc) then begin
7808 Range := Doc.selection.createRange as IHTMLTxtRange;
7809 s := CustomStringReplace(Range.text, '
\81@', ' ');//
\91S
\8ap
\8bó
\94\92\82ð
\94¼
\8ap
\8bó
\94\92\82É
7810 s := ZenToHan(Trim(s));
7811 if GikoSys.IsNumeric(s) then begin
7813 ThreadItem := GetActiveContent;
7814 if ThreadItem <> nil then begin
7816 FHint.PopupType := gptThread;
7817 SetResPopupText(ThreadItem, Num, Num, False, False);
7818 if FHint.ResCount <> 0 then
7829 procedure TGikoForm.SetResPopupText(threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
7841 boardPlugIn : TBoardPlugIn;
7844 if StNum > ToNum then begin
7850 //
\8dÅ
\91å10
\83\8c\83X
\82Ü
\82Å
\95\
\8e¦
7851 if StNum + MAX_POPUP_RES < ToNum then
7852 ToNum := StNum + MAX_POPUP_RES;
7854 //
\83^
\83C
\83g
\83\8b\95\
\8e¦
7856 if ThreadItem <> nil then
7857 FHint.Title := ThreadItem.Title;
7859 if ThreadItem <> nil then begin
7860 if ThreadItem.IsBoardPlugInAvailable then begin
7861 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
7862 boardPlugIn := ThreadItem.BoardPlugIn;
7864 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
7865 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
7866 for i := StNum to ToNum do begin
7868 //
\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½
7869 tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
7870 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
7871 Res := GikoSys.DivideStrLine(tmp);
7872 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
7873 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
7875 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
7878 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
7879 Body := CustomStringReplace(Body, '<br>', #10,true);
7880 Body := CustomStringReplace(Body, '</a>', '',true);
7881 Body := GikoSys.DeleteLink(Body);
7882 Body := CustomStringReplace(Body, '<', '<');
7883 Body := CustomStringReplace(Body, '>', '>');
7884 Body := CustomStringReplace(Body, '"', '"');
7885 Body := CustomStringReplace(Body, '&', '&');
7886 Body := CustomStringReplace(Body, ' ', ' ');
7888 FHint.Add(Header, Body);
7889 //FHint.Title := '';
7893 for i := StNum to ToNum do begin
7895 FileName := ThreadItem.FilePath;
7896 tmp := GikoSys.ReadThreadFile(FileName, Line);
7897 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
7898 Res := GikoSys.DivideStrLine(tmp);
7899 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
7900 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
7902 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
7904 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
7905 Body := CustomStringReplace(Body, '<br>', #10,true);
7906 Body := CustomStringReplace(Body, '</a>', '',true);
7907 Body := GikoSys.DeleteLink(Body);
7908 Body := CustomStringReplace(Body, '<', '<');
7909 Body := CustomStringReplace(Body, '>', '>');
7910 Body := CustomStringReplace(Body, '"', '"');
7911 Body := CustomStringReplace(Body, '&', '&');
7912 Body := CustomStringReplace(Body, ' ', ' ');
7913 FHint.Add(Header, Body);
7914 //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
7923 procedure TGikoForm.ShowTextPopup;
7928 // if Trim(s) = '' then
7931 FHint.Font.Name := GikoSys.Setting.HintFontName;
7932 FHint.Font.Size := GikoSys.Setting.HintFontSize;
7933 FHint.Font.Color := GikoSys.Setting.HintFontColor;
7934 FHint.Color := GikoSys.Setting.HintBackColor;
7935 FHint.HeaderBold := GikoSys.Setting.ResPopupHeaderBold;
7937 if FHint.PopupType = gptRaw then
7938 ARect := FHint.CalcHintRect(Screen.Width, FHint.Caption, nil)
7940 ARect := FHint.CalcHintRect(Screen.Width, '', nil);
7941 case GikoSys.Setting.PopupPosition of
7942 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7943 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7944 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
7945 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
7946 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
7947 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
7948 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7949 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7950 gppLeftBottom: OffsetRect(ARect, p.x + 15, p.y + 15); //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g
\82P
\82Ì453
\8e\81\82É
\8a´
\8eÓ
7952 //FHint.ActivateHint(ARect, s);
7953 if FHint.PopupType = gptRaw then
7954 FHint.ActivateHint(ARect, FHint.Caption)
7956 FHint.ActivateHint(ARect, '');
7958 FHint.ReleaseHandle;
7963 procedure TGikoForm.GikoHelpActionExecute(Sender: TObject);
7967 FileName := GikoSys.GetAppDir + 'batahlp.chm';
7968 if not FileExists(FileName) then begin
7971 '
\83w
\83\8b\83v
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½' + #13#10 +
7972 '
\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 +
7973 '
\83w
\83\8b\83v
\82Í
\83M
\83R
\83i
\83r
\82Ì
\83T
\83C
\83g
\82É
\92u
\82¢
\82Ä
\82 \82è
\82Ü
\82·',
7978 ShellExecute(Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
7981 procedure TGikoForm.ToolButton18Click(Sender: TObject);
7983 DEL_MSG = '
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
7984 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7986 if FTreeType = gttHistory then begin
7987 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7988 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7992 TreeView.Items.Clear;
7996 procedure TGikoForm.KotehanActionExecute(Sender: TObject);
7998 Dlg: TKotehanDialog;
8000 Dlg := TKotehanDialog.Create(Self);
8008 procedure TGikoForm.SetLinkBar;
8012 ToolButton: TLinkToolButton;
8013 MenuItem: TMenuItem;
8014 oldIgnoreResize : Boolean;
8016 oldIgnoreResize := FIsIgnoreResize;
8017 FIsIgnoreResize := True;
8018 MainCoolBar.Bands.BeginUpdate;
8020 LinkBarPopupMenu.Items.Clear;
8021 for i := LinkToolBar.ButtonCount - 1 downto 0 do
8022 //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
8023 LinkToolBar.Buttons[i].Free;
8024 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8025 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8026 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8027 ToolButton := TLinkToolButton.Create(LinkToolBar);
8028 // ToolButton.Parent := LinkToolBar;
8029 if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteFolder then begin
8030 MenuItem := TMenuItem.Create(Self);
8031 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem);
8032 LinkBarPopupMenu.Items.Add(MenuItem);
8033 ToolButton.MenuItem := MenuItem;
8034 ToolButton.ImageIndex := TOOL_ICON_FAV_FOLDER;
8035 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteBoardItem then begin
8036 ToolButton.ImageIndex := TOOL_ICON_FAV_BOARD;
8037 ToolButton.OnClick := FavoriteClick;
8038 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteThreadItem then begin
8039 ToolButton.ImageIndex := TOOL_ICON_FAV_THREAD;
8040 ToolButton.OnClick := FavoriteClick;
8042 ToolButton.Caption := FavoriteTreeView.Items[i].Item[j].Text;
8043 ToolButton.Left := 10000;
8044 ToolButton.Data := FavoriteTreeView.Items[i].Item[j].Data;
8045 ToolButton.AutoSize := True;
8046 ToolButton.OnDragDrop := LinkToolButtonDragDrop;
8047 ToolButton.OnDragOver := FavoriteDragOver;
8048 ToolButton.OnMouseDown := LinkToolButtonOnMouseDown;
8049 ToolButton.OnMouseMove := LinkToolButtonOnMouseMove;
8050 ToolButton.OnMouseUp := LinkToolButtonOnMouseUp;
8051 ToolButton.OnStartDrag := LinkToolButtonStartDrag;
8052 //ToolButton.DragMode := dmAutomatic;
8053 ToolButton.DragMode := dmManual;
8054 ToolButton.PopupMenu := FavoriteTreePopupMenu;
8056 LinkToolBar.InsertControl(ToolButton);
8061 { if LinkToolBar.ButtonCount = 0 then begin
8062 ToolButton := TLinkToolButton.Create(LinkToolBar);
8063 ToolButton.Style := tbsButton;
8064 ToolButton.ImageIndex := -1;
8065 ToolButton.Caption := '';
8066 LinkToolBar.InsertControl(ToolButton);
8069 MainCoolBar.Bands.EndUpdate;
8070 LoadCoolBarSettings;
8071 FIsIgnoreResize := oldIgnoreResize;
8075 procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8083 if Sender = FavoriteTreeView then begin
8084 Node := FavoriteTreeView.GetNodeAt(X, Y);
8089 bound := Node.DisplayRect( False );
8090 height := bound.Bottom - bound.Top;
8091 if (bound.Top + height / 2) <= Y then
8092 Node := FavoriteTreeView.GetNodeAt(X, Y + height);
8097 if Node.IsFirstNode then
8102 if FDropSpaceNode <> nil then
8103 if FDropSpaceNode.AbsoluteIndex = Node.AbsoluteIndex then
8106 if Change then begin
8107 if FDropSpaceNode <> nil then
8108 FDropSpaceNode.Free;
8110 FDropSpaceNode := FavoriteDM.TreeView.Items.AddChildObject(Node.Parent, '', nil );
8111 FDropSpaceNode.MoveTo( Node, naInsert );
8112 FDropSpaceNode.ImageIndex := -1;
8113 FDropSpaceNode.SelectedIndex := -1;
8117 if Source = FavoriteTreeView then begin
8118 if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
8123 end else if Source = BrowserTab then
8125 else if Source = ListView then
8127 else if Source is TLinkToolButton then
8129 else if Source = TreeView then
8135 procedure TGikoForm.FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8138 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
8141 procedure TGikoForm.LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
8143 // FDragging := true;
8146 procedure TGikoForm.LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
8148 SenderNode: TTreeNode;
8149 LinkToolButton: TLinkToolButton;
8152 LinkToolButton := TLinkToolButton( Sender );
8153 SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
8155 FavoriteDragDrop( SenderNode, Source );
8159 procedure TGikoForm.LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8161 favButton : TLinkToolButton;
8162 favThreadItem : TFavoriteThreadItem;
8168 if Sender is TLinkToolButton then begin
8169 favButton := TLinkToolButton( Sender );
8170 if TObject( favButton.Data ) is TFavoriteThreadItem then begin
8171 favThreadItem := TFavoriteThreadItem( favButton.Data );
8172 if favThreadItem.Item <> nil then
8173 InsertBrowserTab( favThreadItem.Item, False );
8181 procedure TGikoForm.LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
8185 TToolButton( Sender ).DragMode := dmManual;
8186 if ssLeft in Shift then begin
8187 // 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)
8188 if FDragTime = 0 then begin
8189 FDragTime := GetTickCount();
8191 Now := GetTickCount();
8192 if (Now - FDragTime) > 500 then begin
8193 if FDragButton <> TToolButton( Sender ) then begin
8195 FDragButton := TToolButton( Sender );
8196 TToolButton(Sender).BeginDrag(false ,5);
8199 {$IF Defined(debug)}
8200 ShowMessage('Error');
8211 procedure TGikoForm.LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8216 function TGikoForm.GetWidthAllToolButton(ToolBar: TToolBar): Integer;
8221 for i := 0 to ToolBar.ButtonCount - 1 do
8222 if ToolBar.Buttons[i].Visible then
8223 Result := Result + ToolBar.Buttons[i].Width;
8226 procedure TGikoForm.MainCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8228 Control : TWinControl;
8231 Control := FindControl(BandInfo^.hwndChild);
8232 if Control = nil then
8235 for i := MainCoolBar.Bands.Count - 1 downto 0 do begin
8236 if MainCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8237 idx := MainCoolBar.Bands[ i ].ID;
8241 Canvas.Font.Handle := GetStockObject( DEFAULT_GUI_FONT );
8242 if (Control = MenuToolBar) or (Control = StdToolBar) then begin
8243 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8244 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8245 BandInfo^.cxMinChild := 0;
8246 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth;
8247 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8248 end else if Control = LinkToolBar then begin
8249 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8250 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8251 BandInfo^.cxMinChild := 0;
8252 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83\8a\83\93\83N' );
8253 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8254 end else begin // AddressToolBar
8255 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8256 BandInfo^.cxMinChild := 0;
8257 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83A
\83h
\83\8c\83X' );
8261 procedure TGikoForm.MainCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8267 ChevronPopupMenu.Items.Clear;
8269 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8270 if MainCoolBar.Bands[ i ].Visible then begin
8271 if Idx = Int64(RebarChevron^.uBand) then begin
8278 if (Idx >= 0) and (MainCoolBar.Bands.Count > Idx) then begin
8279 if MainCoolBar.Bands[Idx].Control = MenuToolbar then begin
8281 end else if MainCoolBar.Bands[Idx].Control = StdToolbar then begin
8282 ToolBarChevronMenu(StdToolBar);
8283 end else if MainCoolBar.Bands[Idx].Control = LinkToolbar then begin
8287 p := MainCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8288 ChevronPopupMenu.Popup(p.x, p.y);
8292 procedure TGikoForm.MenuBarChevronMenu;
8293 procedure SetSubMenu(MenuItem: TMenuItem; PopupItem: TMenuItem);
8299 for i := 0 to MenuItem.Count - 1 do begin
8301 if MenuItem[i] is TFavoriteMenuItem then begin
8302 Item := TFavoriteMenuItem.Create(Self);
8303 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(MenuItem[i]).Data;
8305 Item := TMenuItem.Create(Self);
8306 Item.Caption := MenuItem[i].Caption;
8307 Item.Action := MenuItem[i].Action;
8308 Item.ImageIndex := MenuItem[i].ImageIndex;
8309 Item.OnClick := MenuItem[i].OnClick;
8310 PopupItem.Add(Item);
8311 if MenuItem[i].Count > 0 then
8312 SetSubMenu(MenuItem[i], Item);
8321 ChevronPopupMenu.Items.Clear;
8322 ChevronPopupMenu.Images := MainMenu.Images;
8323 bw := GetWidthAllToolButton(MenuToolBar);
8324 if MenuToolBar.Width < bw then begin
8326 for i := 0 to MenuToolBar.ButtonCount - 1 do begin
8327 w := w + MenuToolBar.Buttons[i].Width;
8328 if MenuToolBar.Width <= w then begin
8329 Item := TMenuItem.Create(Self);
8330 Item.Caption := MenuToolBar.Buttons[i].MenuItem.Caption;
8331 //Item.Action := MenuToolBar.Buttons[i].MenuItem.Action;
8332 ChevronPopupMenu.Items.Add(Item);
8333 SetSubMenu(MenuToolbar.Buttons[i].MenuItem, Item);
8339 procedure TGikoForm.ToolBarChevronMenu(ToolBar: TToolBar);
8340 procedure SetSubMenu(PopupMenu: TPopupMenu; PopupItem: TMenuItem);
8345 if Assigned(PopupMenu.OnPopup) then
8346 PopupMenu.OnPopup(nil);
8347 for i := 0 to PopupMenu.Items.Count - 1 do begin
8349 if PopupMenu.Items[i] is TFavoriteMenuItem then begin
8350 Item := TFavoriteMenuItem.Create(Self);
8351 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(PopupMenu.Items[i]).Data;
8353 Item := TMenuItem.Create(Self);
8354 Item.Caption := PopupMenu.Items[i].Caption;
8355 Item.Action := PopupMenu.Items[i].Action;
8356 Item.ImageIndex := PopupMenu.Items[i].ImageIndex;
8357 Item.OnClick := PopupMenu.Items[i].OnClick;
8358 PopupItem.Add(Item);
8367 ChevronPopupMenu.Items.Clear;
8368 ChevronPopupMenu.Images := ToolBar.HotImages;
8369 bw := GetWidthAllToolButton(ToolBar);
8370 if ToolBar.Width < bw then begin
8372 for i := 0 to ToolBar.ButtonCount - 1 do begin
8373 w := w + ToolBar.Buttons[i].Width;
8374 if ToolBar.Width <= w then begin
8375 Case ToolBar.Buttons[i].Tag of
8378 Item := TMenuItem.Create(Self);
8379 if ToolBar.Buttons[i].Style = tbsSeparator then
8382 Item.Caption := ToolBar.Buttons[i].Caption;
8383 Item.Action := ToolBar.Buttons[i].Action;
8384 //Item.Visible := True;
8386 ChevronPopupMenu.Items.Add(Item);
8387 if ToolBar.Buttons[i].DropdownMenu <> nil then begin
8389 Item.OnClick := nil;
8390 SetSubMenu(ToolBar.Buttons[i].DropdownMenu, Item);
8394 //
\8f«
\97\88\82Ì
\82½
\82ß
\82Ì
\97\
\96ñ
8401 procedure TGikoForm.LinkBarChevronMenu;
8406 Item: TFavoriteMenuItem;
8408 Button: TLinkToolButton;
8410 ChevronPopupMenu.Items.Clear;
8411 ChevronPopupMenu.Images := LinkToolBar.Images;
8412 bw := GetWidthAllToolButton(LinkToolBar);
8413 if LinkToolBar.Width < bw then begin
8415 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8416 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8417 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8418 w := w + LinkToolBar.Buttons[j].Width;
8419 if LinkToolBar.Width <= w then begin
8420 if LinkToolBar.Buttons[j] is TLinkToolButton then begin
8421 Button := TLinkToolButton(LinkToolBar.Buttons[j]);
8422 Item := TFavoriteMenuItem.Create(Self);
8423 if TObject(Button.Data) is TFavoriteFolder then begin
8424 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], Item);
8425 end else if TObject(Button.Data) is TFavoriteBoardItem then begin
8426 Item.OnClick := FavoriteClick;
8427 end else if TObject(Button.Data) is TFavoriteThreadItem then begin
8428 Item.OnClick := FavoriteClick;
8430 Item.Data := Button.Data;
8431 Item.Caption := LinkToolBar.Buttons[j].Caption;
8432 Item.ImageIndex := LinkToolBar.Buttons[j].ImageIndex;
8433 ChevronPopupMenu.Items.Add(Item);
8444 \brief
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
8445 \param bar
\83o
\83\93\83h
\82ª
\8f\8a\91®
\82·
\82é CoolBar
8446 \param band
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
\83o
\83\93\83h
8448 \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É
8449 \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
8451 procedure TGikoForm.ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
8453 bandInfo : tagREBARBANDINFOA;
8454 pBandInfo : PReBarBandInfoA;
8461 pBandInfo := @bandInfo;
8462 ZeroMemory( pBandInfo, sizeof( bandInfo ) );
8463 bandInfo.cbSize := sizeof( bandInfo );
8464 bandInfo.hwndChild := h;
8465 bandInfo.cyMinChild := bar.Height;
8466 bar.OnBandInfo( nil, pBandInfo );
8467 // band
\82Ì
\83C
\83\93\83f
\83b
\83N
\83X
\82ð
\92T
\82·
8469 for i := bar.Bands.Count - 1 downto 0 do begin
8470 if bar.Bands[ i ].Control.Handle = h then begin
8476 lResult := SendMessage( bar.Handle, RB_SETBANDINFO, i, Integer( pBandInfo ) );
8480 procedure TGikoForm.ListCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8482 Control: TWinControl;
8485 Control := FindControl(BandInfo^.hwndChild);
8486 if Control = nil then
8489 for i := ListCoolBar.Bands.Count - 1 downto 0 do begin
8490 if ListCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8491 idx := ListCoolBar.Bands[ i ].ID;
8495 if Control = ListToolBar then begin
8496 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8497 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8498 BandInfo^.cxMinChild := 0;
8499 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8500 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8502 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8503 BandInfo^.cxMinChild := 0;
8504 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8508 procedure TGikoForm.ListCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8513 ChevronPopupMenu.Items.Clear;
8514 Idx := RebarChevron^.uBand;
8515 if (Idx >= 0) and (ListCoolBar.Bands.Count > Idx) then begin
8516 if ListCoolBar.Bands[Idx].Control = ListToolBar then begin
8517 ToolBarChevronMenu(ListToolBar);
8520 p := ListCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8521 ChevronPopupMenu.Popup(p.x, p.y);
8525 procedure TGikoForm.BrowserCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8527 Control: TWinControl;
8530 Control := FindControl(BandInfo^.hwndChild);
8531 if Control = nil then
8534 for i := BrowserCoolBar.Bands.Count - 1 downto 0 do begin
8535 if BrowserCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8536 idx := BrowserCoolBar.Bands[ i ].ID;
8540 if Control = BrowserToolBar then begin
8541 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8542 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8543 BandInfo^.cxMinChild := 0;
8544 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8545 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8547 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8548 BandInfo^.cxMinChild := 0;
8549 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8553 procedure TGikoForm.BrowserCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8558 ChevronPopupMenu.Items.Clear;
8559 Idx := RebarChevron^.uBand;
8560 if (Idx >= 0) and (BrowserCoolBar.Bands.Count > Idx) then begin
8561 if BrowserCoolBar.Bands[Idx].Control = BrowserToolBar then
8562 ToolBarChevronMenu(BrowserToolBar)
8565 p := BrowserCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8566 ChevronPopupMenu.Popup(p.x, p.y);
8570 procedure TGikoForm.ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
8572 if Column^.iImage = -1 then begin
8573 Column^.mask := Column^.mask or LVCF_FMT;
8575 Column^.mask := Column^.mask or LVCF_FMT or LVCF_IMAGE;
8576 Column^.fmt := Column^.fmt or LVCFMT_IMAGE or LVCFMT_BITMAP_ON_RIGHT;
8580 procedure TGikoForm.ThreadEditorActionExecute(Sender: TObject);
8582 Editor: TEditorForm;
8584 if not (GetActiveList is TBoard) then
8586 Editor := TEditorForm.Create(Self);
8587 Editor.SetBoard(TBoard(GetActiveList));
8589 Editor.BodyEdit.SetFocus;
8592 procedure TGikoForm.ToolBarSettingActionExecute(Sender: TObject);
8594 Dlg: TToolBarSettingDialog;
8596 //Component: TComponent;
8598 Dlg := TToolBarSettingDialog.Create(Self, ActionList);
8600 Dlg.AddToolBar(StdToolBar, gttStandard);
8601 Dlg.AddToolBar(ListToolBar, gttList);
8602 Dlg.AddToolBar(BrowserToolBar, gttBrowser);
8603 case FToolBarSettingSender of
8604 tssMain: Dlg.ToolBarIndex := 0;
8605 tssList: Dlg.ToolBarIndex := 1;
8606 tssBrowser: Dlg.ToolBarIndex := 2;
8609 if ToolBarSettingAction.ActionComponent.GetParentComponent is TPopupMenu then begin
8610 Component := TPopupMenu( ToolBarSettingAction.ActionComponent.GetParentComponent ).PopupComponent;
8612 if Component = MainCoolBar then
8613 Dlg.ToolBarComboBox.ItemIndex := 0
8614 else if Component = ListCoolBar then
8615 Dlg.ToolBarComboBox.ItemIndex := 1
8616 else if Component = BrowserCoolBar then
8617 Dlg.ToolBarComboBox.ItemIndex := 2;
8620 if Dlg.ShowModal = mrOK then begin
8623 //
\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é
8624 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8625 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth + 1;
8626 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth - 1;
8628 for i := 0 to ListCoolBar.Bands.Count - 1 do begin
8629 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth + 1;
8630 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth - 1;
8632 for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
8633 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;
8634 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;
8636 SaveToolBarSetting(StdToolBar);
8637 SaveToolBarSetting(ListToolBar);
8638 for i := ListToolBar.ControlCount - 1 downto 0 do
8640 if ListToolBar.Controls[ i ].Action = SelectItemAction then
8642 //
\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·
8643 if (i + 1) < ListToolBar.ControlCount then
8644 if ListToolBar.Controls[ i + 1 ] is TToolButton then
8645 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
8646 ListToolBar.Controls[ i + 1 ].Visible := False;
8648 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
8649 ListToolBar.Controls[ i ].Visible := False;
8650 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
8651 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
8652 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
8653 SelectComboBox.Parent := ListToolBar;
8654 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
8655 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
8656 SelectComboBoxSplitter.Parent := ListToolBar;
8661 ResetBandInfo( ListCoolBar, ListToolBar );
8662 SaveToolBarSetting(BrowserToolBar);
8666 FToolBarSettingSender := tssNone;
8670 function TGikoForm.FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
8675 for i := bar.ButtonCount - 1 downto 0 do begin
8676 if bar.Buttons[ i ].Action = action then begin
8677 Result := bar.Buttons[ i ];
8686 procedure TGikoForm.SetToolBarPopup;
8689 aIEButton : TToolButton;
8690 aCabinetBBSButton : TToolButton;
8691 aResRangeButton : TToolButton;
8692 aThreadRangeButton: TToolButton;
8694 for i := 0 to StdToolBar.ButtonCount - 1 do begin
8696 for i := 0 to ListToolBar.ButtonCount - 1 do begin
8697 if ListToolBar.Buttons[i].Action = IconStyle then
8698 ListToolBar.Buttons[i].DropdownMenu := ListIconPopupMenu;
8699 if ListToolBar.Buttons[i].Action = SelectReservAction then
8700 ListToolBar.Buttons[i].DropdownMenu := RoundNamePopupMenu;
8702 aIEButton := FindToolBarButton( BrowserToolBar, IEAction );
8703 if aIEButton <> nil then
8704 aIEButton.DropdownMenu := BrowserPopupMenu;
8705 aCabinetBBSButton := FindToolBarButton( StdToolBar, CabinetBBSAction );
8706 if aCabinetBBSButton <> nil then
8707 aCabinetBBSButton.DropdownMenu := BBSSelectPopupMenu;
8708 aResRangeButton := FindToolBarButton( BrowserToolBar, ResRangeAction );
8709 if aResRangeButton <> nil then
8710 aResRangeButton.DropdownMenu := ResRangePopupMenu;
8711 aThreadRangeButton:= FindToolBarButton( ListToolBar, ThreadRangeAction );
8712 if aThreadRangeButton <> nil then
8713 aThreadRangeButton.DropdownMenu := ThreadRangePopupMenu;
8716 procedure TGikoForm.FormMouseWheel(Sender: TObject; Shift: TShiftState;
8717 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
8726 Wnd := WindowFromPoint(MousePos);
8728 if WheelDelta > 0 then
8733 if (Wnd = BrowserTab.Handle) or
8734 (Wnd = BrowserTab.Parent.Handle) then begin
8735 BrowserTab.ScrollTabs(Delta);
8736 end else if Wnd = ListView.Handle then begin
8737 if ListView.ViewStyle = vsList then
8738 ListView.Scroll( Delta * Mouse.WheelScrollLines * Abs( ListView.Font.Height ) + Delta * ICON_SIZE, 0 )
8740 ListView.Scroll( 0, Delta * Mouse.WheelScrollLines * Abs( ListView.Font.Height ) + Delta * ICON_SIZE );
8747 procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
8749 if Length( SelectComboBox.Text ) = 0 then
8751 AllItemAction.Checked := True;
8752 LogItemAction.Checked := False;
8753 NewItemAction.Checked := False;
8755 //
\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é
8756 if AllItemAction.Checked then
8757 AllItemAction.Checked := False;
8758 if LogItemAction.Checked then
8759 LogItemAction.Checked := False;
8760 if NewItemAction.Checked then
8761 NewItemaction.Checked := False;
8764 if Length( SelectComboBox.Text ) = 0 then
8765 SetListViewType( gvtAll )
8767 SetListViewType( gvtUser, SelectComboBox.Text, false);
8770 procedure TGikoForm.SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
8771 Shift: TShiftState);
8774 if Key = VK_Return then
8777 end else if Length( SelectComboBox.Text ) = 0 then
8779 AllItemAction.Checked := True;
8780 LogItemAction.Checked := False;
8781 NewItemAction.Checked := False;
8783 //
\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é
8784 if AllItemAction.Checked then
8785 AllItemAction.Checked := False;
8786 if LogItemAction.Checked then
8787 LogItemAction.Checked := False;
8788 if NewItemAction.Checked then
8789 NewItemaction.Checked := False;
8794 procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
8799 if Length( SelectComboBox.Text ) = 0 then
8801 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
8802 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
8807 //
\8di
\82è
\8d\9e\82Ý
\8c\9f\8dõ
\82Ì
\97\9a\97ð
\8dX
\90V
8808 procedure TGikoForm.ModifySelectList;
8815 if SelectComboBox.Parent = nil then
8818 if Length( SelectComboBox.Text ) > 0 then
8820 oldText := SelectComboBox.Text;
8821 idx := GikoSys.Setting.SelectTextList.IndexOf( oldText );
8823 GikoSys.Setting.SelectTextList.Delete( idx );
8824 idx := SelectComboBox.Items.IndexOf( oldText );
8826 SelectComboBox.Items.Delete( idx );
8827 GikoSys.Setting.SelectTextList.Insert( 0, oldText );
8828 SelectComboBox.Items.Insert( 0, oldText );
8829 SelectComboBox.Text := oldText;
8837 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\8dÄ
\93Ç
\82Ý
\8d\9e\82Ý
\82·
\82é
8838 procedure TGikoForm.SelectResActionExecute(Sender: TObject);
8840 Dlg: TListSelectDialog;
8841 ThreadItem : TThreadItem;
8842 FilterList : TStringList;
8845 Dlg := TListSelectDialog.Create(Self);
8847 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
8848 Dlg.SelectComboBox.Text := FSelectResWord;
8850 if Dlg.ModalResult = mrOK then begin
8851 SelectResAction.Checked := True;
8852 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
8853 //
\8bó
\93ü
\97Í
\82Å OK
\82Í
\8di
\82è
\8d\9e\82Ý
\89ð
\8f\9c\82Æ
\93¯
\88Ó
\8b`
8854 ResRangeAction.Execute;
8856 GikoSys.ResRange := Ord( grrSelect );
8858 //
\8dÅ
\8cã
\82É
\90Ý
\92è
\82µ
\82½
\82à
\82Ì
\82ð
\8ao
\82¦
\82Ä
\82¨
\82
8859 FSelectResWord := Dlg.SelectComboBox.Text;
8861 //
\8c\9f\8dõ
\97\9a\97ð
\82Ì
\8dX
\90V
8862 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
8864 GikoSys.Setting.SelectTextList.Delete(idx);
8865 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
8866 while Dlg.SelectComboBox.Items.Count > 100 do begin
8867 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
8871 if SelectComboBox.Parent <> nil then
8872 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
8876 //
\83t
\83B
\83\8b\83^
\82Ì
\90Ý
\92è
8877 FilterList := TStringList.Create;
8879 GikoSys.FSelectResFilter.Reverse := True;
8880 FilterList.Delimiter := ' '; //
\8bæ
\90Ø
\82è
\8eq
\82ð
\94¼
\8ap
\83X
\83y
\81[
\83X
\82É
\90Ý
\92è
8881 FilterList.DelimitedText := Dlg.SelectComboBox.Text;
8883 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
8888 //
\83X
\83\8c\83b
\83h
\82Ì
\8dÄ
\95`
\89æ
8889 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
8890 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
8892 ThreadItem := GetActiveContent;
8893 if ThreadItem <> nil then
8894 InsertBrowserTab( ThreadItem, True );
8897 //
\83L
\83\83\83\93\83Z
\83\8b
8898 if GikoSys.ResRange <> Ord( grrSelect ) then
8899 ResRangeAction.Execute;
8907 procedure TGikoForm.SelectResActionUpdate(Sender: TObject);
8909 SelectResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
8912 procedure TGikoForm.FormKeyUp(Sender: TObject; var Key: Word;
8913 Shift: TShiftState);
8917 //
\91S
\82Ä
\82Ì
\83\8c\83X
\82ð
\95\
\8e¦
8918 procedure TGikoForm.AllResActionExecute(Sender: TObject);
8920 ThreadItem : TThreadItem;
8921 FilterList : TStringList;
8924 if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
8925 and (FActiveContent.FBrowser.Busy) then Exit;
8927 FResRangeMenuSelect := Ord( grrAll );
8928 AllResAction.Checked := True;
8930 if GikoSys.ResRange <> Ord( grrAll ) then begin
8931 GikoSys.ResRange := Ord( grrAll );
8933 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
8934 FilterList := TStringList.Create;
8936 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
8937 GikoSys.FSelectResFilter.Reverse := False;
8942 FSelectResWord := '';
8944 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
8945 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
8946 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
8948 ThreadItem := GetActiveContent;
8949 if ThreadItem <> nil then
8950 InsertBrowserTab( ThreadItem, True );
8954 procedure TGikoForm.AllResActionUpdate(Sender: TObject);
8956 AllResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
8959 procedure TGikoForm.ReloadClick(Sender: TObject);
8961 ThreadItem : TThreadItem;
8964 if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
8965 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);
8967 for i := BrowserTab.Tabs.Count - 1 downto 0 do
8968 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
8970 ThreadItem := GetActiveContent;
8971 if ThreadItem <> nil then
8972 InsertBrowserTab( ThreadItem, True );
8977 procedure TGikoForm.GoBackClick(Sender: TObject);
8979 ThreadItem : TThreadItem;
8983 if GikoSys.FAbon.GoForward =false then begin
8984 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);
8986 s := GikoSys.FAbon.NGwordname;
8987 StatusBar.Panels.Items[2].Text := s;
8988 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
8989 StatusBarResize(Sender);
8990 for i := BrowserTab.Tabs.Count - 1 downto 0 do
8991 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
8993 ThreadItem := GetActiveContent;
8994 if ThreadItem <> nil then
8995 InsertBrowserTab( ThreadItem, True );
9000 procedure TGikoForm.GoFowardClick(Sender: TObject);
9002 ThreadItem : TThreadItem;
9006 if GikoSys.FAbon.GoBack =false then begin
9007 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);
9009 s := GikoSys.FAbon.NGwordname;
9010 StatusBar.Panels.Items[2].Text := s;
9011 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9012 StatusBarResize(Sender);
9013 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9014 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9016 ThreadItem := GetActiveContent;
9017 if ThreadItem <> nil then
9018 InsertBrowserTab( ThreadItem, True );
9023 procedure TGikoForm.SelectComboBoxSplitterMouseMove(Sender: TObject;
9024 Shift: TShiftState; X, Y: Integer);
9029 If (SelectComboBox.Parent <> nil) and (IsDraggingSelectComboBox) Then begin
9032 pos := SelectComboBoxSplitter.ClientToScreen( pos );
9033 w := SelectComboBox.Width + (pos.X - DraggingSelectComboBoxPosition.X);
9035 If w <= 50 Then Begin
9036 //
\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
9037 //
\81u
\8e~
\82Ü
\82Á
\82½(50pixel)
\88Ê
\92u
\81v
\82É
\82È
\82é
\82æ
\82¤
\82É
9038 pos.X := pos.X + (50 - w);
9040 //
\8f¬
\82³
\82
\82È
\82è
\82·
\82¬
\82È
\82¢
\82æ
\82¤
\82É
9044 //
\83`
\83\89\82Â
\82«
\8cy
\8c¸
\82Ì
\88×
9045 If SelectComboBox.Width <> w Then Begin
9046 SelectComboBox.Width := w;
9047 GikoSys.Setting.SelectComboBoxWidth := w;
9048 DraggingSelectComboBoxPosition := pos;
9050 //
\83V
\83F
\83u
\83\8d\83\93\88Ê
\92u
\82ª
\95Ï
\82í
\82é
\82Ì
\82Å BandInfo
\82Ì
\8dÄ
\90Ý
\92è
9051 ResetBandInfo( ListCoolBar, ListToolBar );
9056 procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;
9057 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9061 IsDraggingSelectComboBox := True;
9064 DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );
9067 procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;
9068 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9070 IsDraggingSelectComboBox := False;
9073 procedure TGikoForm.StatusBarResize(Sender: TObject);
9075 StatusBar.Panels[1].Width := StatusBar.Width -
9076 StatusBar.Panels[0].Width -
9077 StatusBar.Panels[2].Width;
9079 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\92Ê
\8fí
\81v
9080 procedure TGikoForm.IndividualAbon1Click(Sender: TObject);
9082 ThreadItem : TThreadItem;
9085 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);
9086 ThreadItem := GetActiveContent;
9087 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9088 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9090 if ThreadItem <> nil then
9091 InsertBrowserTab( ThreadItem, True );
9093 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\93§
\96¾
\81v
9094 procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
9096 ThreadItem : TThreadItem;
9099 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);
9100 ThreadItem := GetActiveContent;
9101 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9102 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9103 if ThreadItem <> nil then
9104 InsertBrowserTab( ThreadItem, True );
9106 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c\81i
\81j
9107 procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
9109 ThreadItem : TThreadItem;
9113 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9114 GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);
9115 ThreadItem := GetActiveContent;
9116 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9117 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9118 if ThreadItem <> nil then
9119 InsertBrowserTab( ThreadItem, True );
9121 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9122 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9125 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c
9126 procedure TGikoForm.N42Click(Sender: TObject);
9128 IndividualForm :TIndividualAbonForm;
9129 ThreadItem : TThreadItem;
9133 IndividualForm := TIndividualAbonForm.Create(Self);
9135 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9136 for i :=0 to GikoSys.FAbon.GetAbonResCount-1 do begin
9137 IndividualForm.ComboBox1.Items.Add(GikoSys.FAbon.GetAbonResString(i));
9139 if IndividualForm.ShowModal = mrOK then begin
9140 GikoSys.FAbon.DeleteIndividualAbon(IndividualForm.ResNumber);
9142 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9143 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9144 ThreadItem := GetActiveContent;
9145 if ThreadItem <> nil then
9146 InsertBrowserTab( ThreadItem, True );
9148 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9149 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9152 IndividualForm.Free;
9156 procedure TGikoForm.SelectComboBoxEnter(Sender: TObject);
9159 if (Length( SelectComboBox.Text ) = 0) or
9160 (SelectComboBox.Text = SELECTCOMBOBOX_NAME) then
9162 SelectComboBox.Text := '';
9163 SelectComboBox.Color := clWindow;
9168 procedure TGikoForm.N51Click(Sender: TObject);
9172 //
\94Â
\96¼
\8c\9f\8dõ
9173 procedure TGikoForm.TreeSelectSearchBoardNameExecute(Sender: TObject);
9177 CurItem : TTreeNode;
9180 if InputQuery('
\94Â
\96¼
\8c\9f\8dõ','
\94Â
\96¼
\82Ì
\93ü
\97Í',s) then begin
9183 if TreeView.Selected = nil then
9184 CurItem := TreeView.Items.GetFirstNode
9186 CurItem := TreeView.Selected.GetNext;
9187 if CurItem = nil then
9188 CurItem := TreeView.Items.GetFirstNode;
9190 while CurItem <> nil do begin
9191 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
9194 CurItem := CurItem.GetNext;
9197 if CurItem = nil then begin
9198 msg := '
\90æ
\93ª
\82É
\96ß
\82è
\82Ü
\82·
\82©
\81H';
9199 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9200 CurItem := TreeView.Items.GetFirstNode;
9204 TreeView.Select(CurItem);
9207 TreeView.Select(CurItem);
9209 msg := '
\8e\9f\82É
\8ds
\82«
\82Ü
\82·
\82©
\81H';
9210 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9224 procedure TGikoForm.CabinetFavoriteActionExecute(Sender: TObject);
9230 if CabinetPanel.Visible then begin
9231 if FTreeType = gttFavorite then begin
9232 CabinetVisible( False );
9233 CabinetFavoriteAction.Checked := False;
9235 CabinetFavoriteAction.Checked := True;
9238 CabinetVisible( True );
9239 CabinetFavoriteAction.Checked := True;
9242 // BBS...BBS, History, Favorite
9243 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 1;
9245 b := CabinetSelectPopupMenu.Items.Count - 1;
9246 for i := 0 to b do begin
9247 item := CabinetSelectPopupMenu.Items[ i ];
9248 if item is TBBSMenuItem then begin
9249 item.Checked := False;
9250 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
9251 CabinetMenu.Items[ i ].Checked := False;
9255 //
\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Ö
9256 HistoryToolBar.Hide;
9257 FavoriteToolBar.Show;
9258 TreeView.Visible := False;
9259 FavoriteTreeView.Visible := True;
9261 CabinetSelectToolButton.Caption := '
\82¨
\8bC
\82É
\93ü
\82è';
9262 FTreeType := gttFavorite;
9264 //
\83\81\83j
\83\85\81[
\8by
\82Ñ
\83{
\83^
\83\93\82Ì
\83`
\83F
\83b
\83N
\82ð
\90Ý
\92è
9265 CabinetBBSAction.Checked := False;
9266 CabinetHistoryAction.Checked := False;
9268 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\83c
\83\8a\81[
\82ð
\93W
\8aJ
9269 FavoriteTreeView.Items.GetFirstNode.Expanded := True;
9273 procedure TGikoForm.FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
9276 if (SenderNode = nil) or (SourceNode = nil) or (SenderNode = SourceNode) then
9279 if TObject(SenderNode.Data) is TFavoriteFolder then
9280 SourceNode.MoveTo(SenderNode, naAddChild)
9282 SourceNode.MoveTo(SenderNode, naInsert);
9286 procedure TGikoForm.FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
9290 FavoBoardItem: TFavoriteBoardItem;
9291 FavoThreadItem: TFavoriteThreadItem;
9293 ThreadItem: TThreadItem;
9296 if (SenderNode = nil) or (Source = nil) then
9299 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9300 FavNode := SenderNode.Parent
9302 FavNode := SenderNode;
9306 if Source is TBoard then begin
9307 Board := TBoard( Source );
9308 FavoBoardItem := TFavoriteBoardItem.CreateWithItem( Board );
9309 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, FavoBoardItem);
9310 Node.ImageIndex := 15;
9311 Node.SelectedIndex := 15;
9312 end else if Source is TFavoriteBoardItem then begin
9313 FavoBoardItem := TFavoriteBoardItem( Source );
9314 Board := FavoBoardItem.Item;
9315 if Board <> nil then
9316 if not Board.IsThreadDatRead then
9317 GikoSys.ReadSubjectFile(Board);
9318 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, Source);
9319 Node.ImageIndex := 15;
9320 Node.SelectedIndex := 15;
9321 end else if Source is TThreadItem then begin
9322 ThreadItem := TThreadItem( Source );
9323 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9324 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9325 Node.ImageIndex := 16;
9326 Node.SelectedIndex := 16;
9327 end else if Source is TBrowserRecord then begin
9328 ThreadItem := TBrowserRecord( Source ).FThread;
9329 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9330 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9331 Node.ImageIndex := 16;
9332 Node.SelectedIndex := 16;
9333 end else if Source is TFavoriteThreadItem then begin
9334 FavoThreadItem := TFavoriteThreadItem( Source );
9335 ThreadItem := FavoThreadItem.Item;
9336 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, Source);
9337 Node.ImageIndex := 16;
9338 Node.SelectedIndex := 16;
9341 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9343 FavoriteMoveTo( SenderNode, Node );
9347 procedure TGikoForm.FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
9350 SourceNode: TTreeNode;
9351 LinkToolButton: TLinkToolButton;
9354 if SenderNode = nil then
9357 if not (TObject( SenderNode.Data ) is TFavoriteFolder) then
9358 if FDropSpaceNode <> nil then
9359 SenderNode := FDropSpaceNode;
9361 if Source = FavoriteTreeView then begin
9363 SourceNode := FavoriteTreeView.Selected;
9364 FavoriteMoveTo( SenderNode, SourceNode );
9366 end else if Source is TLinkToolButton then begin
9368 LinkToolButton := TLinkToolButton( Source );
9369 //ShowMessage(LinkToolButton.Text);
9370 SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
9371 FavoriteMoveTo( SenderNode, SourceNode );
9373 end else if Source = BrowserTab then begin
9375 idx := BrowserTab.TabIndex;
9376 FavoriteAddTo( SenderNode, BrowserTab.Tabs.Objects[idx] );
9377 end else if Source = ListView then begin
9379 FavoriteAddTo( SenderNode, ListView.Selected.Data );
9381 end else if Source = TreeView then begin
9383 FavoriteAddTo( SenderNode, TreeView.Selected.Data );
9391 procedure TGikoForm.FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
9394 SenderNode: TTreeNode;
9397 SenderNode := FavoriteTreeView.GetNodeAt(X, Y);
9398 if SenderNode <> nil then begin
9399 FavoriteDragDrop( SenderNode, Source );
9402 if FDropSpaceNode <> nil then begin
9403 FDropSpaceNode.Free;
9404 FDropSpaceNode := nil;
9409 procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject;
9410 Node: TTreeNode; var S: String);
9413 FavoriteTreeView.ReadOnly := True;
9418 procedure TGikoForm.FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
9419 Shift: TShiftState);
9425 FClickNode := FavoriteTreeView.Selected;
9426 FavoriteTreeViewRenameActionExecute( Sender );
9430 FClickNode := FavoriteTreeView.Selected;
9431 FavoriteTreeViewDeleteActionExecute( Sender );
9435 FavoriteClick( FavoriteTreeView.Selected );
9436 FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
9439 FavoriteTreeViewDblClick( Sender );
9444 procedure TGikoForm.FavoriteTreePopupMenuPopup(Sender: TObject);
9447 LinkToolButton: TLinkToolButton;
9450 if FavoriteTreePopupMenu.PopupComponent = FavoriteTreeView then begin
9452 FClickNode := FavoriteTreeView.Selected;
9454 end else if FavoriteTreePopupMenu.PopupComponent is TLinkToolButton then begin
9456 LinkToolButton := TLinkToolButton( FavoriteTreePopupMenu.PopupComponent );
9457 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9458 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9459 FClickNode := FavoriteTreeView.Items[i];
9463 for i := 0 to FClickNode.Count - 1 do begin
9464 if FClickNode.Item[i].Data = LinkToolButton.Data then begin
9465 FClickNode := FClickNode.Item[i];
9472 if FClickNode = nil then begin
9473 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9474 FavoriteTreeDeletePopupMenu.Visible := False;
9475 FavoriteTreeRenamePopupMenu.Visible := False;
9476 FavoriteTreeNewFolderPopupMenu.Visible := False;
9477 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9478 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9479 FavoriteTreeURLCopyPopupMenu.Visible := False;
9480 FavoriteTreeNameCopyPopupMenu.Visible := False;
9481 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9482 FavoriteTreeReloadPopupMenu.Visible := False;
9483 FavoriteTreeLogDeletePopupMenu.Visible := False;
9484 end else if FClickNode.IsFirstNode then begin
9485 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9486 FavoriteTreeDeletePopupMenu.Visible := False;
9487 FavoriteTreeRenamePopupMenu.Visible := False;
9488 FavoriteTreeNewFolderPopupMenu.Visible := True;
9489 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9490 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9491 FavoriteTreeURLCopyPopupMenu.Visible := False;
9492 FavoriteTreeNameCopyPopupMenu.Visible := True;
9493 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9494 FavoriteTreeReloadPopupMenu.Visible := False;
9495 FavoriteTreeLogDeletePopupMenu.Visible := False;
9496 end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9497 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9498 FavoriteTreeDeletePopupMenu.Visible := True;
9499 FavoriteTreeRenamePopupMenu.Visible := False;
9500 FavoriteTreeNewFolderPopupMenu.Visible := True;
9501 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9502 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9503 FavoriteTreeURLCopyPopupMenu.Visible := False;
9504 FavoriteTreeNameCopyPopupMenu.Visible := True;
9505 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9506 FavoriteTreeReloadPopupMenu.Visible := False;
9507 FavoriteTreeLogDeletePopupMenu.Visible := False;
9508 end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
9509 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9510 FavoriteTreeDeletePopupMenu.Visible := True;
9511 FavoriteTreeRenamePopupMenu.Visible := True;
9512 FavoriteTreeNewFolderPopupMenu.Visible := True;
9513 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9514 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9515 FavoriteTreeURLCopyPopupMenu.Visible := False;
9516 FavoriteTreeNameCopyPopupMenu.Visible := True;
9517 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9518 FavoriteTreeReloadPopupMenu.Visible := False;
9519 FavoriteTreeLogDeletePopupMenu.Visible := False;
9520 end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
9521 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9522 FavoriteTreeDeletePopupMenu.Visible := True;
9523 FavoriteTreeRenamePopupMenu.Visible := True;
9524 FavoriteTreeNewFolderPopupMenu.Visible := True;
9525 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9526 //FavoriteTreeBrowseThreadPopupMenu.Visible := True;
9527 FavoriteTreeURLCopyPopupMenu.Visible := True;
9528 FavoriteTreeNameCopyPopupMenu.Visible := True;
9529 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9530 FavoriteTreeReloadPopupMenu.Visible := True;
9531 FavoriteTreeLogDeletePopupMenu.Visible := True;
9532 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
9533 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9534 FavoriteTreeDeletePopupMenu.Visible := True;
9535 FavoriteTreeRenamePopupMenu.Visible := True;
9536 FavoriteTreeNewFolderPopupMenu.Visible := True;
9537 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9538 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9539 FavoriteTreeURLCopyPopupMenu.Visible := True;
9540 FavoriteTreeNameCopyPopupMenu.Visible := True;
9541 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9542 FavoriteTreeReloadPopupMenu.Visible := True;
9543 FavoriteTreeLogDeletePopupMenu.Visible := False;
9545 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9546 FavoriteTreeDeletePopupMenu.Visible := False;
9547 FavoriteTreeRenamePopupMenu.Visible := False;
9548 FavoriteTreeNewFolderPopupMenu.Visible := False;
9549 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9550 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9551 FavoriteTreeURLCopyPopupMenu.Visible := False;
9552 FavoriteTreeNameCopyPopupMenu.Visible := False;
9553 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9554 FavoriteTreeReloadPopupMenu.Visible := False;
9555 FavoriteTreeLogDeletePopupMenu.Visible := False;
9560 procedure TGikoForm.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
9562 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';
9563 DEL_MSG = '
\81g^0
\81h
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
9564 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9567 if FClickNode = nil then
9569 if FClickNode.IsFirstNode then
9571 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
9572 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9573 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9576 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9581 //FDeleteList.Add(FClickNode.Data);
9582 //SetDeleteItemList(FClickNode);
9590 procedure TGikoForm.FavoriteTreeViewRenameActionExecute(Sender: TObject);
9595 if FClickNode = nil then
9597 if FClickNode.IsFirstNode then
9599 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then
9601 FavoriteTreeView.ReadOnly := False;
9602 if (FTreeType = gttFavorite) and (CabinetPanel.Visible) then begin
9603 node := FClickNode.Parent;
9604 while node <> nil do begin
9605 node.Expanded := True;
9606 node := node.Parent;
9608 FClickNode.EditText;
9610 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 );
9617 procedure TGikoForm.FavoriteTreeViewNewFolderActionExecute(
9620 NewFavFolder: TFavoriteFolder;
9624 if FClickNode = nil then
9628 if not (TObject(FClickNode.Data) is TFavoriteFolder) then begin
9629 FavoriteTreeView.Selected := FClickNode.Parent;
9630 FClickNode := FClickNode.Parent;
9633 NewFavFolder := TFavoriteFolder.Create;
9634 Node := FavoriteTreeView.Items.AddChildObject(FClickNode, '
\90V
\82µ
\82¢
\83t
\83H
\83\8b\83_', NewFavFolder);
9635 Node.ImageIndex := 14;
9636 Node.SelectedIndex := 14;
9637 // FClickNode.Selected.Expanded := True;
9638 FavoriteTreeView.Selected := Node;
9640 FavoriteTreeViewRenameAction.Execute;
9646 procedure TGikoForm.ToolButton19Click(Sender: TObject);
9649 FavoriteArrangeActionExecute( nil );
9653 procedure TGikoForm.FavoriteBrowseFolder( node: TTreeNode );
9658 if not (TObject(node.Data) is TFavoriteFolder) then
9661 for i := 0 to node.Count - 1 do
9663 if TObject(node.Item[i].Data) is TFavoriteFolder then
9664 FavoriteBrowseFolder( node.Item[i] )
9665 else if TObject(node.Item[i].Data) is TFavoriteThreadItem then
9666 FavoriteClick( node.Item[i], False );
9671 procedure TGikoForm.FavoriteTreeViewBrowseFolderActionExecute(
9675 FavoriteBrowseFolder( FClickNode );
9676 //BrowserTab.OnChange(nil);
9680 procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject);
9683 FClickNode := FavoriteTreeView.Selected;
9684 FavoriteTreeViewReloadActionExecute( Sender );
9688 procedure TGikoForm.FavoriteTreeViewLogDeleteActionExecute(
9691 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';
9692 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9694 ThreadItem: TThreadItem;
9695 FavThread: TFavoriteThreadItem;
9698 if FClickNode = nil then Exit;
9699 if not (TObject(FClickNode.Data) is TFavoriteThreadItem) then Exit;
9701 FavThread := TFavoriteThreadItem( FClickNode.Data );
9702 ThreadItem := FavThread.Item;
9705 if GikoSys.Setting.DeleteMsg then begin
9706 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
9707 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9711 DeleteHistory(ThreadItem);
9712 DeleteTab(ThreadItem);
9713 ThreadItem.DeleteLogFile;
9721 procedure TGikoForm.FavoriteTreeViewReloadActionExecute(Sender: TObject);
9723 ThreadItem: TThreadItem;
9724 FavThread: TFavoriteThreadItem;
9726 FavBoard: TFavoriteBoardItem;
9730 if FClickNode = nil then Exit;
9732 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
9734 if TObject( FClickNode.Data ) is TFavoriteThreadItem then begin
9735 FavThread := TFavoriteThreadItem( FClickNode.Data );
9736 ThreadItem := FavThread.Item;
9737 if ThreadItem <> nil then
9738 DownloadContent(ThreadItem, shiftDown);
9739 end else if TObject( FClickNode.Data ) is TFavoriteBoardItem then begin
9740 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9741 Board := FavBoard.Item;
9742 DownloadList(Board, shiftDown);
9747 procedure TGikoForm.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
9749 FavThread : TFavoriteThreadItem;
9750 FavBoard : TFavoriteBoardItem;
9754 if FClickNode = nil then Exit;
9756 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9758 FavThread := TFavoriteThreadItem( FClickNode.Data );
9759 s := FavThread.URL + #13#10;
9761 Clipboard.AsText := s;
9763 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9765 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9766 s := FavBoard.URL + #13#10;
9768 Clipboard.AsText := s;
9774 procedure TGikoForm.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
9776 ThreadItem: TThreadItem;
9777 FavThread: TFavoriteThreadItem;
9779 FavBoard: TFavoriteBoardItem;
9783 if FClickNode = nil then Exit;
9785 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9787 FavThread := TFavoriteThreadItem( FClickNode.Data );
9788 ThreadItem := FavThread.Item;
9791 s := ThreadItem.Title + #13#10;
9793 Clipboard.AsText := s;
9797 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9799 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9800 Board := FavBoard.Item;
9801 if Board <> nil then
9802 if not Board.IsThreadDatRead then
9803 GikoSys.ReadSubjectFile(Board);
9806 s := Board.Title + #13#10;
9808 Clipboard.AsText := s;
9816 procedure TGikoForm.FavoriteTreeViewNameURLCopyActionExecute(
9819 ThreadItem: TThreadItem;
9820 FavThread: TFavoriteThreadItem;
9822 FavBoard: TFavoriteBoardItem;
9826 if FClickNode = nil then Exit;
9828 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9830 FavThread := TFavoriteThreadItem( FClickNode.Data );
9831 ThreadItem := FavThread.Item;
9834 s := ThreadItem.URL + #13#10 + ThreadItem.Title + #13#10;
9836 Clipboard.AsText := s;
9840 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9842 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9843 Board := FavBoard.Item;
9844 if Board <> nil then
9845 if not Board.IsThreadDatRead then
9846 GikoSys.ReadSubjectFile(Board);
9849 s := Board.URL + #13#10 + Board.Title + #13#10;
9851 Clipboard.AsText := s;
9859 function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
9865 for i := 0 to Node.Count - 1 do begin
9866 if Node.Item[i].Data = FindPointer then begin
9867 Result := Node.Item[i];
9869 end else if Node.Item[i].Count > 0 then begin
9870 Found := TreeNodeDataFind( Node.Item[i], FindPointer );
9871 if Found <> nil then begin
9882 procedure TGikoForm.LinkToolBarDragDrop(Sender, Source: TObject; X,
9886 SenderNode: TTreeNode;
9890 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9891 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9892 SenderNode := FavoriteTreeView.Items[i];
9897 FavoriteDragDrop( SenderNode, Source );
9901 procedure TGikoForm.BrowserTabMouseUp(Sender: TObject;
9902 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9904 if FDragWFirst <> true then begin
9905 FDragWFirst := false;
9906 end else if (X = FMouseDownPos.X) and (Y = FMouseDownPos.Y) then begin
9907 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
9908 if GikoSys.Setting.ListWidthState = glsMin then begin
9909 BrowserMaxAndFocusAction.Execute;
9912 if GikoSys.Setting.ListHeightState = glsMin then begin
9913 BrowserMaxAndFocusAction.Execute;
9919 procedure TGikoForm.LinkToolBarDragOver(Sender, Source: TObject; X,
9920 Y: Integer; State: TDragState; var Accept: Boolean);
9923 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
9927 procedure TGikoForm.ResRangeActionExecute(Sender: TObject);
9929 case FResRangeMenuSelect of
9930 Ord( grrAll ): AllResAction.Execute;
9931 Ord( grrKoko ): OnlyKokoResAction.Execute;
9932 Ord( grrNew ): OnlyNewResAction.Execute;
9933 100: OnlyAHundredResAction.Execute;
9937 procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
9941 if FDropSpaceNode <> nil then begin
9942 FDropSpaceNode.Free;
9943 FDropSpaceNode := nil;
9949 procedure TGikoForm.ListCoolBarContextPopup(Sender: TObject;
9950 MousePos: TPoint; var Handled: Boolean);
9953 FToolBarSettingSender := tssList;
9954 MousePos := ListCoolBar.ClientToScreen( MousePos );
9955 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
9959 procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
9960 MousePos: TPoint; var Handled: Boolean);
9963 FToolBarSettingSender := tssMain;
9964 MousePos := MainCoolBar.ClientToScreen( MousePos );
9965 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
9969 procedure TGikoForm.BrowserCoolBarContextPopup(Sender: TObject;
9970 MousePos: TPoint; var Handled: Boolean);
9973 FToolBarSettingSender := tssBrowser;
9974 MousePos := BrowserCoolBar.ClientToScreen( MousePos );
9975 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
9978 procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
9981 if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
9982 ShowMessage('
\83t
\83@
\83C
\83\8b\82ð
\8fo
\97Í
\82µ
\82Ü
\82µ
\82½');
9984 ShowMessage('
\83t
\83@
\83C
\83\8b\82Ì
\8fo
\97Í
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½');
9987 procedure TGikoForm.SetListViewBackGroundColor(value: TColor);
9989 if FListViewBackGroundColor <> value then begin
9990 FListViewBackGroundColor := value;
9991 ListView.Color := FListViewBackGroundColor;
9994 procedure TGikoForm.ExportFavoriteFileBeforeExecute(Sender: TObject);
9996 ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
9999 procedure TGikoForm.CabinetBBSActionExecute(Sender: TObject);
10002 if CabinetPanel.Visible then begin
10003 if FTreeType = gtt2ch then begin
10004 CabinetVisible( False );
10006 CabinetBBSAction.Checked := False;
10008 CabinetBBSAction.Checked := True;
10011 CabinetVisible( True );
10012 CabinetBBSAction.Checked := True;
10015 if FActiveBBS = nil then
10016 ShowBBSTree( BBSs[ 0 ] )
10018 ShowBBSTree( FActiveBBS );
10022 procedure TGikoForm.FavoriteTreeViewBrowseThreadActionExecute(
10025 threadItem : TThreadItem;
10028 if FClickNode = nil then Exit;
10030 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10032 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10033 if threadItem = nil then
10035 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
10041 procedure TGikoForm.FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
10043 threadItem : TThreadItem;
10044 boardItem : TBoard;
10047 if FClickNode = nil then Exit;
10049 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10051 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10052 if threadItem = nil then
10054 GikoSys.OpenBrowser( threadItem.ParentBoard.URL, gbtAuto );
10056 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10058 boardItem := TFavoriteBoardItem( FClickNode.Data ).Item;
10059 if boardItem = nil then
10061 GikoSys.OpenBrowser( boardItem.URL, gbtAuto );
10067 procedure TGikoForm.UpBoardActionExecute(Sender: TObject);
10070 SelectTreeNode( GetActiveContent.ParentBoard, True );
10074 procedure TGikoForm.UpBoardActionUpdate(Sender: TObject);
10077 UpBoardAction.Enabled := GetActiveContent <> nil;
10081 procedure TGikoForm.BrowserTabContextPopup(Sender: TObject;
10082 MousePos: TPoint; var Handled: Boolean);
10086 idx := BrowserTab.IndexOfTabAt(MousePos.X, MousePos.Y);
10087 if BrowserTab.TabIndex <> idx then begin
10088 BrowserTab.TabIndex := idx;
10089 BrowserTab.OnChange(nil);
10094 procedure TGikoForm.KoreCopyExecute(Sender: TObject);
10096 KonoresCopy(KokoPopupMenu.Tag, true);
10098 procedure TGikoForm.KonoresCopy(Number: Integer; ReplaceTag : Boolean);
10100 ThreadItem: TThreadItem;
10106 boardPlugIn : TBoardPlugIn;
10108 if Number = 0 then Exit;
10109 ThreadItem := GetActiveContent;
10111 if ThreadItem <> nil then begin
10112 if ThreadItem.IsBoardPlugInAvailable then begin
10113 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
10114 boardPlugIn := ThreadItem.BoardPlugIn;
10116 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
10117 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
10118 //
\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
10119 tmp := boardPlugIn.GetDat( DWORD( threadItem ), Number );
10121 FileName := ThreadItem.FilePath;
10122 tmp := GikoSys.ReadThreadFile(FileName, Number);
10124 if tmp <> '' then begin
10125 Res := GikoSys.DivideStrLine(tmp);
10127 Header := IntToStr(Number) + '
\81F' + Res.FName + '
\81F' + Res.FDateTime + #13#10;
10128 if ReplaceTag then begin
10129 Header := CustomStringReplace(Header, '</b>', '',true);
10130 Header := CustomStringReplace(Header, '<b>', '',true);
10132 if ThreadItem.IsBoardPlugInAvailable then begin
10133 Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
10134 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10136 Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
10137 Body := CustomStringReplace(Body, ' <br>', #13#10,true);
10138 Body := CustomStringReplace(Body, '<br> ', #13#10,true);
10139 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10142 Body := CustomStringReplace(Body, '</a>', '',true);
10144 Body := GikoSys.DeleteLink(Body);
10145 if ReplaceTag then begin
10146 Body := CustomStringReplace(Body, '<', '<');
10147 Body := CustomStringReplace(Body, '>', '>');
10148 Body := CustomStringReplace(Body, '"', '"');
10149 Body := CustomStringReplace(Body, '&', '&');
10150 //Body := CustomStringReplace(Body, ' ', ' ');
10153 Header := Header + Body;
10155 Clipboard.SetTextBuf( PChar(Header) );
10161 procedure TGikoForm.BrowserTabPopupMenuPopup(Sender: TObject);
10163 AddRoundNameMenu(dummy1);
10166 procedure TGikoForm.FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
10168 FavoriteDM.URLReplace(oldURLs, newURLs);
10171 procedure TGikoForm.RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
10173 RoundList.URLReplace(oldURLs, newURLs);
10176 procedure TGikoForm.TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
10180 tempString: string;
10183 oldBoardName: string;
10185 newBoardName: string;
10186 TabList: TStringList;
10188 TabList := TStringList.Create;
10189 if oldURLs.Count <> newURLs.Count then
10191 //
\82±
\82±
\82©
\82ç
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10192 for j :=0 to oldURLs.Count - 1 do begin
10193 for i :=0 to TabList.Count - 1 do begin
10194 if TabList.Text = oldURLs[j] then
10195 TabList.Text := newURLs[j];
10198 //
\82±
\82±
\82Ü
\82Å
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10200 //
\82±
\82±
\82©
\82ç
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10201 //
\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
10202 for i := 0 to oldURLs.Count - 1 do begin
10203 tmpURL := Copy(oldURLs[i], 1, Length(oldURLs[i]) -1);
10204 oldHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10205 oldBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10206 tmpURL := Copy(newURLs[i], 1, Length(newURLs[i]) -1);
10207 newHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10208 newBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10210 for j := 0 to TabList.Count - 1 do begin
10211 tempString := TabList.Text;
10212 if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
10213 tempString := StringReplace(tempString, oldHost, newHost,[]);
10214 TabList.Text := tempString;
10218 //
\82±
\82±
\82Ü
\82Å
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10222 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
10223 procedure TGikoForm.OnMinimize;
10225 FIsMinimize := mtMinimizing;
10226 if FActiveContent <> nil then
10227 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
10228 PostMessage( Handle, USER_MINIMIZED, 0, 0 );
10231 //
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
10232 procedure TGikoForm.OnMinimized;
10234 FIsMinimize := mtMinimized;
10235 FIsIgnoreResize := False;
10238 procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
10240 coolSet : TCoolSet;
10241 toolbar : TToolBar;
10243 affectedBand : TCoolBand;
10246 if (FOldFormWidth = Width) and not IsIconic( Handle ) and not FIsIgnoreResize then begin
10247 FIsIgnoreResize := True;
10248 PostMessage( Handle, USER_RESIZED, 0, 0 );
10249 if not (Sender is TToolBar) or (CoolBar = nil) then
10251 toolbar := TToolBar( Sender );
10253 //
\95Ï
\8dX
\82³
\82ê
\82½
\83N
\81[
\83\8b\83o
\81[
\82Ì
\92l
\82ð
\95Û
\91¶
10254 if CoolBar = MainCoolBar then begin
10255 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
10256 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10257 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10258 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10259 GikoSys.Setting.MainCoolSet[i] := CoolSet;
10261 end else if CoolBar = ListCoolBar then begin
10262 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
10263 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10264 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10265 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10266 GikoSys.Setting.ListCoolSet[i] := CoolSet;
10268 end else if CoolBar = BrowserCoolBar then begin
10269 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
10270 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10271 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10272 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10273 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
10276 //
\95\9d\82Ì
\95Ï
\8dX
\82³
\82ê
\82½
\83o
\83\93\83h
\82ð
\8c©
\82Â
\82¯
\82é
10277 affectedBand := nil;
10278 for i := CoolBar.Bands.Count - 1 downto 0 do begin
10279 if CoolBar.Bands[ i ].Control.Handle = toolbar.Handle then begin
10280 band := CoolBar.Bands[ i ];
10281 if band.Break or (i = 0) then begin
10282 if i + 1 < CoolBar.Bands.Count then
10283 if not CoolBar.Bands[ i + 1 ].Break then
10284 affectedBand := CoolBar.Bands[ i + 1 ];
10287 affectedBand := CoolBar.Bands[ i - 1 ];
10292 //
\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·
10293 if CoolBar = MainCoolBar then begin
10294 coolSet := GikoSys.Setting.MainCoolSet[ band.ID ];
10295 coolSet.FCoolWidth := toolbar.Width + 25;
10296 GikoSys.Setting.MainCoolSet[ band.ID ] := coolSet;
10297 if affectedBand <> nil then begin
10298 coolSet := GikoSys.Setting.MainCoolSet[ affectedBand.ID ];
10299 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10300 GikoSys.Setting.MainCoolSet[ affectedBand.ID ] := coolSet;
10302 end else if CoolBar = ListCoolBar then begin
10303 coolSet := GikoSys.Setting.ListCoolSet[ band.ID ];
10304 coolSet.FCoolWidth := toolbar.Width + 25;
10305 GikoSys.Setting.ListCoolSet[ band.ID ] := coolSet;
10306 if affectedBand <> nil then begin
10307 coolSet := GikoSys.Setting.ListCoolSet[ affectedBand.ID ];
10308 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10309 GikoSys.Setting.ListCoolSet[ affectedBand.ID ] := coolSet;
10311 end else if CoolBar = BrowserCoolBar then begin
10312 coolSet := GikoSYs.Setting.BrowserCoolSet[ band.ID ];
10313 coolSet.FCoolWidth := toolbar.Width + 25;
10314 GikoSys.Setting.BrowserCoolSet[ band.ID ] := coolSet;
10315 if affectedBand <> nil then begin
10316 coolSet := GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ];
10317 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10318 GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ] := coolSet;
10324 procedure TGikoForm.MenuToolBarResize(Sender: TObject);
10326 CoolBarResized( Sender, MainCoolBar );
10329 procedure TGikoForm.StdToolBarResize(Sender: TObject);
10331 CoolBarResized( Sender, MainCoolBar );
10334 procedure TGikoForm.LinkToolBarResize(Sender: TObject);
10336 CoolBarResized( Sender, MainCoolBar );
10339 procedure TGikoForm.ListNameToolBarResize(Sender: TObject);
10341 CoolBarResized( Sender, ListCoolBar );
10344 procedure TGikoForm.ListToolBarResize(Sender: TObject);
10346 CoolBarResized( Sender, ListCoolBar );
10349 procedure TGikoForm.BrowserNameToolBarResize(Sender: TObject);
10351 CoolBarResized( Sender, BrowserCoolBar );
10354 procedure TGikoForm.BrowserToolBarResize(Sender: TObject);
10356 CoolBarResized( Sender, BrowserCoolBar );
10359 procedure TGikoForm.BrowserTabResize(Sender: TObject);
10361 CoolBarResized( Sender, BrowserCoolBar );
10364 // *************************************************************************
10365 // ExternalBoardPlugInMain
10366 //
\83v
\83\89\83O
\83C
\83\93\83\81\83j
\83\85\81[
\82Ì
\8d\80\96Ú
\82ª
\8eÀ
\8ds
\82³
\82ê
\82½
10367 // *************************************************************************
10368 procedure TGikoForm.OnPlugInMenuItem( Sender : TObject );
10371 boardPlugIn : TBoardPlugIn;
10374 if not (Sender is TMenuItem) then
10377 item := TMenuItem( Sender );
10378 if not Assigned( Pointer( item.Tag ) ) then
10381 //
\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·
10382 boardPlugIn := TBoardPlugIn( item.Tag );
10383 boardPlugIn.PlugInMenu( item.Handle );
10386 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10387 procedure TGikoForm.TreeClick( Node : TTreeNode );
10395 if FTreeType = gttHistory then begin
10396 if Node <> nil then
10397 if TObject( Node.Data ) is TFavoriteThreadItem then
10398 if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then
10399 FavoriteClick( Node );
10403 if GetActiveList is TBBS then begin
10404 for i := 0 to ListView.Columns.Count - 1 do
10405 GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width;
10406 end else if GetActiveList is TCategory then begin
10407 for i := 0 to ListView.Columns.Count - 1 do
10408 GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width;
10409 end else if GetActiveList is TBoard then begin
10410 for i := 0 to ListView.Columns.Count - 1 do
10411 GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width;
10414 if TObject(Node.Data) is TBBS then begin
10415 SetActiveList(Node.data);
10416 end else if TObject(Node.Data) is TCategory then begin
10417 SetActiveList(Node.data);
10418 end else if TObject(Node.Data) is TBoard then begin
10419 if not TBoard(Node.Data).IsThreadDatRead then begin
10420 Screen.Cursor := crHourGlass;
10422 if not TBoard(Node.Data).IsThreadDatRead then
10423 GikoSys.ReadSubjectFile(Node.Data);
10425 Screen.Cursor := crDefault;
10428 SetActiveList(Node.data);
10431 if TObject( Node.Data ) is TBoard then begin // not TCategory
10432 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10433 if GikoSys.Setting.ListWidthState = glsMax then begin
10434 BrowserMinAction.Execute;
10435 if GikoForm.Visible then
10439 if GikoSys.Setting.ListHeightState = glsMax then begin
10440 BrowserMinAction.Execute;
10441 if GikoForm.Visible then
10449 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10450 procedure TGikoForm.TreeDoubleClick( Node : TTreeNode );
10453 ThreadItem : TThreadItem;
10454 shiftDown : Boolean;
10457 if Node = nil then Exit;
10459 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
10461 if FTreeType = gtt2ch then begin
10462 if not (TObject(Node.Data) is TBoard) then Exit;
10463 Board := TBoard(Node.Data);
10464 DownloadList(Board, shiftDown);
10465 end else if FTreeType = gttHistory then begin
10466 if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit;
10467 ThreadItem := TFavoriteThreadItem(Node.Data).Item;
10468 DownloadContent(ThreadItem, shiftDown);
10473 procedure TGikoForm.TreeViewClick(Sender: TObject);
10475 TreeClick( TreeView.Selected );
10478 procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word;
10479 Shift: TShiftState);
10481 if Key = VK_BACK then begin
10482 // UpFolderButtonClick(Sender);
10483 end else if Key = VK_SPACE then begin
10484 TreeDoubleClick( TreeView.Selected );
10485 end else if Key = VK_RETURN then begin
10486 TreeClick( TreeView.Selected );
10487 TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
10491 //
\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ã
10492 //
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
10493 function TGikoForm.BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
10495 iOIPAO : IOleInPlaceActiveObject;
10496 Dispatch : IDispatch;
10499 if Key = VK_BACK then begin
10500 UpBoardAction.Execute;
10502 {end else if Key in [VK_ESCAPE..VK_HELP] then begin
10503 //
\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
10506 end else if(Key in [VK_SPACE..VK_HELP]) and
10507 not(ssCtrl in State) and not(ssAlt in State) and not (ssShift in State) then begin
10510 //
\82»
\82ê
\88È
\8aO
\82Ì
\83C
\83x
\83\93\83g
\82Í Browser
\82É
\97¬
\82·
10511 if(FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10512 Dispatch := FActiveContent.Browser.Application;
10513 if Dispatch <> nil then begin
10514 Dispatch.QueryInterface( IOleInPlaceActiveObject, iOIPAO );
10515 if iOIPAO <> nil then
10516 iOIPAO.TranslateAccelerator( Msg );
10519 //
\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¢
10525 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
10526 procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
10531 case Msg.message of
10533 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10534 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10536 Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
10541 case Msg.wParam shr 16 of
10544 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10545 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10546 UpBoardAction.Execute;
10550 if not Handled then begin
10551 if IsDialogMessage( ListView.Handle, Msg ) then begin
10552 UpFolderAction.Execute;
10562 procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
10563 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10565 favItem : TTreeNode;
10566 favThreadItem : TFavoriteThreadItem;
10572 FMouseDownPos.X := X;
10573 FMouseDownPos.Y := Y;
10577 favItem := FavoriteTreeView.GetNodeAt( X, Y );
10578 if favItem = nil then Exit;
10580 if TObject( favItem.Data ) is TFavoriteThreadItem then begin
10581 favThreadItem := TFavoriteThreadItem( favItem.Data );
10582 if favThreadItem.Item <> nil then
10583 InsertBrowserTab( favThreadItem.Item, False );
10590 procedure TGikoForm.MessagePanelResize(Sender: TObject);
10593 if FIsIgnoreResize then
10596 if GikoSys.Setting.ListOrientation = gloVertical then begin
10597 if GikoSys.Setting.ListHeightState = glsMin then begin
10598 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
10599 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
10605 procedure TGikoForm.OnResized;
10608 FOldFormWidth := Width;
10609 FIsIgnoreResize := False;
10613 procedure TGikoForm.TreeSelectNameCopyExecute(Sender: TObject);
10617 TreeView.Selected := FClickNode;
10618 s := FClickNode.Text;
10619 Clipboard.AsText := s;
10622 procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject;
10623 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10626 if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold) and
10627 (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10628 FavoriteClick( TObject( FavoriteTreeView.Selected ) );
10633 destructor TBrowserRecord.Destroy;
10637 if Self.FEvent <> nil then
10639 if Self.FBrowser <> nil then begin
10640 if Self.Thread <> nil then begin
10641 //
\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Å
10642 //
\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
10643 if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin
10644 doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
10645 Self.Thread.ScrollTop := doc.Body.ScrollTop;
10648 //TOleControl(Self.FBrowser).Visible := false;
10649 ShowWindow(Self.FBrowser.Handle, SW_HIDE);
10654 procedure TGikoForm.ResRangeActionUpdate(Sender: TObject);
10656 ResRangeAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
10659 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
10663 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
10664 FActiveContent.FBrowser.SetFocus;
10669 procedure TGikoForm.SetFocusForBrowserActionExecute(Sender: TObject);
10671 FActiveContent.FBrowser.SetFocus;
10674 procedure TGikoForm.SetFocusForBrowserActionUpdate(Sender: TObject);
10676 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10677 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10678 SetFocusForBrowserAction.Enabled := true
10680 SetFocusForBrowserAction.Enabled := false;
10683 procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
10687 if FActiveContent <> nil then
10688 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10690 if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
10691 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é
10692 else if ListView.Items.Count > 0 then begin
10693 ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
10694 rct := ListView.ItemFocused.DisplayRect(drBounds);
10695 ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
10696 if ListView.ViewStyle <> vsReport then begin
10697 ListView.Scroll(rct.Left, 0);
10702 procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
10704 if FActiveContent <> nil then
10705 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10706 if TreeView.Visible then begin
10708 if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
10709 TreeView.Items.Item[0].Selected := true;
10710 end else if FavoriteTreeView.Visible then begin
10711 FavoriteTreeView.SetFocus;
10712 if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
10713 FavoriteTreeView.Items.Item[0].Selected := true;
10716 procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
10718 SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
10721 //
\83u
\83\89\83E
\83U
\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
\81B
10722 procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
10724 BrowserMaxAction.Execute;
10725 SetFocusForBrowserAction.Execute;
10728 procedure TGikoForm.BrowserMaxAndFocusActionUpdate(Sender: TObject);
10730 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10731 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10732 BrowserMaxAndFocusAction.Enabled := true
10734 BrowserMaxAndFocusAction.Enabled := false;
10736 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
10737 procedure TGikoForm.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
10739 BrowserMinAction.Execute;
10740 SetFocusForThreadListAction.Execute;
10743 procedure TGikoForm.ListViewExit(Sender: TObject);
10749 procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
10750 Selected: Boolean);
10753 if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
10754 if (TObject( Item.Data ) is TThreadItem) then begin
10755 SelectTimer.Interval := GikoSys.Setting.SelectInterval;
10757 SelectTimer.Interval := 0
10759 SelectTimer.Interval := 0;
10763 procedure TGikoForm.SelectTimerTimer(Sender: TObject);
10765 if not (ListView.Selected = nil) then
10766 if( FActiveContent = nil) or
10767 (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
10768 SelectTimer.Interval := 0;
10773 procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
10778 List := TList.Create;
10780 Screen.Cursor := crHourGlass;
10781 SelectListItem(List);
10782 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10783 (GikoSys.Setting.ListHeightState = glsMax)) or
10784 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10785 (GikoSys.Setting.ListWidthState = glsMax)) then
10786 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10787 else if(List.Count = 0) then
10788 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10790 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðdat
\82Ì
\82Ü
\82Ü
\95Û
\91¶';
10791 FileSaveAs1.Dialog.Filter := 'DAT
\83t
\83@
\83C
\83\8b(*.dat)|*.dat';
10792 for i := 0 to List.Count - 1 do begin
10793 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
10794 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
10795 if FileSaveAs1.Execute then begin
10796 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
10797 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
10798 CopyFile(PChar(TThreadItem(List[i]).FilePath),
10799 PChar(FileSaveAs1.Dialog.FileName), true);
10806 Screen.Cursor := crDefault;
10812 procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
10819 List := TList.Create;
10821 Screen.Cursor := crHourGlass;
10822 SelectListItem(List);
10823 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10824 (GikoSys.Setting.ListHeightState = glsMax)) or
10825 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10826 (GikoSys.Setting.ListWidthState = glsMax)) then
10827 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10828 else if(List.Count = 0) then
10829 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10831 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðHTML
\89»
\82µ
\82Ä
\95Û
\91¶';
10832 FileSaveAs1.Dialog.Filter := 'HTML
\83t
\83@
\83C
\83\8b(*.html)|*.html';
10833 for i := 0 to List.Count - 1 do begin
10834 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
10835 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
10836 if FileSaveAs1.Execute then begin
10837 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
10838 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
10839 html := TStringList.Create;
10840 title := TThreadItem(List[i]).Title;
10842 GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
10843 html.SaveToFile(FileSaveAs1.Dialog.FileName);
10844 SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
10854 Screen.Cursor := crDefault;
10858 procedure TGikoForm.SkinorCSSFilesCopy(path: string);
10860 tmp, tmpD, tmpF: string;
10863 files: TStringList;
10866 if GikoSys.Setting.UseSkin then begin
10867 current := ExtractFilePath(GikoSys.GetSkinDir);
10868 tmp := GikoSys.Setting.CSSFileName;
10869 end else if GikoSys.Setting.UseCSS then begin
10870 current := ExtractFilePath(GikoSys.GetStyleSheetDir);
10871 tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
10873 dirs := TStringList.Create;
10876 if tmp <> current then begin
10877 GikoSys.GetDirectoryList(current, '*.*', dirs, true);
10878 for i := 0 to dirs.Count - 1 do begin
10879 files := TStringList.Create;
10881 gikoSys.GetFileList(dirs[i], '*.*', files, true);
10882 tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
10883 if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
10884 ForceDirectories(tmpD);
10886 if(dirs[i] = tmp) and (dirs[i] <> current) then begin
10887 for j := 0 to files.Count - 1 do begin
10888 tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
10889 if not FileExists(tmpF) then begin
10890 CopyFile(PChar(files[j]), PChar(tmpF),True);
10899 tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
10900 if not DirectoryExists(tmpD) then
10901 ForceDirectories(tmpD);
10902 tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
10903 , GikoSys.GetConfigDir, path);
10904 if not FileExists(tmpF) then begin
10905 CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
10906 , PChar(tmpF), True);
10915 procedure TGikoForm.KidokuActionExecute(Sender: TObject);
10920 List := TList.Create;
10922 SelectListItem(List);
10923 for i := 0 to List.Count - 1 do begin
10924 if TObject(List[i]) is TThreadItem then begin
10925 TThreadItem(List[i]).UnRead := false;
10926 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
10929 if TreeView.Visible then
10936 procedure TGikoForm.MidokuActionExecute(Sender: TObject);
10941 List := TList.Create;
10943 SelectListItem(List);
10944 for i := 0 to List.Count - 1 do begin
10945 if TObject(List[i]) is TThreadItem then begin
10946 TThreadItem(List[i]).UnRead := true;
10947 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
10950 if TreeView.Visible then
10957 procedure TGikoForm.BrowserPanelCanResize(Sender: TObject; var NewWidth,
10958 NewHeight: Integer; var Resize: Boolean);
10962 for i := 0 to BROWSER_COUNT - 1 do
10963 SetWindowPos(TWebBrowser(FBrowsers[i]).Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
10965 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10966 SetWindowPos(FActiveContent.Browser.Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
10970 procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
10974 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10975 (GikoSys.Setting.ListHeightState = glsMax)) or
10976 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10977 (GikoSys.Setting.ListWidthState = glsMax)) then begin
10978 if(GetActiveContent <> nil) then begin
10979 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
10981 end else if GetActiveList is TCategory then begin
10982 List := TList.Create;
10984 SelectListItem(List);
10985 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
10989 end else if GetActiveList is TBoard then begin
10990 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
10995 procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
10997 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
10998 LogFolderOpenAction.Enabled := True
10999 else if GetActiveList is TBoard then
11000 LogFolderOpenAction.Enabled := True
11002 LogFolderOpenAction.Enabled := False;
11005 function TGikoForm.GetTabURLs(AStringList: TStringList) : Boolean;
11007 rec : TBrowserRecord;
11008 i, bound : Integer;
11010 bound := BrowserTab.Tabs.Count -1;
11011 if bound = -1 then begin
11013 Exit; //for
\82É
\94ò
\82Î
\82È
\82¢
\82Å
\91\80\8dì
\82ð
\94²
\82¯
\82é
11016 for i := 0 to bound do begin
11017 rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
11018 if( rec <> nil) and (rec.Thread <> nil) then
11019 AStringList.Add( rec.Thread.URL );
11024 procedure TGikoForm.TabsSaveActionExecute(Sender: TObject);
11026 if not SaveTabURLs then begin
11027 ShowMessage('
\95Û
\91¶
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ');
11031 function TGikoForm.SaveTabURLs : Boolean;
11033 SaveStringList: TStringList;
11035 SaveStringList := TStringList.Create;
11037 Result := GetTabURLs(SaveStringList);
11038 SaveStringList.SaveToFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
11040 SaveStringList.Free
11044 procedure TGikoForm.TabsOpenActionExecute(Sender: TObject);
11046 if not LoadTabURLs then begin
11047 ShowMessage('
\95\
\8e¦
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
11051 procedure TGikoForm.FileTabSaveClick(Sender: TObject);
11053 SaveStringList: TStringList;
11055 SaveTabList := TStringList.Create;
11056 SaveTabList := GetTabURLs;
11057 if TabSaveDialog.Execute then begin
11058 SaveTabList.SaveToFile(TabSaveDialog.FileName);
11063 function TGikoForm.LoadTabURLs : Boolean;
11065 i, bound : Integer;
11066 item : TThreadItem;
11067 URLs : TStringList;
11068 GikoTab : TGikoTabAppend;
11071 fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
11072 URLs := TStringList.Create();
11073 GikoTab := GikoSys.Setting.BrowserTabAppend;
11076 if FileExists(fileName) then
11077 URLs.LoadFromFile(fileName);
11080 ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11082 bound := URLs.Count - 1;
11083 if bound = -1 then begin
11089 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11090 for i := 0 to URLs.Count - 1 do begin
11091 item := BBSsFindThreadFromURL( URLs[ i ] );
11092 if item <> nil then
11093 InsertBrowserTab( item, false );
11096 GikoSys.Setting.BrowserTabAppend := GikoTab;
11102 procedure TGikoForm.TabsSaveToFileActionExecute(Sender: TObject);
11104 SaveTabList: TStringList;
11107 SaveTabList := TStringList.Create;
11109 Result := GetTabURLs(SaveTabList);
11110 // if TabSaveDialog.Execute then begin
11111 // SaveTabList.SaveToFile(TabSaveDialog.FileName);
11118 procedure TGikoForm.TabsOpenFromFileActionExecute(Sender: TObject);
11121 item : TThreadItem;
11122 URLs : TStringList;
11123 GikoTab: TGikoTabAppend;
11125 URLs := TStringList.Create();
11126 GikoTab := GikoSys.Setting.BrowserTabAppend;
11129 // if TabOpenDialog.Execute then begin
11130 // URLs.LoadFromFile(TabOpenDialog.FileName);
11133 on EFOpenError do ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11136 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11137 for i := 0 to URLs.Count - 1 do begin
11138 item := BBSsFindThreadFromURL( URLs[ i ] );
11139 if item <> nil then
11140 InsertBrowserTab( item, false );
11143 GikoSys.Setting.BrowserTabAppend := GikoTab;
11148 procedure TGikoForm.OnlyAHundredResActionExecute(Sender: TObject);
11150 ThreadItem : TThreadItem;
11151 FilterList : TStringList;
11154 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11155 and (FActiveContent.FBrowser.Busy) then Exit;
11157 FResRangeMenuSelect := 100;
11158 OnlyAHundredResAction.Checked := True;
11160 if GikoSys.ResRange <> 100 then begin
11161 GikoSys.ResRange := 100;
11163 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11164 FilterList := TStringList.Create;
11166 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11167 GikoSys.FSelectResFilter.Reverse := False;
11169 FilterList.Destroy;
11172 FSelectResWord := '';
11174 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11175 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11176 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11178 ThreadItem := GetActiveContent;
11179 if ThreadItem <> nil then
11180 InsertBrowserTab( ThreadItem, True );
11184 procedure TGikoForm.OnlyKokoResActionExecute(Sender: TObject);
11186 ThreadItem : TThreadItem;
11187 FilterList : TStringList;
11190 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11191 and (FActiveContent.FBrowser.Busy) then Exit;
11193 FResRangeMenuSelect := Ord( grrKoko );
11194 OnlyKokoResAction.Checked := True;
11196 if GikoSys.ResRange <> Ord( grrKoko ) then begin
11197 GikoSys.ResRange := Ord( grrKoko );
11199 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11200 FilterList := TStringList.Create;
11202 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11203 GikoSys.FSelectResFilter.Reverse := False;
11205 FilterList.Destroy;
11208 FSelectResWord := '';
11210 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11211 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11212 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11214 ThreadItem := GetActiveContent;
11215 if ThreadItem <> nil then
11216 InsertBrowserTab( ThreadItem, True );
11220 procedure TGikoForm.OnlyNewResActionExecute(Sender: TObject);
11222 ThreadItem : TThreadItem;
11223 FilterList : TStringList;
11226 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11227 and (FActiveContent.FBrowser.Busy) then Exit;
11229 FResRangeMenuSelect := Ord( grrNew );
11230 OnlyNewResAction.Checked := True;
11232 if GikoSys.ResRange <> Ord( grrNew ) then begin
11233 GikoSys.ResRange := Ord( grrNew );
11235 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11236 FilterList := TStringList.Create;
11238 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11239 GikoSys.FSelectResFilter.Reverse := False;
11241 FilterList.Destroy;
11244 FSelectResWord := '';
11246 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11247 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11248 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11250 ThreadItem := GetActiveContent;
11251 if ThreadItem <> nil then
11252 InsertBrowserTab( ThreadItem, True );
11256 procedure TGikoForm.BrowsBoradHeadActionExecute(Sender: TObject);
11258 RefURL, URL : string;
11262 if GetActiveList is TCategory then begin
11263 List := TList.Create;
11265 SelectListItem(List);
11266 RefURL := TBoard(List[0]).URL;
11270 end else if GetActiveList is TBoard then begin
11271 RefURL := TBoard(GetActiveList).URL
11273 if RefURL <> '' then begin
11274 if RefURL[Length(RefURL)] <> '/' then
11275 URL := RefURL + '/' + 'head.txt'
11277 URL := RefURL + 'head.txt';
11281 ShowMessage('
\94Â
\82ð
\93Á
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B');
11286 procedure TGikoForm.BrowsBoradHeadActionUpdate(Sender: TObject);
11288 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11289 BrowsBoradHeadAction.Enabled := True
11290 else if GetActiveList is TBoard then
11291 BrowsBoradHeadAction.Enabled := True
11293 BrowsBoradHeadAction.Enabled := False;
11296 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\95Ò
\8fW
\82·
\82é
\82½
\82ß
\82É
\8aJ
\82
11297 procedure TGikoForm.EditNGActionExecute(Sender: TObject);
11299 GikoSys.FAbon.EditNGwords;
11302 procedure TGikoForm.ThreadRangeActionUpdate(Sender: TObject);
11304 ThreadRangeAction.Enabled := (GetActiveList is TBoard);
11307 procedure TGikoForm.ThreadRangeActionExecute(Sender: TObject);
11309 case GikoSys.Setting.ThreadRange of
11310 gtrAll: AllItemAction.Execute;
11311 gtrLog: LogItemAction.Execute;
11312 gtrNew: NewItemAction.Execute;
11316 procedure TGikoForm.TabAutoSaveActionExecute(Sender: TObject);
11321 procedure TGikoForm.TabAutoLoadActionExecute(Sender: TObject);
11327 OleInitialize(nil);