6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 OleCtrls, ComCtrls, ExtCtrls, Menus, StdCtrls, MMSystem, DateUtils, Math,
15 IdHTTP, ActiveX, ActnList, ImgList,
16 ToolWin, Buttons, {Clipbrd,} {HTTPApp,} YofUtils, IdComponent,
17 ShellAPI, UrlMon, Tabs, IdGlobal, StrUtils,
18 CommCtrl, IniFiles, Dialogs,
19 GikoSystem, GikoUtil, Setting, BoardGroup, ThreadControl, ItemDownload,
20 Editor, RoundData, RoundName, KeySetting, GikoPanel, Favorite, FavoriteAdd,
21 FavoriteArrange, AddressHistory, Preview, HTMLDocumentEvent, Kotehan,
22 HintWindow, GikoCoolBar, GikoListView, ToolBarSetting, ToolBarUtil,
23 IndividualAbon, Search, ExternalBoardManager, ExternalBoardPlugInMain,
24 StdActns, GikoXMLDoc, Variants, ExtActns,IdTCPConnection, IdBaseComponent,
28 TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
29 TToolBarSettingSenderType = (tssNone, tssMain, tssList, tssBrowser);
30 TMinimizeType = (mtNone, mtMinimizing, mtMinimized);
31 TResizeType = (rtNone, rtResizing);
33 TBrowserRecord = class;
35 TGikoForm = class(TForm)
36 StatusBar: TStatusBar;
39 TreeSplitter: TSplitter;
42 ThreadMainPanel: TPanel;
43 ListSplitter: TSplitter;
45 ListView: TGikoListView;
49 MessageHideButton: TSpeedButton;
50 MessageListView: TListView;
51 MessageSplitter: TSplitter;
53 SpeedButton1: TSpeedButton;
55 CabinetSelectToolButton: TToolButton;
56 HistoryToolBar: TToolBar;
57 ToolButton15: TToolButton;
58 ToolButton18: TToolButton;
59 ItemIcon16: TImageList;
60 ItemIcon32: TImageList;
61 HotToobarImageList: TImageList;
62 ToobarImageList: TImageList;
63 ItemImageList: TImageList;
64 ActionList: TActionList;
65 LogDeleteAction: TAction;
66 KidokuAction: TAction;
67 StdToolBarVisibleAction: TAction;
68 SearchAction: TAction;
69 GikoNaviWebPageAction: TAction;
72 MsgBarVisibleAction: TAction;
73 StatusBarVisibleAction: TAction;
74 LargeIconAction: TAction;
75 SmallIconAction: TAction;
76 ListIconAction: TAction;
77 DetailIconAction: TAction;
78 CabinetBBSAction: TAction;
79 CabinetHistoryAction: TAction;
80 CabinetVisibleAction: TAction;
81 MidokuAction: TAction;
82 AllSelectAction: TAction;
83 UpFolderAction: TAction;
84 ListNumberVisibleAction: TAction;
85 AllItemAction: TAction;
86 LogItemAction: TAction;
87 NewItemAction: TAction;
88 SelectItemAction: TAction;
89 ShowThreadAction: TAction;
93 DeleteMenu: TMenuItem;
95 KidokuMenu: TMenuItem;
96 MidokuMenu: TMenuItem;
97 AllSelectMenu: TMenuItem;
99 StdToolBarMenu: TMenuItem;
100 CabinetMenu: TMenuItem;
103 CabinetVisibleMenu: TMenuItem;
104 MessageMenu: TMenuItem;
105 StatusBarMenu: TMenuItem;
107 LargeIconMenu: TMenuItem;
108 SmallIconMenu: TMenuItem;
110 DetailMenu: TMenuItem;
113 RoundMenu: TMenuItem;
115 OptionMenu: TMenuItem;
119 AboutMenu: TMenuItem;
121 BrowserPopupMenu: TPopupMenu;
122 ShowThreadMenu: TMenuItem;
123 ShowBoardMenu: TMenuItem;
124 ShowBoardAction: TAction;
125 ListIconPopupMenu: TPopupMenu;
126 LargeIconPMenu: TMenuItem;
127 SmallIconPMenu: TMenuItem;
128 ListPMenu: TMenuItem;
129 DetailPMenu: TMenuItem;
130 CabinetCloseAction: TAction;
131 ClosePopupMenu: TPopupMenu;
132 CloseMenu: TMenuItem;
133 OptionAction: TAction;
143 RoundAction: TAction;
144 ListPopupMenu: TPopupMenu;
145 ListRoundPMenu: TMenuItem;
146 ListReservPMenu: TMenuItem;
148 ItemRoundPMenu: TMenuItem;
150 KidokuPMenu: TMenuItem;
151 MidokuPMenu: TMenuItem;
152 AllSelectPMenu: TMenuItem;
153 UrlCopyPMenu: TMenuItem;
155 DeletePMenu: TMenuItem;
157 ViewPMenu: TMenuItem;
158 LargeIconLPMenu: TMenuItem;
159 SmallIconLPMenu: TMenuItem;
160 ListLPMenu: TMenuItem;
161 DetailLPMenu: TMenuItem;
165 URLCopyAction: TAction;
169 MsgBarCloseAction: TAction;
170 ScrollTopAction: TAction;
171 ScrollLastAction: TAction;
172 ScrollNewAction: TAction;
173 ScrollKokoAction: TAction;
174 EditorAction: TAction;
176 ItemReloadAction: TAction;
177 BrowserMaxAction: TAction;
189 SelectListReloadAction: TAction;
190 SelectThreadReloadAction: TAction;
191 KokoPopupMenu: TPopupMenu;
192 KokomadePMenu: TMenuItem;
194 MenuItem1: TMenuItem;
195 MenuItem2: TMenuItem;
196 BrowserTabCloseAction: TAction;
197 BrowserTabPopupMenu: TPopupMenu;
199 KokomadeAction: TAction;
200 ZenbuAction: TAction;
201 KokoResAction: TAction;
202 SelectItemURLCopyAction: TAction;
203 SelectReservAction: TAction;
204 NotSelectTabCloseAction: TAction;
208 TreePopupMenu: TPopupMenu;
209 TreeSelectThreadPupupMenu: TMenuItem;
210 TreeSelectBoardPupupMenu: TMenuItem;
212 TreeSelectURLPupupMenu: TMenuItem;
213 TreeSelectBoradReload: TAction;
214 TreeSelectThreadReload: TAction;
215 TreeSelectURLCopy: TAction;
216 ListToolBarVisibleAction: TAction;
217 BrowserToolBarVisibleAction: TAction;
221 BrowserBottomPanel: TGikoPanel;
222 CabinetSelectPopupMenu: TPopupMenu;
224 ItemReservPMenu: TMenuItem;
225 RoundNamePopupMenu: TPopupMenu;
226 SelectNewRoundName: TAction;
227 SelectDeleteRound: TAction;
228 NewBoardAction: TAction;
231 LoginAction: TAction;
233 KeySettingAction: TAction;
235 AllTabCloseAction: TAction;
243 MessageImageList: TImageList;
244 ProgressBar: TProgressBar;
245 ArrangeAction: TAction;
247 NameURLCopyAction: TAction;
248 SelectItemNameURLCopyAction: TAction;
249 NameUrlCopyPMenu: TMenuItem;
256 ListCoolBar: TGikoCoolBar;
257 ListToolBar: TToolBar;
258 ViewNoButton: TToolButton;
259 IconToolButton: TToolButton;
260 UpFolderButton: TToolButton;
261 Sepa01ToolButton: TToolButton;
262 AllItemToolButton: TToolButton;
263 LogItemToolButton: TToolButton;
264 NewItemToolButton: TToolButton;
265 ListDownloadToolButton: TToolButton;
266 ListThreadDownloadToolButton: TToolButton;
267 ToolButton2: TToolButton;
268 ToolButton1: TToolButton;
269 BrowserCoolBar: TGikoCoolBar;
270 BrowserToolBar: TToolBar;
271 BrowserSizeButton: TToolButton;
272 ToolButton3: TToolButton;
273 TopButton: TToolButton;
274 LastBotton: TToolButton;
275 NewButton: TToolButton;
276 KokoButton: TToolButton;
277 ToolButton9: TToolButton;
278 EditorButton: TToolButton;
279 ToolButton11: TToolButton;
280 IEButton: TToolButton;
281 ToolButton5: TToolButton;
282 ItemReloadButton: TToolButton;
283 ListNameToolBar: TToolBar;
284 ListNameLabel: TLabel;
286 BrowserNameToolBar: TToolBar;
287 ItemBoardImage: TImage;
288 BrowserBoardNameLabel: TLabel;
290 BrowserNameLabel: TLabel;
291 ActiveLogDeleteAction: TAction;
295 ListNameBarVisibleAction: TAction;
297 BrowserNameBarVisibleAction: TAction;
300 TreeSelectNameURLCopy: TAction;
301 TreeSelectNameURLPupupMenu: TMenuItem;
304 PaneInitAction: TAction;
306 BrowserTabToolBar: TToolBar;
307 BrowserTab: TTabControl;
308 ToolButton7: TToolButton;
309 BrowserMinAction: TAction;
312 SelectTextClearAction: TAction;
313 MailTextClearAction: TAction;
314 NameTextClearAction: TAction;
318 LeftmostTabSelectAction: TAction;
319 LeftTabSelectAction: TAction;
320 RightTabSelectAction: TAction;
321 RightmostTabSelectAction: TAction;
327 FavoriteMenu: TMenuItem;
328 FavoriteAddAction: TAction;
330 BoardFavoriteAddMenu: TMenuItem;
331 BoardFavoriteAddAction: TAction;
332 ThreadFavoriteAddAction: TAction;
333 ThreadFavoriteAddMenu: TMenuItem;
334 TreeSelectFavoriteAddAction: TAction;
336 TreeSelectFavoriteAddPupupMenu: TMenuItem;
337 FavoriteArrangeAction: TAction;
338 FavoriteTreeView: TTreeView;
339 StateIconImageList: TImageList;
341 TopRightPanel: TPanel;
344 TopCoolPanel: TPanel;
345 MainCoolBar: TGikoCoolBar;
346 MenuToolBar: TToolBar;
347 StdToolBar: TToolBar;
348 RoundToolButton: TToolButton;
349 ToolButton6: TToolButton;
350 ToolButton4: TToolButton;
351 ToolButton13: TToolButton;
352 AbortToolButton: TToolButton;
353 LoginToolButton: TToolButton;
354 AddressToolBar: TToolBar;
355 AddressComboBox: TComboBox;
356 MoveToToolButton: TToolButton;
357 MoveToAction: TAction;
358 AddressImageList: TImageList;
359 AddressBarVisibleAction: TAction;
360 AddressToolBarMenu: TMenuItem;
362 BrowserTabVisibleAction: TAction;
365 BrowserTabTopAction: TAction;
366 BrowserTabBottomAction: TAction;
370 BrowserTabTabStyleAction: TAction;
371 BrowserTabButtonStyleAction: TAction;
372 BrowserTabFlatStyleAction: TAction;
376 PreviewTimer: TTimer;
377 MonazillaWebPageAction: TAction;
378 MonazillaWebPageAction1: TMenuItem;
379 GikoHelpAction: TAction;
382 KotehanAction: TAction;
384 LinkBarVisibleAction: TAction;
388 ChevronPopupMenu: TPopupMenu;
389 BBS2chWebPageAction: TAction;
392 GikoFolderOpenAction: TAction;
394 LinkToolBar: TToolBar;
396 ToolButton8: TToolButton;
397 ToolButton10: TToolButton;
398 ThreadEditorAction: TAction;
402 LinkBarPopupMenu: TPopupMenu;
403 ToolBarSettingAction: TAction;
405 ToolButton12: TToolButton;
406 ToolButton14: TToolButton;
407 ThreadPopupMenu: TPopupMenu;
408 MenuItem4: TMenuItem;
409 MenuItem5: TMenuItem;
410 MenuItem6: TMenuItem;
412 NameCopyAction: TAction;
413 BoardIEAction: TAction;
415 SelectItemNameCopyAction: TAction;
416 SelectItemNameCopyAction1: TMenuItem;
420 SelectComboBox: TComboBox;
421 MainCoolBarPopupMenu: TPopupMenu;
422 StdToolBarVisiblePMenu: TMenuItem;
423 AddressToolBarVisiblePMenu: TMenuItem;
424 LinkToolBarVisiblePMenu: TMenuItem;
445 SelectItemToolButton: TToolButton;
446 SelectResToolButton: TToolButton;
447 SelectResAction: TAction;
448 ToolButton16: TToolButton;
449 AllResAction: TAction;
456 EditNGAction: TAction;
457 ReloadAction: TAction;
458 GoFowardAction: TAction;
459 GoBackAction: TAction;
460 SelectComboBoxSplitter: TImage;
461 IndividualAbon1: TMenuItem;
463 IndividualAbon2: TMenuItem;
465 CancellIndividualAbon: TAction;
466 AntiIndividualAbon: TMenuItem;
471 SearchBoardName: TMenuItem;
472 TreeSelectLogDeleteSeparator: TMenuItem;
473 TreeSelectSearchBoardName: TAction;
474 CabinetFavoriteAction: TAction;
477 FavoriteTreePopupMenu: TPopupMenu;
478 FavoriteTreeViewRenameAction: TAction;
479 FavoriteTreeRenamePopupMenu: TMenuItem;
480 FavoriteTreeViewNewFolderAction: TAction;
481 FavoriteTreeNewFolderPopupMenu: TMenuItem;
483 FavoriteTreeViewDeleteAction: TAction;
484 FavoriteTreeDeletePopupMenu: TMenuItem;
485 FavoriteToolBar: TToolBar;
486 ToolButton17: TToolButton;
487 ToolButton19: TToolButton;
488 FavoriteTreeViewBrowseFolderAction: TAction;
489 FavoriteTreeBrowseFolderPopupMenu: TMenuItem;
491 FavoriteTreeReloadPopupMenu: TMenuItem;
493 FavoriteTreeURLCopyPopupMenu: TMenuItem;
494 FavoriteTreeNameCopyPopupMenu: TMenuItem;
495 FavoriteTreeLogDeletePopupMenu: TMenuItem;
497 FavoriteTreeNameURLCopyPopupMenu: TMenuItem;
498 FavoriteTreeViewReloadAction: TAction;
499 FavoriteTreeViewURLCopyAction: TAction;
500 FavoriteTreeViewNameCopyAction: TAction;
501 FavoriteTreeViewNameURLCopyAction: TAction;
502 FavoriteTreeViewLogDeleteAction: TAction;
503 ResRangeAction: TAction;
504 ToolButton20: TToolButton;
505 ResRangeButton: TToolButton;
507 ExportFavoriteFileAction1: TMenuItem;
508 ExportFavoriteFile: TFileSaveAs;
509 ToolButton21: TToolButton;
510 CabinetBBSToolButton: TToolButton;
511 ToolButton23: TToolButton;
512 ToolButton24: TToolButton;
515 FavoriteTreeViewBrowseBoardAction: TAction;
516 FavoriteTreeViewBrowseThreadAction: TAction;
517 UpBoardAction: TAction;
527 TreeSelectLogDeletePopupMenu: TMenuItem;
529 BBSSelectPopupMenu: TPopupMenu;
530 PlugInMenu: TMenuItem;
531 TmpToolBar: TToolBar;
532 TreeSelectNameCopy: TAction;
533 TreeSelectNamePupupMenu: TMenuItem;
534 BrowserPanel: TPanel;
535 SetFocusForBrowserAction: TAction;
536 SetFocusForThreadListAction: TAction;
537 SetFocusForCabinetAction: TAction;
539 ThreadlistMaxAndFocusAction: TAction;
540 BrowserMaxAndFocusAction: TAction;
541 UpBoardButton: TToolButton;
543 SelectThreadSave: TMenuItem;
544 SelectItemSaveForHTML: TAction;
545 FileSaveAs1: TFileSaveAs;
549 SelectItemSaveForDat: TAction;
550 LogFolderOpenAction: TAction;
551 OpenLogFolder: TMenuItem;
552 Browser: TWebBrowser;
555 TabsSaveAction: TAction;
556 TabsOpenAction: TAction;
557 ResRangePopupMenu: TPopupMenu;
561 OnlyAHundredResAction: TAction;
562 OnlyNewResAction: TAction;
563 OnlyKokoResAction: TAction;
565 BrowsBoradHeadAction: TAction;
566 BrowsBoradHeadAction1: TMenuItem;
567 ThreadRangeAction: TAction;
568 ThreadRangePopupMenu: TPopupMenu;
576 ThreadRangeButton: TToolButton;
577 TabAutoSaveAction: TAction;
578 TabAutoLoadAction: TAction;
579 ListColumnPopupMenu: TPopupMenu;
580 JumpToNumOfResAction: TAction;
581 FavoriteTreeViewCollapseAction: TAction;
582 procedure FormCreate(Sender: TObject);
583 procedure FormDestroy(Sender: TObject);
584 procedure CabinetPanelHide(Sender: TObject);
585 procedure ListViewData(Sender: TObject; Item: TListItem);
586 procedure ListViewDataFind(Sender: TObject; Find: TItemFind;
587 const FindString: String; const FindPosition: TPoint;
588 FindData: Pointer; StartIndex: Integer; Direction: TSearchDirection;
589 Wrap: Boolean; var Index: Integer);
590 procedure ListViewDataHint(Sender: TObject; StartIndex,
592 procedure ListViewDataStateChange(Sender: TObject; StartIndex,
593 EndIndex: Integer; OldState, NewState: TItemStates);
594 procedure BrowserStatusTextChange(Sender: TObject;
595 const Text: WideString);
596 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
597 procedure TreeViewChanging(Sender: TObject; Node: TTreeNode;
598 var AllowChange: Boolean);
599 procedure ListViewKeyDown(Sender: TObject; var Key: Word;
601 procedure ListViewColumnClick(Sender: TObject; Column: TListColumn);
602 procedure ListViewSort(Sender: TObject; Column: TListColumn);
603 procedure MenuToolBarCustomDrawButton(Sender: TToolBar;
604 Button: TToolButton; State: TCustomDrawState;
605 var DefaultDraw: Boolean);
606 procedure BrowserBeforeNavigate2(Sender: TObject;
607 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
608 Headers: OleVariant; var Cancel: WordBool);
609 procedure ListViewAdvancedCustomDrawItem(Sender: TCustomListView;
610 Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
611 var DefaultDraw: Boolean);
612 procedure TreeViewCustomDraw(Sender: TCustomTreeView;
613 const ARect: TRect; var DefaultDraw: Boolean);
614 procedure TreeViewCustomDrawItem(Sender: TCustomTreeView;
615 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
616 procedure TreeViewExpanded(Sender: TObject; Node: TTreeNode);
617 procedure TreeViewDblClick(Sender: TObject);
618 procedure ListViewCustomDraw(Sender: TCustomListView;
619 const ARect: TRect; var DefaultDraw: Boolean);
620 procedure ListViewMouseDown(Sender: TObject; Button: TMouseButton;
621 Shift: TShiftState; X, Y: Integer);
622 procedure TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
623 procedure MessageListViewResize(Sender: TObject);
624 procedure ExitActionExecute(Sender: TObject);
625 procedure AllSelectActionExecute(Sender: TObject);
626 procedure StdToolBarVisibleActionExecute(Sender: TObject);
627 procedure MsgBarVisibleActionExecute(Sender: TObject);
628 procedure StatusBarVisibleActionExecute(Sender: TObject);
629 procedure LargeIconActionExecute(Sender: TObject);
630 procedure SmallIconActionExecute(Sender: TObject);
631 procedure ListIconActionExecute(Sender: TObject);
632 procedure DetailIconActionExecute(Sender: TObject);
633 procedure SearchActionExecute(Sender: TObject);
634 procedure OptionActionExecute(Sender: TObject);
635 procedure GikoNaviWebPageActionExecute(Sender: TObject);
636 procedure AboutActionExecute(Sender: TObject);
637 procedure CabinetHistoryActionExecute(Sender: TObject);
638 procedure CabinetVisible( isVisible : Boolean );
639 procedure CabinetVisibleActionExecute(Sender: TObject);
640 procedure AllItemActionExecute(Sender: TObject);
641 procedure LogItemActionExecute(Sender: TObject);
642 procedure NewItemActionExecute(Sender: TObject);
643 procedure SelectItemActionExecute(Sender: TObject);
644 procedure ListNumberVisibleActionExecute(Sender: TObject);
645 procedure UpFolderActionExecute(Sender: TObject);
646 procedure IconStyleExecute(Sender: TObject);
647 procedure RoundActionExecute(Sender: TObject);
648 procedure StopActionExecute(Sender: TObject);
649 procedure MsgBarCloseActionExecute(Sender: TObject);
650 procedure BrowserMaxActionExecute(Sender: TObject);
651 procedure ScrollTopActionExecute(Sender: TObject);
652 procedure ScrollLastActionExecute(Sender: TObject);
653 procedure ScrollNewActionExecute(Sender: TObject);
654 procedure ScrollKokoActionExecute(Sender: TObject);
655 procedure EditorActionExecute(Sender: TObject);
656 procedure IEActionExecute(Sender: TObject);
657 procedure ShowThreadActionExecute(Sender: TObject);
658 procedure ShowBoardActionExecute(Sender: TObject);
659 procedure URLCopyActionExecute(Sender: TObject);
660 procedure ItemReloadActionExecute(Sender: TObject);
661 procedure SelectListReloadActionExecute(Sender: TObject);
662 procedure SelectThreadReloadActionExecute(Sender: TObject);
663 procedure SelectListReloadActionUpdate(Sender: TObject);
664 procedure AllItemActionUpdate(Sender: TObject);
665 procedure LogItemActionUpdate(Sender: TObject);
666 procedure NewItemActionUpdate(Sender: TObject);
667 procedure SelectItemActionUpdate(Sender: TObject);
668 procedure UpFolderActionUpdate(Sender: TObject);
669 procedure FormResize(Sender: TObject);
670 procedure ScrollTopActionUpdate(Sender: TObject);
671 procedure ScrollLastActionUpdate(Sender: TObject);
672 procedure ScrollNewActionUpdate(Sender: TObject);
673 procedure ScrollKokoActionUpdate(Sender: TObject);
674 procedure EditorActionUpdate(Sender: TObject);
675 procedure IEActionUpdate(Sender: TObject);
676 procedure ShowThreadActionUpdate(Sender: TObject);
677 procedure ShowBoardActionUpdate(Sender: TObject);
678 procedure SelectThreadReloadActionUpdate(Sender: TObject);
679 procedure ItemReloadActionUpdate(Sender: TObject);
680 procedure LogDeleteActionExecute(Sender: TObject);
681 procedure KokomadeActionExecute(Sender: TObject);
682 procedure ZenbuActionExecute(Sender: TObject);
683 procedure KokoResActionExecute(Sender: TObject);
684 procedure ListPopupMenuPopup(Sender: TObject);
685 procedure SelectItemURLCopyActionExecute(Sender: TObject);
686 procedure SelectItemURLCopyActionUpdate(Sender: TObject);
687 procedure AllSelectActionUpdate(Sender: TObject);
688 procedure LogDeleteActionUpdate(Sender: TObject);
689 procedure BrowserTabCloseActionExecute(Sender: TObject);
690 procedure NotSelectTabCloseActionExecute(Sender: TObject);
691 procedure TreeSelectBoradReloadExecute(Sender: TObject);
692 procedure TreeSelectThreadReloadExecute(Sender: TObject);
693 procedure TreeSelectURLCopyExecute(Sender: TObject);
694 procedure TreePopupMenuPopup(Sender: TObject);
695 procedure ListToolBarVisibleActionExecute(Sender: TObject);
696 procedure BrowserToolBarVisibleActionExecute(Sender: TObject);
697 procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
698 var Cancel: WordBool);
699 procedure ListSplitterCanResize(Sender: TObject; var NewSize: Integer;
700 var Accept: Boolean);
701 procedure ListSplitterMoved(Sender: TObject);
702 procedure BrowserTabChange(Sender: TObject);
703 procedure BrowserTabMouseDown(Sender: TObject; Button: TMouseButton;
704 Shift: TShiftState; X, Y: Integer);
705 procedure BrowserTabDragOver(Sender, Source: TObject; X, Y: Integer;
706 State: TDragState; var Accept: Boolean);
707 procedure BrowserTabDragDrop(Sender, Source: TObject; X, Y: Integer);
708 procedure BrowserTabMouseMove(Sender: TObject; Shift: TShiftState; X,
710 procedure BrowserDocumentComplete(Sender: TObject;
711 const pDisp: IDispatch; var URL: OleVariant);
712 procedure SelectReservActionUpdate(Sender: TObject);
713 procedure RoundNamePopupMenuPopup(Sender: TObject);
714 procedure SelectNewRoundNameExecute(Sender: TObject);
715 procedure SelectDeleteRoundExecute(Sender: TObject);
716 procedure SelectReservActionExecute(Sender: TObject);
717 procedure NewBoardActionExecute(Sender: TObject);
718 procedure LoginActionExecute(Sender: TObject);
719 procedure KeySettingActionExecute(Sender: TObject);
720 procedure AllTabCloseActionExecute(Sender: TObject);
721 procedure ArrangeActionExecute(Sender: TObject);
722 procedure NameURLCopyActionExecute(Sender: TObject);
723 procedure SelectItemNameURLCopyActionExecute(Sender: TObject);
724 procedure URLCopyActionUpdate(Sender: TObject);
725 procedure NameURLCopyActionUpdate(Sender: TObject);
726 procedure BrowserTabCloseActionUpdate(Sender: TObject);
727 procedure NotSelectTabCloseActionUpdate(Sender: TObject);
728 procedure AllTabCloseActionUpdate(Sender: TObject);
729 procedure SelectItemNameURLCopyActionUpdate(Sender: TObject);
730 procedure ActiveLogDeleteActionExecute(Sender: TObject);
731 procedure ActiveLogDeleteActionUpdate(Sender: TObject);
732 procedure ListNameBarVisibleActionExecute(Sender: TObject);
733 procedure BrowserNameBarVisibleActionExecute(Sender: TObject);
734 procedure TreeSelectNameURLCopyExecute(Sender: TObject);
735 procedure PaneInitActionExecute(Sender: TObject);
736 procedure FormShow(Sender: TObject);
737 procedure BrowserTabToolBarResize(Sender: TObject);
738 procedure BrowserMinActionExecute(Sender: TObject);
739 procedure SelectTextClearActionExecute(Sender: TObject);
740 procedure NameTextClearActionExecute(Sender: TObject);
741 procedure MailTextClearActionExecute(Sender: TObject);
742 procedure LeftmostTabSelectActionExecute(Sender: TObject);
743 procedure LeftTabSelectActionExecute(Sender: TObject);
744 procedure RightTabSelectActionExecute(Sender: TObject);
745 procedure RightmostTabSelectActionExecute(Sender: TObject);
746 procedure LeftmostTabSelectActionUpdate(Sender: TObject);
747 procedure LeftTabSelectActionUpdate(Sender: TObject);
748 procedure RightTabSelectActionUpdate(Sender: TObject);
749 procedure RightmostTabSelectActionUpdate(Sender: TObject);
750 procedure FavoriteMenuClick(Sender: TObject);
751 procedure FavoriteAddActionExecute(Sender: TObject);
752 procedure FavoriteAddActionUpdate(Sender: TObject);
753 procedure BoardFavoriteAddActionExecute(Sender: TObject);
754 procedure BoardFavoriteAddActionUpdate(Sender: TObject);
755 procedure ThreadFavoriteAddActionExecute(Sender: TObject);
756 procedure ThreadFavoriteAddActionUpdate(Sender: TObject);
757 procedure TreeSelectFavoriteAddActionExecute(Sender: TObject);
758 procedure FavoriteArrangeActionExecute(Sender: TObject);
759 procedure MainCoolBarResize(Sender: TObject);
760 procedure MoveToActionExecute(Sender: TObject);
761 procedure AddressToolBarResize(Sender: TObject);
762 procedure AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
764 procedure AddressBarVisibleActionExecute(Sender: TObject);
765 procedure BrowserEnter(Sender: TObject);
766 procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
767 procedure BrowserTabVisibleActionExecute(Sender: TObject);
768 procedure BrowserTabTopActionExecute(Sender: TObject);
769 procedure BrowserTabBottomActionExecute(Sender: TObject);
770 procedure BrowserTabTabStyleActionExecute(Sender: TObject);
771 procedure BrowserTabButtonStyleActionExecute(Sender: TObject);
772 procedure BrowserTabFlatStyleActionExecute(Sender: TObject);
773 procedure PreviewTimerTimer(Sender: TObject);
774 procedure MessageHideButtonClick(Sender: TObject);
775 procedure MonazillaWebPageActionExecute(Sender: TObject);
776 procedure GikoHelpActionExecute(Sender: TObject);
777 procedure ToolButton18Click(Sender: TObject);
778 procedure KotehanActionExecute(Sender: TObject);
779 procedure LinkBarVisibleActionExecute(Sender: TObject);
780 procedure BBS2chWebPageActionExecute(Sender: TObject);
781 procedure GikoFolderOpenActionExecute(Sender: TObject);
782 procedure MainCoolBarBandInfo(Sender: TObject;
783 var BandInfo: PReBarBandInfoA);
784 procedure MainCoolBarChevronClick(Sender: TObject;
785 RebarChevron: PNMRebarChevron);
786 procedure ListCoolBarBandInfo(Sender: TObject;
787 var BandInfo: PReBarBandInfoA);
788 procedure ListCoolBarChevronClick(Sender: TObject;
789 RebarChevron: PNMRebarChevron);
790 procedure BrowserCoolBarBandInfo(Sender: TObject;
791 var BandInfo: PReBarBandInfoA);
792 procedure BrowserCoolBarChevronClick(Sender: TObject;
793 RebarChevron: PNMRebarChevron);
794 procedure ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
795 procedure ThreadEditorActionExecute(Sender: TObject);
796 procedure ThreadEditorActionUpdate(Sender: TObject);
797 procedure ToolBarSettingActionExecute(Sender: TObject);
798 procedure NameCopyActionExecute(Sender: TObject);
799 procedure BoardIEActionExecute(Sender: TObject);
800 procedure SelectItemNameCopyActionExecute(Sender: TObject);
801 procedure SelectItemNameCopyActionUpdate(Sender: TObject);
802 procedure BoardIEActionUpdate(Sender: TObject);
803 procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
804 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
805 procedure NameCopyActionUpdate(Sender: TObject);
806 procedure SelectComboBoxChange(Sender: TObject);
807 procedure SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
809 procedure SelectComboBoxExit(Sender: TObject);
810 procedure SelectResActionExecute(Sender: TObject);
811 procedure SelectResActionUpdate(Sender: TObject);
812 procedure AllResActionExecute(Sender: TObject);
813 procedure AllResActionUpdate(Sender: TObject);
814 procedure ReloadClick(Sender: TObject);
815 procedure GoBackClick(Sender: TObject);
816 procedure GoFowardClick(Sender: TObject);
817 procedure SelectComboBoxSplitterMouseMove(Sender: TObject;
818 Shift: TShiftState; X, Y: Integer);
819 procedure SelectComboBoxSplitterMouseDown(Sender: TObject;
820 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
821 procedure SelectComboBoxSplitterMouseUp(Sender: TObject;
822 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
823 procedure StatusBarResize(Sender: TObject);
824 procedure IndividualAbon1Click(Sender: TObject);
825 procedure IndividualAbon2Click(Sender: TObject);
826 procedure N42Click(Sender: TObject);
827 procedure SelectComboBoxEnter(Sender: TObject);
828 procedure AntiIndividualAbonClick(Sender: TObject);
829 procedure N51Click(Sender: TObject);
830 procedure TreeSelectSearchBoardNameExecute(Sender: TObject);
831 procedure CabinetFavoriteActionExecute(Sender: TObject);
832 procedure FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
834 procedure FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
835 procedure FavoriteTreeViewEdited(Sender: TObject; Node: TTreeNode;
837 procedure FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
839 procedure FavoriteTreePopupMenuPopup(Sender: TObject);
840 procedure FavoriteTreeViewDeleteActionExecute(Sender: TObject);
841 procedure FavoriteTreeViewRenameActionExecute(Sender: TObject);
842 procedure FavoriteTreeViewNewFolderActionExecute(Sender: TObject);
843 procedure ToolButton19Click(Sender: TObject);
844 procedure FavoriteTreeViewBrowseFolderActionExecute(Sender: TObject);
845 procedure FavoriteTreeViewDblClick(Sender: TObject);
846 procedure FavoriteTreeViewLogDeleteActionExecute(Sender: TObject);
847 procedure FavoriteTreeViewReloadActionExecute(Sender: TObject);
848 procedure FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
849 procedure FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
850 procedure FavoriteTreeViewNameURLCopyActionExecute(Sender: TObject);
851 procedure LinkToolBarDragDrop(Sender, Source: TObject; X, Y: Integer);
852 procedure BrowserTabMouseUp(Sender: TObject; Button: TMouseButton;
853 Shift: TShiftState; X, Y: Integer);
854 procedure LinkToolBarDragOver(Sender, Source: TObject; X, Y: Integer;
855 State: TDragState; var Accept: Boolean);
856 procedure ResRangeActionExecute(Sender: TObject);
857 procedure FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
859 procedure ListCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
860 var Handled: Boolean);
861 procedure MainCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
862 var Handled: Boolean);
863 procedure BrowserCoolBarContextPopup(Sender: TObject; MousePos: TPoint;
864 var Handled: Boolean);
865 procedure ExportFavoriteFileAccept(Sender: TObject);
866 procedure ExportFavoriteFileBeforeExecute(Sender: TObject);
867 procedure CabinetBBSActionExecute(Sender: TObject);
868 procedure FavoriteTreeViewBrowseThreadActionExecute(Sender: TObject);
869 procedure FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
870 procedure UpBoardActionExecute(Sender: TObject);
871 procedure UpBoardActionUpdate(Sender: TObject);
872 procedure BrowserTabContextPopup(Sender: TObject; MousePos: TPoint;
873 var Handled: Boolean);
874 procedure KoreCopyExecute(Sender: TObject);
875 procedure BrowserTabPopupMenuPopup(Sender: TObject);
876 procedure MenuToolBarResize(Sender: TObject);
877 procedure StdToolBarResize(Sender: TObject);
878 procedure LinkToolBarResize(Sender: TObject);
879 procedure ListNameToolBarResize(Sender: TObject);
880 procedure ListToolBarResize(Sender: TObject);
881 procedure BrowserNameToolBarResize(Sender: TObject);
882 procedure BrowserToolBarResize(Sender: TObject);
883 procedure BrowserTabResize(Sender: TObject);
884 procedure TreeViewClick(Sender: TObject);
885 procedure TreeViewKeyDown(Sender: TObject; var Key: Word;
887 procedure FavoriteTreeViewMouseDown(Sender: TObject;
888 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
889 procedure MessagePanelResize(Sender: TObject);
891 procedure TreeSelectNameCopyExecute(Sender: TObject);
892 procedure FavoriteTreeViewMouseUp(Sender: TObject;
893 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
894 procedure ResRangeActionUpdate(Sender: TObject);
895 procedure SetFocusForBrowserActionExecute(Sender: TObject);
896 procedure SetFocusForBrowserActionUpdate(Sender: TObject);
897 procedure SetFocusForThreadListActionExecute(Sender: TObject);
898 procedure SetFocusForCabinetActionExecute(Sender: TObject);
899 procedure BrowserMaxAndFocusActionExecute(Sender: TObject);
900 procedure BrowserMaxAndFocusActionUpdate(Sender: TObject);
901 procedure ThreadlistMaxAndFocusActionExecute(Sender: TObject);
902 procedure ListViewExit(Sender: TObject);
903 procedure SetFocusForCabinetActionUpdate(Sender: TObject);
904 procedure ListViewSelectItem(Sender: TObject; Item: TListItem;
906 procedure SelectTimerTimer(Sender: TObject);
907 procedure SelectItemSaveForHTMLExecute(Sender: TObject);
908 procedure KidokuActionExecute(Sender: TObject);
909 procedure MidokuActionExecute(Sender: TObject);
910 procedure SelectItemSaveForDatExecute(Sender: TObject);
911 procedure BrowserPanelCanResize(Sender: TObject; var NewWidth,
912 NewHeight: Integer; var Resize: Boolean);
913 procedure LogFolderOpenActionExecute(Sender: TObject);
914 procedure LogFolderOpenActionUpdate(Sender: TObject);
915 procedure TabsSaveActionExecute(Sender: TObject);
916 procedure TabsOpenActionExecute(Sender: TObject);
917 procedure TabsSaveToFileActionExecute(Sender: TObject);
918 procedure TabsOpenFromFileActionExecute(Sender: TObject);
919 procedure OnlyAHundredResActionExecute(Sender: TObject);
920 procedure OnlyKokoResActionExecute(Sender: TObject);
921 procedure OnlyNewResActionExecute(Sender: TObject);
922 procedure BrowsBoradHeadActionExecute(Sender: TObject);
923 procedure BrowsBoradHeadActionUpdate(Sender: TObject);
924 procedure EditNGActionExecute(Sender: TObject);
925 procedure ThreadRangeActionUpdate(Sender: TObject);
926 procedure ThreadRangeActionExecute(Sender: TObject);
927 procedure TabAutoSaveActionExecute(Sender: TObject);
928 procedure TabAutoLoadActionExecute(Sender: TObject);
929 procedure ListViewColumnRightClick(Sender: TObject;
930 Column: TListColumn; Point: TPoint);
931 procedure JumpToNumOfResActionExecute(Sender: TObject);
932 procedure JumpToNumOfResActionUpdate(Sender: TObject);
933 procedure FavoriteTreeViewCollapseActionExecute(Sender: TObject);
936 //RoundList : TRoundList;
940 FEnabledCloseButton: Boolean;
941 // ThreadCreate: TThreadCreate;
943 FClickNode: TTreeNode;
946 FPreviewBrowser: TPreviewBrowser;
949 FBrowserSizeHeight: Integer;
950 FBrowserSizeWidth: Integer;
952 // FFavorite: TFavorite;
953 FTabHintIndex: Integer;
954 FListStyle: TViewStyle; //
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93\83X
\83^
\83C
\83\8b
955 FItemNoVisible: Boolean; //
\83\8a\83X
\83g
\94Ô
\8d\86\95\
\8e¦
\83t
\83\89\83O
956 FViewType: TGikoViewType; //
\83\8a\83X
\83g
\83A
\83C
\83e
\83\80\95\
\8e¦
\83^
\83C
\83v
957 FActiveList: TObject;
958 FActiveContent: TBrowserRecord; //
960 FHistoryList: TList; //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
961 FTreeType: TGikoTreeType;
965 // FLastRoundTime: TDateTime;
966 BrowserNullTab: TBrowserRecord;
967 // DoubleClickOccurred: array [TMouseButton] of Boolean;
968 FDownloadTitle: string; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\83^
\83C
\83g
\83\8b\96¼
969 FDownloadMax: Integer; //
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86\82Ì
\8dÅ
\91å
\83T
\83C
\83Y
970 FEvent: THTMLDocumentEventSink;//
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
972 // Fkeynum : Integer; //
\83L
\81[
\83{
\81[
\83h
\83\8c\83X
\83|
\83b
\83v
\83A
\83b
\83v
\97p
974 IsDraggingSelectComboBox : Boolean;
975 DraggingSelectComboBoxPosition : TPoint;
977 FSearchDialog: TSearchDialog;
979 FDropSpaceNode: TTreeNode;
981 FDragTime : Cardinal; ///<
\83\8a\83\93\83N
\82ÌD&D
\97p
982 FDragButton : TToolButton; ///<
\83\8a\83\93\83N
\82ÌD&D
\97p
\82ÉDrag
\82µ
\82Ä
\82éButton
\95Û
\91¶
983 FDragWFirst : Boolean; ///< WebTab
\82ÌD&D
\97p
985 FListViewBackGroundColor : TColor; ///< ListView
\82ÌBackGroundColor
986 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¦
987 FOddColor : TColor; ///<
\82»
\82Ì
\90F
989 FSelectResWord : string; ///<
\83\8c\83X
\8di
\8d\9e\83\8f\81[
\83h
990 FIsIgnoreResize : TResizeType; ///<
\83\8a\83T
\83C
\83Y
\83C
\83x
\83\93\83g
\82ð
\96³
\8e\8b\82·
\82é
\82©
\82Ç
\82¤
\82©
991 FIsMinimize : TMinimizeType; ///<
\8dÅ
\8f¬
\89»
\82µ
\82Ä
\82¢
\82é
\8dÅ
\92\86\82©
992 FOldFormWidth : Integer; ///<
\92¼
\91O
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\95\9d
993 FToolBarSettingSender : TToolBarSettingSenderType; ///<
\83c
\81[
\83\8b\83o
\81[
\90Ý
\92è
\82ð
\83N
\83\8a\83b
\83N
\82µ
\82½
\83N
\81[
\83\8b\83o
\81[
994 FMouseDownPos : TPoint; ///<
\83u
\83\89\83E
\83U
\83^
\83u
\82Å
\83}
\83E
\83X
\82ð
\89\9f\82µ
\82½
\82Æ
\82«
\82Ì
\8dÀ
\95W
996 FResRangeMenuSelect : Longint; ///< ResRangeButton
\82Å
\91I
\91ð
\82³
\82ê
\82Ä
\82¢
\82é
\8d\80\96Ú (
\83t
\83H
\81[
\83}
\83b
\83g
\82Í ResRange
\8cÝ
\8a·)
998 FIsHandledWheel : Boolean; ///<
\8aù
\82É
\8eó
\82¯
\8eæ
\82Á
\82½ WM_MOUSEWHEEL
\82©
\82Ç
\82¤
\82©
999 procedure SetBoardTreeNode( inBBS : TBBS );
1000 function SetCategoryListItem(ABBS2ch: TBBS): Integer;
1001 function SetBoardListItem(Category: TCategory): Integer;
1002 function SetThreadListItem(Board: TBoard): Integer;
1003 // function GetRoundName(index: integer): string;
1005 procedure DownloadEnd(Sender: TObject; Item: TDownloadItem);
1006 procedure DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
1007 procedure WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
1008 procedure WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
1009 procedure Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
1012 procedure ListClick;
1013 procedure ListDoubleClick(Shift: TShiftState);
1014 procedure BrowserMovement(const AName: string); overload;
1015 procedure BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord); overload;
1016 procedure SelectListItem(List: TList);
1017 // procedure SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
1018 procedure DeleteTab(ThreadItem: TThreadItem); overload;
1019 procedure DeleteTab(BrowserRecord: TBrowserRecord); overload;
1020 function Hook(var Message: TMessage): Boolean;
1021 procedure AddRoundNameMenu(MenuItem: TMenuItem);
1022 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload;
1023 procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload;
1024 procedure SetSelectRoundName(Sender: TObject);
1025 function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
1027 procedure SetMenuFont;
1028 // procedure CreateFavMenu(Folder: TFavoriteFolder);
1029 procedure CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
1030 procedure FavoriteClick(Sender: TObject; ActiveTab: Boolean); overload;
1031 procedure FavoriteClick(Sender: TObject); overload;
1032 procedure FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
1033 procedure SelectTreeNode(Item: TObject; CallEvent: Boolean);
1034 function OnDocumentContextMenu(Sender: TObject): WordBool;
1035 // function GetThreadText(sBoard: string; sThread: string; StNum, ToNum: Integer; Title, First: Boolean): string;
1036 procedure SetResPopupText(ThreadItem : TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
1037 procedure ShowTextPopup;
1038 //procedure ShowTextPopup(HintData: THintData);
1039 // procedure SetStdToolBar;
1040 // function GetAction(ActionName: string): TContainedAction;
1041 procedure SetLinkBar;
1042 function GetWidthAllToolButton(ToolBar: TToolBar): Integer;
1043 procedure MenuBarChevronMenu;
1044 procedure LinkBarChevronMenu;
1045 procedure ToolBarChevronMenu(ToolBar: TToolBar);
1046 procedure ModifySelectList;
1047 procedure FavoriteBrowseFolder( node: TTreeNode );
1048 procedure LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
1049 procedure LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1050 procedure LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
1051 procedure LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
1052 procedure LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
1053 function TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
1054 procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
1055 procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
1056 procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
1058 procedure SetListViewBackGroundColor(value: TColor);
1059 procedure BBSMenuItemOnClick( Sender : TObject );
1061 procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean);
1062 /// CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1063 procedure SaveCoolBarSettings;
1064 /// CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1065 procedure LoadCoolBarSettings;
1066 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
1067 procedure OnMinimize;
1068 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½
1069 procedure OnMinimized;
1070 /// CoolBar
\82ª
\83T
\83C
\83Y
\95Ï
\8dX
\82³
\82ê
\82½
1071 procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
1072 /// TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1073 procedure TreeClick( Node : TTreeNode );
1074 /// TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
1075 procedure TreeDoubleClick( Node : TTreeNode );
1076 ///
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
1077 procedure HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
1078 ///
\83u
\83\89\83E
\83U
\82Ì
\83L
\81[
\83_
\83E
\83\93\83C
\83x
\83\93\83g
1079 ///
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
1080 function BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
1081 ///
\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
1082 procedure SetBBSMenu;
1083 function WebBrowserClick(Sender: TObject): WordBool;
1084 procedure SkinorCSSFilesCopy(path: string);
1085 ///
\83^
\83u
\8eæ
\93¾
1086 function GetTabURLs(AStringList: TStringList) : Boolean;
1087 ///
\83^
\83u
\95Û
\91¶
1088 function SaveTabURLs : Boolean;
1089 ///
\83^
\83u
\93Ç
\82Ý
\8fo
\82µ
1090 function LoadTabURLs : Boolean;
1091 ///
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
1092 procedure ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
1093 /// ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
1094 function ActiveListTrueColumn( column : TListColumn ) : TListColumn;
1095 /// ListColumnPopupMenu
\83A
\83C
\83e
\83\80\82Ì
\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
1096 procedure ListColumnPopupMenuOnClick( Sender : TObject );
1098 procedure CreateParams(var Params: TCreateParams); override;
1099 procedure WndProc(var Message: TMessage); override;
1100 procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR;
1101 procedure WMSettingChange(var Message: TWMWinIniChange); message WM_SETTINGCHANGE;
1102 procedure WMCopyData(var Message: TWMCopyData); message WM_COPYDATA;
1106 // FDownload: TDownload;
1107 FControlThread: TThreadControl;
1108 procedure MoveToURL(const inURL: string);
1109 function InsertBrowserTab(
1110 ThreadItem : TThreadItem;
1111 ActiveTab : Boolean = True
1113 procedure ReloadBBS;
1114 function GetHttpState: Boolean;
1115 procedure SetEnabledCloseButton(Enabled: Boolean);
1116 function GetTreeNode(Data: TObject): TTreeNode;
1117 procedure AppFormDeactivate(Sender: TObject);
1118 // procedure CabinetPanelVisible(PanelVisible: Boolean);
1119 procedure ListViewAllSelect;
1121 property ListStyle: TViewStyle read FListStyle write FListStyle;
1122 property ItemNoVisible: Boolean read FItemNoVisible write FItemNoVisible;
1123 property ViewType: TGikoViewType read FViewType write FViewType;
1125 property NameCookie: string read FNameCookie write FNameCookie;
1126 property MailCookie: string read FMailCookie write FMailCookie;
1128 procedure SetContent(inThread: TBrowserRecord);
1129 function GetActiveContent: TThreadItem;
1130 function GetActiveList: TObject;
1133 // property LastRoundTime: TDateTime read FLastRoundTime write FLastRoundTime;
1135 procedure SetListViewType(AViewType: TGikoViewType); overload;
1136 procedure SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean); overload;
1137 procedure DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
1138 procedure DownloadList(Board: TBoard; ForceDownload: Boolean = False);
1139 procedure PlaySound(SoundEventName: string);
1141 function AddHistory( FavItem: TFavoriteThreadItem ): Boolean;
1142 procedure DeleteHistory( threadItem: TThreadItem );
1143 procedure ClearHistory;
1144 procedure SaveHistory;
1145 procedure LoadHistory;
1146 procedure ShowBBSTree( inBBS : TBBS );
1147 procedure ShowBBSTreeOld( inBBS : TBBS );
1148 procedure ShowHistoryTree;
1149 procedure SetHistoryTreeNode;
1150 // procedure SelectTreeNode(Item: TObject);
1151 procedure AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
1152 procedure SetBrowserTabState;
1153 // property Favorite: TFavorite read FFavorite write FFavorite;
1154 procedure SetToolBarPopup;
1155 procedure ShowFavoriteAddDialog( Item : TObject );
1156 procedure FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
1157 procedure RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
1158 property ListViewBackGroundColor: TColor read FListViewBackGroundColor write SetListViewBackGroundColor;
1159 property UseOddResOddColor : Boolean read FUseOddResOddColor write FUseOddResOddColor;
1160 property OddColor : TColor read FOddColor write FOddColor;
1162 function FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
1163 procedure OnPlugInMenuItem( Sender : TObject );
1164 procedure TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
1165 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶ KuroutSetting
\82©
\82ç
\82æ
\82Ñ
\82¾
\82µ
\82½
\82¢
\82Ì
\82Å
1166 procedure ActiveListColumnSave;
1167 procedure SetActiveList(Obj: TObject);
1168 property ActiveList: TObject read GetActiveList write SetActiveList;
1170 property EnabledCloseButton: Boolean read FEnabledCloseButton write SetEnabledCloseButton;
1173 TFavoriteMenuItem = class(TMenuItem)
1177 property Data: Pointer read FData write FData;
1180 TBBSMenuItem = class(TMenuItem)
1184 property Data: Pointer read FData write FData;
1187 TLinkToolButton = class(TToolButton)
1191 property Data: Pointer read FData write FData;
1194 TBrowserRecord = class( TObject )
1196 FBrowser : TWebBrowser;
1197 FEvent: THTMLDocumentEventSink; //!<
\83u
\83\89\83E
\83U
\83h
\83L
\83\85\83\81\83\93\83g
\83C
\83x
\83\93\83g
1198 FThread : TThreadItem;
1199 FLastSize : Integer;
1201 FMovement : string; //!<
\83X
\83N
\83\8d\81[
\83\8b\90æ
\83A
\83\93\83J
\81[
1203 destructor Destroy; override;
1204 property Browser : TWebBrowser read FBrowser write FBrowser;
1205 property Thread : TThreadItem read FThread write FThread;
1206 property LastSize : Integer read FLastSize write FLastSize;
1207 property Repaint : Boolean read FRepaint write FRepaint;
1208 property Movement : string read FMovement write FMovement;
1212 GikoForm: TGikoForm;
1217 About, Option, Round, Splash, Sort, ListSelect,
1218 NewBoard, MojuUtils,Clipbrd;
1221 CAPTION_NAME: string = '
\83M
\83R
\83i
\83r';
1222 BLANK_HTML: string = 'about:blank';
1223 SELECTCOMBOBOX_NAME: string = ''; // '
\83X
\83\8c\83b
\83h
\8di
\8d\9e\8c\9f\8dõ';
1224 SELECTCOMBOBOX_COLOR: TColor = clWindow;
1226 DandD_THRESHOLD = 5; //D&D
\82Ìè
\87\92l
\81ipixcel)
1227 //
\83c
\83\8a\81[
\81E
\83\8a\83X
\83g
\83A
\83C
\83R
\83\93
1228 ITEM_ICON_2CH1 = 0; //2ch
\83A
\83C
\83R
\83\93
1229 ITEM_ICON_2CH2 = 1; //2ch
\83A
\83C
\83R
\83\93
1230 ITEM_ICON_CATEGORY1 = 2; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1231 ITEM_ICON_CATEGORY2 = 3; //
\83J
\83e
\83S
\83\8a\83A
\83C
\83R
\83\93
1232 ITEM_ICON_BOARD_NOSUBJECT = 3; //
\93Ç
\82Ý
\8d\9e\82Ü
\82ê
\82Ä
\82¢
\82È
\82¢
\94Â
\83A
\83C
\83R
\83\93
1233 ITEM_ICON_BOARD1 = 4; //
\94Â
\83A
\83C
\83R
\83\93
1234 ITEM_ICON_BOARD2 = 5; //
\94Â
\83A
\83C
\83R
\83\93
1235 ITEM_ICON_THREADLOG1 = 6; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1236 ITEM_ICON_THREADLOG2 = 7; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82 \82è
\81j
1237 ITEM_ICON_THREAD1 = 8; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1238 ITEM_ICON_THREAD2 = 9; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\83\8d\83O
\82È
\82µ
\81j
1239 ITEM_ICON_THREADNEW1 = 10; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1240 ITEM_ICON_THREADNEW2 = 11; //
\83X
\83\8c\83A
\83C
\83R
\83\93\81i
\90V
\92\85\81j
1241 ITEM_ICON_SORT1 = 12; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1242 ITEM_ICON_SORT2 = 13; //
\83\
\81[
\83g
\83A
\83C
\83R
\83\93
1243 ITEM_ICON_BOARD_LOG = 17; //
\83X
\83\8c\83\8d\83O
\82 \82è
\94Â
\83A
\83C
\83R
\83\93
1244 ITEM_ICON_BOARD_NEW = 18; //
\83X
\83\8c\90V
\92\85\94Â
\83A
\83C
\83R
\83\93
1246 //
\83c
\81[
\83\8b\83o
\81[
\83A
\83C
\83R
\83\93
1247 TOOL_ICON_HEIGHT_MAX = 16; //
\8d\82\82³
\8dÅ
\91å
\83A
\83C
\83R
\83\93
1248 TOOL_ICON_HEIGHT_MIN = 17; //
\8d\82\82³
\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1249 TOOL_ICON_HEIGHT_NORMAL = 18; //
\8d\82\82³
\95W
\8f\80\83A
\83C
\83R
\83\93
1250 TOOL_ICON_WIDTH_MAX = 19; //
\95\9d\8dÅ
\91å
\83A
\83C
\83R
\83\93
1251 TOOL_ICON_WIDTH_MIN = 20; //
\95\9d\8dÅ
\8f¬
\83A
\83C
\83R
\83\93
1252 TOOL_ICON_WIDTH_NORMAL = 21; //
\95\9d\95W
\8f\80\83A
\83C
\83R
\83\93
1254 TOOL_ICON_FAV_FOLDER = 30; //
\82¨
\8bC
\82É
\93ü
\82è
\83t
\83H
\83\8b\83_
\83A
\83C
\83R
\83\93
1255 TOOL_ICON_FAV_BOARD = 31; //
\82¨
\8bC
\82É
\93ü
\82è
\94Â
\83A
\83C
\83R
\83\93
1256 TOOL_ICON_FAV_THREAD = 32; //
\82¨
\8bC
\82É
\93ü
\82è
\83X
\83\8c\83A
\83C
\83R
\83\93
1258 HTML_FILE_NAME = 'temp_preview.html';
1260 WM_XBUTTONDOWN = $020B;
1261 WM_XBUTTONUP = $020C;
1262 WM_XBUTTONDBLCLK = $020D;
1265 USER_TREECLICK = WM_USER + 2000;
1266 USER_RESIZED = WM_USER + 2001;
1267 USER_MINIMIZED = WM_USER + 2002;
1268 USER_SETLINKBAR = WM_USER + 2003;
1269 USER_DOCUMENTCOMPLETE = WM_USER + 2004; ///< wParam : TWebBrowser
1270 SELECTTIME_INTERBAL = 110;
1272 BROWSER_COUNT = 5; //
\83u
\83\89\83E
\83U
\82Ì
\90\94
1275 procedure TGikoForm.CreateParams(var Params: TCreateParams);
1278 if FormStyle in [fsNormal, fsStayOnTop] then begin
1279 if BorderStyle in [bsSingle, bsSizeable] then begin
1280 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
1281 Params.WndParent := 0;
1286 procedure TGikoForm.FormCreate(Sender: TObject);
1288 TVS_NOTOOLTIPS = $0080;
1294 wp: TWindowPlacement;
1296 newbrowser: TWebBrowser;
1300 Writeln('============================================================');
1301 Writeln('
\83M
\83R
\83i
\83r
\83f
\83o
\83b
\83O
\83R
\83\93\83\
\81[
\83\8b');
1303 Writeln('
\82±
\82Ì
\89æ
\96Ê
\82ð
\95Â
\82¶
\82È
\82¢
\82Å
\82
\82¾
\82³
\82¢
\81B');
1304 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¢');
1305 Writeln('============================================================');
1308 Application.OnDeactivate := AppFormDeactivate;
1309 Self.OnDeactivate := AppFormDeactivate;
1310 Application.HookMainWindow(Hook);
1311 Application.OnMessage := HandleAppMessage; //
\82È
\82ñ
\82©
\96³
\82
\82Ä
\82à
\91å
\8fä
\95v
\82É
\82È
\82Á
\82½
\81@by
\81@
\82à
\82¶
\82ã
1312 // Self.DoubleBuffered := true;
1313 FTreeType := gttNone;
1315 FSearchDialog := nil;
1316 BrowserNullTab := TBrowserRecord.Create;
1317 BrowserNullTab.Browser := Browser;
1318 BrowserNullTab.Browser.Navigate(BLANK_HTML);
1319 FBrowsers := TList.Create;
1320 for i := 0 to BROWSER_COUNT -1 do begin
1321 FBrowsers.Add(TWebBrowser.Create(nil));
1322 newBrowser := FBrowsers[FBrowsers.Count - 1];
1323 TOleControl(newBrowser).Parent := BrowserPanel;
1324 newBrowser.Align := alNone;
1325 newBrowser.Left := 0;
1326 newBrowser.Top := 0;
1327 newBrowser.StatusBar := false;
1328 newBrowser.MenuBar := false;
1329 newBrowser.AddressBar := false;
1330 newBrowser.OnDocumentComplete := BrowserDocumentComplete;
1331 newBrowser.OnBeforeNavigate2 := BrowserBeforeNavigate2;
1332 newBrowser.OnEnter := BrowserEnter;
1333 newBrowser.OnNewWindow2 := BrowserNewWindow2;
1334 newBrowser.OnStatusTextChange := BrowserStatusTextChange;
1335 newBrowser.Navigate(BLANK_HTML);
1336 ShowWindow(newBrowser.Handle, SW_HIDE);
1339 BrowserNullTab.Browser.BringToFront;
1340 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
1342 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô
1343 FIsIgnoreResize := rtResizing;
1345 //
\8eè
\82Ì
\83J
\81[
\83\
\83\8b
1346 Screen.Cursors[5] := LoadCursor(HInstance, 'GIKOHAND');
1349 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1350 AddressHistoryDM.ReadHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
1352 EnabledCloseButton := True;
1354 //
\83\8a\83X
\83g
\83X
\83^
\83C
\83\8b
1355 ListView.ViewStyle := GikoSys.Setting.ListStyle;
1357 //
\83\81\83C
\83\93\83N
\81[
\83\8b\83o
\81[
\88Ê
\92u
1358 // MainCoolBar.Top := 0;
1359 // MainCoolBar.Left := 0;
1361 //
\83A
\83j
\83\81\83p
\83l
\83\8b\88Ê
\92u
1362 AnimePanel.Top := 0;
1363 AnimePanel.Left := 0;
1365 //
\8ae
\8eí
\89Â
\8e\8b\8fó
\91Ô
\82È
\82Ç
\90Ý
\92è
1367 //
\83L
\83\83\83r
\83l
\83b
\83g
1368 CabinetPanel.Width := GikoSys.Setting.CabinetWidth;
1370 //
\83\81\83b
\83Z
\81[
\83W
\83o
\81[
1371 MsgBarVisibleAction.Checked := GikoSys.Setting.MessageBarVisible;
1372 MsgBarVisibleActionExecute(nil);
1373 MessagePanel.Height := GikoSys.Setting.MessegeBarHeight;
1375 //
\83X
\83e
\81[
\83^
\83X
\83o
\81[
1376 StatusBarVisibleAction.Checked := GikoSys.Setting.StatusBarVisible;
1377 StatusBarVisibleActionExecute(nil);
1379 //
\83t
\83H
\83\93\83g
\81E
\90F
\90Ý
\92è
1380 TreeView.Items.BeginUpdate;
1381 FavoriteTreeView.Items.BeginUpdate;
1382 ListView.Items.BeginUpdate;
1384 TreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1385 TreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1386 TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1387 TreeView.Color := GikoSys.Setting.CabinetBackColor;
1389 FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;
1390 FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
1391 FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
1392 FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
1394 ListView.Font.Name := GikoSys.Setting.ListFontName;
1395 ListView.Font.Size := GikoSys.Setting.ListFontSize;
1396 ListView.Font.Color := GikoSys.Setting.ListFontColor;
1397 ListViewBackGroundColor := clWhite; //
\83f
\83t
\83H
\83\8b\83g
\82É
\90Ý
\92è
\82µ
\82½
\82Ì
\82¿
1398 ListViewBackGroundColor := GikoSys.Setting.ListBackColor; //
\83\86\81[
\83U
\92è
\8b`
\82É
\95Ï
\8dX
1399 FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum;
1400 FOddColor := GikoSys.Setting.OddColor;
1403 TreeView.Items.EndUpdate;
1404 FavoriteTreeView.Items.EndUpdate;
1405 ListView.Items.EndUpdate;
1407 //ViewNoButton.Down := GikoSys.Setting.ListViewNo;
1408 ListNumberVisibleAction.Checked := GikoSys.Setting.ListViewNo;
1410 //
\83u
\83\89\83E
\83U
\83^
\83u
\83t
\83H
\83\93\83g
1411 BrowserTab.Font.Name := GikoSys.Setting.BrowserTabFontName;
1412 BrowserTab.Font.Size := GikoSys.Setting.BrowserTabFontSize;
1413 FDragWFirst := false;
1414 SetContent(BrowserNullTab); //
\83u
\83\89\83E
\83U
\82ð
\8bó
\94\92\95\
\8e¦
1415 // TreeView.TopItem.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
1416 // TreeView.Selected := TreeView.Items[0]; //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
1419 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95\9c\8c³
1420 wp.length := sizeof(wp);
1421 wp.rcNormalPosition.Top := GikoSys.Setting.WindowTop;
1422 wp.rcNormalPosition.Left := GikoSys.Setting.WindowLeft;
1423 wp.rcNormalPosition.Bottom := GikoSys.Setting.WindowTop + GikoSys.Setting.WindowHeight;
1424 wp.rcNormalPosition.Right := GikoSys.Setting.WindowLeft + GikoSys.Setting.WindowWidth;
1425 wp.showCmd := SW_HIDE;
1426 SetWindowPlacement(Handle, @wp);
1428 // SetBounds(GikoSys.Setting.WindowLeft, GikoSys.Setting.WindowTop,
1429 // GikoSys.Setting.WindowWidth, GikoSys.Setting.WindowHeight);
1430 if GikoSys.Setting.WindowMax then
1431 WindowState := wsMaximized;
1433 //
\83M
\83R
\83A
\83j
\83\81
1435 FileName := GikoSys.GetAppDir + 'gikoNavi.avi';
1436 if FileExists(FileName) then
1437 Animate.FileName := FileName;
1445 //
\83X
\83\8c\91S
\95\94\95\
\8e¦
\83{
\83^
\83\93\82ð
\89\9f\82³
\82ê
\82½
\8fó
\91Ô
\82É
\82·
\82é
1446 AllItemAction.Checked := True;
1447 AllResAction.Checked := True;
1449 //TreeView
\82Ì
\8e×
\96\82\8fL
\82¢ToolTip
\82ð
\94ñ
\95\
\8e¦
1450 Style := GetWindowLong(TreeView.Handle, GWL_STYLE);
1451 Style := Style or TVS_NOTOOLTIPS;
1452 SetWindowLong(TreeView.Handle, GWL_STYLE, Style);
1454 //
\83c
\83\8a\81[
\82ð
\83\81\83C
\83\93\82¾
\82¯
\95\
\8e¦
\82É
\82µ
\82Ä
\8dÅ
\91å
\89»
1455 TreeView.Align := alClient;
1456 FavoriteTreeView.Align := alClient;
1457 FavoriteTreeView.Visible := False;
1459 //
\83u
\83\89\83E
\83U
\83T
\83C
\83Y
\95Ï
\8dX
\82Ì
\8f\89\8aú
\89»
1460 // FBrowserSizeFlag := False;
1461 // FBrowserSizeHeight := ViewPanel.Height;
1463 FBrowserSizeHeight := GikoSys.Setting.ListHeight;
1464 FBrowserSizeWidth := GikoSys.Setting.ListWidth;
1466 //
\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Æ)
1467 InitializeBoardPlugIns;
1469 //
\8f\84\89ñ
\83f
\81[
\83^
\93Ç
\82Ý
\8d\9e\82Ý
1470 RoundList := TRoundList.Create;
1471 RoundList.LoadRoundBoardFile;
1473 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\97ñ
\8b\93(ReadFavorite
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1474 GikoSys.ListBoardFile;
1476 RoundList.LoadRoundThreadFile;
1478 if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then
1479 GikoSys.ListBoardFile;
1481 //
\83\81\83j
\83\85\81[
\82É
\92Ç
\89Á
1484 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g(LoadHistory
\82æ
\82è
\82à
\90æ
\82É
\8ds
\82¤
\82±
\82Æ)
1485 FHistoryList := TList.Create;
1487 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
1490 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
1491 // FFavorite := TFavorite.Create(FavoriteTreeView);
1492 FavoriteDM.SetFavTreeView(FavoriteTreeView);
1493 FavoriteDM.ReadFavorite;
1495 ArrangeAction.Checked := not (GikoSys.Setting.ListOrientation = gloVertical);
1496 ArrangeAction.Execute;
1498 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
1499 case GikoSys.Setting.ListWidthState of
1501 ViewPanel.Width := 1;
1502 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1503 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1506 ViewPanel.Width := GikoSys.Setting.ListWidth;
1507 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1508 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
1511 ViewPanel.Width := GikoSys.Setting.ListWidth;
1512 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
1513 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
1517 case GikoSys.Setting.ListHeightState of
1519 ViewPanel.Height := 1;
1520 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1521 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1524 ViewPanel.Height := GikoSys.Setting.ListHeight;
1525 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1526 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
1529 ViewPanel.Height := GikoSys.Setting.ListHeight;
1530 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
1531 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
1536 //
\83v
\83\8d\83O
\83\8c\83X
\83o
\81[
\82Ì
\8f\89\8aú
\89»
1537 // ProgressBar.Visible := False;
1538 ProgressBar.Parent := StatusBar;
1539 ProgressBar.Top := 2;
1540 ProgressBar.Left := 0;
1541 ProgressBar.Width := StatusBar.Panels[0].Width;
1542 ProgressBar.Height := StatusBar.Height - 2;
1543 ProgressBar.Position := 0;
1545 //
\83_
\83E
\83\93\83\8d\81[
\83h
\83I
\83u
\83W
\83F
\83N
\83g
1546 FControlThread := TThreadControl.Create(True);
1547 FControlThread.MaxThreadCount := 1;
1548 FControlThread.Resume;
1549 FControlThread.OnDownloadEnd := DownloadEnd;
1550 FControlThread.OnDownloadMsg := DownloadMsg;
1551 FControlThread.OnWork := Work;
1552 FControlThread.OnWorkBegin := WorkBegin;
1553 FControlThread.OnWorkEnd := WorkEnd;
1554 // ProgressPanel.Width := FControlThread.MaxThreadCount * 12;
1556 //
\8di
\8d\9e\8c\9f\8dõ
\97\9a\97ð
1557 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
1559 //
\83u
\83\89\83E
\83U
\83^
\83u
\90Ý
\92è
1562 BrowserBoardNameLabel.Caption := '';
1563 BrowserNameLabel.Caption := '';
1566 FTabHintIndex := -1;
1568 //
\83\8a\83\93\83N
\83o
\81[
1571 //
\83\81\83j
\83\85\81[
\83t
\83H
\83\93\83g
1574 //
\83c
\81[
\83\8b\83o
\81[Wrapable
1575 ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable;
1576 BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable;
1578 KeepDefaultToolButton(StdToolBar, TmpToolBar);
1579 KeepDefaultToolButton(ListToolBar, TmpToolBar);
1580 KeepDefaultToolButton(BrowserToolBar, TmpToolBar);
1582 MakeDefaultINIFile();
1583 //
\83c
\81[
\83\8b\83{
\83^
\83\93\93Ç
\82Ý
\8d\9e\82Ý
1584 ReadToolBarSetting(ActionList, StdToolBar);
1585 ReadToolBarSetting(ActionList, ListToolBar);
1587 for i := ListToolBar.ControlCount - 1 downto 0 do
1589 if ListToolBar.Controls[ i ].Action = SelectItemAction then
1591 //
\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·
1592 if (i + 1) < ListToolBar.ControlCount then
1593 if ListToolBar.Controls[ i + 1 ] is TToolButton then
1594 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
1595 ListToolBar.Controls[ i + 1 ].Visible := False;
1597 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
1598 ListToolBar.Controls[ i ].Visible := False;
1599 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
1600 SelectComboBox.Parent := ListToolBar;
1601 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
1602 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
1603 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
1604 SelectComboBoxSplitter.Parent := ListToolBar;
1605 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
1612 ReadToolBarSetting(ActionList, BrowserToolBar);
1615 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1616 FResRangeMenuSelect := GikoSys.ResRange;
1617 case GikoSys.ResRange of
1620 AllResAction.Execute;
1624 SelectComboBox.Text := SelectComboBox.Items[ 1 ];
1625 SelectResAction.Checked := True;
1628 // ResRangeAction.Execute;
1629 case FResRangeMenuSelect of
1630 Ord( grrKoko ): OnlyKokoResAction.Checked := True;
1631 Ord( grrNew ): OnlyNewResAction.Checked := True;
1632 100: OnlyAHundredResAction.Checked := True;
1636 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\95\
\8e¦
\94Í
\88Í
1637 // ThreadRangeAction.Execute;
1638 case GikoSys.Setting.ThreadRange of
1641 AllItemAction.Checked := True;
1646 LogItemAction.Checked := True;
1651 NewItemAction.Checked := True;
1656 //
\83A
\83h
\83\8c\83X
\83o
\81[
1657 AddressComboBox.TabStop := GikoSys.Setting.AddressBarTabStop;
1659 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³
\82ÍFormShow
\82É
\88Ú
\93®
\82µ
\82½
1661 //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\82ª
\96³
\82¢
\8fê
\8d\87\82Í
\83\81\83b
\83Z
\81[
\83W
\95\
\8e¦
1662 if not FileExists(GikoSys.GetBoardFileName) then begin
1663 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
1664 + '
\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
1665 + '
\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';
1666 MsgBox(SplashWindow.Handle, msg, '
\83M
\83R
\83i
\83r', MB_OK or MB_ICONINFORMATION);
1667 NewBoardAction.Execute;
1670 //
\83L
\81[
\90Ý
\92è
\93Ç
\82Ý
\8d\9e\82Ý
1671 GikoSys.LoadKeySetting(ActionList);
1673 //
\8dÅ
\8fI
\8f\84\89ñ
\8e\9e\8aÔ
1674 // FLastRoundTime := 0;
1677 FHint := TResPopup.Create(Self);
1679 //
\8dÅ
\8cã
\82É
\91I
\91ð
\82³
\82ê
\82½
\83L
\83\83\83r
\83l
\83b
\83g
\82Ì
\95\9c\8c³
1680 CabinetVisible( False );
1681 if GikoSys.Setting.CabinetVisible then begin
1682 i := CabinetSelectPopupMenu.Items.Count - 1;
1683 if GikoSys.Setting.CabinetIndex = i - 1 then
1684 CabinetHistoryAction.Execute
1685 else if GikoSys.Setting.CabinetIndex = i then
1686 CabinetFavoriteAction.Execute
1688 if GikoSys.Setting.CabinetIndex < Length( BBSs ) then
1689 ShowBBSTree( BBSs[ GikoSys.Setting.CabinetIndex ] );
1690 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 2
1691 FIsIgnoreResize := rtResizing;
1692 CabinetBBSAction.Execute;
1695 ShowBBSTreeOld( BBSs[ 0 ] );
1696 PostMessage( Handle, USER_TREECLICK, 0, 0 );
1699 //
\8bN
\93®
\8e\9e\82É
\95Û
\91¶
\82³
\82ê
\82Ä
\82µ
\82Ü
\82¤
\91Î
\8dô 3
1700 FIsIgnoreResize := rtResizing;
1702 //
\83I
\81[
\83g
\83\8d\83O
\83C
\83\93
1703 if GikoSys.Setting.AutoLogin then
1704 LoginAction.Execute;
1706 //
\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
1707 for i := 1 to ParamCount do begin
1708 MoveToURL(ParamStr(i));
1713 s := GikoSys.FAbon.NGwordname;
1714 StatusBar.Panels[2].Text := s;
1715 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
1716 StatusBarResize(Sender);
1718 dummy1.Caption := ItemReservPMenu.Caption;
1719 dummy1.Hint := ItemReservPMenu.Hint;
1721 //Samba24
\82Ì
\83t
\83@
\83C
\83\8b\83`
\83F
\83b
\83N
1722 GikoSys.SambaFileExists();
1724 //
\82É
\82¿
\82á
\82ñ
\8cê
\83t
\83@
\83C
\83\8b\93Ç
\82Ý
\8fo
\82µ
1727 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82É
\95Û
\91¶
1728 procedure TGikoForm.SaveCoolBarSettings;
1734 if IsIconic( Handle ) or (FIsIgnoreResize <> rtNone) then
1737 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Main)
1738 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
1739 CoolSet.FCoolID := MainCoolBar.Bands[i].ID;
1740 CoolSet.FCoolWidth := MainCoolBar.Bands[i].Width;
1741 CoolSet.FCoolBreak := MainCoolBar.Bands[i].Break;
1742 GikoSys.Setting.MainCoolSet[i] := CoolSet;
1744 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Board)
1745 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
1746 CoolSet.FCoolID := ListCoolBar.Bands[i].ID;
1747 CoolSet.FCoolWidth := ListCoolBar.Bands[i].Width;
1748 CoolSet.FCoolBreak := ListCoolBar.Bands[i].Break;
1749 GikoSys.Setting.ListCoolSet[i] := CoolSet;
1751 //
\83N
\81[
\83\8b\83o
\81[
\95Û
\91¶(Browser)
1752 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
1753 CoolSet.FCoolID := BrowserCoolBar.Bands[i].ID;
1754 CoolSet.FCoolWidth := BrowserCoolBar.Bands[i].Width;
1755 CoolSet.FCoolBreak := BrowserCoolBar.Bands[i].Break;
1756 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
1761 // CoolBar
\82Ì
\90Ý
\92è
\82ð
\95Ï
\90\94\82©
\82ç
\95\9c\8c³
1762 procedure TGikoForm.LoadCoolBarSettings;
1768 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Main)
1769 MainCoolBar.Bands.BeginUpdate;
1771 // for i := 0 to MainCoolBar.Bands.Count - 1 do begin
1772 for i := MAIN_COOLBAND_COUNT - 1 downto 0 do begin
1773 CoolSet := GikoSys.Setting.MainCoolSet[i];
1774 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1775 FIsIgnoreResize := rtNone;
1776 SaveCoolBarSettings;
1779 MainCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1780 MainCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1781 MainCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1784 MainCoolBar.Bands.EndUpdate;
1787 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Board)
1788 ListCoolBar.Bands.BeginUpdate;
1790 // for i := 0 to ListCoolBar.Bands.Count - 1 do begin
1791 for i := LIST_COOLBAND_COUNT - 1 downto 0 do begin
1792 CoolSet := GikoSys.Setting.ListCoolSet[i];
1793 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1794 FIsIgnoreResize := rtNone;
1795 SaveCoolBarSettings;
1798 ListCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1799 ListCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1800 ListCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1803 ListCoolBar.Bands.EndUpdate;
1806 //
\83N
\81[
\83\8b\83o
\81[
\95\9c\8c³(Browser)
1807 BrowserCoolBar.Bands.BeginUpdate;
1809 // for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
1810 for i := BROWSER_COOLBAND_COUNT - 1 downto 0 do begin
1811 CoolSet := GikoSys.Setting.BrowserCoolSet[i];
1812 if (CoolSet.FCoolID = -1) or (CoolSet.FCoolWidth = -1) then begin
1813 FIsIgnoreResize := rtNone;
1814 SaveCoolBarSettings;
1817 BrowserCoolBar.Bands.FindItemID(CoolSet.FCoolID).Index := i;
1818 BrowserCoolBar.Bands[i].Break := CoolSet.FCoolBreak;
1819 BrowserCoolBar.Bands[i].Width := CoolSet.FCoolWidth;
1822 BrowserCoolBar.Bands.EndUpdate;
1830 procedure TGikoForm.FormShow(Sender: TObject);
1832 if not FStartUp then begin
1833 ShowWindow(Application.Handle, SW_HIDE);
1835 //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½
1836 //
\83c
\81[
\83\8b\83o
\81[
\95\
\8e¦
1837 StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
1838 StdToolBarVisibleActionExecute( nil );
1839 AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
1840 AddressBarVisibleActionExecute( nil );
1841 LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
1842 LinkBarVisibleActionExecute( nil );
1843 ListToolBarVisibleAction.Checked := GikoSys.Setting.ListToolBarVisible;
1844 ListToolBarVisibleActionExecute( nil );
1845 ListNameBarVisibleAction.Checked := GikoSys.Setting.ListNameBarVisible;
1846 ListNameBarVisibleActionExecute( nil );
1847 BrowserToolBarVisibleAction.Checked := GikoSys.Setting.BrowserToolBarVisible;
1848 BrowserToolBarVisibleActionExecute( nil );
1849 BrowserNameBarVisibleAction.Checked := GikoSys.Setting.BrowserNameBarVisible;
1850 BrowserNameBarVisibleActionExecute( nil );
1852 //
\83u
\83\89\83E
\83U
\83^
\83u
1853 BrowserTabVisibleAction.Checked := GikoSys.Setting.BrowserTabVisible;
1854 BrowserTabVisibleActionExecute(nil);
1856 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
1857 BrowserTabTopAction.Checked := True;
1858 BrowserTabTopActionExecute(nil);
1860 BrowserTabBottomAction.Checked := True;
1861 BrowserTabBottomActionExecute(nil);
1864 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
1865 BrowserTabTabStyleAction.Checked := True;
1866 BrowserTabTabStyleActionExecute(nil);
1867 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
1868 BrowserTabButtonStyleAction.Checked := True;
1869 BrowserTabButtonStyleActionExecute(nil);
1871 BrowserTabFlatStyleAction.Checked := True;
1872 BrowserTabFlatStyleActionExecute(nil);
1875 // ListView
\82Ì
\83w
\83b
\83_
\83h
\83\89\83b
\83O
1876 // ListView.FullDrag := True;
1878 // CoolBar
\95\9c\8c³
1879 LoadCoolBarSettings;
1881 FIsIgnoreResize := rtNone;
1884 //FormCrete
\82©
\82ç
\88Ú
\93®
\81B
1885 if GikoSys.Setting.TabAutoLoadSave then begin
1886 TabAutoLoadAction.Execute;
1888 //
\82É
\82¿
\82á
\82ñ
\8cê
\88Ä
\93à
\83T
\83|
\81[
\83g
\8b@
\94\
1889 if GikoSys.Setting.GengoSupport then begin
1898 procedure TGikoForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
1900 // if GikoForm.WindowState <> wsMinimized then
1901 // SaveCoolBarSettings;
1902 if ( GikoSys.Setting.ShowDialogForEnd ) and
1903 (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
1908 if GikoSys.Setting.TabAutoLoadSave then begin
1909 TabAutoSaveAction.Execute;
1912 //Application.HookMainWindow(Hook);
1913 Application.UnhookMainWindow(Hook);
1914 Application.Terminate;
1917 procedure TGikoForm.FormDestroy(Sender: TObject);
1920 // CoolSet: TCoolSet;
1921 wp : TWindowPlacement;
1924 // Application.OnDeactivate := nil;
1925 // Self.OnDeactivate := nil;
1927 ActiveListColumnSave;
1931 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
1932 wp.length := sizeof(wp);
1933 GetWindowPlacement(Handle, @wp);
1934 GikoSys.Setting.WindowTop := wp.rcNormalPosition.Top;
1935 GikoSys.Setting.WindowLeft := wp.rcNormalPosition.Left;
1936 GikoSys.Setting.WindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
1937 GikoSys.Setting.WindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
1938 GikoSys.Setting.WindowMax := WindowState = wsMaximized;
1940 GikoSys.Setting.ListStyle := ListView.ViewStyle;
1941 GikoSys.Setting.CabinetVisible := CabinetVisibleAction.Checked;
1942 GikoSys.Setting.CabinetWidth := CabinetPanel.Width;
1943 GikoSys.Setting.ListHeight := FBrowserSizeHeight;
1944 GikoSys.Setting.ListWidth := FBrowserSizeWidth;
1945 if ArrangeAction.Checked then
1946 GikoSys.Setting.ListOrientation := gloVertical
1948 GikoSys.Setting.ListOrientation := gloHorizontal;
1949 GikoSys.Setting.MessegeBarHeight := MessagePanel.Height;
1954 //
\83\8c\83X
\95\
\8e¦
\94Í
\88Í
1955 if not GikoSys.Setting.ResRangeHold then
1956 GikoSys.Setting.ResRange := FResRangeMenuSelect;
1960 //
\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è
1961 //
\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¢
1963 //
\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
1965 if GikoForm.WindowState <> wsMinimized then
1966 SaveCoolBarSettings;
1969 GikoSys.Setting.WriteWindowSettingFile;
1970 GikoSys.Setting.WriteNameMailSettingFile;
1974 //
\82¨
\8bC
\82É
\93ü
\82è
\95Û
\91¶
1976 //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é
1977 FavoriteDM.WriteFavorite;
1983 //
\83^
\83u
\83N
\83\8d\81[
\83Y
1984 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
1985 GikoSys.Setting.ShowDialogForAllTabClose := false;
1986 AllTabCloseAction.Execute;
1987 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
1991 LockWindowUpdate(Self.Handle);
1992 for i := FBrowsers.Count - 1 downto 0 do begin
1993 TWebBrowser(FBrowsers[i]).Free;
1996 FBrowsers.Capacity := 0;
2001 if BrowserNullTab <> nil then begin
2002 BrowserNullTab.Browser := nil; {*BrowserNullTab
\82ÌBrowser
\82Í
\90Ý
\8cv
\8e\9e\82É
\93\
\82è
\95t
\82¯
\82Ä
\82é
\93z
2003 *
\82È
\82Ì
\82Å
\82±
\82±
\82ÅFree
\82³
\82ê
\82é
\82Æ
\8d¢
\82é
\82Ì
\82Å
\82Í
\82¸
\82µ
\82Ä
\82µ
\82Ü
\82¤
\81B
2005 BrowserNullTab.Free;
2009 LockWindowUpdate(0);
2011 TreeView.Items.BeginUpdate;
2012 TreeView.Items.GetFirstNode.Free;
2013 TreeView.Items.Clear;
2014 TreeView.Items.EndUpdate;
2018 //
\83A
\83h
\83\8c\83X
\97\9a\97ð
\95Û
\91¶
2020 //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
2021 AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount);
2025 //
\83q
\83X
\83g
\83\8a\83\8a\83X
\83g
\95Û
\91¶
2039 //
\8f\84\89ñ
\83\8a\83X
\83g
\95Û
\91¶&
\94j
\8aü
2041 RoundList.SaveRoundFile;
2055 FControlThread.Terminate;
2056 FControlThread.WaitFor;
2060 FControlThread.Free;
2063 // TBBS
\82Í
\95Û
\8e\9d\82µ
\82Ä
\82¢
\82é TCategory, TBoard, TThreadItem
\82·
\82×
\82Ä
\82ð
\8aJ
\95ú
\82·
\82é
2064 // 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Å
2065 // BoardPluteIns
\82Ì
\8aJ
\95ú
\82æ
\82è
\90æ
\82É
\8ds
\82¤
\82±
\82Æ
2067 for i := Length( BBSs ) - 1 downto 0 do begin
2068 if BBSs[ i ] <> nil then
2076 for i := Length( BoardPlugIns ) - 1 downto 0 do begin
2077 if BoardPlugIns[ i ] <> nil then
2078 BoardPlugIns[ i ].Free;
2079 BoardPlugIns[ i ] := nil;
2085 if FEvent <> nil then
2089 if FHint <> nil then begin
2090 FHint.ReleaseHandle;
2095 if TPreviewBrowser <> nil then begin
2096 FPreviewBrowser.Free;
2097 FPreviewBrowser := nil;
2104 //
\83L
\83\83\83r
\83l
\83b
\83g
\81~
\83{
\83^
\83\93\83N
\83\8a\83b
\83N
2105 procedure TGikoForm.CabinetPanelHide(Sender: TObject);
2107 CabinetVisibleAction.Execute;
2108 // CabinetPanelVisible(false);
2111 //
\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
2112 procedure TGikoForm.SetBBSMenu;
2115 item : TBBSMenuItem;
2118 //
\83\81\83j
\83\85\81[
\82ð
\8dí
\8f\9c
2119 for i := CabinetSelectPopupMenu.Items.Count - 1 downto 0 do begin
2121 if CabinetSelectPopupMenu.Items[ i ] is TBBSMenuItem then begin
2122 CabinetSelectPopupMenu.Items[ i ].Free;
2123 CabinetMenu.Items[ i ].Free;
2124 BBSSelectPopupMenu.Items[ i ].Free;
2130 //
\83\81\83j
\83\85\81[
\82ð
\90Ý
\92è
2131 for i := Length( BBSs ) - 1 downto 0 do begin
2133 item := TBBSMenuItem.Create( PopupMenu );
2134 item.Caption := BBSs[ i ].Title;
2135 item.Data := BBSs[ i ];
2136 item.OnClick := BBSMenuItemOnClick;
2137 CabinetSelectPopupMenu.Items.Insert( 0, item );
2138 item := TBBSMenuItem.Create( PopupMenu );
2139 item.Caption := BBSs[ i ].Title;
2140 item.Data := BBSs[ i ];
2141 item.OnClick := BBSMenuItemOnClick;
2142 CabinetMenu.Insert( 0, item );
2143 item := TBBSMenuItem.Create( PopupMenu );
2144 item.Caption := BBSs[ i ].Title;
2145 item.Data := BBSs[ i ];
2146 item.OnClick := BBSMenuItemOnClick;
2147 BBSSelectPopupMenu.Items.Insert( 0, Item );
2154 procedure TGikoForm.ReloadBBS;
2159 //
\83^
\83u
\83N
\83\8d\81[
\83Y
2160 tmpBool := GikoSys.Setting.ShowDialogForAllTabClose;
2161 GikoSys.Setting.ShowDialogForAllTabClose := false;
2162 AllTabCloseAction.Execute;
2163 GikoSys.Setting.ShowDialogForAllTabClose := tmpBool;
2165 SetContent(BrowserNullTab);
2166 //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
2167 TreeView.Items.Clear;
2171 for i := Length( BBSs ) - 1 downto 0 do begin
2172 if BBSs[ i ] <> nil then
2181 FTreeType := gttNone;
2183 GikoSys.ListBoardFile; //
\83{
\81[
\83h
\83t
\83@
\83C
\83\8b\93Ç
\8d\9e
2185 // BBS
\83\81\83j
\83\85\81[
\82Ì
\8dX
\90V
2188 ShowBBSTree( BBSs[ 0 ] );
2190 //
\97\9a\97ð
\93Ç
\82Ý
\8d\9e\82Ý
2195 //
\82¨
\8bC
\82É
\93ü
\82è
\93Ç
\82Ý
\8d\9e\82Ý
2196 FavoriteDM.WriteFavorite;
2198 FavoriteDM.ReadFavorite;
2204 //
\83{
\81[
\83h
\83c
\83\8a\81[
\90Ý
\92è
2205 procedure TGikoForm.SetBoardTreeNode(
2211 CategoryNode: TTreeNode;
2212 BoardNode: TTreeNode;
2213 Category: TCategory;
2216 //
\94Â
\83\8a\83X
\83g
\82Ì
\90Ý
\92è
2217 FActiveBBS := inBBS;
2218 TreeView.Items.BeginUpdate;
2219 TreeView.Items.Clear;
2221 if not inBBS.IsBoardFileRead then
2222 GikoSys.ReadBoardFile( inBBS );
2224 if SplashWindow <> nil then
2225 SplashWindow.ProgressBar.Max := inBBS.Count;
2229 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2230 if ( GikoSys.Setting.BBSSortIndex <> 0 ) or ( GikoSys.Setting.BBSSortOrder <> true ) then begin
2231 Sort.SortOrder := true;
2232 Sort.SortIndex := 0;
2233 Sort.SortNoFlag := true;
2234 inBBS.Sort(CategorySortProc);
2237 Root := TreeView.Items.Add( nil, inBBS.Title );
2238 Root.ImageIndex := ITEM_ICON_2CH1;
2239 Root.SelectedIndex := ITEM_ICON_2CH2;
2241 for i := inBBS.Count - 1 downto 0 do begin
2242 Category := TCategory(inBBS.Items[i]);
2243 CategoryNode := TreeView.Items.AddChildFirst(Root, Category.Title);
2244 CategoryNode.Data := Category;
2245 CategoryNode.ImageIndex := ITEM_ICON_CATEGORY1;
2246 CategoryNode.SelectedIndex := ITEM_ICON_CATEGORY2;
2248 //
\83L
\83\83\83r
\83l
\83b
\83g
\95\
\8e¦
\91O
\82É
\8dÄ
\83\
\81[
\83g
2249 if ( GikoSys.Setting.CategorySortIndex <> 0 ) or ( GikoSys.Setting.CategorySortOrder <> true ) then begin
2250 Sort.SortOrder := true;
2251 Sort.SortIndex := 0;
2252 Sort.SortNoFlag := true;
2253 Category.CustomSort(BoardSortProc);
2256 for j := Category.Count - 1 downto 0 do begin
2257 Board := TBoard(Category.Items[j]);
2259 BoardNode := TreeView.Items.AddChildFirst(CategoryNode, Board.Title);
2260 BoardNode.Data := Board;
2261 //if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then begin
2262 if not Board.IsLogFile then begin
2263 BoardNode.ImageIndex := ITEM_ICON_BOARD_NOSUBJECT;
2264 BoardNode.SelectedIndex := ITEM_ICON_BOARD_NOSUBJECT;
2266 BoardNode.ImageIndex := ITEM_ICON_BOARD1;
2267 BoardNode.SelectedIndex := ITEM_ICON_BOARD2;
2268 for k := 0 to Board.Count - 1 do begin
2269 if Board.Items[ k ].IsLogFile then begin
2270 BoardNode.ImageIndex := ITEM_ICON_BOARD_LOG;
2271 BoardNode.SelectedIndex := ITEM_ICON_BOARD_LOG;
2280 CategoryNode.Expanded := Category.NodeExpand;
2282 if SplashWindow <> nil then begin
2283 SplashWindow.ProgressBar.StepIt;
2284 Application.ProcessMessages;
2288 TreeView.Items.EndUpdate;
2292 function TGikoForm.SetCategoryListItem(ABBS2ch: TBBS): Integer;
2294 TitleColumn : TListColumn;
2295 ListColumn : TListColumn;
2296 i, id, idx : Integer;
2298 ListView.Items.BeginUpdate;
2300 Screen.Cursor := crHourGlass;
2302 ListView.Columns.Clear;
2303 TitleColumn := ListView.Columns.Add;
2304 TitleColumn.Caption := GikoBBSColumnCaption[ Ord( gbbscTitle ) ];
2305 TitleColumn.Width := GikoSys.Setting.BBSColumnWidth[ Ord( gbbscTitle ) ];
2307 for i := 0 to GikoSys.Setting.BBSColumnOrder.Count - 1 do begin
2308 if GikoSys.Setting.BBSColumnOrder[ i ] = gbbscTitle then begin
2309 TitleColumn.Tag := i;
2312 id := Ord( GikoSys.Setting.BBSColumnOrder[ i ] );
2313 if (Integer( Low( TGikoBBSColumnID ) ) <= id) and
2314 (id <= Integer( High( TGikoBBSColumnID ) )) then begin
2315 ListColumn := ListView.Columns.Add;
2316 // ListColumn.Tag := id;
2317 ListColumn.Tag := i;
2318 ListColumn.Caption := GikoBBSColumnCaption[ id ];
2319 ListColumn.Width := GikoSys.Setting.BBSColumnWidth[ id ];
2323 TitleColumn.Index := idx;
2325 ListView.Items.Count := 0;
2326 ListView.Items.Clear;
2327 ListView.Items.Count := ABBS2ch.Count;
2329 // UpFolderAction.Enabled := False;
2330 // AllItemAction.Enabled := False;
2331 // LogItemAction.Enabled := False;
2332 // NewItemAction.Enabled := False;
2333 // SelectItemAction.Enabled := False;
2334 // ListDownloadToolButton.Enabled := False;
2335 // BoardReservToolButton.Enabled := False;
2336 // ListThreadDownloadToolButton.Enabled := False;
2338 ListNameLabel.Caption := ABBS2ch.Title;
2339 FolderImage.Picture := nil;
2340 ItemIcon16.GetBitmap(1, FolderImage.Picture.Bitmap);
2342 FSortIndex := GikoSys.Setting.BBSSortIndex;
2343 FSortOrder := GikoSys.Setting.BBSSortOrder;
2344 for i := ListView.Columns.Count - 1 downto 0 do begin
2345 idx := ListView.Column[ i ].Tag;
2346 if FSortIndex = Ord( GikoSys.Setting.BBSColumnOrder[ idx ] ) then
2347 ListViewSort( nil, ListView.Column[ i ] );
2350 Result := ABBS2ch.Count;
2352 Screen.Cursor := crDefault;
2353 ListView.Items.EndUpdate;
2357 function TGikoForm.SetBoardListItem(Category: TCategory): Integer;
2359 TitleColumn : TListColumn;
2360 ListColumn : TListColumn;
2361 i, id, idx : Integer;
2363 ListView.Items.BeginUpdate;
2365 Screen.Cursor := crHourGlass;
2367 ListView.Columns.Clear;
2368 TitleColumn := ListView.Columns.Add;
2369 TitleColumn.Caption := GikoCategoryColumnCaption[ Ord( gccTitle ) ];
2370 TitleColumn.Width := GikoSys.Setting.CategoryColumnWidth[ Ord( gccTitle ) ];
2372 for i := 0 to GikoSys.Setting.CategoryColumnOrder.Count - 1 do begin
2373 if GikoSys.Setting.CategoryColumnOrder[ i ] = gccTitle then begin
2374 TitleColumn.Tag := i;
2377 id := Ord( GikoSys.Setting.CategoryColumnOrder[ i ] );
2378 if (Integer( Low( TGikoCategoryColumnID ) ) <= id) and
2379 (id <= Integer( High( TGikoCategoryColumnID ) )) then begin
2380 ListColumn := ListView.Columns.Add;
2381 // ListColumn.Tag := id;
2382 ListColumn.Tag := i;
2383 ListColumn.Caption := GikoCategoryColumnCaption[ id ];
2384 ListColumn.Width := GikoSys.Setting.CategoryColumnWidth[ id ];
2388 TitleColumn.Index := idx;
2390 ListView.Items.Count := 0;
2391 ListView.Items.Clear;
2392 ListView.Items.Count := Category.Count;
2394 // UpFolderAction.Enabled := True;
2395 // AllItemAction.Enabled := False;
2396 // LogItemAction.Enabled := False;
2397 // NewItemAction.Enabled := False;
2398 // SelectItemAction.Enabled := False;
2399 // ListDownloadToolButton.Enabled := False;
2400 // BoardReservToolButton.Enabled := False;
2401 // ListThreadDownloadToolButton.Enabled := False;
2403 ListNameLabel.Caption := Category.Title;
2404 FolderImage.Picture := nil;
2405 ItemIcon16.GetBitmap(3, FolderImage.Picture.Bitmap);
2407 FSortIndex := GikoSys.Setting.CategorySortIndex;
2408 FSortOrder := GikoSys.Setting.CategorySortOrder;
2409 for i := ListView.Columns.Count - 1 downto 0 do begin
2410 idx := ListView.Column[ i ].Tag;
2411 if FSortIndex = Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] ) then
2412 ListViewSort( nil, ListView.Column[ i ] );
2415 Result := Category.Count;
2417 Screen.Cursor := crDefault;
2418 ListView.Items.EndUpdate;
2422 function TGikoForm.SetThreadListItem(Board: TBoard): Integer;
2424 TitleColumn : TListColumn;
2425 ListColumn : TListColumn;
2426 i, id, idx : Integer;
2428 ListView.Items.BeginUpdate;
2430 Screen.Cursor := crHourGlass;
2433 //
\83`
\83\89\82Â
\82«
\96h
\8e~
\82Ì
\82½
\82ß
\81A
\95Ï
\8dX
\82³
\82ê
\82Ä
\82¢
\82é
\8fê
\8d\87\82Ì
\82Ý
2434 //
\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Ó
2435 if ListView.Columns.Count <> GikoSys.Setting.BoardColumnOrder.Count then
2438 ListView.Columns.Clear;
2439 TitleColumn := ListView.Columns.Add;
2440 TitleColumn.Caption := GikoBoardColumnCaption[ Ord( gbcTitle ) ];
2441 TitleColumn.Width := GikoSys.Setting.BoardColumnWidth[ Ord( gbcTitle ) ];
2443 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2444 if GikoSys.Setting.BoardColumnOrder[ i ] = gbcTitle then begin
2445 TitleColumn.Tag := i;
2448 id := Ord( GikoSys.Setting.BoardColumnOrder[ i ] );
2449 if (Integer( Low( TGikoBoardColumnID ) ) <= id) and
2450 (id <= Integer( High( TGikoBoardColumnID ) )) then begin
2451 ListColumn := ListView.Columns.Add;
2452 ListColumn.Caption := GikoBoardColumnCaption[ id ];
2453 // ListColumn.Tag := id;
2454 ListColumn.Tag := i;
2455 ListColumn.Width := GikoSys.Setting.BoardColumnWidth[ id ];
2456 ListColumn.Alignment := GikoBoardColumnAlignment[ id ];
2460 TitleColumn.Index := idx;
2463 ListView.Items.Count := 0;
2464 ListView.Items.Clear;
2466 case GikoForm.ViewType of
2467 gvtAll: ListView.Items.Count := Board.Count;
2468 gvtLog: ListView.Items.Count := Board.GetLogThreadCount;
2469 gvtNew: ListView.Items.Count := Board.GetNewThreadCount;
2470 gvtUser: ListView.Items.Count := Board.GetUserThreadCount;
2473 ListNameLabel.Caption := Board.Title;
2474 FolderImage.Picture := nil;
2475 ItemIcon16.GetBitmap(5, FolderImage.Picture.Bitmap);
2477 FSortIndex := GikoSys.Setting.BoardSortIndex;
2478 FSortOrder := GikoSys.Setting.BoardSortOrder;
2479 for i := ListView.Columns.Count - 1 downto 0 do begin
2480 idx := ListView.Column[ i ].Tag;
2481 if FSortIndex = Ord( GikoSys.Setting.BoardColumnOrder[ idx ] ) then
2482 ListViewSort( nil, ListView.Column[ i ] );
2485 Result := Board.Count;
2487 Screen.Cursor := crDefault;
2488 ListView.Items.EndUpdate;
2492 procedure TGikoForm.ListViewData(Sender: TObject; Item: TListItem);
2494 // FileName: string;
2495 // DateTime: TDateTime;
2498 Category: TCategory;
2500 ThreadItem: TThreadItem;
2502 ActivListObj : TObject;
2505 ActivListObj := ActiveList;
2506 if ActivListObj is TBBS then begin
2507 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
2508 BBS := TBBS(ActivListObj);
2510 ListView.StateImages := nil;
2512 if BBS = nil then Exit;
2513 if BBS.Count <= 0 then Exit;
2514 if Item = nil then Exit;
2515 if Item.Index >= BBS.Count then Exit;
2516 if ListView.Items.Count = 0 then Exit;
2518 if not (BBS.Items[Item.index] is TCategory) then Exit;
2519 Category := TCategory(BBS.Items[Item.index]);
2521 if Category = nil then Exit;
2523 if ListNumberVisibleAction.Checked then
2524 Item.Caption := IntToStr(Category.No) + ': ' + Category.Title
2526 Item.Caption := Category.Title;
2528 Item.ImageIndex := ITEM_ICON_CATEGORY1;
2529 Item.Data := Category;
2531 end else if ActivListObj is TCategory then begin
2533 //=====
\94Â
\83\8a\83X
\83g =====
2534 Category := TCategory(ActivListObj);
2536 ListView.StateImages := nil;
2538 if Category = nil then Exit;
2539 if Category.Count <= 0 then Exit;
2540 if Item = nil then Exit;
2541 if Item.Index >= Category.Count then Exit;
2542 if ListView.Items.Count = 0 then Exit;
2544 if not (Category.Items[Item.Index] is TBoard) then Exit;
2545 Board := TBoard(Category.Items[Item.Index]);
2547 if Board = nil then Exit;
2549 if ListNumberVisibleAction.Checked then
2550 Item.Caption := IntToStr(Board.No) + ': ' + Board.Title
2552 Item.Caption := Board.Title;
2554 if Item.SubItems.Count <> ListView.Columns.Count then begin
2555 Item.SubItems.Clear;
2556 for i := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 1 do
2557 Item.SubItems.Add('');
2560 Item.ImageIndex := ITEM_ICON_BOARD1;
2563 for i := 0 to ListView.Columns.Count - 1 do begin
2564 if GikoSys.Setting.CategoryColumnOrder.Count <= i then
2566 // case TGikoCategoryColumnID( ListView.Column[ i ].Tag ) of
2567 case GikoSys.Setting.CategoryColumnOrder[ i ] of
2569 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2574 Item.SubItems[ idx ] := Board.RoundName // '
\97\
\96ñ'
2576 Item.SubItems[ idx ] := '';
2579 if Board.RoundDate = ZERO_DATE then begin
2580 Item.SubItems[ idx ] := '';
2582 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', Board.RoundDate);
2589 end else if ActivListObj is TBoard then begin
2591 //=====
\83X
\83\8c\83\8a\83X
\83g =====
2592 Board := TBoard(ActivListObj);
2594 if GikoSys.Setting.ListIconVisible then
2595 ListView.StateImages := StateIconImageList
2597 ListView.StateImages := nil;
2599 case GikoForm.ViewType of
2600 gvtAll: BoardCnt := Board.Count;
2601 gvtLog: BoardCnt := Board.GetLogThreadCount;
2602 gvtNew: BoardCnt := Board.GetNewThreadCount;
2603 gvtUser: BoardCnt := Board.GetUserThreadCount;
2608 // if Board = nil then Exit;
2609 if BoardCnt <= 0 then Exit;
2610 if Item = nil then Exit;
2611 if Item.Index > BoardCnt then Exit;
2612 if ListView.Items.Count = 0 then Exit;
2614 // if not (Board.Items[Item.Index] is TThreadItem) then Exit;
2617 case GikoForm.ViewType of
2618 gvtAll: if Item.Index >= Board.Count then Exit else
2619 ThreadItem := TThreadItem(Board.Items[Item.Index]);
2620 gvtLog: ThreadItem := Board.GetLogThread(Item.Index);
2621 gvtNew: ThreadItem := Board.GetNewThread(Item.Index);
2622 gvtUser: ThreadItem := Board.GetUserThread(Item.Index);
2625 if ThreadItem = nil then Exit;
2627 // if ListNumberVisibleAction.Checked then
2628 // RepStr := IntToStr(ThreadItem.No) + ': ' + ThreadItem.Title
2630 RepStr := ThreadItem.Title;
2631 RepStr := CustomStringReplace(RepStr, '<', '<' );
2632 RepStr := CustomStringReplace(RepStr, '>', '>' );
2633 RepStr := CustomStringReplace(RepStr, '"', '"' );
2634 RepStr := CustomStringReplace(RepStr, '&', '&' );
2635 //RepStr := StringReplace(RepStr, '
\81\97\81M', ',', [rfReplaceAll]);
2637 if Item.SubItems.Count <> ListView.Columns.Count then begin
2638 Item.SubItems.Clear;
2639 for i := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 1 do
2640 Item.SubItems.Add('');
2643 if ListNumberVisibleAction.Checked then
2644 Item.Caption := IntToStr(ThreadItem.No) + ': ' + RepStr
2646 Item.Caption := RepStr;
2648 case ThreadItem.AgeSage of
2649 gasNone: Item.StateIndex := -1;
2650 gasNew: Item.StateIndex := 0;
2651 gasAge: Item.StateIndex := 1;
2652 gasSage: Item.StateIndex := 2;
2655 if ThreadItem.IsLogFile then begin
2657 for i := 0 to ListView.Columns.Count - 1 do begin
2658 if GikoSys.Setting.BoardColumnOrder.Count <= i then
2660 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2661 case GikoSys.Setting.BoardColumnOrder[ i ] of
2663 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2667 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2670 Item.SubItems[ idx ] := IntToStr(ThreadItem.Count);
2673 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount - ThreadItem.Count);
2676 if ThreadItem.NewResCount = 0 then
2677 Item.SubItems[ idx ] := ''
2679 Item.SubItems[ idx ] := IntToStr(ThreadItem.NewResCount);
2682 Item.SubItems[ idx ] := '';
2685 if ThreadItem.Round then
2686 Item.SubItems[ idx ] := ThreadItem.RoundName
2688 Item.SubItems[ idx ] := '';
2690 gbcRoundDate://gbcLastModified:
2691 if (ThreadItem.RoundDate = ZERO_DATE) then begin
2692 Item.SubItems[ idx ] := '';
2694 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.RoundDate);
2697 if ThreadItem.CreateDate = ZERO_DATE then begin
2698 Item.SubItems[ idx ] := '';
2700 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2703 if (ThreadItem.LastModified = ZERO_DATE) then begin
2704 Item.SubItems[ idx ] := '';
2706 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.LastModified);
2713 if ThreadItem.NewArrival then
2714 Item.ImageIndex := ITEM_ICON_THREADNEW1
2716 Item.ImageIndex := ITEM_ICON_THREADLOG1;
2719 for i := 0 to GikoSys.Setting.BoardColumnOrder.Count - 1 do begin
2720 // case TGikoBoardColumnID( ListView.Column[ i ].Tag ) of
2721 case GikoSys.Setting.BoardColumnOrder[ i ] of
2723 // Item.Caption
\82Í SubItems
\82É
\8aÜ
\82Ü
\82ê
\96³
\82¢
\82Ì
\82Å
2727 Item.SubItems[ idx ] := IntToStr(ThreadItem.AllResCount);
2729 gbcRoundDate://gbcLastModified:
2730 Item.SubItems[ idx ] := '';
2733 if ThreadItem.CreateDate = ZERO_DATE then begin
2734 Item.SubItems[ idx ] := '';
2736 Item.SubItems[ idx ] := FormatDateTime('yyyy/mm/dd hh:mm:ss', ThreadItem.CreateDate);
2739 Item.SubItems[ idx ] := '';
2742 Item.SubItems[ idx ] := '';
2747 if ThreadItem.NewArrival then
2748 Item.ImageIndex := ITEM_ICON_THREADNEW1
2750 Item.ImageIndex := ITEM_ICON_THREAD1;
2753 Item.Data := ThreadItem;
2758 procedure TGikoForm.ListViewDataFind(Sender: TObject; Find: TItemFind;
2759 const FindString: String; const FindPosition: TPoint; FindData: Pointer;
2760 StartIndex: Integer; Direction: TSearchDirection; Wrap: Boolean;
2761 var Index: Integer);
2767 procedure TGikoForm.ListViewDataHint(Sender: TObject; StartIndex,
2773 procedure TGikoForm.ListViewDataStateChange(Sender: TObject; StartIndex,
2774 EndIndex: Integer; OldState, NewState: TItemStates);
2779 procedure TGikoForm.BrowserStatusTextChange(Sender: TObject; const Text: WideString);
2787 threadItem : TThreadItem;
2789 Protocol, Host, Path, Document, Port, Bookmark: string;
2794 ActiveFileName: string;
2800 if not( TObject(Sender) is TWebBrowser )then
2804 if (TWebBrowser(Sender) <> nil) and (not TWebBrowser(Sender).Busy) and (Assigned(TWebBrowser(Sender).Document)) then begin
2805 if LowerCase(OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset) <> 'shift_jis' then begin
2806 OleVariant(IHTMLDocument2(TWebBrowser(Sender).Document)).charset := 'shift_jis';
2813 if PreviewTimer.Enabled then
2814 PreviewTimer.Enabled := False;
2815 Application.CancelHint;
2817 if GetActiveContent <> nil then
2818 ActiveFileName := ChangeFileExt(ExtractFileName(GetActiveContent.FileName), '')
2820 ActiveFileName := '';
2822 FActiveContent := nil;
2826 StatusBar.Panels[1].Text := Text;
2828 if FHint <> nil then begin
2829 FHint.ReleaseHandle;
2832 if FPreviewBrowser <> nil then
2833 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2835 if not GikoSys.Setting.UnActivePopup then
2836 if not GikoForm.Active then
2839 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10
2840 //file:///C:/Borland/Projects/gikoNavi/test/read.cgi/qa/990576336/10-15
2843 Ext := AnsiLowerCase(ExtractFileExt(Text));
2844 if (Pos('http://', Text) = 1) and (GikoSys.Setting.PreviewVisible) and
2845 ((Ext = '.jpg') or (Ext = '.jpeg') or (Ext = '.gif') or (Ext = '.png')) then begin
2846 if FPreviewBrowser = nil then begin
2847 FPreviewBrowser := TPreviewBrowser.Create(Self);
2848 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
2849 TOleControl(FPreviewBrowser).Parent := nil;
2851 FPreviewBrowser.Navigate(BLANK_HTML);//
\91O
\89ñ
\82Ì
\83v
\83\8c\83r
\83\85\81[
\89æ
\91\9c\8fÁ
\8b\8e\97p
2852 FPreviewURL := Text;
2853 PreviewTimer.Interval := GikoSys.Setting.PreviewWait;
2854 PreviewTimer.Enabled := True;
2855 end else if (Pos('about:blank', Text) = 1) or (Pos('http://', Text) = 1) or (Pos('mailto:', Text) = 1) then begin
2856 if Pos('mailto:', Text) = 1 then begin
2857 s := StringReplace(Text, 'mailto:', '', [rfIgnoreCase]);
2858 //
\83M
\83R
\83i
\83r
\83X
\83\8c \83p
\81[
\83g3
\82Ì466
\8e\81\82É
\8a´
\8eÓ
2860 p.x := p.x - TWebBrowser(Sender).ClientOrigin.x;
2861 p.y := p.y - TWebBrowser(Sender).ClientOrigin.y;
2862 e := IHTMLDocument2(TWebBrowser(Sender).Document).elementFromPoint(p.x, p.y);
2863 if (Assigned(e)) then begin
2864 tmp2 := ZenToHan(e.Get_outerText);
2865 if (GikoSys.IsNumeric(tmp2)) then begin
2866 //
\82\93\82Í
\83\8c\83X
\94Ô
\8d\86\82Á
\82Û
\82¢
\82Á
\82·
\81B
2867 wkIntSt := StrToInt(tmp2);
2868 wkIntTo := StrToInt(tmp2);
2869 //s := GetThreadText(wkBBS, wkKey, wkIntSt, wkIntTo, False, False);
2870 FHint.PopupType := gptThread;
2871 SetResPopupText(GetActiveContent, wkIntSt, wkIntTo, False, False);
2873 FHint.PopupType := gptRaw;
2878 threadItem := GetActiveContent;
2879 if Pos('about:blank..', Text) = 1 then begin
2880 wkInt := LastDelimiter( '/', threadItem.URL );
2881 if Pos( '?', Copy( threadItem.URL, wkInt, MaxInt ) ) = 0 then
2882 URL := Copy( threadItem.URL, 1, LastDelimiter( '/', threadItem.URL ) ) +
2883 Copy( Text, LastDelimiter( '/', Text ) + 1, MaxInt )
2885 URL := Copy( threadItem.URL, 1, LastDelimiter( '?', threadItem.URL ) ) +
2886 Copy( Text, LastDelimiter( '?', Text ) + 1, MaxInt )
2891 PathRec := Gikosys.Parse2chURL2(URL);
2892 if (PathRec.FNoParam) then begin
2896 Gikosys.GetPopupResNumber(URL,PathRec.FSt,PathRec.FTo);
2897 GikoSys.ParseURI( URL, Protocol, Host, Path, Document, Port, Bookmark );
2899 if PathRec.FDone or (not GikoSys.Is2chHost( Host )) then begin
2901 URL := GikoSys.GetBrowsableThreadURL( URL );
2902 wkIntSt := PathRec.FSt;
2903 wkIntTo := PathRec.FTo;
2905 if (wkIntSt = 0) and (wkIntTo = 0) then begin
2908 end else if (wkIntSt = 0) and (wkIntTo > 0) then begin
2910 end else if (wkIntSt > 0) and (wkIntTo = 0) then begin
2912 end else if wkIntSt > wkIntTo then begin
2917 //if wkIntSt = 0 then
2919 //if wkINtTo = 0 then
2921 //if PathRec.FFirst then
2923 if PathRec.FStBegin then
2925 if PathRec.FToEnd then
2928 //ATitle := ActiveFileName <> PathRec.FKey;
2929 if (FActiveContent <> nil) and (FActiveContent.Thread.URL = URL) then
2934 threadItem := BBSsFindThreadFromURL( URL );
2936 if (threadItem = nil) and GikoSys.Is2chHost( Host ) then begin
2937 board := BBSs[ 0 ].FindBBSID( PathRec.FBBS );
2938 if board <> nil then begin
2939 if not board.IsThreadDatRead then
2940 GikoSys.ReadSubjectFile( board );
2941 threadItem := board.FindThreadFromFileName( PathRec.FKey + '.dat' );
2945 if threadItem <> nil then begin
2946 //HintData := GetThreadText(PathRec.FBBS, PathRec.FKey, wkIntSt, wkIntTo, ATitle, PathRec.FFirst);
2947 FHint.PopupType := gptThread;
2948 SetResPopupText( threadItem, wkIntSt, wkIntTo, ATitle, PathRec.FFirst );
2954 // ShowTextPopup(s);
2955 if FHint.PopupType = gptRaw then begin
2956 if FHint.Caption <> '' then
2959 if (FHint.ResCount <> 0) or (FHint.Title <> '') then
2965 procedure TGikoForm.SetEnabledCloseButton(Enabled: Boolean);
2968 //SysMenuApp: HMenu;
2970 FEnabledCloseButton := Enabled;
2971 SysMenu := GetSystemMenu(Handle, False);
2972 //SysMenuApp := GetSystemMenu(Application.Handle, False);
2974 if Enabled then begin
2975 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2976 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
2978 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2979 //EnableMenuItem(SysMenuApp, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
2982 DrawMenuBar(Handle);
2983 //DrawMenuBar(Application.Handle);
2986 procedure TGikoForm.TreeViewChanging(Sender: TObject; Node: TTreeNode;
2987 var AllowChange: Boolean);
2989 //
\83\
\81[
\83g
\8f\87\82ð
\95Û
\91¶
\82·
\82é
\82æ
\82¤
\82É
\82µ
\82½
\82Ì
\82Å
\8dí
\8f\9c
2990 // if FTreeType = gtt2ch then
2991 // FSortIndex := -1;
2994 procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word;
2995 Shift: TShiftState);
2999 if GetActiveList is TBoard then begin
3001 VK_BACK:; // UpFolderButtonClick(Sender);
3002 VK_SPACE: ListDoubleClick(Shift);
3003 VK_RETURN: ListClick;
3006 if ListView.Selected <> nil then begin
3007 pos.X := ListView.Column[ 0 ].Width;
3008 pos.Y := ListView.Selected.Top;
3010 pos.X := ListView.Left;
3011 pos.Y := ListView.Top;
3013 Windows.ClientToScreen( ListView.Handle, pos );
3014 ListPopupMenu.Popup( pos.X, pos.Y );
3017 end else begin // TBBS, TCategory
3019 VK_BACK:; // UpFolderButtonClick(Sender);
3020 VK_SPACE: ListClick;
3021 VK_RETURN: ListDoubleClick(Shift);
3024 if ListView.Selected <> nil then begin
3025 pos.X := ListView.Column[ 0 ].Width;
3026 pos.Y := ListView.Selected.Top;
3028 pos.X := ListView.Left;
3029 pos.Y := ListView.Top;
3031 Windows.ClientToScreen( ListView.Handle, pos );
3032 ListPopupMenu.Popup( pos.X, pos.Y );
3038 function TGikoForm.GetHttpState: Boolean;
3040 Result := FHttpState;
3044 \brief ListView
\82Ì Column
\82ð
\90^
\82Ì
\83J
\83\89\83\80\82É
\95Ï
\8a·
3046 Delphi 6 Personal
\82Å
\82Ì ListView
\82Å
\82Í ListViewColumnClick
\83C
\83x
\83\93\83g
\82Å
3047 \90³
\82µ
\82¢
\83J
\83\89\83\80\82ª
\93n
\82³
\82ê
\82È
\82¢
\82½
\82ß
\81A
\90³
\82µ
\82¢
\83J
\83\89\83\80\82É
\95Ï
\8a·
\82µ
\82Ü
\82·
\81B
3049 function TGikoForm.ActiveListTrueColumn( column : TListColumn ) : TListColumn;
3057 //
\90³
\82µ
\82
\95Ï
\8a·
\82·
\82é
\95û
\96@
\82ª
\95ª
\82©
\82ç
\82È
\82¢
\82Ì
\82Å
\95Û
\97¯
3063 if TObject( FActiveList ) is TBBS then
3064 orderList := GikoSys.Setting.BBSColumnOrder
3065 else if TObject( FActiveList ) is TCategory then
3066 orderList := GikoSys.Setting.CategoryColumnOrder
3067 else if TObject( FActiveList ) is TBoard then
3068 orderList := GikoSys.Setting.BoardColumnOrder
3074 for i := 0 to ListView.Columns.Count - 1 do begin
3075 if Integer( orderList[ ListView.Column[ i ].Tag ] ) = 0 then begin
3077 Result := ListView.Column[ i ]
3078 else if idx <= i then
3079 Result := ListView.Column[ idx - 1 ];
3087 procedure TGikoForm.ListViewColumnClick(Sender: TObject;
3088 Column: TListColumn);
3093 idx := ActiveListTrueColumn( Column ).Tag;
3095 if TObject( FActiveList ) is TBBS then
3096 orderList := GikoSys.Setting.BBSColumnOrder
3097 else if TObject( FActiveList ) is TCategory then
3098 orderList := GikoSys.Setting.CategoryColumnOrder
3099 else if TObject( FActiveList ) is TBoard then
3100 orderList := GikoSys.Setting.BoardColumnOrder
3104 id := Integer( orderList[ idx ] );
3106 if FSortIndex = id then
3107 FSortOrder := not FSortOrder
3109 FSortOrder := False;
3111 ListViewSort(Sender, Column);
3114 procedure TGikoForm.ListViewSort(Sender: TObject; Column: TListColumn);
3116 i, id, idx : Integer;
3119 wkCategory: TCategory;
3122 idx := ActiveListTrueColumn( Column ).Tag;
3124 for i := 0 to ListView.Columns.Count - 1 do begin
3125 ListView.Column[i].ImageIndex := -1;
3129 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT1
3131 ListView.Column[ idx ].ImageIndex := ITEM_ICON_SORT2;
3133 Sort.SortNoFlag := ListNumberVisibleAction.Checked;
3135 //if TObject(TreeView.Selected.Data) is TBBS then begin
3136 if TObject( FActiveList ) is TBBS then begin
3137 //wkBBS := TBBS(TreeView.Selected.Data);
3138 wkBBS := TBBS( FActiveList );
3139 orderList := GikoSys.Setting.BBSColumnOrder;
3140 id := Integer( orderList[ idx ] );
3141 Sort.SortOrder := FSortOrder;
3142 Sort.SortIndex := id;
3143 GikoSys.Setting.BBSSortIndex := id;
3144 GikoSys.Setting.BBSSortOrder := FSortOrder;
3145 wkBBS.Sort(CategorySortProc);
3146 //end else if TObject(TreeView.Selected.Data) is TCategory then begin
3147 end else if TObject( FActiveList ) is TCategory then begin
3148 //wkCategory := TCategory(TreeView.Selected.Data);
3149 wkCategory := TCategory( FActiveList );
3150 orderList := GikoSys.Setting.CategoryColumnOrder;
3151 id := Integer( orderList[ idx ] );
3152 Sort.SortOrder := FSortOrder;
3153 Sort.SortIndex := id;
3154 GikoSys.Setting.CategorySortIndex := id;
3155 GikoSys.Setting.CategorySortOrder := FSortOrder;
3156 wkCategory.CustomSort(BoardSortProc);
3157 //end else if TObject(TreeView.Selected.Data) is TBoard then begin
3158 end else if TObject( FActiveList ) is TBoard then begin
3159 //wkBoard := TBoard(TreeView.Selected.Data);
3160 wkBoard := TBoard( FActiveList );
3161 orderList := GikoSys.Setting.BoardColumnOrder;
3162 id := Integer( orderList[ idx ] );
3163 Sort.SortOrder := FSortOrder;
3164 Sort.SortIndex := id;
3165 GikoSys.Setting.BoardSortIndex := id;
3166 GikoSys.Setting.BoardSortOrder := FSortOrder;
3167 wkBoard.CustomSort(ThreadItemSortProc);
3176 procedure TGikoForm.MenuToolBarCustomDrawButton(Sender: TToolBar;
3177 Button: TToolButton; State: TCustomDrawState; var DefaultDraw: Boolean);
3181 DefaultDraw := True;
3183 DefaultDraw := False;
3184 if (cdsSelected in State) or (cdsHot in State) then begin
3185 Sender.Canvas.Brush.Color := clHighlight;
3186 Sender.Canvas.Font.Color := clHighlightText;
3188 Sender.Canvas.Brush.Color := clBtnFace;
3189 Sender.Canvas.Font.Color := clBtnText;
3191 ARect := Rect(Button.Left, Button.Top, Button.Left + Button.Width, Button.Top + Button.Height);
3192 Sender.Canvas.FillRect(ARect);
3193 DrawText(Sender.Canvas.Handle, PChar(Button.Caption), -1, ARect, DT_SINGLELINE or DT_VCENTER or DT_CENTER);
3196 function TGikoForm.GetTreeNode(Data: TObject): TTreeNode;
3201 Nodes := TreeView.Items;
3203 for i := 0 to Nodes.Count - 1 do begin
3204 if Nodes.Item[i].Data = Data then begin
3205 Result := Nodes.Item[i];
3212 procedure TGikoForm.BrowserBeforeNavigate2(Sender: TObject;
3213 const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
3214 Headers: OleVariant; var Cancel: WordBool);
3219 kMenuName: string = 'menu:';
3222 if Pos(kMenuName, URL) <> 0 then begin
3223 sNo := Copy( URL, Pos( kMenuName, URL ) + Length( kMenuName ), Length( URL ) );
3225 if not GikoSys.IsNumeric(sNo) then Exit;
3229 KokoPopupMenu.Tag := StrToInt(sNo);
3230 KokoPopupMenu.Popup(p.x, p.y);
3231 end else if Pos('mailto', LowerCase(URL)) <> 0 then begin
3232 Cancel := not GikoSys.Setting.OpenMailer;
3237 procedure TGikoForm.ListViewAdvancedCustomDrawItem(Sender: TCustomListView;
3238 Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
3239 var DefaultDraw: Boolean);
3241 ThreadItem: TThreadItem;
3243 // TListView(Sender).Canvas.Font.Style := [];
3244 if TObject(Item.Data) is TThreadItem then begin
3245 ThreadItem := TThreadItem(Item.Data);
3246 if ( FUseOddResOddColor ) and ( ThreadItem.Count <> 0 ) and ( ThreadItem.AllResCount <> ThreadItem.Count) then begin
3247 ListView.Canvas.Brush.Color := FOddColor;
3249 ListView.Canvas.Brush.Color := FListViewBackGroundColor;
3251 // if (ThreadItem.Kokomade <> ThreadItem.Count) and (ThreadItem.IsLogFile) then
3252 if ThreadItem.UnRead then
3253 TListView(Sender).Canvas.Font.Style := [fsBold];
3257 procedure TGikoForm.AppFormDeactivate(Sender: TObject);
3259 Application.ProcessMessages;
3260 if Application.Terminated then
3262 if PreviewTimer.Enabled then
3263 PreviewTimer.Enabled := False;
3264 //
\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
3265 if FHint <> nil then begin
3266 FHint.ReleaseHandle;
3271 if FPreviewBrowser <> nil then
3272 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
3276 procedure TGikoForm.TreeViewCustomDraw(Sender: TCustomTreeView;
3277 const ARect: TRect; var DefaultDraw: Boolean);
3281 IsBoardNode: Boolean;
3287 Category: TCategory;
3291 DefaultDraw := True;
3293 if FTreeType = gttHistory then Exit;
3295 TreeView.Canvas.Font.Color := clBlue;
3296 IsBoardNode := False;
3297 for i := 0 to TreeView.Items.Count - 1 do begin
3299 if not TreeView.Items[i].IsVisible then
3302 if TObject(TreeView.Items[i].Data) is TCategory then begin
3303 if TreeView.Items[i].Expanded then
3306 IsBoardNode := False;
3307 Category := TCategory(TreeView.Items[i].Data);
3308 for j := 0 to Category.Count - 1 do begin
3309 Board := Category.Items[j];
3310 if Board <> nil then begin
3311 if Board.UnRead > 0 then begin
3319 end else if TObject(TreeView.Items[i].Data) is TBoard then begin
3320 IsBoardNode := True;
3321 Board := TBoard(TreeView.Items[i].Data);
3322 Cnt := Board.UnRead;
3328 Bitmap := TBitmap.Create;
3330 Bitmap.Canvas.Font.Assign(TreeView.Canvas.Font);
3331 Bitmap.Canvas.Font.Style := [fsBold];
3332 NodeWidth := Bitmap.Canvas.TextWidth(TreeView.Items[i].Text);
3337 NodeRect := TreeView.Items[i].DisplayRect(True);
3340 CntText := '(' + IntToStr(Cnt) + ')'
3341 else if Cnt = 1 then
3345 TextWidth := TreeView.Canvas.TextWidth(CntText);
3347 TextRect := Rect(NodeRect.Left + NodeWidth + 8,
3349 NodeRect.Left + NodeWidth + TextWidth + 8,
3351 DrawText(TreeView.Canvas.Handle,
3355 DT_SINGLELINE or DT_VCENTER);
3357 TreeViewCustomDrawItem(nil, nil, [], DefaultDraw);
3360 procedure TGikoForm.TreeViewCustomDrawItem(Sender: TCustomTreeView;
3361 Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
3364 Category: TCategory;
3367 DefaultDraw := True;
3369 if FTreeType = gttHistory then Exit;
3371 TreeView.Canvas.Font.Style := [];
3372 if Node <> nil then begin
3373 if TObject(Node.Data) is TCategory then begin
3374 Category := TCategory(Node.Data);
3375 for i := 0 to Category.Count - 1 do begin
3376 Board := Category.Items[i];
3377 if Board <> nil then begin
3378 if Board.UnRead > 0 then begin
3379 TreeView.Canvas.Font.Style := [fsBold];
3384 end else if TObject(Node.Data) is TBoard then begin
3385 Board := TBoard(Node.Data);
3386 if Board.UnRead > 0 then
3387 TreeView.Canvas.Font.Style := [fsBold];
3392 procedure TGikoForm.TreeViewExpanded(Sender: TObject; Node: TTreeNode);
3394 TreeView.Invalidate;
3396 if TObject(Node.Data) is TBBS then begin
3397 TBBS(Node.Data).NodeExpand := True;
3398 end else if TObject(Node.Data) is TCategory then begin
3399 TCategory(Node.Data).NodeExpand := True;
3400 end else if TObject(Node.Data) is TBoard then begin
3401 TBoard(Node.Data).NodeExpand := True;
3405 {procedure TGikoForm.CabinetPanelVisible(PanelVisible: Boolean);
3407 TreeSplitter.Visible := PanelVisible;
3408 CabinetPanel.Visible := PanelVisible;
3409 CabinetToolButton.Down := PanelVisible;
3412 procedure TGikoForm.ListViewAllSelect;
3418 procedure TGikoForm.TreeViewDblClick(Sender: TObject);
3423 GetCursorPos(APoint);
3424 APoint := TreeView.ScreenToClient(APoint);
3425 HitTest := TreeView.GetHitTestInfoAt(APoint.x, APoint.y);
3426 if not (htOnLabel in HitTest) then Exit;
3428 TreeDoubleClick( TreeView.Selected );
3431 procedure TGikoForm.DownloadMsg(Sender: TObject; Item: TDownloadItem; Msg: string; Icon: TGikoMessageIcon);
3433 AddMessageList(Msg, nil, Icon);
3436 procedure TGikoForm.DownloadEnd(Sender: TObject; Item: TDownloadItem);
3440 boardPlugIn : TBoardPlugIn;
3442 browserRec : TBrowserRecord;
3445 if Item.DownType = gdtBoard then
3446 ATitle := Item.Board.Title
3448 ATitle := Item.ThreadItem.Title;
3450 ATitle := '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j';
3452 if Item.State in [gdsComplete, gdsDiffComplete] then begin
3454 if Item.DownType = gdtBoard then begin
3457 AddMessageList(ATitle + ' [
\83X
\83\8c\88ê
\97\97\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3458 if GetActiveList = Item.Board then begin
3460 SetActiveList(Item.Board);
3462 Item.Board.Modified := True;
3463 Item.Board.IsThreadDatRead := True;
3465 end else if Item.DownType = gdtThread then begin
3468 Item.ThreadItem.NewArrival := True;
3469 if (Item.ThreadItem.IsBoardPlugInAvailable) and (Item.ThreadItem.Title = '') then begin
3470 boardPlugIn := Item.ThreadItem.BoardPlugIn;
3471 Item.ThreadItem.Title := GikoSys.DivideStrLine(boardPlugIn.GetDat( DWORD( Item.ThreadItem ), 1 )).FTitle;
3472 ATitle := Item.ThreadItem.Title;
3473 end else if ATitle = '
\81i
\96¼
\8fÌ
\95s
\96¾
\81j' then begin
3474 ATitle := GikoSys.DivideStrLine(GikoSys.ReadThreadFile(Item.ThreadItem.GetThreadFileName, 1)).FTitle;
3476 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3477 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = Item.ThreadItem then begin
3478 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3482 if GikoSys.Setting.BrowserTabVisible then begin
3483 if GetActiveContent = Item.ThreadItem then
3484 browserRec := InsertBrowserTab(Item.ThreadItem)
3485 else if (ListView.Selected <> nil ) and ( TObject(ListView.Selected.Data) is TThreadItem ) and ( Item.ThreadItem = TThreadItem(ListView.Selected.Data)) then
3486 browserRec := InsertBrowserTab(Item.ThreadItem, True)
3488 browserRec := InsertBrowserTab(Item.ThreadItem, False);
3489 if browserRec.Thread = BrowserNullTab.Thread then begin
3490 browserRec.Movement := BrowserNullTab.Movement;
3491 BrowserNullTab.Movement := '';
3494 if (GetActiveContent = Item.ThreadItem) or (FActiveContent = nil) or(FActiveContent.Browser = BrowserNullTab.Browser) then
3495 InsertBrowserTab(Item.ThreadItem);
3497 Application.ProcessMessages;
3498 if Item.State = gdsComplete then begin
3500 AddMessageList(ATitle + ' [
\83X
\83\8c\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3502 PlaySound('NewDiff');
3503 AddMessageList(ATitle + ' [
\83X
\83\8c\8d·
\95ª
\8eæ
\93¾
\8a®
\97¹]', nil, gmiOK);
3506 //
\8f\84\89ñ
\82 \82è
\82Ì
\8fê
\8d\87\81\95\82P
\82O
\82O
\82O
\92´
\82Í
\8f\84\89ñ
\8dí
\8f\9c
3507 if (Item.ThreadItem.Round) and (Item.ThreadItem.Count > 1000) then begin
3508 Item.ThreadItem.Round := False;
3509 Item.ThreadItem.RoundName := '';
3510 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);
3516 end else if Item.State = gdsNotModify then begin
3518 { if (Item.DownType = gdtThread) and (AddHistory(Item.ThreadItem)) then begin
3519 //SetContent(Item.ThreadItem);
3520 InsertBrowserTab(Item.ThreadItem);
3522 AddMessageList(ATitle + ' [
\96¢
\8dX
\90V]', nil, gmiSAD);
3523 PlaySound('NoChange');
3524 Screen.Cursor := crDefault;
3525 end else if Item.State = gdsAbort then begin
3527 AddMessageList(ATitle + ' [
\92\86\92f]', nil, gmiSAD);
3528 end else if Item.State = gdsError then begin
3533 AddMessageList(ATitle + ' [
\83G
\83\89\81[(' + IntToStr(Item.ResponseCode) + s + ')]', nil, gmiNG);
3534 // if Item.ResponseCode = 302 then
3535 // 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);
3541 if FWorkCount < 0 then FWorkCount := 0;
3542 if FWorkCount = 0 then begin
3544 Animate.Active := False;
3546 Screen.Cursor := crDefault;
3553 procedure TGikoForm.WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer; Number: Integer; const AWorkTitle: string);
3555 // SetProgressValue(Number, 0, AWorkCountMax);
3556 // ProgressBar.Visible := True;
3557 ProgressBar.Position := 0;
3558 ProgressBar.Max := AWorkCountMax;
3559 FDownloadTitle := AWorkTitle;
3560 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8aJ
\8en
\82µ
\82Ü
\82·';
3561 FDownloadMax := AWorkCountMax;
3564 procedure TGikoForm.WorkEnd(Sender: TObject; AWorkMode: TWorkMode; Number: Integer);
3566 ProgressBar.Position := 0;
3567 if FDownloadMax <> 0 then
3568 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8a®
\97¹
\82µ
\82Ü
\82µ
\82½';
3571 procedure TGikoForm.Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer; Number: Integer);
3573 ProgressBar.Position := AWorkCount;
3574 // SetProgressValue(Number, AWorkCount);
3575 StatusBar.Panels[1].Text := FDownloadTitle + ' -
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86 (' + IntToStr(AWorkCount) + '/' + IntToStr(FDownloadMax) + ')';
3579 procedure TGikoForm.SetProgressValue(Number: Integer; Value: Integer; Max: Integer = -1);
3581 Component: TComponent;
3583 Component := FindComponent('ProgressBar' + IntToStr(Number + 1));
3584 if Component <> nil then begin
3585 if not (Component is TProgressBar) then Exit;
3587 TProgressBar(Component).Max := Max;
3588 TProgressBar(Component).Position := Value;
3593 procedure TGikoForm.AddMessageList(ACaption: string; AObject: TObject; Icon: TGikoMessageIcon);
3595 ListItem: TListItem;
3597 MessageListView.Items.BeginUpdate;
3599 ListItem := MessageListView.Items.Add;
3600 ListItem.Caption := ACaption;
3601 ListItem.Data := AObject;
3602 ListItem.MakeVisible(False);
3604 gmiOK: ListItem.ImageIndex := 0;
3605 gmiSAD: ListItem.ImageIndex := 1;
3606 gmiNG: ListItem.ImageIndex := 2;
3607 gmiWhat: ListItem.ImageIndex := 3;
3610 MessageListView.Items.EndUpdate;
3614 {procedure TGikoForm.BrowserTabChange(Sender: TObject);
3617 ThreadItem: TThreadItem;
3619 ThreadItem := GetActiveContent;
3620 if ThreadItem <> nil then begin
3621 SetContent(ThreadItem);
3625 function TGikoForm.InsertBrowserTab(
3626 ThreadItem : TThreadItem;
3627 ActiveTab : Boolean = True
3630 i, j, idx : Integer;
3631 favItem : TFavoriteThreadItem;
3632 newBrowser : TBrowserRecord;
3636 if Threaditem = nil then Exit;
3638 if ThreadItem.IsLogFile then begin
3639 //
\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é
3640 //
\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é
3641 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil) and
3642 (FActiveContent.FBrowser <> BrowserNullTab.Browser)then begin
3643 j := FBrowsers.IndexOf(FActiveContent.FBrowser);
3644 if j = BROWSER_COUNT - 1 then
3645 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3647 favItem := TFavoriteThreadItem.Create(ThreadItem.URL, ThreadItem.Title );
3648 if not AddHistory( favItem ) then
3651 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
3652 if TObject(BrowserTab.Tabs.Objects[i]) is TBrowserRecord then begin
3653 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
3654 Result := TBrowserRecord( BrowserTab.Tabs.Objects[j] );
3655 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = nil then begin
3656 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3657 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3658 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3659 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3660 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3661 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3666 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3667 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
3668 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3670 if ActiveTab then begin
3671 BrowserTab.TabIndex := i;
3672 BrowserTab.OnChange(nil);
3679 idx := BrowserTab.TabIndex;
3680 if GikoSys.Setting.BrowserTabAppend = gtaFirst then begin
3681 newBrowser := TBrowserRecord.Create;
3682 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3683 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3684 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3685 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3686 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3687 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3692 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3693 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3694 //newBrowser.Browser.Navigate(BLANK_HTML);
3695 newBrowser.thread := ThreadItem;
3696 newBrowser.Repaint := true;
3697 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3699 BrowserTab.Tabs.InsertObject(0, GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3700 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3701 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 1 ] ) );
3705 if ActiveTab then begin
3706 BrowserTab.TabIndex := 0;
3710 newBrowser := TBrowserRecord.Create;
3711 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
3712 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3713 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FBrowser := nil;
3714 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
3715 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
3716 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
3721 newBrowser.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3722 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3723 //newBrowser.Browser.Navigate(BLANK_HTML);
3724 newBrowser.thread := ThreadItem;
3725 // newBrowser.OnlyHundred := GikoSys.OnlyAHundredRes;
3726 newBrowser.Repaint := true;
3728 i := BrowserTab.Tabs.AddObject(GikoSys.GetShortName(ThreadItem.Title, 20), newBrowser);
3729 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 1) then begin
3730 DeleteTab( TBrowserRecord( BrowserTab.Tabs.Objects[ 0 ] ) );
3734 if ActiveTab then begin
3735 if (not GikoSys.Setting.BrowserTabVisible) and (BrowserTab.Tabs.Count > 0) then
3736 BrowserTab.TabIndex := 0
3738 BrowserTab.TabIndex := i;
3741 Result := newBrowser;
3742 if(ActiveTab) or (idx = -1) then begin
3743 BrowserTab.OnChange(nil);
3746 if BrowserNullTab = nil then begin
3747 BrowserNullTab := TBrowserRecord.Create;
3748 BrowserNullTab.Browser := Browser;
3750 BrowserNullTab.thread := ThreadItem;
3751 Result := BrowserNullTab;
3752 BrowserTab.TabIndex := -1;
3753 SetContent(BrowserNullTab);
3756 if GikoSys.Setting.URLDisplay then
3757 AddressComboBox.Text := ThreadItem.URL;
3761 procedure TGikoForm.SetContent(inThread : TBrowserRecord);
3766 // HtmlName: string;
3769 // OldCursor: TCursor;
3772 ThreadItem: TThreadItem;
3773 Thread: TBrowserRecord;
3774 ThreadTitle, ThreadPTitle: string;
3775 ThreadScrollTop: Integer;
3776 ThreadIsLog, ThreadUnRead, ThreadNewArraical: boolean;
3778 // AddMessageList('SetContent', nil, gmiWhat);
3780 idx := BrowserTab.TabIndex;
3781 if (FActiveContent <> nil) and
3782 (FActiveContent.Thread <> Thread.Thread) and
3783 (Assigned(FActiveContent.Browser.Document)) then begin
3787 //Application.ProcessMessages;
3788 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document).Body).ScrollTop;
3789 //if FActiveContent.Browser <> BrowserNullTab.Browser then
3790 // TOleControl(FActiveContent.Browser).Visible := false;
3793 MsgBox(Handle, E.Message, 'SetContent[<-ScrollTop]', 0);
3798 if not (Assigned(Thread)) or (Thread.Thread = nil) then begin
3799 Thread.Browser.Navigate(BLANK_HTML);
3800 BrowserBoardNameLabel.Caption := '';
3801 ItemBoardImage.Picture := nil;
3802 BrowserNameLabel.Caption := '';
3803 ItemImage.Picture := nil;
3804 BrowserNullTab.Thread := nil;
3805 //TOleControl(BrowserNullTab.Browser).Visible := true;
3806 ShowWindow(BrowserNullTab.Browser.Handle, SW_SHOW);
3807 FActiveContent := nil;
3809 end else if Thread.Browser = nil then begin
3810 if FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then
3811 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3812 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
3813 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
3814 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FBrowser := nil;
3815 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
3816 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
3817 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
3822 Thread.Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
3823 FBrowsers.Move(BROWSER_COUNT - 1, 0);
3825 ThreadTitle := Thread.Thread.Title;
3826 ThreadPTitle := Thread.Thread.ParentBoard.Title;
3827 ThreadScrollTop := Thread.Thread.ScrollTop;
3828 ThreadIsLog := Thread.Thread.IsLogFile;
3829 ThreadItem := Thread.Thread;
3830 ThreadNewArraical := Thread.Thread.NewArrival;
3831 ThreadUnRead := Thread.Thread.UnRead;
3832 BBSID := ThreadItem.ParentBoard.BBSID;
3833 FileName := ThreadItem.FileName;
3835 if GetCapture = ListView.Handle then
3838 Screen.Cursor := crHourGlass;
3842 if ThreadItem.UnRead then begin
3843 ThreadItem.ParentBoard.UnRead := ThreadItem.ParentBoard.UnRead - 1;
3844 if ThreadItem.ParentBoard.UnRead < 0 then ThreadItem.ParentBoard.UnRead := 0;
3847 if(FActiveContent <> nil) and (FActiveContent <> Thread) then begin
3848 if (FActiveContent.Browser <> BrowserNullTab.Browser) then
3849 ShowWindow(FActiveContent.Browser.Handle, SW_HIDE);
3852 ShowWindow(Thread.FBrowser.Handle, SW_SHOW);
3853 if (not Assigned(Thread.Browser.Document)) then begin
3854 Thread.Browser.Navigate('about:blank');
3856 FActiveContent := Thread;
3857 while (Thread.Browser.ReadyState <> READYSTATE_COMPLETE) and
3858 (Thread.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
3859 Application.ProcessMessages;
3860 if idx <> BrowserTab.TabIndex then begin
3864 if not ThreadIsLog then begin
3865 Self.Caption := CAPTION_NAME ;
3867 s := '<HTML><BODY><CENTER>
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Í
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ</CENTER></BODY></HTML>';
3868 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3870 doc.charset := 'Shift_JIS';
3876 Self.Caption := CAPTION_NAME + ' - [' + ThreadTitle + ']';
3877 //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«
3878 //
\90V
\8bK
\82ÉThread
\82ð
\8aJ
\82¢
\82½
\82Æ
\82«
\82É
\90^
\82É
\82È
\82Á
\82Ä
\82¢
\82é
\81B
3879 if Thread.Repaint then begin
3880 //Thread.LastSize := ThreadItem.Size;
3881 Thread.Repaint := false;
3883 Thread.Browser.OnStatusTextChange := nil;
3884 doc := Idispatch( olevariant(Thread.Browser.ControlInterface).Document) as IHTMLDocument2;
3885 GikoSys.CreateHTML2(doc, ThreadItem, sTitle);
3886 Thread.Browser.OnStatusTextChange := BrowserStatusTextChange;
3887 PostMessage( Handle, USER_DOCUMENTCOMPLETE, Integer( Thread.Browser ), 0 );
3888 if ThreadItem = nil then begin
3889 FActiveContent := nil;
3896 if (Assigned(Thread)) and (Assigned(Thread.Thread)) and (Thread <> nil) and (ThreadItem <>nil) then begin
3897 //FActiveContent := Thread;
3899 BrowserBoardNameLabel.Caption := ThreadPTitle;
3900 ItemIcon16.GetBitmap(4, ItemBoardImage.Picture.Bitmap);
3901 BrowserNameLabel.Caption := ThreadTitle;
3902 ItemImage.Picture := nil;
3904 if ThreadNewArraical then
3905 ItemImageList.GetBitmap(2, ItemImage.Picture.Bitmap)
3907 ItemImageList.GetBitmap(0, ItemImage.Picture.Bitmap)
3909 ItemImageList.GetBitmap(1, ItemImage.Picture.Bitmap);
3911 ItemImage.Left := BrowserBoardNameLabel.Left + BrowserBoardNameLabel.Width + 8;
3912 BrowserNameLabel.Left := ItemImage.Left + 20;
3914 FActiveContent := nil;
3917 Screen.Cursor := crDefault;
3921 function TGikoForm.GetActiveContent: TThreadItem;
3924 if( Assigned(FActiveContent) ) and (Assigned(FActiveContent.Thread))
3925 and (FActiveContent <> nil) and (FActiveContent.Thread <> nil) then
3926 Result := FActiveContent.Thread
3928 FActiveContent := nil;
3932 FActiveContent := nil;
3937 procedure TGikoForm.SetActiveList(Obj: TObject);
3941 // if FActiveList <> Obj then begin
3944 if ListView.Selected <> nil then
3945 idx := ListView.Selected.Index
3948 ListView.Items.Count := 0;
3949 ListView.Items.Clear;
3950 ListView.Selected := nil;
3951 // ListView.Columns.Clear;
3953 Self.Caption := CAPTION_NAME;
3954 //Application.Title := CAPTION_NAME;
3956 // ActiveListColumnSave;
3958 if Obj is TBBS then begin
3959 SetCategoryListItem(TBBS(Obj));
3960 end else if Obj is TCategory then begin
3961 SetBoardListItem(TCategory(Obj));
3962 end else if Obj is TBoard then begin
3963 SetThreadListItem(TBoard(Obj));
3966 if idx >= 0 then begin
3967 ListView.ItemIndex := idx;
3968 ListView.ItemFocused := ListView.Items.Item[ idx ];
3974 //
\81\9a\81\9a\83q
\83\8d\83\86\83L
\83\81\83\82
3975 //
\82»
\82Ì
\82¤
\82¿interface
\82ð
\8eg
\82¤
3976 function TGikoForm.GetActiveList: TObject;
3978 Result := FActiveList;
3981 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType);
3983 SetListViewType(AViewType, '', False);
3986 procedure TGikoForm.SetListViewType(AViewType: TGikoViewType; SelectText: string; KubetsuChk: Boolean);
3990 if ActiveList is TBoard then begin
3991 Board := TBoard(ActiveList);
3993 Board.ParentCategory.ParenTBBS.SelectText := SelectText;
3994 Board.ParentCategory.ParenTBBS.KubetsuChk := KubetsuChk;
3995 // Board.SelectText := SelectText;
3996 // Board.KubetsuChk := KubetsuChk;
3997 ViewType := AViewType;
3998 SetActiveList(Board);
3999 SetThreadListItem(Board);
4003 procedure TGikoForm.ListViewCustomDraw(Sender: TCustomListView;
4004 const ARect: TRect; var DefaultDraw: Boolean);
4010 if ListView.Items.Count = 0 then begin
4011 DefaultDraw := True;
4013 ListView.Canvas.Brush.Color := ListView.Color;
4014 ListView.Canvas.FillRect(ARect);
4018 ListView.Canvas.Font.Color := clWindowText;
4019 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4022 ListView.Canvas.Font.Color := clBlue;
4023 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';
4026 ListView.Canvas.Font.Color := clGreen;
4027 s := '
\82±
\82Ì
\83r
\83\85\81[
\82É
\82Í
\90V
\92\85\83A
\83C
\83e
\83\80\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B';
4030 ListView.Canvas.Font.Color := clNavy;
4031 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';
4032 if GetActiveList is TBoard then
4033 s := Format(s, [TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText]);
4041 p := Point((ListView.ClientWidth div 2) - (ListView.Canvas.TextWidth(s) div 2),
4042 (ListView.ClientHeight div 2) - (ListView.Canvas.TextHeight(s) div 2));
4043 ListView.Canvas.TextOut(p.X, p.Y, s);
4045 DefaultDraw := True;
4049 procedure TGikoForm.DownloadList(Board: TBoard; ForceDownload: Boolean = False);
4051 Item: TDownloadItem;
4053 if not Board.IsThreadDatRead then
4054 GikoSys.ReadSubjectFile(Board);
4055 Item := TDownloadItem.Create;
4057 Item.Board := Board;
4058 Item.DownType := gdtBoard;
4059 Item.ForceDownload := ForceDownload;
4060 // AbortToolButton.Enabled := True;
4061 // Animate.Active := True;
4062 // FDownload.Add(Item);
4063 FControlThread.AddItem(Item);
4064 // Animate.Active := False;
4065 // AbortToolButton.Enabled := False;
4066 if FWorkCount = 0 then begin
4068 Animate.Active := True;
4071 Screen.Cursor := crAppStart;
4079 procedure TGikoForm.DownloadContent(ThreadItem: TThreadItem; ForceDownload: Boolean = False);
4081 Item: TDownloadItem;
4083 Item := TDownloadItem.Create;
4085 Item.ThreadItem := ThreadItem;
4086 Item.DownType := gdtThread;
4087 Item.ForceDownload := ForceDownload;
4088 // AbortToolButton.Enabled := True;
4089 // Animate.Active := True;
4090 // FDownload.Add(Item);
4091 FControlThread.AddItem(Item);
4092 // Animate.Active := False;
4093 // AbortToolButton.Enabled := False;
4094 if FWorkCount = 0 then begin
4096 Animate.Active := True;
4099 Screen.Cursor := crAppStart;
4107 procedure TGikoForm.PlaySound(SoundEventName: string);
4111 FileName := GikoSys.Setting.FindSoundFileName(SoundEventName);
4112 if FileExists(FileName) then begin
4113 if not sndPlaySound(PChar(FileName), SND_ASYNC or SND_NOSTOP) then begin
4114 sndPlaySound(nil, SND_SYNC);
4115 Application.ProcessMessages;
4117 sndPlaySound(PChar(FileName), SND_ASYNC);
4122 function TGikoForm.AddHistory( favItem : TFavoriteThreadItem ): Boolean;
4125 Item: TFavoriteThreadItem;
4129 // if (GetActiveContent = ThreadItem) and
4130 // (ThreadItem.Count <= ThreadItem.Kokomade) then
4132 // if GetActiveContent = ThreadItem then
4136 if FTreeType = gttHistory then
4137 TreeView.Selected := nil;
4139 for i := 0 to FHistoryList.Count - 1 do begin
4140 if TObject(FHistoryList[i]) is TFavoriteThreadItem then begin
4141 Item := TFavoriteThreadItem(FHistoryList[i]);
4142 if Item.URL = favItem.URL then begin
4143 // SetContent(ThreadItem);
4144 FHistoryList.Move(i, 0);
4145 if FTreeType = gttHistory then
4146 if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
4147 TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
4154 if FHistoryList.Count > 0 then
4155 FHistoryList.Insert( 0, favItem )
4157 FHistoryList.Add( favItem );
4158 // SetContent(ThreadItem);
4160 if FTreeType = gttHistory then begin
4161 Node := TreeView.Items.Add( nil, favItem.Title );
4162 Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
4164 if favItem.NewArrival then begin
4165 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4166 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4168 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4169 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4172 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4173 //
\81¦favItem.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4174 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4175 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4176 Node.Data := favItem;
4180 procedure TGikoForm.DeleteHistory( threadItem: TThreadItem );
4184 for i := 0 to FHistoryList.Count - 1 do begin
4185 if threadItem.URL = TFavoriteThreadItem( FHistoryList.Items[i] ).URL then begin
4186 TFavoriteThreadItem( FHistoryList.Items[ i ] ).Free;
4187 FHistoryList.Delete(i);
4188 FHistoryList.Capacity := FHistoryList.Count;
4194 procedure TGikoForm.ClearHistory;
4198 //FHistoryList.Clear;
4201 for i := FHistoryList.Count - 1 downto 0 do begin
4202 if TObject(FHistoryList[ i ]) is TFavoriteThreadItem then
4203 TFavoriteThreadItem(FHistoryList[ i ]).Free
4204 else if TObject(FHistoryList[ i ]) is TFavoriteBoardItem then
4205 TFavoriteBoardItem(FHistoryList[ i ]).Free;
4207 //FHistoryList.Delete(i);
4213 FHistoryList.Capacity := FHistoryList.Count;
4217 procedure TGikoForm.SaveHistory;
4220 saveList : TstringList;
4223 saveList := TStringList.Create;
4226 FHistoryList.Capacity := FHistoryList.Count;
4227 saveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
4228 saveList.Add('<address>');
4229 bound := FHistoryList.Count - 1;
4230 for i := bound downto 0 do begin
4231 // title
\82Í
\8d¡
\82Ì
\82Æ
\82±
\82ë
\8eg
\82Á
\82Ä
\82¢
\82È
\82¢
4233 '<history url="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).URL ) + '"' +
4234 ' title="' + HtmlEncode( TFavoriteThreadItem( FHistoryList[ i ] ).Title ) + '"/>');
4236 saveList.Add('</address>');
4237 saveList.SaveToFile( GikoSys.GetConfigDir + 'History.xml' );
4244 procedure TGikoForm.LoadHistory;
4248 XMLDoc : IXMLDocument;
4250 HistoryNode : IXMLNode;
4252 favItem : TFavoriteThreadItem;
4255 fileName := GikoSys.GetConfigDir + 'History.xml';
4257 if FileExists( fileName ) then begin
4259 XMLDoc := IXMLDocument.Create;
4260 //XMLDoc := LoadXMLDocument(FileName);
4261 LoadXMLDocument(FileName, XMLDoc);
4263 XMLNode := XMLDoc.DocumentElement;
4265 if XMLNode.NodeName = 'address' then begin
4266 bound := XMLNode.ChildNodes.Count - 1;
4267 for i := 0 to bound do begin
4268 HistoryNode := XMLNode.ChildNodes[i];
4269 if HistoryNode.NodeName = 'history' then begin
4270 //if FReadCount >= sl.Count then begin
4271 s := Trim(HistoryNode.Attributes['url']);
4272 if s <> '' then begin
4273 favItem := TFavoriteThreadItem.Create(
4274 s, HistoryNode.Attributes[ 'title' ] );
4275 if not AddHistory( favItem ) then
4291 procedure TGikoForm.ShowBBSTreeOld(
4299 FavoriteTreeView.Visible := False;
4300 FavoriteToolBar.Hide;
4301 TreeView.Visible := True;
4303 b := CabinetSelectPopupMenu.Items.Count - 1;
4304 for i := 0 to b do begin
4305 item := CabinetSelectPopupMenu.Items[ i ];
4306 if item is TBBSMenuItem then begin
4307 if TBBSMenuItem( item ).Data = inBBS then begin
4308 item.Checked := True;
4309 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4310 CabinetMenu.Items[ i ].Checked := True;
4311 GikoSys.Setting.CabinetIndex := i;
4315 item.Checked := False;
4316 // CabinetMenu ?? CabinetSelectPopupMenu ??????????????
4317 CabinetMenu.Items[ i ].Checked := False;
4319 CabinetSelectToolButton.Caption := inBBS.Title;
4321 CabinetHistoryAction.Checked := False;
4322 CabinetFavoriteAction.Checked := False;
4324 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4325 FTreeType := gtt2ch;
4326 HistoryToolBar.Hide;
4327 SetBoardTreeNode( inBBS );
4328 TreeView.Items.GetFirstNode.Expanded := True; //?c???[?g?b?v???????J??
4329 //?c???[??g?b?v?????I????
4330 if GetActiveList = nil then
4331 TreeView.Selected := TreeView.Items[0]
4333 for i := 0 to TreeView.Items.Count - 1 do begin
4334 if TreeView.Items[i].Data = GetActiveList then begin
4335 TreeView.Selected := TreeView.Items[i];
4339 TreeView.Selected := TreeView.Items[0]
4347 procedure TGikoForm.ShowBBSTree(
4356 FavoriteTreeView.Visible := False;
4357 FavoriteToolBar.Hide;
4358 TreeView.Visible := True;
4360 b := CabinetSelectPopupMenu.Items.Count - 1;
4361 for i := 0 to b do begin
4362 item := CabinetSelectPopupMenu.Items[ i ];
4363 if item is TBBSMenuItem then begin
4364 if TBBSMenuItem( item ).Data = inBBS then begin
4365 item.Checked := True;
4366 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4367 CabinetMenu.Items[ i ].Checked := True;
4368 GikoSys.Setting.CabinetIndex := i;
4372 item.Checked := False;
4373 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4374 CabinetMenu.Items[ i ].Checked := False;
4376 CabinetSelectToolButton.Caption := inBBS.Title;
4378 CabinetHistoryAction.Checked := False;
4379 CabinetFavoriteAction.Checked := False;
4381 if (FTreeType <> gtt2ch) or (FActiveBBS <> inBBS) then begin
4382 FTreeType := gtt2ch;
4383 HistoryToolBar.Hide;
4384 SetBoardTreeNode( inBBS );
4385 TreeView.Items.GetFirstNode.Expanded := True; //
\83c
\83\8a\81[
\83g
\83b
\83v
\8d\80\96Ú
\82¾
\82¯
\82ð
\8aJ
\82
4386 //
\83c
\83\8a\81[
\82Ì
\83g
\83b
\83v
\8d\80\96Ú
\82ð
\91I
\91ð
\82·
\82é
4387 if GetActiveList = nil then begin
4389 TreeClick( TreeView.Items[0] );
4393 for i := 0 to TreeView.Items.Count - 1 do begin
4394 if TreeView.Items[i].Data = GetActiveList then begin
4395 TreeClick( TreeView.Items[i] );
4399 TreeClick( TreeView.Items[0] );
4407 procedure TGikoForm.ShowHistoryTree;
4412 if CabinetPanel.Visible then begin
4413 if FTreeType = gttHistory then begin
4414 CabinetVisible( False );
4415 CabinetHistoryAction.Checked := False;
4417 CabinetHistoryAction.Checked := True;
4420 CabinetVisible( True );
4421 CabinetHistoryAction.Checked := True;
4424 // BBS...BBS, History, Favorite
4425 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 2;
4427 FavoriteTreeView.Visible := False;
4428 TreeView.Visible := True;
4430 CabinetBBSAction.Checked := False;
4431 CabinetFavoriteAction.Checked := False;
4433 if FTreeType <> gttHistory then begin
4434 b := CabinetSelectPopupMenu.Items.Count - 1;
4435 for i := 0 to b do begin
4436 item := CabinetSelectPopupMenu.Items[ i ];
4437 if item is TBBSMenuItem then begin
4438 item.Checked := False;
4439 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
4440 CabinetMenu.Items[ i ].Checked := False;
4444 FTreeType := gttHistory;
4445 HistoryToolBar.Show;
4446 FavoriteToolBar.Hide;
4448 CabinetSelectToolButton.Caption := '
\97\9a\97ð
\83\8a\83X
\83g';
4452 procedure TGikoForm.SetHistoryTreeNode;
4456 Item: TFavoriteThreadItem;
4458 TreeView.Items.BeginUpdate;
4460 TreeView.Items.Clear;
4461 for i := 0 to FHistoryList.Count - 1 do begin
4462 Item := TFavoriteThreadItem(FHistoryList[i]);
4463 Node := TreeView.Items.Add(nil, Item.Title);
4465 if Item.Item.NewArrival then begin
4466 Node.ImageIndex := ITEM_ICON_THREADNEW1;
4467 Node.SelectedIndex := ITEM_ICON_THREADNEW2;
4469 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4470 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4473 //
\95\89\89×
\82ð
\82©
\82¯
\82½
\82
\82È
\82¢
\82Ì
\82Å NewArrival
\82Ì
\83`
\83F
\83b
\83N
\82ð
\8ds
\82í
\82È
\82¢
4474 //
\81¦Item.Item
\83v
\83\8d\83p
\83e
\83B
\82Í dat
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
\82ð
\95K
\97v
\82Æ
\82·
\82é
4475 Node.ImageIndex := ITEM_ICON_THREADLOG1;
4476 Node.SelectedIndex := ITEM_ICON_THREADLOG2;
4480 TreeView.Items.EndUpdate;
4484 procedure TGikoForm.SelectTreeNode(Item: TObject; CallEvent: Boolean);
4486 ChangeEvent: TTVChangedEvent;
4487 ChangingEvent: TTVChangingEvent;
4491 if Item is TCategory then
4492 bbs := TCategory( Item ).ParenTBBS
4493 else if Item is TBoard then
4494 bbs := TBoard( Item ).ParentCategory.ParenTBBS
4498 if (FTreeType = gtt2ch) and (FActiveBBS = bbs) then begin
4499 if Item <> FActiveList then begin
4501 ChangingEvent := nil;
4503 if not CallEvent then begin
4504 ChangeEvent := TreeView.OnChange;
4505 ChangingEvent := TreeView.OnChanging;
4508 if not CallEvent then begin
4509 TreeView.OnChange := nil;
4510 TreeView.OnChanging := nil;
4512 //Application.ProcessMessages;
4513 for i := 0 to TreeView.Items.Count - 1 do begin
4514 if TreeView.Items[i].Data = Item then begin
4515 TreeView.Items[i].Selected := True;
4517 TreeClick(TreeView.Items[i]);
4521 //Application.ProcessMessages;
4523 if not CallEvent then begin
4524 TreeView.OnChange := ChangeEvent;
4525 TreeView.OnChanging := ChangingEvent;
4530 if Item <> FActiveList then begin
4531 ActiveListColumnSave;
4533 if (Item is TBBS) or (Item is TCategory) then begin
4534 ListView.Columns.Clear;
4535 SetActiveList( Item );
4536 end else if Item is TBoard then begin
4537 if not TBoard( Item ).IsThreadDatRead then begin
4538 Screen.Cursor := crHourGlass;
4540 if not TBoard( Item ).IsThreadDatRead then
4541 GikoSys.ReadSubjectFile(TBoard( Item ));
4543 Screen.Cursor := crDefault;
4546 SetActiveList( Item );
4551 if Item is TBoard then begin // not TCategory
4552 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4553 if GikoSys.Setting.ListWidthState = glsMax then begin
4554 BrowserMinAction.Execute;
4555 if GikoForm.Visible then
4559 if GikoSys.Setting.ListHeightState = glsMax then begin
4560 BrowserMinAction.Execute;
4561 if GikoForm.Visible then
4568 procedure TGikoForm.ListViewMouseDown(Sender: TObject;
4569 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
4571 listItem : TListItem;
4572 threadItem : TThreadItem;
4579 if not (GetActiveList is TBoard) then Exit;
4580 listItem := ListView.GetItemAt( X, Y );
4581 if listItem = nil then Exit;
4582 if not (TObject(listItem.Data) is TThreadItem) then Exit;
4584 threadItem := TThreadItem(ListItem.Data);
4585 InsertBrowserTab(threadItem, False);
4586 if threadItem.IsLogFile then
4587 ListView.UpdateItems(listItem.Index, listItem.Index);
4591 //
\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Å
4592 if (ssDouble in Shift) then
4593 ListDoubleClick(Shift)
4601 Windows.ClientToScreen( ListView.Handle, pos );
4602 ListPopupMenu.Popup( pos.X, pos.Y );
4605 { if ssDouble in Shift then begin
4606 DoubleClickOccurred[Button] := True;
4608 DoubleClickOccurred[Button] := False;
4609 t := GetTickCount+GetDoubleClickTime;
4610 while GetTickCount < t do begin
4611 Application.ProcessMessages;
4612 if DoubleClickOccurred[Button] then
4617 if ssDouble in Shift then begin
4619 mbLeft: ListDoubleClick;
4632 procedure TGikoForm.ListClick;
4634 ListItem: TListItem;
4635 ThreadItem: TThreadItem;
4637 if ListView.SelCount <> 1 then Exit;
4638 ListItem := ListView.Selected;
4639 if ListItem = nil then Exit;
4640 if not (TObject(ListItem.Data) is TThreadItem) then Exit;
4642 ThreadItem := TThreadItem(ListItem.Data);
4643 if ThreadItem.IsLogFile then begin
4644 // if AddHistory(ThreadItem) then
4645 // SetContent(ThreadItem);
4646 InsertBrowserTab(ThreadItem);
4647 ListView.UpdateItems(ListItem.Index, ListItem.Index);
4649 // SetContent(ThreadItem);
4650 InsertBrowserTab(ThreadItem);
4653 if GikoSys.Setting.BrowserAutoMaximize = gbmClick then begin
4654 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4655 if GikoSys.Setting.ListWidthState = glsMin then begin
4656 BrowserMaxAndFocusAction.Execute;
4659 if GikoSys.Setting.ListHeightState = glsMin then begin
4660 BrowserMaxAndFocusAction.Execute;
4666 procedure TGikoForm.ListDoubleClick(Shift: TShiftState);
4668 ThreadItem: TThreadItem;
4671 shiftDown := (ssShift in Shift);
4673 if ListView.Selected = nil then Exit;
4675 if TObject(ListView.Selected.Data) is TCategory then begin
4676 SelectTreeNode(ListView.Selected.Data, True);
4677 // TreeView.Selected.Expanded := True;
4678 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4679 //TreeViewChange(nil, TreeView.Selected);
4680 end else if TObject(ListView.Selected.Data) is TBoard then begin
4681 SelectTreeNode(ListView.Selected.Data, True);
4682 // TreeView.Selected.Expanded := True;
4683 // TreeView.Selected.Item[ListView.Selected.Index].Selected := True;
4684 //TreeViewChange(nil, TreeView.Selected);
4685 end else if TObject(ListView.Selected.Data) is TThreadItem then begin
4686 //if TObject(ListView.Selected.Data) is TThreadItem then begin
4687 Application.ProcessMessages;
4688 ThreadItem := TThreadItem(ListView.Selected.Data);
4689 DownloadContent(ThreadItem, shiftDown);
4692 if GikoSys.Setting.BrowserAutoMaximize = gbmDoubleClick then begin
4693 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
4694 if GikoSys.Setting.ListWidthState = glsMin then begin
4695 // BrowserMaxAndFocusAction.Execute;
4696 BrowserMaxAction.Execute;
4697 SetFocusForBrowserAction.Execute;
4700 if GikoSys.Setting.ListHeightState = glsMin then begin
4701 // BrowserMaxAndFocusAction.Execute;
4702 BrowserMaxAction.Execute;
4703 SetFocusForBrowserAction.Execute;
4709 procedure TGikoForm.BrowserMovement(const AName: string; BrowserRecord: TBrowserRecord);
4714 activeBrower :TWebBrowser;
4716 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4718 while (BrowserRecord.Browser.ReadyState <> READYSTATE_COMPLETE) and
4719 (BrowserRecord.Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4720 Application.ProcessMessages;
4723 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4724 if(BrowserRecord <> nil) and (BrowserRecord.FBrowser <> nil) then begin
4725 activeBrower := BrowserRecord.FBrowser;
4729 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4732 top := top + item.offsetTop;
4733 item := item.offsetParent;
4734 until AnsiCompareText(item.tagName, 'body' ) = 0;
4735 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4741 procedure TGikoForm.BrowserMovement(const AName: string);
4746 activeBrower :TWebBrowser;
4748 // OleVariant(Browser.Document).parentWindow.location.hash := AName;
4750 while (Browser.ReadyState <> READYSTATE_COMPLETE) and
4751 (Browser.ReadyState <> READYSTATE_INTERACTIVE) do begin
4752 Application.ProcessMessages;
4755 // Access Violation
\82ª
\8bN
\82«
\82é
\8e\96\82ª
\82 \82é
\82Ì
\82Å
\8d¡
\8cã
\97v
\83`
\83F
\83b
\83N
4756 if(BrowserTab.Tabs.Count > 0) and (BrowserTab.TabIndex >= 0) then begin
4757 activeBrower := FActiveContent.Browser;
4761 item := OleVariant( activeBrower.Document as IHTMLDocument2).anchors.item(nm);
4764 top := top + item.offsetTop;
4765 item := item.offsetParent;
4766 until AnsiCompareText(item.tagName, 'body' ) = 0;
4768 OleVariant(activeBrower.Document as IHTMLDocument2).body.scrollTop := top;
4774 procedure TGikoForm.TreeViewCollapsed(Sender: TObject; Node: TTreeNode);
4776 if TObject(Node.Data) is TBBS then begin
4777 TBBS(Node.Data).NodeExpand := False;
4778 end else if TObject(Node.Data) is TCategory then begin
4779 TCategory(Node.Data).NodeExpand := False;
4780 end else if TObject(Node.Data) is TBoard then begin
4781 TBoard(Node.Data).NodeExpand := False;
4785 procedure TGikoForm.MessageListViewResize(Sender: TObject);
4787 // MessageListView.Column[0].Width := MessageListView.ClientWidth - 16;
4790 procedure TGikoForm.SelectListItem(List: TList);
4792 // TmpTreeNode: TTreeNode;
4793 TmpListItem: TListItem;
4796 TmpListItem := ListView.Selected;
4797 while TmpListItem <> nil do begin
4798 List.Add(TmpListItem.Data);
4799 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
4804 procedure TGikoForm.ExitActionExecute(Sender: TObject);
4809 procedure TGikoForm.AllSelectActionExecute(Sender: TObject);
4814 procedure TGikoForm.StdToolBarVisibleActionExecute(Sender: TObject);
4816 CoolBand: TCoolBand;
4818 CoolBand := GetCoolBand(MainCoolBar, StdToolBar);
4819 if CoolBand = nil then
4821 GikoSys.Setting.StdToolBarVisible := StdToolBarVisibleAction.Checked;
4822 CoolBand.Visible := GikoSys.Setting.StdToolBarVisible;
4823 // StdToolBar.Visible := StdToolBarVisibleAction.Checked;
4824 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4826 //StdToolBarVisibleAction.Checked := GikoSys.Setting.StdToolBarVisible;
4827 StdToolBarVisiblePMenu.Checked := GikoSys.Setting.StdToolBarVisible;
4830 procedure TGikoForm.AddressBarVisibleActionExecute(Sender: TObject);
4832 CoolBand: TCoolBand;
4834 CoolBand := GetCoolBand(MainCoolBar, AddressToolBar);
4835 if CoolBand = nil then
4837 GikoSys.Setting.AddressBarVisible := AddressBarVisibleAction.Checked;
4838 CoolBand.Visible := GikoSys.Setting.AddressBarVisible;
4839 //AddressBarVisibleAction.Checked := GikoSys.Setting.AddressBarVisible;
4840 AddressToolBarVisiblePMenu.Checked := GikoSys.Setting.AddressBarVisible;
4843 procedure TGikoForm.LinkBarVisibleActionExecute(Sender: TObject);
4845 CoolBand: TCoolBand;
4847 CoolBand := GetCoolBand(MainCoolBar, LinkToolBar);
4848 if CoolBand = nil then
4850 GikoSys.Setting.LinkBarVisible := LinkBarVisibleAction.Checked;
4851 CoolBand.Visible := GikoSys.Setting.LinkBarVisible;
4852 //LinkBarVisibleAction.Checked := GikoSys.Setting.LinkBarVisible;
4853 LinkToolBarVisiblePMenu.Checked := GikoSys.Setting.LinkBarVisible;
4856 procedure TGikoForm.ListToolBarVisibleActionExecute(Sender: TObject);
4858 CoolBand: TCoolBand;
4860 CoolBand := GetCoolBand(ListCoolBar, ListToolBar);
4861 if CoolBand = nil then
4863 CoolBand.Visible := ListToolBarVisibleAction.Checked;
4864 // ListToolBar.Visible := ListToolBarVisibleAction.Checked;
4865 // AnimePanel.Visible := StdToolBar.Visible or ListToolBar.Visible;
4866 GikoSys.Setting.ListToolBarVisible := ListToolBarVisibleAction.Checked;
4869 procedure TGikoForm.ListNameBarVisibleActionExecute(Sender: TObject);
4871 CoolBand: TCoolBand;
4873 CoolBand := GetCoolBand(ListCoolBar, ListNameToolBar);
4874 if CoolBand = nil then
4876 CoolBand.Visible := ListNameBarVisibleAction.Checked;
4877 GikoSys.Setting.ListNameBarVisible := ListNameBarVisibleAction.Checked;
4880 procedure TGikoForm.BrowserToolBarVisibleActionExecute(Sender: TObject);
4882 CoolBand: TCoolBand;
4884 CoolBand := GetCoolBand(BrowserCoolBar, BrowserToolBar);
4885 if CoolBand = nil then
4887 CoolBand.Visible := BrowserToolBarVisibleAction.Checked;
4888 // BrowserToolBar.Visible := BrowserToolBarVisibleAction.Checked;
4889 GikoSys.Setting.BrowserToolBarVisible := BrowserToolBarVisibleAction.Checked;
4892 procedure TGikoForm.BrowserNameBarVisibleActionExecute(Sender: TObject);
4894 CoolBand: TCoolBand;
4896 CoolBand := GetCoolBand(BrowserCoolBar, BrowserNameToolBar);
4897 if CoolBand = nil then
4899 CoolBand.Visible := BrowserNameBarVisibleAction.Checked;
4900 GikoSys.Setting.BrowserNameBarVisible := BrowserNameBarVisibleAction.Checked;
4903 procedure TGikoForm.MsgBarVisibleActionExecute(Sender: TObject);
4905 MessageSplitter.Visible := MsgBarVisibleAction.Checked;
4906 MessagePanel.Top := MessageSplitter.Top + MessageSplitter.Height;
4907 MessageSplitter.Top := MessagePanel.Top + 1;
4908 MessagePanel.Visible := MsgBarVisibleAction.Checked;
4909 GikoSys.Setting.MessageBarVisible := MsgBarVisibleAction.Checked;
4912 procedure TGikoForm.StatusBarVisibleActionExecute(Sender: TObject);
4914 StatusBar.Visible := StatusBarVisibleAction.Checked;
4915 GikoSys.Setting.StatusBarVisible := StatusBarVisibleAction.Checked;
4918 procedure TGikoForm.IconStyleExecute(Sender: TObject);
4920 case ListView.ViewStyle of
4921 vsIcon: SmallIconAction.Execute;
4922 vsSmallIcon: ListIconAction.Execute;
4923 vsList: DetailIconAction.Execute;
4924 vsReport: LargeIconAction.Execute;
4928 procedure TGikoForm.LargeIconActionExecute(Sender: TObject);
4930 ListView.ViewStyle := vsIcon;
4931 LargeIconAction.Checked := True;
4934 procedure TGikoForm.SmallIconActionExecute(Sender: TObject);
4936 ListView.ViewStyle := vsSmallIcon;
4937 SmallIconAction.Checked := True;
4940 procedure TGikoForm.ListIconActionExecute(Sender: TObject);
4942 ListView.ViewStyle := vsList;
4943 ListIconAction.Checked := True;
4946 procedure TGikoForm.DetailIconActionExecute(Sender: TObject);
4948 ListView.ViewStyle := vsReport;
4949 DetailIconAction.Checked := True;
4952 procedure TGikoForm.SearchActionExecute(Sender: TObject);
4957 if FSearchDialog = nil then begin
4958 if (GikoForm.GetActiveList is TCategory) or (GikoForm.GetActiveList is TBoard) then
4959 chk := GikoForm.GetActiveList
4963 FSearchDialog := TSearchDialog.Create(Self, chk);
4964 FSearchDialog.SearchComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
4974 procedure TGikoForm.OptionActionExecute(Sender: TObject);
4978 Dlg := TOptionDialog.Create(Self);
4986 procedure TGikoForm.GikoNaviWebPageActionExecute(Sender: TObject);
4988 URL_GIKONAVI: string = 'http://gikonavi.sourceforge.jp/';
4990 GikoSys.OpenBrowser(URL_GIKONAVI, gbtAuto);
4993 procedure TGikoForm.MonazillaWebPageActionExecute(Sender: TObject);
4995 URL_MONAZILLA: string = 'http://www.monazilla.org/';
4997 GikoSys.OpenBrowser(URL_MONAZILLA, gbtAuto);
5000 procedure TGikoForm.BBS2chWebPageActionExecute(Sender: TObject);
5002 URL_2ch: string = 'http://www.2ch.net/';
5004 GikoSys.OpenBrowser(URL_2ch, gbtAuto);
5007 procedure TGikoForm.GikoFolderOpenActionExecute(Sender: TObject);
5009 // GikoSys.OpenBrowser(GikoSys.GetAppDir, gbtIE);
5010 GikoSys.CreateProcess('explorer.exe', '/e,"' + GikoSys.GetAppDir + '"');
5013 procedure TGikoForm.AboutActionExecute(Sender: TObject);
5017 Dlg := TAboutDialog.Create(Self);
5025 procedure TGikoForm.CabinetHistoryActionExecute(Sender: TObject);
5030 procedure TGikoForm.CabinetVisible( isVisible : Boolean );
5032 TreeSplitter.Visible := isVisible;
5033 CabinetPanel.Visible := isVisible;
5034 CabinetVisibleAction.Checked := isVisible;
5037 procedure TGikoForm.CabinetVisibleActionExecute(Sender: TObject);
5040 gttHistory: CabinetHistoryAction.Execute;
5041 gttFavorite: CabinetFavoriteAction.Execute;
5043 CabinetBBSAction.Execute;
5047 procedure TGikoForm.AllItemActionExecute(Sender: TObject);
5050 if ViewType <> gvtAll then
5051 SetListViewType(gvtAll);
5052 GikoSys.Setting.ThreadRange := gtrAll;
5053 AllItemAction.Checked := True;
5054 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5056 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5057 if SelectComboBox.Parent <> nil then begin
5058 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5059 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5066 procedure TGikoForm.LogItemActionExecute(Sender: TObject);
5069 if ViewType <> gvtLog then
5070 SetListViewType(gvtLog);
5071 GikoSys.Setting.ThreadRange := gtrLog;
5072 LogItemAction.Checked := True;
5073 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5075 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5076 if SelectComboBox.Parent <> nil then begin
5077 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5078 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5085 procedure TGikoForm.NewItemActionExecute(Sender: TObject);
5089 if ViewType <> gvtNew then
5090 SetListViewType(gvtNew);
5091 GikoSys.Setting.ThreadRange := gtrNew;
5092 NewItemAction.Checked := True;
5093 // SelectComboBox
\82Ì
\97\9a\97ð
\82ð
\8dX
\90V
\82µ
\82Ä
\82¨
\82
5095 // SelectComboBox
\82Ì
\92l
\82ð
\83N
\83\8a\83A
5096 if SelectComboBox.Parent <> nil then begin
5097 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5098 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5105 procedure TGikoForm.SelectItemActionExecute(Sender: TObject);
5108 Dlg: TListSelectDialog;
5111 if SelectComboBox.Parent <> nil then begin
5112 if SelectComboBox.Left + SelectComboBox.Width < ListToolBar.Width then begin
5113 // SelectComboBox
\82ª
\82 \82é
\8fê
\8d\87\82Í
\83t
\83H
\81[
\83J
\83X
\82ð
\88Ú
\82·
5114 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5115 if GikoSys.Setting.ListWidthState = glsMax then
5116 BrowserMinAction.Execute;
5118 if GikoSys.Setting.ListHeightState = glsMax then
5119 BrowserMinAction.Execute;
5121 SelectComboBox.SetFocus;
5128 if SelectComboBox.Text = SELECTCOMBOBOX_NAME then begin
5129 SelectComboBox.Text := '';
5130 SelectComboBox.Color := clWindow;
5133 AllItemAction.Checked := False;
5134 LogItemAction.Checked := False;
5135 NewItemAction.Checked := False;
5136 //SelectItemAction.Checked := True;
5138 Dlg := TListSelectDialog.Create(Self);
5140 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
5141 Dlg.SelectComboBox.Text := SelectComboBox.Text;
5143 if Dlg.ModalResult = mrCancel then begin
5144 if Length( SelectComboBox.Text ) = 0 then begin
5145 AllItemAction.Checked := True;
5146 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5147 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5150 if GetActiveList is TBoard then
5151 SetListViewType(gvtUser, TBoard(GetActiveList).ParentCategory.ParenTBBS.SelectText , Dlg.KubetsuCheckBox.Checked);
5153 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
5155 GikoSys.Setting.SelectTextList.Delete(idx);
5156 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
5157 while Dlg.SelectComboBox.Items.Count > 100 do begin
5158 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
5161 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
5162 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
5163 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
5165 SelectComboBox.Text := Dlg.SelectComboBox.Text;
5166 SelectComboBox.Color := clWindow;
5168 SetListViewType(gvtUser, Dlg.SelectComboBox.Text, Dlg.KubetsuCheckBox.Checked);
5175 procedure TGikoForm.ListNumberVisibleActionExecute(Sender: TObject);
5177 GikoSys.Setting.ListViewNo := ListNumberVisibleAction.Checked;
5181 procedure TGikoForm.UpFolderActionExecute(Sender: TObject);
5183 if GetActiveList is TBoard then begin
5184 // if FTreeType = gtt2ch then
5185 SelectTreeNode(TBoard(GetActiveList).ParentCategory, True);
5186 //SetActiveList(TBoard(GetActiveList).ParentCategory);
5187 end else if GetActiveList is TCategory then begin
5188 // if FTreeType = gtt2ch then
5189 SelectTreeNode(TCategory(GetActiveList).ParenTBBS, True);
5190 //SetActiveList(TCategory(GetActiveList).ParenTBBS);
5192 // if TreeView.Selected = nil then Exit;
5193 // if TreeView.Selected.Level = 0 then Exit;
5194 // TreeView.Selected.Parent.Selected := True;
5197 procedure TGikoForm.RoundActionExecute(Sender: TObject);
5201 Dlg := TRoundDialog.Create(Self);
5209 procedure TGikoForm.StopActionExecute(Sender: TObject);
5211 FControlThread.DownloadAbort;
5212 if FWorkCount <> 0 then FWorkCount := 0;
5214 Animate.Active := False;
5217 Screen.Cursor := crDefault;
5220 procedure TGikoForm.MsgBarCloseActionExecute(Sender: TObject);
5222 // MessagePanel.Visible := False;
5223 // MessageSplitter.Visible := False;
5224 // MsgBarVisibleAction.Checked := False;
5225 MsgBarVisibleAction.Execute;
5228 procedure TGikoForm.BrowserMaxActionExecute(Sender: TObject);
5230 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5231 case GikoSys.Setting.ListWidthState of
5233 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5234 if FActiveContent <> nil then
5235 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5236 ViewPanel.Width := FBrowserSizeWidth;
5237 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5238 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5239 GikoSys.Setting.ListWidthState := glsNormal;
5240 if FActiveContent <> nil then
5241 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5243 glsMin, glsNormal: begin
5244 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5245 if FActiveContent <> nil then
5246 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5247 if GikoSys.Setting.ListWidthState = glsNormal then
5248 FBrowserSizeWidth := ViewPanel.Width;
5249 if FActiveContent <> nil then
5250 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5251 ViewPanel.Width := 1;
5252 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5253 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5254 GikoSys.Setting.ListWidthState := glsMax;
5258 case GikoSys.Setting.ListHeightState of
5260 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5261 if FActiveContent <> nil then
5262 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5263 ViewPanel.Height := FBrowserSizeHeight;
5264 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5265 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5266 GikoSys.Setting.ListHeightState := glsNormal;
5267 if FActiveContent <> nil then
5268 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5270 glsMin, glsNormal: begin
5271 //
\8dÅ
\91å
\95\
\8e¦
\82É
\82·
\82é
5272 if FActiveContent <> nil then
5273 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5274 if GikoSys.Setting.ListHeightState = glsNormal then
5275 FBrowserSizeHeight := ViewPanel.Height;
5276 if FActiveContent <> nil then
5277 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5278 ViewPanel.Height := 1;
5279 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5280 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5281 GikoSys.Setting.ListHeightState := glsMax;
5285 // Mouse.CursorPos := BrowserSizeButton.ClientToScreen(Point(
5286 // System.Round(BrowserToolBar.ButtonWidth div 2),
5287 // System.Round(BrowserToolBar.ButtonHeight div 2)));
5288 //BrowserTab.OnChange(nil);
5291 procedure TGikoForm.BrowserMinActionExecute(Sender: TObject);
5294 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5295 case GikoSys.Setting.ListWidthState of
5296 glsMax, glsNormal: begin
5297 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5298 if FActiveContent <> nil then
5299 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5300 if GikoSys.Setting.ListWidthState = glsNormal then
5301 FBrowserSizeWidth := ViewPanel.Width;
5302 if FActiveContent <> nil then
5303 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5304 ViewPanel.Width := ThreadMainPanel.Width - 80;
5305 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5306 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
5307 GikoSys.Setting.ListWidthState := glsMin;
5310 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5311 if FActiveContent <> nil then
5312 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5313 ViewPanel.Width := FBrowserSizeWidth;
5314 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
5315 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
5316 GikoSys.Setting.ListWidthState := glsNormal;
5317 if FActiveContent <> nil then
5318 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5322 case GikoSys.Setting.ListHeightState of
5323 glsMax, glsNormal: begin
5324 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5325 if FActiveContent <> nil then
5326 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5327 if GikoSys.Setting.ListHeightState = glsNormal then
5328 FBrowserSizeHeight := ViewPanel.Height;
5329 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5330 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5331 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
5332 GikoSys.Setting.ListHeightState := glsMin;
5333 if FActiveContent <> nil then
5334 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5337 //
\92Ê
\8fí
\95\
\8e¦
\82É
\82·
\82é
5338 if FActiveContent <> nil then
5339 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 0, 0); //
\95`
\89æ
\92â
\8e~
5340 ViewPanel.Height := FBrowserSizeHeight;
5341 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
5342 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
5343 GikoSys.Setting.ListHeightState := glsNormal;
5344 if FActiveContent <> nil then
5345 SendMessage(FActiveContent.FBrowser.Handle, WM_SETREDRAW, 1, 0); //
\95`
\89æ
5351 procedure TGikoForm.ScrollTopActionExecute(Sender: TObject);
5353 BrowserMovement('top');
5356 procedure TGikoForm.ScrollLastActionExecute(Sender: TObject);
5358 BrowserMovement('bottom');
5361 procedure TGikoForm.ScrollNewActionExecute(Sender: TObject);
5363 BrowserMovement('new');
5366 procedure TGikoForm.ScrollKokoActionExecute(Sender: TObject);
5368 BrowserMovement('koko');
5371 procedure TGikoForm.EditorActionExecute(Sender: TObject);
5373 Editor: TEditorForm;
5376 Item := GetActiveContent;
5377 if Item = nil then Exit;
5378 Editor := TEditorForm.Create(Self);
5379 Editor.SetThreadItem(Item);
5380 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5382 Editor.BodyEdit.SetFocus;
5385 procedure TGikoForm.IEActionExecute(Sender: TObject);
5387 ShowThreadAction.Execute;
5390 procedure TGikoForm.ShowThreadActionExecute(Sender: TObject);
5392 ThreadItem: TThreadItem;
5394 ThreadItem := GetActiveContent;
5395 if ThreadItem = nil then Exit;
5396 GikoSys.OpenBrowser(ThreadItem.URL, gbtAuto);
5399 procedure TGikoForm.ShowBoardActionExecute(Sender: TObject);
5401 ThreadItem: TThreadItem;
5403 ThreadItem := GetActiveContent;
5404 if ThreadItem = nil then Exit;
5405 GikoSys.OpenBrowser(ThreadItem.ParentBoard.URL, gbtAuto);
5408 //(Thread)URL
\82ð
\83R
\83s
\81[
5409 procedure TGikoForm.URLCopyActionExecute(Sender: TObject);
5414 if TObject(GetActiveContent) is TBoard then
5415 s := s + TBoard(GetActiveContent).URL + #13#10
5416 else if TObject(GetActiveContent) is TThreadItem then
5417 s := s + TThreadItem(GetActiveContent).URL + #13#10;
5419 Clipboard.AsText := s;
5422 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ð
\83R
\83s
\81[
5423 procedure TGikoForm.NameCopyActionExecute(Sender: TObject);
5428 if TObject(GetActiveContent) is TBoard then
5429 s := s + TBoard(GetActiveContent).Title + #13#10
5430 else if TObject(GetActiveContent) is TThreadItem then
5431 s := s + TThreadItem(GetActiveContent).Title + #13#10;
5433 Clipboard.AsText := s;
5436 //(Thread)
\83X
\83\8c\83b
\83h
\96¼
\82ÆURL
\82ð
\83R
\83s
\81[
5437 procedure TGikoForm.NameURLCopyActionExecute(Sender: TObject);
5442 if TObject(GetActiveContent) is TBoard then
5443 s := s + TBoard(GetActiveContent).Title + #13#10 + TBoard(GetActiveContent).URL + #13#10
5444 else if TObject(GetActiveContent) is TThreadItem then
5445 s := s + TThreadItem(GetActiveContent).Title + #13#10 + TThreadItem(GetActiveContent).URL + #13#10;
5447 Clipboard.AsText := s;
5450 procedure TGikoForm.ItemReloadActionExecute(Sender: TObject);
5452 ThreadItem: TThreadItem;
5455 ThreadItem := GetActiveContent;
5456 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5457 if ThreadItem <> nil then
5458 DownloadContent(ThreadItem, shiftDown);
5461 procedure TGikoForm.SelectListReloadActionExecute(Sender: TObject);
5468 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5469 if GetActiveList is TCategory then begin
5470 List := TList.Create;
5472 SelectListItem(List);
5473 if List.Count > 5 then begin
5474 msg := '5
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5475 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5476 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5479 for i := 0 to List.Count - 1 do begin
5480 if TObject(List[i]) is TBoard then
5481 DownloadList(TBoard(List[i]), shiftDown);
5486 end else if GetActiveList is TBoard then begin
5487 DownloadList(TBoard(GetActiveList), shiftDown);
5491 procedure TGikoForm.SelectThreadReloadActionExecute(Sender: TObject);
5498 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
5499 List := TList.Create;
5501 SelectListItem(List);
5502 if List.Count > 10 then begin
5503 msg := '10
\8cÂ
\88È
\8fã
\82Í
\8ew
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ' + #13#10
5504 + '
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\95\89\89×
\8cy
\8c¸
\82É
\82²
\8b¦
\97Í
\82
\82¾
\82³
\82¢';
5505 MsgBox(Handle, msg, '
\8cx
\8d\90', MB_ICONEXCLAMATION);
5508 for i := 0 to List.Count - 1 do begin
5509 if TObject(List[i]) is TThreadItem then
5510 DownloadContent(TThreadItem(List[i]), shiftDown);
5517 procedure TGikoForm.SelectListReloadActionUpdate(Sender: TObject);
5519 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
5520 SelectListReloadAction.Enabled := True
5521 else if GetActiveList is TBoard then
5522 SelectListReloadAction.Enabled := True
5524 SelectListReloadAction.Enabled := False;
5527 procedure TGikoForm.SelectThreadReloadActionUpdate(Sender: TObject);
5529 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
5530 SelectThreadReloadAction.Enabled := True
5532 SelectThreadReloadAction.Enabled := False;
5535 procedure TGikoForm.AllItemActionUpdate(Sender: TObject);
5537 AllItemAction.Enabled := (GetActiveList is TBoard);
5540 procedure TGikoForm.LogItemActionUpdate(Sender: TObject);
5542 LogItemAction.Enabled := (GetActiveList is TBoard);
5545 procedure TGikoForm.NewItemActionUpdate(Sender: TObject);
5547 NewItemAction.Enabled := (GetActiveList is TBoard);
5550 procedure TGikoForm.SelectItemActionUpdate(Sender: TObject);
5552 SelectItemAction.Enabled := (GetActiveList is TBoard);
5555 procedure TGikoForm.UpFolderActionUpdate(Sender: TObject);
5557 UpFolderAction.Enabled := not (GetActiveList is TBBS);
5560 procedure TGikoForm.ThreadEditorActionUpdate(Sender: TObject);
5562 ThreadEditorAction.Enabled := (GetActiveList is TBoard);
5565 procedure TGikoForm.FormResize(Sender: TObject);
5568 MessageListView.Column[0].Width := MessageListView.ClientWidth - 32;
5569 MainCoolBar.Width := TopPanel.Width - TopRightPanel.Width;
5571 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
5572 if GikoSys.Setting.ListWidthState = glsMin then begin
5573 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5574 ViewPanel.Width := ThreadMainPanel.Width - 80;
5577 if GikoSys.Setting.ListHeightState = glsMin then begin
5578 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
5579 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
5583 FIsIgnoreResize := rtResizing;
5584 PostMessage( Handle, USER_RESIZED, 0, 0 );
5589 procedure TGikoForm.ScrollTopActionUpdate(Sender: TObject);
5591 ScrollTopAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5594 procedure TGikoForm.ScrollLastActionUpdate(Sender: TObject);
5596 ScrollLastAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5599 procedure TGikoForm.ScrollNewActionUpdate(Sender: TObject);
5601 ScrollNewAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
5604 procedure TGikoForm.ScrollKokoActionUpdate(Sender: TObject);
5606 ScrollKokoAction.Enabled := (GetActiveContent <> nil)
5607 and (GetActiveContent.IsLogFile)
5608 and (GetActiveContent.Kokomade <> -1);
5612 procedure TGikoForm.EditorActionUpdate(Sender: TObject);
5614 EditorAction.Enabled := GetActiveContent <> nil;
5617 procedure TGikoForm.IEActionUpdate(Sender: TObject);
5619 IEAction.Enabled := GetActiveContent <> nil;
5622 procedure TGikoForm.ShowThreadActionUpdate(Sender: TObject);
5624 ShowThreadAction.Enabled := GetActiveContent <> nil;
5627 procedure TGikoForm.ShowBoardActionUpdate(Sender: TObject);
5629 ShowBoardAction.Enabled := GetActiveContent <> nil;
5632 procedure TGikoForm.ItemReloadActionUpdate(Sender: TObject);
5634 ItemReloadAction.Enabled := GetActiveContent <> nil;
5637 procedure TGikoForm.URLCopyActionUpdate(Sender: TObject);
5639 URLCopyAction.Enabled := GetActiveContent <> nil;
5642 procedure TGikoForm.NameCopyActionUpdate(Sender: TObject);
5644 NameCopyAction.Enabled := GetActiveContent <> nil;
5647 procedure TGikoForm.NameURLCopyActionUpdate(Sender: TObject);
5649 NameURLCopyAction.Enabled := GetActiveContent <> nil;
5652 procedure TGikoForm.BrowserTabCloseActionUpdate(Sender: TObject);
5654 BrowserTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5657 procedure TGikoForm.NotSelectTabCloseActionUpdate(Sender: TObject);
5659 NotSelectTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 1);
5662 procedure TGikoForm.AllTabCloseActionUpdate(Sender: TObject);
5664 AllTabCloseAction.Enabled := (BrowserTab.Tabs.Count > 0);
5667 procedure TGikoForm.ActiveLogDeleteActionUpdate(Sender: TObject);
5669 ActiveLogDeleteAction.Enabled := GetActiveContent <> nil;
5672 procedure TGikoForm.LogDeleteActionExecute(Sender: TObject);
5674 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';
5675 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';
5676 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
5678 ThreadItem: TThreadItem;
5679 TmpListItem: TListItem;
5683 List := TList.Create;
5685 TmpListItem := ListView.Selected;
5686 while TmpListItem <> nil do begin
5687 if TObject(TmpListItem.Data) is TThreadItem then begin
5688 ThreadItem := TThreadItem(TmpListItem.Data);
5689 if ThreadItem.IsLogFile then
5690 List.Add(ThreadItem);
5692 TmpListItem := ListView.GetNextItem(TmpListItem, sdAll, [isSelected]);
5695 if GikoSys.Setting.DeleteMsg and (List.Count > 0) then begin
5696 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
5697 if List.Count = 1 then begin
5698 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
5701 if MsgBox(Handle, StringReplace( DEL_SAME_MSG, '^0', IntToStr( List.Count ), [rfReplaceAll] ), DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> IDYES then
5707 for i := 0 to List.Count - 1 do begin
5708 ThreadItem := TThreadItem(List[i]);
5709 DeleteHistory(ThreadItem);
5710 DeleteTab(ThreadItem);
5711 ThreadItem.DeleteLogFile;
5713 TreeView.Refresh; // UnRead
\82Ì
\95\
\8e¦
\82ð
\8dX
\90V
5720 procedure TGikoForm.DeleteTab(BrowserRecord: TBrowserRecord);
5725 idx := BrowserTab.TabIndex;
5726 FTabHintIndex := -1;
5727 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5728 if TBrowserRecord(BrowserTab.Tabs.Objects[i]) = BrowserRecord then begin
5729 BrowserTab.Tabs.BeginUpdate;
5731 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5732 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5733 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5736 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5738 if( FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i]) ) then
5739 FActiveContent := nil;
5740 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5741 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5743 FBrowsers.Move(j, BROWSER_COUNT - 1);
5745 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5746 BrowserTab.Tabs.Delete(i);
5747 if idx > i then begin
5748 BrowserTab.TabIndex := idx - 1;
5750 if BrowserTab.Tabs.Count -1 >= idx then
5751 BrowserTab.TabIndex := idx
5753 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5755 if BrowserTab.Tabs.Count = 0 then begin
5756 BrowserNullTab.Thread := nil;
5758 if(BrowserTab.TabIndex <> -1) and
5759 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5760 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5761 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5762 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5764 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5765 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5766 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5767 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5772 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5773 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5774 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5775 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5777 BrowserTab.Tabs.EndUpdate;
5778 if( FActiveContent = nil) then
5779 BrowserTab.OnChange(nil);
5784 procedure TGikoForm.DeleteTab(ThreadItem: TThreadItem);
5789 idx := BrowserTab.TabIndex;
5790 FTabHintIndex := -1;
5791 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
5792 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread = ThreadItem then begin
5793 BrowserTab.Tabs.BeginUpdate;
5795 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5796 doc := TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser.Document;
5797 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := doc.Body.ScrollTop;
5801 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Thread.ScrollTop := 0;
5803 if(FActiveContent = TBrowserRecord(BrowserTab.Tabs.Objects[i])) then
5804 FActiveContent := nil;
5805 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser <> nil then begin
5806 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser);
5808 FBrowsers.Move(j, BROWSER_COUNT - 1);
5810 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
5811 BrowserTab.Tabs.Delete(i);
5812 if idx > i then begin
5813 BrowserTab.TabIndex := idx - 1;
5815 if BrowserTab.Tabs.Count -1 >= idx then
5816 BrowserTab.TabIndex := idx
5818 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
5820 if(BrowserTab.TabIndex <> -1) and
5821 ( TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser = nil) then begin
5822 for j := BrowserTab.Tabs.Count - 1 downto 0 do begin
5823 if(TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser
5824 = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) )then
5826 TBrowserRecord(BrowserTab.Tabs.Objects[j]).Browser := nil;
5827 if TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent <> nil then begin
5828 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent.Free;
5829 TBrowserRecord(BrowserTab.Tabs.Objects[j]).FEvent := nil;
5834 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Browser
5835 := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
5836 TBrowserRecord(BrowserTab.Tabs.Objects[BrowserTab.TabIndex]).Repaint := true;
5837 FBrowsers.Move(BROWSER_COUNT - 1, 0);
5840 BrowserTab.Tabs.EndUpdate;
5841 if( FActiveContent = nil) then
5842 BrowserTab.OnChange(nil);
5848 procedure TGikoForm.KokomadeActionExecute(Sender: TObject);
5851 ThreadItem: TThreadItem;
5853 No := KokoPopupMenu.Tag;
5854 if No = 0 then Exit;
5855 ThreadItem := GetActiveContent;
5856 if ThreadItem = nil then Exit;
5857 ThreadItem.Kokomade := No;
5858 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5859 FActiveContent.FRepaint := true;
5860 InsertBrowserTab(FActiveContent.Thread, true);
5861 Application.ProcessMessages;
5864 procedure TGikoForm.ZenbuActionExecute(Sender: TObject);
5866 ThreadItem: TThreadItem;
5868 ThreadItem := GetActiveContent;
5869 if ThreadItem = nil then Exit;
5870 ThreadItem.Kokomade := -1;
5871 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
5872 FActiveContent.FRepaint := true;
5873 InsertBrowserTab(FActiveContent.Thread, true);
5874 Application.ProcessMessages;
5877 function TGikoForm.Hook(var Message: TMessage): Boolean;
5886 procedure TGikoForm.KokoResActionExecute(Sender: TObject);
5888 Editor: TEditorForm;
5892 Number := KokoPopupMenu.Tag;
5893 if Number = 0 then Exit;
5894 Item := GetActiveContent;
5895 if Item = nil then Exit;
5897 Editor := TEditorForm.Create(Self);
5898 Editor.SetThreadItem(Item);
5899 GikoSys.LoadEditorKeySetting(Editor.ActionList);
5900 Editor.BodyEdit.Text := '>>' + IntToStr(Number) + #13#10;
5902 Editor.BodyEdit.SetFocus;
5905 procedure TGikoForm.ListPopupMenuPopup(Sender: TObject);
5907 ItemRoundPMenu.Visible := (GetActiveList is TBoard);
5908 ItemReservPMenu.Visible := (GetActiveList is TBoard);
5909 LPMSep01.Visible := (GetActiveList is TBoard);
5910 ListRoundPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5911 ListReservPMenu.Visible := (GetActiveList is TCategory);// or (GetActiveList is TBoard);
5912 LPMSep02.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5913 KidokuPMenu.Visible := (GetActiveList is TBoard);
5914 MidokuPMenu.Visible := (GetActiveList is TBoard);
5915 UrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5916 NameUrlCopyPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5917 AllSelectPMenu.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5918 LPMSep05.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5919 DeletePMenu.Visible := (GetActiveList is TBoard);
5920 LPMSep06.Visible := (GetActiveList is TCategory) or (GetActiveList is TBoard);
5921 BoardFavoriteAddMenu.Visible := (GetActiveList is TCategory);
5922 ThreadFavoriteAddMenu.Visible := (GetActiveList is TBoard);
5924 AddRoundNameMenu(ItemReservPMenu);
5925 AddRoundNameMenu(ListReservPMenu);
5928 procedure TGikoForm.BoardIEActionExecute(Sender: TObject);
5932 if GetActiveList is TBoard then begin
5933 URL := TBoard(GetActiveList).URL;
5934 GikoSys.OpenBrowser(URL, gbtAuto);
5938 procedure TGikoForm.SelectItemURLCopyActionExecute(Sender: TObject);
5945 List := TList.Create;
5947 SelectListItem(List);
5948 for i := 0 to List.Count - 1 do begin
5949 if TObject(List[i]) is TBoard then
5950 s := s + TBoard(List[i]).URL + #13#10
5951 else if TObject(List[i]) is TThreadItem then
5952 s := s + TThreadItem(List[i]).URL + #13#10;
5955 Clipboard.AsText := s;
5961 procedure TGikoForm.SelectItemNameCopyActionExecute(Sender: TObject);
5968 List := TList.Create;
5970 SelectListItem(List);
5971 for i := 0 to List.Count - 1 do begin
5972 if TObject(List[i]) is TBoard then
5973 s := s + TBoard(List[i]).Title + #13#10
5974 else if TObject(List[i]) is TThreadItem then
5975 s := s + TThreadItem(List[i]).Title + #13#10;
5978 Clipboard.AsText := s;
5984 procedure TGikoForm.SelectItemNameURLCopyActionExecute(Sender: TObject);
5991 List := TList.Create;
5993 SelectListItem(List);
5994 for i := 0 to List.Count - 1 do begin
5995 if TObject(List[i]) is TBoard then
5996 s := s + TBoard(List[i]).Title + #13#10 + TBoard(List[i]).URL + #13#10
5997 else if TObject(List[i]) is TThreadItem then
5998 s := s + TThreadItem(List[i]).Title + #13#10 + TThreadItem(List[i]).URL + #13#10;
6001 Clipboard.AsText := s;
6007 procedure TGikoForm.BoardIEActionUpdate(Sender: TObject);
6009 if GetActiveList is TBoard then
6010 BoardIEAction.Enabled := True
6012 BoardIEAction.Enabled := False;
6015 procedure TGikoForm.SelectItemURLCopyActionUpdate(Sender: TObject);
6017 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6018 SelectItemURLCopyAction.Enabled := True
6020 SelectItemURLCopyAction.Enabled := False;
6023 procedure TGikoForm.SelectItemNameCopyActionUpdate(Sender: TObject);
6025 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6026 SelectItemNameCopyAction.Enabled := True
6028 SelectItemNameCopyAction.Enabled := False;
6031 procedure TGikoForm.SelectItemNameURLCopyActionUpdate(Sender: TObject);
6033 if ((GetActiveList is TBoard) or (GetActiveList is TCategory))and (ListView.SelCount > 0) then
6034 SelectItemNameURLCopyAction.Enabled := True
6036 SelectItemNameURLCopyAction.Enabled := False;
6039 procedure TGikoForm.AllSelectActionUpdate(Sender: TObject);
6041 if ListView.SelCount > 0 then
6042 AllSelectAction.Enabled := True
6044 AllSelectAction.Enabled := False;
6047 procedure TGikoForm.LogDeleteActionUpdate(Sender: TObject);
6049 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then
6050 LogDeleteAction.Enabled := True
6052 LogDeleteAction.Enabled := False;
6055 procedure TGikoForm.BrowserTabCloseActionExecute(Sender: TObject);
6058 // ThreadItem: TThreadItem;
6060 idx := BrowserTab.TabIndex;
6061 if idx <> -1 then begin
6062 if BrowserTab.Tabs.Objects[idx] <> nil then begin
6063 //ThreadItem := TThreadItem(BrowserTab.Tabs.Objects[idx]);
6064 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6069 procedure TGikoForm.NotSelectTabCloseActionExecute(Sender: TObject);
6074 idx := BrowserTab.TabIndex;
6075 if idx = -1 then Exit;
6076 BrowserTab.Tabs.BeginUpdate;
6077 for i := BrowserTab.Tabs.Count - 1 downto BrowserTab.TabIndex + 1 do begin
6078 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6079 BrowserTab.Tabs.Delete(i);
6081 if idx > 0 then begin
6082 for i := BrowserTab.TabIndex - 1 downto 0 do begin
6083 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6084 BrowserTab.Tabs.Delete(i);
6087 BrowserTab.Tabs.EndUpdate;
6090 procedure TGikoForm.AllTabCloseActionExecute(Sender: TObject);
6094 if GikoSys.Setting.ShowDialogForAllTabClose then
6095 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
6098 FActiveContent := nil;
6099 BrowserNullTab.Thread := nil;
6100 BrowserTab.OnChange := nil;
6101 BrowserTab.Tabs.BeginUpdate;
6102 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6103 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Free;
6105 BrowserTab.Tabs.Clear;
6106 BrowserTab.Tabs.EndUpdate;
6107 BrowserTab.OnChange := BrowserTabChange;
6108 SetContent(BrowserNullTab);
6109 Self.Caption := CAPTION_NAME ;
6112 procedure TGikoForm.TreeSelectBoradReloadExecute(Sender: TObject);
6115 TmpTreeNode: TTreeNode;
6117 TmpTreeNode := FClickNode;
6118 TreeView.Selected := FClickNode;
6121 if TObject(TmpTreeNode.Data) is TBoard then
6122 Board := TBoard(TmpTreeNode.Data)
6123 else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then
6124 Board := TFavoriteBoardItem(TmpTreeNode.Data).Item;
6126 if Board <> nil then
6127 DownloadList(Board);
6130 procedure TGikoForm.TreeSelectThreadReloadExecute(Sender: TObject);
6132 ThreadItem: TThreadItem;
6133 TmpTreeNode: TTreeNode;
6135 TmpTreeNode := FClickNode;
6136 TreeView.Selected := FClickNode;
6139 if TObject(TmpTreeNode.Data) is TThreadItem then
6140 ThreadItem := TThreadItem(TmpTreeNode.Data)
6141 else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then
6142 ThreadItem := TFavoriteThreadItem(TmpTreeNode.Data).Item;
6144 if ThreadItem <> nil then
6145 DownloadContent(ThreadItem);
6148 procedure TGikoForm.TreeSelectURLCopyExecute(Sender: TObject);
6150 TmpTreeNode: TTreeNode;
6153 TmpTreeNode := FClickNode;
6154 TreeView.Selected := FClickNode;
6155 if TObject(TmpTreeNode.Data) is TBoard then begin
6156 s := TBoard(TmpTreeNode.Data).URL + #13#10;
6157 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6158 s := TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6159 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6160 s := TThreadItem(TmpTreeNode.Data).URL + #13#10;
6161 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6162 s := TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6164 Clipboard.AsText := s;
6167 procedure TGikoForm.TreeSelectNameURLCopyExecute(Sender: TObject);
6169 TmpTreeNode: TTreeNode;
6172 TmpTreeNode := FClickNode;
6173 TreeView.Selected := FClickNode;
6174 if TObject(TmpTreeNode.Data) is TBoard then begin
6175 s := TBoard(TmpTreeNode.Data).Title + #13#10 + TBoard(TmpTreeNode.Data).URL + #13#10;
6176 end else if TObject(TmpTreeNode.Data) is TFavoriteBoardItem then begin
6177 s := TFavoriteBoardItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteBoardItem(TmpTreeNode.Data).URL + #13#10;
6178 end else if (TObject(TmpTreeNode.Data) is TThreadItem) then begin
6179 s := TThreadItem(TmpTreeNode.Data).Title + #13#10 + TThreadItem(TmpTreeNode.Data).URL + #13#10;
6180 end else if TObject(TmpTreeNode.Data) is TFavoriteThreadItem then begin
6181 s := TFavoriteThreadItem(TmpTreeNode.Data).Item.Title + #13#10 + TFavoriteThreadItem(TmpTreeNode.Data).URL + #13#10;
6183 Clipboard.AsText := s;
6186 procedure TGikoForm.TreePopupMenuPopup(Sender: TObject);
6188 FClickNode := TreeView.Selected;
6189 if FClickNode = nil then begin
6190 TreeSelectThreadPupupMenu.Visible := False;
6191 TreeSelectBoardPupupMenu.Visible := False;
6192 TPMSep01.Visible := False;
6193 TreeSelectURLPupupMenu.Visible := False;
6194 TreeSelectNamePupupMenu.Visible := False;
6195 TreeSelectNameURLPupupMenu.Visible := False;
6196 TreeSelectFavoriteAddPupupMenu.Visible := False;
6197 TreeSelectLogDeleteSeparator.Visible := False;
6198 TreeSelectLogDeletePopupMenu.Visible := False;
6199 end else if TObject(FClickNode.Data) is TBoard then begin
6200 TreeSelectThreadPupupMenu.Visible := False;
6201 TreeSelectBoardPupupMenu.Visible := True;
6202 TPMSep01.Visible := True;
6203 TreeSelectURLPupupMenu.Visible := True;
6204 TreeSelectNamePupupMenu.Visible := True;
6205 TreeSelectNameURLPupupMenu.Visible := True;
6206 TreeSelectFavoriteAddPupupMenu.Visible := True;
6207 TreeSelectLogDeleteSeparator.Visible := False;
6208 TreeSelectLogDeletePopupMenu.Visible := False;
6209 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
6210 TreeSelectThreadPupupMenu.Visible := False;
6211 TreeSelectBoardPupupMenu.Visible := True;
6212 TPMSep01.Visible := True;
6213 TreeSelectURLPupupMenu.Visible := True;
6214 TreeSelectNamePupupMenu.Visible := True;
6215 TreeSelectNameURLPupupMenu.Visible := True;
6216 TreeSelectFavoriteAddPupupMenu.Visible := True;
6217 TreeSelectLogDeleteSeparator.Visible := False;
6218 TreeSelectLogDeletePopupMenu.Visible := False;
6219 end else if (TObject(FClickNode.Data) is TThreadItem) then begin
6220 TreeSelectThreadPupupMenu.Visible := True;
6221 TreeSelectBoardPupupMenu.Visible := False;
6222 TPMSep01.Visible := True;
6223 TreeSelectURLPupupMenu.Visible := True;
6224 TreeSelectNamePupupMenu.Visible := True;
6225 TreeSelectNameURLPupupMenu.Visible := True;
6226 TreeSelectFavoriteAddPupupMenu.Visible := True;
6227 TreeSelectLogDeleteSeparator.Visible := True;
6228 TreeSelectLogDeletePopupMenu.Visible := True;
6229 end else if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
6230 TreeSelectThreadPupupMenu.Visible := True;
6231 TreeSelectBoardPupupMenu.Visible := False;
6232 TPMSep01.Visible := True;
6233 TreeSelectURLPupupMenu.Visible := True;
6234 TreeSelectNamePupupMenu.Visible := True;
6235 TreeSelectNameURLPupupMenu.Visible := True;
6236 TreeSelectFavoriteAddPupupMenu.Visible := True;
6237 TreeSelectLogDeleteSeparator.Visible := True;
6238 TreeSelectLogDeletePopupMenu.Visible := True;
6239 end else if (TObject(FClickNode.Data) is TCategory) then begin
6240 TreeSelectThreadPupupMenu.Visible := False;
6241 TreeSelectBoardPupupMenu.Visible := False;
6242 TPMSep01.Visible := False;
6243 TreeSelectURLPupupMenu.Visible := False;
6244 TreeSelectNamePupupMenu.Visible := True;
6245 TreeSelectNameURLPupupMenu.Visible := False;
6246 TreeSelectFavoriteAddPupupMenu.Visible := False;
6247 TreeSelectLogDeleteSeparator.Visible := False;
6248 TreeSelectLogDeletePopupMenu.Visible := False;
6249 end else if FClickNode.IsFirstNode then begin
6250 TreeSelectThreadPupupMenu.Visible := False;
6251 TreeSelectBoardPupupMenu.Visible := False;
6252 TPMSep01.Visible := False;
6253 TreeSelectURLPupupMenu.Visible := False;
6254 TreeSelectNamePupupMenu.Visible := True;
6255 TreeSelectNameURLPupupMenu.Visible := False;
6256 TreeSelectFavoriteAddPupupMenu.Visible := False;
6257 TreeSelectLogDeleteSeparator.Visible := False;
6258 TreeSelectLogDeletePopupMenu.Visible := False;
6260 TreeSelectThreadPupupMenu.Visible := False;
6261 TreeSelectBoardPupupMenu.Visible := False;
6262 TPMSep01.Visible := False;
6263 TreeSelectURLPupupMenu.Visible := False;
6264 TreeSelectNamePupupMenu.Visible := False;
6265 TreeSelectNameURLPupupMenu.Visible := False;
6266 TreeSelectFavoriteAddPupupMenu.Visible := False;
6267 TreeSelectLogDeleteSeparator.Visible := False;
6268 TreeSelectLogDeletePopupMenu.Visible := False;
6272 procedure TGikoForm.BrowserNewWindow2(Sender: TObject;
6273 var ppDisp: IDispatch; var Cancel: WordBool);
6284 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6285 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6286 Html := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6287 if(AnsiPos('>>', Text) = 1) or (AnsiPos('>', Text) = 1)
6288 or (AnsiPos('
\81\84\81\84', Text) = 1) or (AnsiPos('
\81\84', Text) = 1) then begin
6289 if GikoSys.Setting.ResAnchorJamp then begin
6290 Text := ZenToHan(Text);
6292 if(AnsiPos('>>', Text) = 1) then begin
6293 Text := Copy(Text, 3, Length(Text) - 2);
6295 Text := Copy(Text, 2, Length(Text) - 1);
6297 if AnsiPos('-', Text) <> 0 then begin
6298 wkIntSt := StrToIntDef(Copy(Text, 1, AnsiPos('-', Text) - 1), 0);
6299 Text := Copy(Text, AnsiPos('-', Text) + 1, Length(Text));
6300 wkIntTo := StrToIntDef(Text, 0);
6301 if wkIntTo < wkIntSt then
6304 wkIntSt := StrToIntDef(Text, 0);
6306 if wkIntSt <> 0 then
6307 BrowserMovement(IntToStr(wkIntSt));
6310 URL := GikoSys.GetHRefText(Html);
6311 URL := GikoSys.HTMLDecode(URL);
6312 if( AnsiPos('http://', URL) = 1) or (AnsiPos('https://', URL) = 1) or
6313 ( AnsiPos('ftp://', URL) = 1) then begin
6314 //
\83A
\83h
\83\8c\83X
\83o
\81[
\82Ì
\97\9a\97ð
6315 if GikoSys.Setting.LinkAddAddressBar then begin
6316 idx := AddressComboBox.Items.IndexOf(URL);
6317 if idx = -1 then begin
6318 AddressComboBox.Items.Insert(0, URL);
6319 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
6320 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
6322 AddressComboBox.Items.Delete(idx);
6323 AddressComboBox.Items.Insert(0, URL);
6331 { ShiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
6332 CtrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
6335 Memo1.Lines.Add('ShiftDown');
6337 Memo1.Lines.Add('CtrlDown');
6339 if (IHTMLDocument2(TWebBrowser(Sender).Document).activeElement <> nil) then begin
6340 Text := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerText;
6341 Url := IHTMLDocument2(TWebBrowser(Sender).Document).activeElement.Get_outerHTML;
6345 URL := GetHRefText(URL);
6347 ParseURI(URL, Protocol, Host, path, Document, Port, Bookmark);
6349 b := Parse2chURL(path, document, bbs, num);
6350 memo1.Lines.Add('bbs: ' + bbs);
6351 memo1.Lines.Add('key: ' + num);
6353 Memo1.Lines.Add('Parse2chURL: True')
6355 Memo1.Lines.Add('Parse2chURL: False');
6357 // AppPath := 'C:\Borland\Projects\Test\TestBrowser\TestBrowser.exe';
6362 procedure TGikoForm.ListSplitterCanResize(Sender: TObject;
6363 var NewSize: Integer; var Accept: Boolean);
6365 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6366 if ViewPanel.Width < 2 then begin
6367 ViewPanel.Width := 1;
6368 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6369 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6370 GikoSys.Setting.ListWidthState := glsMax;
6371 end else if ViewPanel.Width > (ThreadMainPanel.Width - 80) then begin
6372 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6373 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6374 GikoSys.Setting.ListWidthState := glsMin;
6376 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6377 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6378 GikoSys.Setting.ListWidthState := glsNormal;
6381 if ViewPanel.Height < 2 then begin
6382 ViewPanel.Height := 1;
6383 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6384 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6385 GikoSys.Setting.ListHeightState := glsMax;
6386 end else if ViewPanel.Height > (ThreadMainPanel.Height - BrowserCoolBar.Height - 7) then begin
6387 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6388 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6389 GikoSys.Setting.ListHeightState := glsMin;
6391 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
6392 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
6393 GikoSys.Setting.ListHeightState := glsNormal;
6398 procedure TGikoForm.ListSplitterMoved(Sender: TObject);
6400 if Mouse.Capture <> 0 then
6402 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
6403 if (ViewPanel.Width > 1) and (ViewPanel.Width <= (ThreadMainPanel.Width - 80)) then
6404 FBrowserSizeWidth := ViewPanel.Width;
6406 if (ViewPanel.Height > 1) and (ViewPanel.Height <= (ThreadMainPanel.Height - BrowserCoolBar.Height)) then
6407 FBrowserSizeHeight := ViewPanel.Height;
6409 { if (Mouse.Capture = 0) and (ViewPanel.Height > 1) and (not ArrangeAction.Checked) then
6410 FBrowserSizeHeight := ViewPanel.Height
6411 else if (Mouse.Capture = 0) and (ViewPanel.Width > 1) and (ArrangeAction.Checked) then
6412 FBrowserSizeWidth := ViewPanel.Width;}
6415 procedure TGikoForm.BrowserTabChange(Sender: TObject);
6421 // if NewTab = -1 then
6422 // ThreadItem := nil;
6423 if not BrowserTab.Dragging then begin
6424 FTabHintIndex := -1;
6425 BrowserTab.Hint := '';
6426 idx := BrowserTab.TabIndex;
6427 if idx = -1 then begin
6428 BrowserNullTab.Thread := nil;
6429 SetContent(BrowserNullTab);
6431 end else if(BrowserTab.Tabs.Objects[idx] <> nil) and (BrowserTab.Tabs.Objects[idx] is TBrowserRecord) then begin
6432 if TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser <> nil then begin
6433 j := FBrowsers.IndexOf(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser);
6435 FBrowsers.Move(j ,0);
6437 if( FActiveContent <> nil ) and (FActiveContent.Browser <> nil) and
6438 (FActiveContent.Browser <> BrowserNullTab.Browser) and
6439 (FActiveContent.Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1])) then
6440 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6442 for i := 0 to BrowserTab.Tabs.Count - 1 do begin
6443 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(FBrowsers[BROWSER_COUNT - 1]) then begin
6444 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser := nil;
6445 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
6446 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent <> nil then begin
6447 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent.Free;
6448 TBrowserRecord(BrowserTab.Tabs.Objects[i]).FEvent := nil;
6452 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser := TWebBrowser(FBrowsers[BROWSER_COUNT - 1]);
6453 TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Repaint := true;
6454 FBrowsers.Move(BROWSER_COUNT - 1, 0);
6456 TOleControl(TBrowserRecord(BrowserTab.Tabs.Objects[idx]).Browser).BringToFront;
6457 // GikoSys.OnlyAHundredRes := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6458 // OnlyAHundredRes.Checked := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).OnlyHundred;
6459 SetContent(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6461 if (GikoSys.Setting.URLDisplay) and (GetActiveContent <> nil) then
6462 AddressComboBox.Text := GetActiveContent.URL;
6464 if ((TreeView.Visible) and (TreeView.Focused)) or ((FavoriteTreeView.Visible) and (FavoriteTreeView.Focused)) or
6465 (ListView.Focused) or (SelectComboBox.Focused) or (AddressComboBox.Focused)
6468 SetFocusForBrowserAction.Execute;
6477 procedure TGikoForm.BrowserTabMouseDown(Sender: TObject;
6478 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
6484 if Button = mbMiddle then begin
6485 //
\83}
\83E
\83X
\92\86\83{
\83^
\83\93
6488 p := BrowserTab.ScreenToClient(p);
6489 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6491 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
6492 //end else if Button = mbRight then begin
6493 //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é
6494 //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
6495 { //
\83}
\83E
\83X
\89E
\83{
\83^
\83\93
6498 // GetCursorPos(p2);
6499 p := BrowserTab.ScreenToClient(p);
6500 // idx := BrowserTab.ItemAtPos(p);
6501 idx := BrowserTab.IndexOfTabAt(p.X, p.Y);
6502 if idx <> -1 then begin
6503 OldIndex := BrowserTab.TabIndex;
6504 BrowserTab.TabIndex := idx;
6505 if OldIndex <> idx then
6506 BrowserTab.OnChange(nil);
6507 BrowserTabPopupMenu.Tag := idx;
6508 BrowserTabPopupMenu.Popup(p2.X, p2.Y);
6511 end else if BUtton = mbLeft then begin
6512 FDragWFirst := true;
6513 FMouseDownPos.X := X;
6514 FMouseDownPos.Y := Y;
6519 procedure TGikoForm.SetBrowserTabState;
6522 CoolBand: TCoolBand;
6524 BrowserBottomPanel.AutoSize := False;
6525 if GikoSys.Setting.BrowserTabVisible then begin
6526 if GikoSys.Setting.BrowserTabStyle = gtsTab then begin
6527 BrowserTab.Style := tsTabs;
6528 if GikoSys.Setting.BrowserTabPosition = gtpTop then
6529 BrowserTab.TabPosition := tpTop
6531 BrowserTab.TabPosition := tpBottom;
6532 end else if GikoSys.Setting.BrowserTabStyle = gtsButton then begin
6533 BrowserTab.TabPosition := tpTop;
6534 BrowserTab.Style := tsButtons;
6536 BrowserTab.TabPosition := tpTop;
6537 BrowserTab.Style := tsFlatButtons
6540 if GikoSys.Setting.BrowserTabPosition = gtpTop then begin
6541 BrowserTab.Parent := BrowserTabToolBar;
6542 BrowserBottomPanel.Hide;
6543 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6544 if CoolBand <> nil then
6545 CoolBand.Visible := True;
6546 // BrowserTab.Parent := BrowserTopPanel;
6547 // BrowserTab.Parent := BrowserCoolBar;
6548 // BrowserTab.Top := 26;
6549 // BrowserTopPanel.Height := 44;
6552 BrowserTab.Parent := BrowserBottomPanel;
6553 BrowserTab.Top := 0;
6554 BrowserTab.Left := 0;
6555 BrowserBottomPanel.Show;
6556 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6557 if CoolBand <> nil then
6558 CoolBand.Visible := False;
6559 // BrowserTopPanel.Height := 26;
6563 CoolBand := GetCoolBand(BrowserCoolBar, BrowserTabToolBar);
6564 if CoolBand <> nil then
6565 CoolBand.Visible := False;
6566 BrowserBottomPanel.Visible := False;
6567 // BrowserTab.Visible := False;
6568 // BrowserTopPanel.Height := 26;
6569 AllTabCloseAction.Execute;
6573 procedure TGikoForm.BrowserTabDragOver(Sender, Source: TObject; X,
6574 Y: Integer; State: TDragState; var Accept: Boolean);
6578 idx := BrowserTab.IndexOfTabAt(X, Y);
6579 Accept := (Source = BrowserTab) and (BrowserTab.TabIndex <> idx);
6582 procedure TGikoForm.BrowserTabDragDrop(Sender, Source: TObject; X,
6587 idx := BrowserTab.IndexOfTabAt(X, Y);
6589 BrowserTab.Tabs.Move(BrowserTab.TabIndex, idx);
6592 procedure TGikoForm.BrowserTabMouseMove(Sender: TObject;
6593 Shift: TShiftState; X, Y: Integer);
6596 ThreadItem: TThreadItem;
6599 TabIdx := BrowserTab.IndexOfTabAt(x, y);
6601 if ( ssLeft in Shift ) and ( BrowserTab.Style = tsTabs ) then begin
6602 if FDragWFirst = false then begin
6603 FDragWFirst := true;
6605 BrowserTab.EndDrag(false);
6606 BrowserTab.BeginDrag(false, DandD_THRESHOLD);
6607 FDragWFirst := false;
6610 BrowserTab.EndDrag(false);
6611 FDragWFirst := false;
6614 if (FTabHintIndex <> TabIdx) and (TabIdx <> -1) then begin
6615 Application.CancelHint;
6616 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[TabIdx]).Thread;
6617 if ThreadItem.Title <> BrowserTab.Tabs[TabIdx] then begin
6618 BrowserTab.Hint := ThreadItem.Title;
6619 Application.ShowHint := True;
6621 BrowserTab.Hint := '';
6622 Application.ShowHint := True;
6624 FTabHintIndex := TabIdx;
6629 procedure TGikoForm.BrowserDocumentComplete(Sender: TObject;
6630 const pDisp: IDispatch; var URL: OleVariant);
6632 FDispHtmlDocument: DispHTMLDocument;
6633 BrowserRecord :TBrowserRecord;
6636 threadItem : TThreadItem;
6638 // AddMessageList('DocumentComplete', nil, gmiWhat);
6639 if TObject(Sender) is TWebBrowser then begin
6640 BrowserRecord := nil;
6641 if TWebBrowser(Sender) <> Browser then begin
6642 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
6643 if TBrowserRecord(BrowserTab.Tabs.Objects[i]).Browser = TWebBrowser(Sender) then begin
6644 BrowserRecord := TBrowserRecord(BrowserTab.Tabs.Objects[i]);
6648 if BrowserRecord <> nil then begin
6649 if BrowserRecord.FEvent <> nil then
6650 BrowserRecord.FEvent.Free;
6651 FDispHtmlDocument := Idispatch(OleVariant(BrowserRecord.Browser.ControlInterface).Document) as DispHTMLDocument;
6652 BrowserRecord.FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6653 BrowserRecord.FEvent.OnContextMenu := OnDocumentContextMenu;
6654 BrowserRecord.FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6657 if GetActiveContent <> nil then begin
6658 FDispHtmlDocument := Idispatch(OleVariant(Browser.ControlInterface).Document) as DispHTMLDocument;
6659 if FEvent <> nil then
6661 FEvent := THTMLDocumentEventSink.Create(Self, FDispHtmlDocument, HTMLDocumentEvents2);
6662 FEvent.OnContextMenu := OnDocumentContextMenu;
6663 FEvent.OnClick := WebBrowserClick; //
\92Ç
\89Á
\82µ
\82½OnClick
\83C
\83x
\83\93\83g
6667 if (BrowserRecord <> nil) and
6668 Assigned( BrowserRecord.Thread ) then begin
6669 threadItem := BrowserRecord.Thread;
6671 if (BrowserRecord <> nil) and (Length( BrowserRecord.Movement ) > 0) then begin
6672 BrowserMovement( BrowserRecord.Movement, BrowserRecord );
6673 BrowserRecord.Movement := '';
6674 end else if threadItem.UnRead then begin
6675 threadItem.UnRead := False;
6676 BrowserMovement( 'new', BrowserRecord );
6678 end else if threadItem.ScrollTop <> 0 then begin
6680 doc := Idispatch( OleVariant( BrowserRecord.Browser.ControlInterface ).Document ) as IHTMLDocument2;
6681 doc.Body.ScrollTop := threadItem.ScrollTop;
6684 MsgBox(Handle, E.Message, 'SetContent[ScrollTop<-]', 0);
6691 procedure TGikoForm.SelectReservActionUpdate(Sender: TObject);
6696 if (GetActiveList is TBoard) and (ListView.SelCount > 0) then begin
6697 List := TList.Create;
6699 SelectListItem(List);
6700 for i := 0 to List.Count - 1 do begin
6701 if TObject(List[i]) is TThreadItem then begin
6702 if TThreadItem(List[i]).IsLogFile then begin
6703 SelectReservAction.Enabled := True;
6708 SelectReservAction.Enabled := False;
6712 end else if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
6713 SelectReservAction.Enabled := True
6715 SelectReservAction.Enabled := False;
6718 procedure TGikoForm.RoundNamePopupMenuPopup(Sender: TObject);
6720 AddRoundNameMenu(RoundNamePopupMenu.Items);
6723 procedure TGikoForm.AddRoundNameMenu(MenuItem: TMenuItem);
6729 Item := TMenuItem.Create(Self);
6730 Item.Caption := '
\90V
\82µ
\82¢
\96¼
\91O
\82Å
\8f\84\89ñ
\97\
\96ñ(&N)...';
6731 Item.OnClick := SelectNewRoundNameExecute;
6733 Item := TMenuItem.Create(Self);
6734 Item.Caption := '
\8f\84\89ñ
\83\8a\83X
\83g
\82©
\82ç
\8dí
\8f\9c(&D)';
6735 Item.OnClick := SelectDeleteRoundExecute;
6737 Item := TMenuItem.Create(Self);
6738 Item.Caption := '-';
6740 for i := 0 to RoundList.RoundNameList.Count - 1 do begin
6741 Item := TMenuItem.Create(Self);
6742 Item.Caption := RoundList.RoundNameList[i];
6743 Item.OnClick := SetSelectRoundName;
6748 procedure TGikoForm.SelectNewRoundNameExecute(Sender: TObject);
6751 Dlg: TRoundNameDialog;
6754 Dlg := TRoundNameDialog.Create(Self);
6757 if Dlg.ModalResult <> mrCancel then begin
6758 s := Trim(Dlg.RoundNameEdit.Text);
6759 RoundList.RoundNameList.Add(s);
6760 SetSelectItemRound(True, s, TMenuItem(Sender).Parent.Name);
6767 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string);
6769 threadItem : TThreadItem;
6771 if ParentName <> 'dummy1' then begin
6772 SetSelectItemRound(RoundFlag, RoundName);
6774 threadItem := GetActiveContent;
6775 if threadItem <> nil then begin
6776 threadItem.RoundName := RoundName;
6777 threadItem.Round := RoundFlag;
6782 procedure TGikoForm.SetSelectItemRound(RoundFlag: Boolean; RoundName: string);
6787 List := TList.Create;
6789 SelectListItem(List);
6790 for i := 0 to List.Count - 1 do begin
6791 if TObject(List[i]) is TBoard then begin
6792 TBoard(List[i]).RoundName := RoundName;
6793 TBoard(List[i]).Round := RoundFlag;
6794 end else if TObject(List[i]) is TThreadItem then begin
6795 if TThreadItem(List[i]).IsLogFile then begin
6796 TThreadItem(List[i]).RoundName := RoundName;
6797 TThreadItem(List[i]).Round := RoundFlag;
6806 procedure TGikoForm.SelectDeleteRoundExecute(Sender: TObject);
6808 SetSelectItemRound(False, '', TMenuItem(Sender).Parent.Name);
6812 procedure TGikoForm.SelectReservActionExecute(Sender: TObject);
6814 //
\82±
\82Ì
\83R
\83\81\83\93\83g
\8dí
\8f\9c\82µ
\82Ä
\82Í
\91Ê
\96Ú
6817 procedure TGikoForm.SetSelectRoundName(Sender: TObject);
6819 MenuItem: TMenuItem;
6821 if Sender is TMenuItem then begin
6822 MenuItem := TMenuItem(Sender);
6823 SetSelectItemRound(True, StripHotKey(MenuItem.Caption), TMenuItem(Sender).Parent.Name);
6828 procedure TGikoForm.NewBoardActionExecute(Sender: TObject);
6830 Dlg: TNewBoardDialog;
6834 for i := 0 to Screen.CustomFormCount - 1 do begin
6835 if TObject(Screen.CustomForms[i]) is TEditorForm then begin
6836 Msg := '
\83\8c\83X
\83G
\83f
\83B
\83^
\82ð
\91S
\82Ä
\95Â
\82¶
\82Ä
\82
\82¾
\82³
\82¢';
6837 MsgBox(Handle, Msg, '
\83G
\83\89\81[', MB_OK or MB_ICONSTOP);
6841 Dlg := TNewBoardDialog.Create(Self);
6849 procedure TGikoForm.LoginActionExecute(Sender: TObject);
6854 if GikoSys.Dolib.Connected then begin
6855 //
\83\8d\83O
\83A
\83E
\83g
6856 GikoSys.Dolib.Disconnect;
6857 LoginAction.Checked := False;
6858 AddMessageList('
\83\8d\83O
\83A
\83E
\83g
\82µ
\82Ü
\82µ
\82½', nil, gmiOK);
6859 LoginAction.Caption := '
\83\8d\83O
\83C
\83\93(&L)';
6861 TmpCursor := Screen.Cursor;
6862 Screen.Cursor := crHourGlass;
6864 //
\92Ê
\8fí
\83\8d\83O
\83C
\83\93
6865 if not GikoSys.Setting.ForcedLogin then begin
6866 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6867 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6868 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6869 if GikoSys.Setting.ReadProxy then begin
6870 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6871 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6873 GikoSys.Dolib.ProxyAddress := '';
6874 GikoSys.Dolib.ProxyPort := 0;
6876 if GikoSys.Dolib.Connect then begin
6877 LoginAction.Checked := True;
6878 AddMessageList('
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6879 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6880 LoginToolButton.Style := tbsCheck;
6882 // 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);
6883 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6885 LoginAction.Checked := False;
6886 LoginToolButton.Down := False;
6887 LoginToolButton.Style := tbsButton;
6890 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
6891 + '
\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
6892 + '
\82±
\82Ì
\83\82\81[
\83h
\82Å
\83\8d\83O
\83C
\83\93\82ð
\8e\8e\82Ý
\82Ü
\82·
\82©
\81H' + #13#10;
6893 if MsgBox(Handle, msg, '
\8cx
\8d\90', MB_YESNO or MB_ICONEXCLAMATION) = IDYES then begin
6894 GikoSys.Dolib.ClientUA := 'gikoNavi/1.00';
6895 GikoSys.Dolib.UserName := GikoSys.Setting.UserID;
6896 GikoSys.Dolib.Password := GikoSys.Setting.Password;
6897 if GikoSys.Setting.ReadProxy then begin
6898 GikoSys.Dolib.ProxyAddress := GikoSys.Setting.ReadProxyAddress;
6899 GikoSys.Dolib.ProxyPort := GikoSys.Setting.ReadProxyPort;
6901 GikoSys.Dolib.ProxyAddress := '';
6902 GikoSys.Dolib.ProxyPort := 0;
6904 //SSL
\8fá
\8aQ
\97p
\8b
\90§
\83\8d\83O
\83C
\83\93
6905 GikoSys.Dolib.ForcedConnect;
6906 if GikoSys.Dolib.Connect then begin
6907 LoginAction.Checked := True;
6908 AddMessageList('
\8b
\90§
\83\8d\83O
\83C
\83\93\82µ
\82Ü
\82µ
\82½ - ' + GikoSys.Setting.UserID, nil, gmiOK);
6909 LoginAction.Caption := '
\83\8d\83O
\83A
\83E
\83g(&L)';
6910 LoginToolButton.Style := tbsCheck;
6912 // 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);
6913 AddMessageList(GikoSys.Dolib.ErrorMsg, nil, gmiNG);
6915 LoginAction.Checked := False;
6916 LoginToolButton.Down := False;
6917 LoginToolButton.Style := tbsButton;
6920 LoginAction.Checked := False;
6921 LoginToolButton.Down := False;
6922 LoginToolButton.Style := tbsButton;
6926 Screen.Cursor := TmpCursor;
6931 procedure TGikoForm.KeySettingActionExecute(Sender: TObject);
6933 Dlg: TKeySettingForm;
6935 Dlg := TKeySettingForm.Create(Self);
6937 if Dlg.ShowModal = mrOk then
6938 GikoSys.SaveKeySetting(ActionList);
6939 GikoSys.SaveEditorKeySetting(Dlg.EditorForm.ActionList);
6945 procedure TGikoForm.ArrangeActionExecute(Sender: TObject);
6947 if ArrangeAction.Checked then begin
6949 ViewPanel.Align := alNone;
6950 ListSplitter.Align := alNone;
6951 ThreadPanel.Align := alNone;
6953 ViewPanel.Width := FBrowserSizeWidth;
6954 ViewPanel.Align := alLeft;
6956 ListSplitter.Width := 5;
6957 ListSplitter.Align := alLeft;
6959 ViewPanel.Left := -10;
6961 ThreadPanel.Align := alClient;
6963 GikoSys.Setting.ListOrientation := gloHorizontal;
6964 case GikoSys.Setting.ListWidthState of
6966 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6967 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6968 ViewPanel.Width := 1;
6971 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6972 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_MIN;
6975 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
6976 BrowserMinAction.ImageIndex := TOOL_ICON_WIDTH_NORMAL;
6977 ViewPanel.Width := ThreadMainPanel.Width - 80;
6982 ViewPanel.Align := alNone;
6983 ListSplitter.Align := alNone;
6984 ThreadPanel.Align := alNone;
6986 ViewPanel.Height := FBrowserSizeHeight;
6987 ViewPanel.Align := alTop;
6989 ListSplitter.Height := 5;
6990 ListSplitter.Align := alTop;
6992 ViewPanel.Top := -10;
6994 ThreadPanel.Align := alClient;
6995 GikoSys.Setting.ListOrientation := gloVertical;
6996 case GikoSys.Setting.ListHeightState of
6998 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
6999 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
7000 ViewPanel.Height := 1;
7003 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7004 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_MIN;
7007 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7008 BrowserMinAction.ImageIndex := TOOL_ICON_HEIGHT_NORMAL;
7009 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
7016 procedure TGikoForm.PaneInitActionExecute(Sender: TObject);
7018 CabinetPanel.Width := 150;
7019 MessagePanel.Height := 40;
7021 FBrowserSizeWidth := 200;
7022 FBrowserSizeHeight := 200;
7023 if ArrangeAction.Checked then begin
7024 ViewPanel.Width := FBrowserSizeWidth;
7026 ViewPanel.Height := FBrowserSizeHeight;
7028 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7029 if GikoSys.Setting.ListHeightState = glsMax then begin
7030 BrowserMaxAction.ImageIndex := TOOL_ICON_HEIGHT_MAX;
7031 GikoSys.Setting.ListHeightState := glsNormal;
7034 if GikoSys.Setting.ListWidthState = glsMax then begin
7035 BrowserMaxAction.ImageIndex := TOOL_ICON_WIDTH_MAX;
7036 GikoSys.Setting.ListWidthState := glsNormal;
7041 procedure TGikoForm.ActiveLogDeleteActionExecute(Sender: TObject);
7043 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';
7044 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7047 ThreadItem: TThreadItem;
7049 idx := BrowserTab.TabIndex;
7050 if idx <> -1 then begin
7051 if BrowserTab.Tabs.Objects[idx] <> nil then begin
7052 ThreadItem := TBrowserRecord(BrowserTab.Tabs.Objects[idx]).FThread;
7053 if GikoSys.Setting.DeleteMsg then
7054 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7055 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', ThreadItem.Title, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7057 DeleteTab(TBrowserRecord(BrowserTab.Tabs.Objects[idx]));
7058 ThreadItem.DeleteLogFile;
7059 if ThreadItem.ParentBoard = FActiveList then
7065 function TGikoForm.GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand;
7070 if CoolBar = nil then
7072 for i := 0 to CoolBar.Bands.Count - 1 do begin
7073 if CoolBar.Bands[i].Control = Control then begin
7074 Result := CoolBar.Bands[i];
7080 procedure TGikoForm.BrowserTabToolBarResize(Sender: TObject);
7082 if BrowserTab.Parent = BrowserTabToolBar then
7083 BrowserTab.Width := BrowserTabToolBar.Width;
7086 procedure TGikoForm.SelectTextClearActionExecute(Sender: TObject);
7088 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';
7089 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7091 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7092 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7094 GikoSys.Setting.SelectTextList.Clear;
7095 SelectComboBox.Items.Clear;
7096 SelectComboBox.Text := '';
7097 SetListViewType( gvtAll );
7100 procedure TGikoForm.NameTextClearActionExecute(Sender: TObject);
7104 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';
7105 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7107 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7108 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7110 GikoSys.Setting.NameList.Clear;
7111 for i := 0 to Screen.CustomFormCount - 1 do begin
7112 if TObject(Screen.CustomForms[i]) is TEditorForm then
7113 TEditorForm(Screen.CustomForms[i]).NameComboBox.Items.Clear;
7117 procedure TGikoForm.MailTextClearActionExecute(Sender: TObject);
7121 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';
7122 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
7124 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
7125 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
7127 GikoSys.Setting.MailList.Clear;
7128 for i := 0 to Screen.CustomFormCount - 1 do begin
7129 if TObject(Screen.CustomForms[i]) is TEditorForm then
7130 TEditorForm(Screen.CustomForms[i]).MailComboBox.Items.Clear;
7134 procedure TGikoForm.LeftmostTabSelectActionExecute(Sender: TObject);
7136 if BrowserTab.Tabs.Count > 0 then begin
7137 BrowserTab.TabIndex := 0;
7138 BrowserTab.OnChange(nil);
7142 procedure TGikoForm.LeftTabSelectActionExecute(Sender: TObject);
7144 if BrowserTab.Tabs.Count > 0 then begin
7145 if BrowserTab.TabIndex = -1 then begin
7146 BrowserTab.TabIndex := 0;
7147 BrowserTab.OnChange(nil);
7148 end else if BrowserTab.TabIndex > 0 then begin
7149 BrowserTab.TabIndex := BrowserTab.TabIndex - 1;
7150 BrowserTab.OnChange(nil);
7155 procedure TGikoForm.RightTabSelectActionExecute(Sender: TObject);
7157 if BrowserTab.Tabs.Count > 0 then begin
7158 if BrowserTab.TabIndex = -1 then begin
7159 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7160 BrowserTab.OnChange(nil);
7161 end else if BrowserTab.TabIndex < (BrowserTab.Tabs.Count - 1) then begin
7162 BrowserTab.TabIndex := BrowserTab.TabIndex + 1;
7163 BrowserTab.OnChange(nil);
7168 procedure TGikoForm.RightmostTabSelectActionExecute(Sender: TObject);
7170 if BrowserTab.Tabs.Count > 0 then begin
7171 BrowserTab.TabIndex := BrowserTab.Tabs.Count - 1;
7172 BrowserTab.OnChange(nil);
7176 procedure TGikoForm.LeftmostTabSelectActionUpdate(Sender: TObject);
7178 LeftmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7181 procedure TGikoForm.LeftTabSelectActionUpdate(Sender: TObject);
7183 LeftTabSelectAction.Enabled := (BrowserTab.TabIndex <> 0) and (BrowserTab.Tabs.Count > 0);
7186 procedure TGikoForm.RightTabSelectActionUpdate(Sender: TObject);
7188 RightTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7191 procedure TGikoForm.RightmostTabSelectActionUpdate(Sender: TObject);
7193 RightmostTabSelectAction.Enabled := (BrowserTab.TabIndex <> BrowserTab.Tabs.Count - 1) and (BrowserTab.Tabs.Count > 0);
7196 procedure TGikoForm.WMSettingChange(var Message: TWMWinIniChange);
7201 procedure TGikoForm.SetMenuFont;
7203 // GikoSys.MenuFont(MenuToolBar.Font);
7204 // MenuToolBar.Buttons[0].AutoSize := False;
7205 // MenuToolBar.Buttons[0].AutoSize := True;
7206 // MenuToolBar.Font.Color := clMenuText;
7207 GikoSys.MenuFont(MainCoolBar.Font);
7208 MenuToolBar.Buttons[0].AutoSize := False;
7209 MenuToolBar.Buttons[0].AutoSize := True;
7210 MainCoolBar.AutoSize := False;
7211 MainCoolBar.AutoSize := True;
7213 GikoSys.MenuFont(ListCoolBar.Font);
7214 GikoSys.MenuFont(BrowserCoolBar.Font);
7215 // MenuToolBar.Font.Color := clMenuText;
7218 procedure TGikoForm.FavoriteMenuClick(Sender: TObject);
7224 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\92Ç
\89Á
7225 NewMenu := TMenuItem.Create(MainMenu);
7226 NewMenu.Action := FavoriteAddAction;
7227 FavoriteMenu.Add(NewMenu);
7228 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\90®
\97\9d
7229 NewMenu := TMenuItem.Create(FavoriteMenu);
7230 NewMenu.Action := FavoriteArrangeAction;
7231 FavoriteMenu.Add(NewMenu);
7232 //
\83Z
\83p
\83\8c\81[
\83^
7233 NewMenu := TMenuItem.Create(FavoriteMenu);
7234 NewMenu.Caption := '-';
7235 FavoriteMenu.Add(NewMenu);
7237 CreateFavMenu(FavoriteDM.TreeView.Items.GetFirstNode, FavoriteMenu);
7240 procedure TGikoForm.CreateFavMenu(Node: TTreeNode; MenuItem: TMenuItem);
7245 for i := 0 to Node.Count - 1 do begin
7246 NewMenu := TFavoriteMenuItem.Create(Self);
7247 NewMenu.AutoHotkeys := maAutomatic;
7248 NewMenu.Caption := CustomStringReplace(Node.Item[i].Text, '&', '&&');
7249 TFavoriteMenuItem(NewMenu).Data := Node.Item[i].Data;
7250 MenuItem.Add(NewMenu);
7252 if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
7253 NewMenu.ImageIndex := TOOL_ICON_FAV_FOLDER;
7254 CreateFavMenu(Node.Item[i], NewMenu);
7255 end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
7256 NewMenu.ImageIndex := TOOL_ICON_FAV_BOARD;
7257 NewMenu.OnClick := FavoriteClick;
7258 end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
7259 NewMenu.ImageIndex := TOOL_ICON_FAV_THREAD;
7260 NewMenu.OnClick := FavoriteClick;
7265 procedure TGikoForm.ShowFavoriteAddDialog( Item : TObject );
7267 Dlg : TFavoriteAddDialog;
7273 if Item is TFavoriteBoardItem then
7274 Item := TFavoriteBoardItem( Item ).Item
7275 else if Item is TFavoriteThreadItem then
7276 Item := TFavoriteThreadItem( Item ).Item;
7278 Node := FavoriteTreeView.Items.GetFirstNode;
7279 if Item is TBoard then begin
7280 ItemURL := TBoard( Item ).URL;
7281 while Node <> nil do begin
7283 if TObject( Data ) is TFavoriteBoardItem then begin
7284 if ItemURL = TFavoriteBoardItem( Data ).URL then begin
7285 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
7290 Node := Node.GetNext;
7292 Dlg := TFavoriteAddDialog.Create(Self);
7294 Dlg.SetBoard( TBoard( Item ) );
7299 end else if Item is TThreadItem then begin
7300 ItemURL := TThreadItem( Item ).URL;
7301 while Node <> nil do begin
7303 if TObject( Data ) is TFavoriteThreadItem then begin
7304 if ItemURL = TFavoriteThreadItem( Data ).URL then begin
7305 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
7310 Node := Node.GetNext;
7312 Dlg := TFavoriteAddDialog.Create(Self);
7314 Dlg.SetThreadItem( TThreadItem( Item ) );
7324 procedure TGikoForm.FavoriteAddActionExecute(Sender: TObject);
7326 ShowFavoriteAddDialog(GetActiveContent);
7329 procedure TGikoForm.FavoriteClick(Sender: TObject);
7332 FavoriteClick( Sender, True );
7336 procedure TGikoForm.FavoriteClick(Sender: TObject; ActiveTab: Boolean);
7339 ThreadItem: TThreadItem;
7340 FavBoard: TFavoriteBoardItem;
7341 FavThread: TFavoriteThreadItem;
7345 if Sender is TFavoriteMenuItem then
7346 Item := TFavoriteMenuItem(Sender).Data
7347 else if Sender is TLinkToolButton then
7348 Item := TLinkToolButton(Sender).Data
7349 else if Sender is TTreeNode then
7350 Item := TTreeNode( Sender ).Data
7354 if TObject(Item) is TFavoriteBoardItem then begin
7355 FavBoard := TFavoriteBoardItem(Item);
7356 Board := FavBoard.Item;
7357 if Board <> nil then begin
7358 if (FTreeType = gtt2ch) and (FActiveBBS <> Board.ParentCategory.ParenTBBS) then
7359 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7360 SelectTreeNode(Board, True);
7362 end else if TObject(Item) is TFavoriteThreadItem then begin
7363 FavThread := TFavoriteThreadItem(Item);
7364 ThreadItem := FavThread.Item;
7365 if ThreadItem = nil then
7368 InsertBrowserTab(ThreadItem, ActiveTab);
7370 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
7371 if GikoSys.Setting.ListWidthState = glsMin then begin
7372 BrowserMaxAndFocusAction.Execute;
7375 if GikoSys.Setting.ListHeightState = glsMin then begin
7376 BrowserMaxAndFocusAction.Execute;
7382 procedure TGikoForm.FavoriteAddActionUpdate(Sender: TObject);
7384 FavoriteAddAction.Enabled := (GetActiveContent <> nil);
7387 procedure TGikoForm.BoardFavoriteAddActionExecute(Sender: TObject);
7389 if TObject(ListView.Selected.Data) is TBoard then
7390 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7393 procedure TGikoForm.BoardFavoriteAddActionUpdate(Sender: TObject);
7395 BoardFavoriteAddAction.Enabled := (GetActiveList is TCategory) and (ListView.SelCount > 0);
7398 procedure TGikoForm.ThreadFavoriteAddActionExecute(Sender: TObject);
7400 if TObject(ListView.Selected.Data) is TThreadItem then
7401 ShowFavoriteAddDialog(TObject(ListView.Selected.Data));
7404 procedure TGikoForm.ThreadFavoriteAddActionUpdate(Sender: TObject);
7406 ThreadFavoriteAddAction.Enabled := (GetActiveList is TBoard) and (ListView.SelCount > 0);
7409 procedure TGikoForm.TreeSelectFavoriteAddActionExecute(Sender: TObject);
7411 ShowFavoriteAddDialog(TObject(FClickNode.Data));
7414 procedure TGikoForm.FavoriteArrangeActionExecute(Sender: TObject);
7416 Dlg: TFavoriteArrangeDialog;
7418 Dlg := TFavoriteArrangeDialog.Create(Self);
7424 PostMessage( Handle, USER_SETLINKBAR, 0, 0 );
7427 procedure TGikoForm.BBSMenuItemOnClick(
7432 if Sender is TBBSMenuItem then
7433 ShowBBSTree( TBBSMenuItem( Sender ).Data );
7437 procedure TGikoForm.MainCoolBarResize(Sender: TObject);
7439 TopPanel.Height := Max(MainCoolBar.Height, AnimePanel.Height);
7442 procedure TGikoForm.MoveToActionExecute(Sender: TObject);
7447 URL := Trim(AddressComboBox.Text);
7450 idx := AddressComboBox.Items.IndexOf(URL);
7451 if idx = -1 then begin
7452 AddressComboBox.Items.Insert(0, URL);
7453 if AddressComboBox.Items.Count > GikoSys.Setting.AddressHistoryCount then
7454 AddressComboBox.Items.Delete(AddressComboBox.Items.Count - 1);
7456 AddressComboBox.Items.Delete(idx);
7457 AddressComboBox.Items.Insert(0, URL);
7461 procedure TGikoForm.MoveToURL(const inURL: string);
7463 protocol, host, path, document, port, bookmark : string;
7464 URL, protocol2, host2, path2, document2, port2, bookmark2 : string;
7466 BBSID, BBSKey: string;
7467 tmpBoard, Board: TBoard;
7468 ThreadItem: TThreadItem;
7471 tmpThread : TThreadItem;
7472 // category : TCategory;
7473 // categoryNode : TTreeNode;
7474 // boardNode : TTreeNode;
7475 shiftDown : Boolean;
7477 stRes, edRes : Int64;
7478 browserRec : TBrowserRecord;
7481 GikoSys.ParseURI( inURL, protocol, host, path, document, port, bookmark );
7482 GikoSys.Parse2chURL( inURL, path, document, BBSID, BBSKey );
7485 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7486 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7487 if shiftDown then begin
7488 GikoSys.OpenBrowser(inURL, gbtUserApp);
7490 end else if ctrlDown then begin
7491 GikoSys.OpenBrowser(inURL, gbtIE);
7495 //=====
\83v
\83\89\83O
\83C
\83\93
7498 bi := High( BoardPlugIns );
7499 for i := Low( BoardPlugIns ) to bi do begin
7500 if Assigned( Pointer( BoardPlugIns[ i ].Module ) ) then begin
7501 case BoardPlugIns[ i ].AcceptURL( inURL ) of
7504 tmpThread := TThreadItem.Create( BoardPlugIns[ i ], inURL );
7505 boardURL := tmpThread.BoardPlugIn.GetBoardURL( DWORD( tmpThread ) );
7506 Board := BBSsFindBoardFromURL( boardURL );
7507 if Board = nil then begin
7508 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7509 //GikoSys.OpenBrowser(inURL, gbtUserApp);
7512 Board := GikoSys.GetUnknownBoard( tmpThread.BoardPlugIn, boardURL );
7513 if (FTreeType = gtt2ch) and (FActiveBBS = BBSs[ 1 ]) then
7514 ShowBBSTree( BBSs[ 1 ] );
7517 if not Board.IsThreadDatRead then begin
7518 GikoSys.ReadSubjectFile( Board );
7523 ThreadItem := Board.FindThreadFromFileName( tmpThread.FileName );
7524 if ThreadItem = nil then begin
7525 ThreadItem := tmpThread;
7526 Board.Insert( 0, ThreadItem );
7527 if ActiveList is TBoard then begin
7528 if TBoard(ActiveList) = Board then
7529 ListView.Items.Count := ListView.Items.Count + 1;
7531 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7532 browserRec := InsertBrowserTab( ThreadItem );
7533 if (browserRec <> nil) and (stRes > 0) then
7534 browserRec.Movement := IntToStr( stRes );
7535 DownloadContent( ThreadItem );
7539 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7540 browserRec := InsertBrowserTab( ThreadItem );
7541 if ThreadItem.IsLogFile then begin
7542 if (browserRec <> nil) and (stRes > 0) then
7543 BrowserMovement( IntToStr( stRes ), browserRec );
7545 if (browserRec <> nil) and (stRes > 0) then
7546 browserRec.Movement := IntToStr( stRes );
7547 DownloadContent( ThreadItem );
7557 tmpBoard := TBoard.Create(BoardPlugIns[ i ], inURL);
7558 Board := BBSsFindBoardFromURL( tmpBoard.URL );
7560 if Board <> nil then begin
7561 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7562 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7563 SelectTreeNode( Board, True );
7571 // 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¢
7575 if (Length( Trim(BBSKey) ) > 0) and (Length( Trim(BBSID) ) > 0) then begin
7576 boardURL := GikoSys.Get2chThreadURL2BoardURL( inURL );
7577 Board := BBSsFindBoardFromURL( boardURL );
7579 Board := BBSsFindBoardFromBBSID( BBSID );
7581 if Board = nil then begin
7582 //
\81¦
\8dì
\82Á
\82Ä
\82à
\92Ç
\89Á
\82·
\82é
\82Æ
\82±
\82ë
\82ª
\96³
\82¢
\82Ì
\82Å
\8c\83\82µ
\82
\95Û
\97¯
7583 //
\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)
7584 Board := BBSs[ 0 ].FindBBSID( Copy(BBSID, 1 , Length(BBSID) - 1) );
7586 if Board = nil then begin
7587 //
\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
7588 GikoSys.OpenBrowser(inURL, gbtUserApp);
7591 //
\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é
7593 GikoSys.ParseURI(URL , protocol2, host2, path2, document2, port2, bookmark2 );
7594 tmp1 := Copy(host, AnsiPos('.', host) + 1, Length(host));
7595 tmp2 := Copy(host2, AnsiPos('.', host2) + 1, Length(host2));
7596 if ( not GikoSys.Is2chHost(tmp1)) and (tmp1 <> tmp2) then begin
7597 GikoSys.OpenBrowser(inURL, gbtUserApp);
7602 if not Board.IsThreadDatRead then
7603 GikoSys.ReadSubjectFile(Board);
7604 URL := GikoSys.Get2chBrowsableThreadURL( inURL );
7605 ThreadItem := Board.FindThreadFromURL( URL );
7606 //
\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)
7607 if ThreadItem = nil then begin
7608 ThreadItem := Board.FindThreadFromFileName( BBSKey + '.dat' );
7611 if ThreadItem = nil then begin
7612 //shift ->
\90Ý
\92è
\83u
\83\89\83E
\83U
\81i
\96³
\82¯
\82ê
\82ÎIE
\81j
7614 {shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
7615 ctrlDown := GetAsyncKeyState(VK_CONTROL) = Smallint($8001);
7617 GikoSys.OpenBrowser(URL1, gbtUserApp)
7618 else if ctrlDown then
7619 GikoSys.OpenBrowser(URL1, gbtIE)
7622 ThreadItem := TThreadItem.Create( nil, URL );
7623 ThreadItem.FileName := ChangeFileExt(BBSKey, '.dat');
7624 if AnsiPos(Host, Board.URL) = 0 then
7625 ThreadItem.DownloadHost := Host
7627 ThreadItem.DownloadHost := '';
7628 Board.Insert(0, ThreadItem);
7629 if ActiveList is TBoard then begin
7630 if TBoard(ActiveList) = Board then
7631 ListView.Items.Count := ListView.Items.Count + 1;
7633 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7634 browserRec := InsertBrowserTab(ThreadItem);
7635 if (browserRec <> nil) and (stRes > 0) then
7636 browserRec.Movement := IntToStr( stRes );
7637 DownloadContent(ThreadItem);
7640 if ThreadItem.IsLogFile then begin
7641 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7642 browserRec := InsertBrowserTab(ThreadItem);
7643 if (browserRec <> nil) and (stRes > 0) then
7644 browserRec.Movement := IntToStr( stRes );
7646 if AnsiPos(Host, Board.URL) = 0 then
7647 ThreadItem.DownloadHost := Host
7649 ThreadItem.DownloadHost := '';
7650 GikoSys.GetPopupResNumber( inURL, stRes, edRes );
7651 browserRec := InsertBrowserTab(ThreadItem);
7652 if (browserRec <> nil) and (stRes > 0) then
7653 browserRec.Movement := IntToStr( stRes );
7654 DownloadContent(ThreadItem);
7658 Board := BBSsFindBoardFromURL( inURL );
7659 if Board = nil then begin
7660 GikoSys.OpenBrowser(inURL, gbtAuto);
7662 if FActiveBBS <> Board.ParentCategory.ParenTBBS then
7663 ShowBBSTree( Board.ParentCategory.ParenTBBS );
7664 SelectTreeNode( Board, True );
7669 procedure TGikoForm.AddressToolBarResize(Sender: TObject);
7671 AddressComboBox.Width := AddressToolBar.Width - MoveToToolButton.Width - 10;
7672 CoolBarResized( Sender, MainCoolBar );
7675 procedure TGikoForm.AddressComboBoxKeyDown(Sender: TObject; var Key: Word;
7676 Shift: TShiftState);
7678 if Key = VK_RETURN then
7679 MoveToAction.Execute;
7682 procedure TGikoForm.BrowserEnter(Sender: TObject);
7684 Browser.DoObjectVerb(OLEIVERB_UIACTIVATE);
7687 procedure TGikoForm.WMCopyData(var Message: TWMCopyData);
7689 CDS:PCopyDataStruct;
7693 CDS := Message.CopyDataStruct;
7694 GetMem(PC, CDS^.cbData);
7696 lstrcpy(PC,CDS^.lpData);
7697 SetString(sURL, PC,lstrlen(PC));
7702 Message.Result := 1;
7705 procedure TGikoForm.WndProc(var Message: TMessage);
7707 senderBrowser : TWebBrowser;
7713 if not (ssAlt in KeyDataToShiftState(TWMChar(Message).KeyData)) then
7716 if Message.WParam = SC_MINIMIZE then
7719 TreeClick( TreeView.Selected );
7726 USER_DOCUMENTCOMPLETE:
7727 if (Message.WParam <> 0) and
7728 (TObject(Message.WParam) is TWebBrowser) then begin
7729 senderBrowser := TWebBrowser( Message.WParam );
7730 BrowserDocumentComplete( senderBrowser, senderBrowser.Parent, url );
7739 procedure TGikoForm.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
7741 hComboEdit: THandle;
7742 // KeyData: Integer;
7745 if AddressComboBox.Focused or SelectComboBox.Focused then begin
7746 if Msg.CharCode in [VK_BACK] then begin
7747 hComboEdit := GetFocus;
7748 if hComboEdit <> 0 then
7749 SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, Msg.KeyData);
7750 // SendMessage(hComboEdit, WM_CHAR, Msg.CharCode, $000E0001);
7753 if Msg.CharCode in [VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT] then begin
7754 hComboEdit := GetFocus;
7755 if hComboEdit <> 0 then
7756 SendMessage(hComboEdit, WM_KEYDOWN, Msg.CharCode, Msg.KeyData);
7760 //
\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ð
7761 KeyData := Msg.KeyData;
7762 if (KeyData and $20000000) = 0 then begin
7763 if Msg.CharCode in [Ord('F'), Ord('V'), Ord('B'), Ord('R'),
7764 Ord('A'), Ord('T'), Ord('H')] then begin
7765 if not ActionList.IsShortCut(Msg) then begin
7773 procedure TGikoForm.BrowserTabVisibleActionExecute(Sender: TObject);
7775 GikoSys.Setting.BrowserTabVisible := BrowserTabVisibleAction.Checked;
7779 procedure TGikoForm.BrowserTabTopActionExecute(Sender: TObject);
7781 BrowserTabBottomAction.Checked := False;
7782 BrowserTabTopAction.Checked := True;
7783 GikoSys.Setting.BrowserTabPosition := gtpTop;
7787 procedure TGikoForm.BrowserTabBottomActionExecute(Sender: TObject);
7789 BrowserTabTopAction.Checked := False;
7790 BrowserTabBottomAction.Checked := True;
7791 GikoSys.Setting.BrowserTabPosition := gtpBottom;
7795 procedure TGikoForm.BrowserTabTabStyleActionExecute(Sender: TObject);
7797 BrowserTabButtonStyleAction.Checked := False;
7798 BrowserTabFlatStyleAction.Checked := False;
7799 BrowserTabTabStyleAction.Checked := True;
7800 GikoSys.Setting.BrowserTabStyle := gtsTab;
7804 procedure TGikoForm.BrowserTabButtonStyleActionExecute(Sender: TObject);
7806 BrowserTabTabStyleAction.Checked := False;
7807 BrowserTabFlatStyleAction.Checked := False;
7808 BrowserTabButtonStyleAction.Checked := True;
7809 GikoSys.Setting.BrowserTabStyle := gtsButton;
7813 procedure TGikoForm.BrowserTabFlatStyleActionExecute(Sender: TObject);
7815 BrowserTabFlatStyleAction.Checked := True;
7816 BrowserTabTabStyleAction.Checked := False;
7817 BrowserTabButtonStyleAction.Checked := False;
7818 GikoSys.Setting.BrowserTabStyle := gtsFlat;
7822 procedure TGikoForm.PreviewTimerTimer(Sender: TObject);
7828 HtmlFileName: string;
7832 TargetFrameName: OleVariant;
7833 PostData: OleVariant;
7834 Headers: OleVariant;
7835 WindowHeight: Integer;
7836 WindowWidth: Integer;
7840 Protocol, Host, Path, Document, Port, Bookmark: string;
7842 PreviewTimer.Enabled := False;
7846 case GikoSys.Setting.PreviewSize of
7853 WindowHeight := 192;
7857 WindowHeight := 384;
7861 WindowHeight := 480;
7863 else begin //gpsMedium
7865 WindowHeight := 288;
7869 ARect := Rect(0, 0, WindowWidth, WindowHeight);
7871 case GikoSys.Setting.PopupPosition of
7872 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7873 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7874 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
7875 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
7876 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
7877 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
7878 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
7879 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
7880 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Ó
7883 html := '<html><head>'#13#10
7885 + 'function init() {'#13#10
7886 + ' if ((document.body.clientHeight >= Image1.height) && (document.body.clientWidth >= Image1.width)) {'#13#10
7888 + ' var dh, ih;'#13#10
7889 + ' dh = document.body.clientWidth / document.body.clientHeight;'#13#10
7890 + ' ih = Image1.width / Image1.height;'#13#10
7891 + ' if (document.body.clientWidth < document.body.clientHeight) {'#13#10
7892 + ' if (ih > dh)'#13#10
7893 + ' Image1.width = document.body.clientWidth;'#13#10
7895 + ' Image1.height = document.body.clientHeight;'#13#10
7897 + ' if (ih < dh)'#13#10
7898 + ' Image1.height = document.body.clientHeight;'#13#10
7900 + ' Image1.width = document.body.clientWidth;'#13#10
7903 + ' Message.style.display = "none";'#13#10
7907 + '<body topmargin="0" leftmargin="0" style="border-width: 1px; overflow:hidden; border-style: solid;" onLoad="init()">'#13#10
7908 + '<div align="center" id="Message">
\83v
\83\8c\83r
\83\85\81[
\8dì
\90¬
\92\86</div>'#13#10
7909 + '<div align="center"><img name="Image1" border="0" src="%ImageURL%"></div>'#13#10
7911 sl := TStringList.Create;
7914 HtmlFileName := GikoSys.GetAppDir + HTML_FILE_NAME;
7915 sl.Text := AnsiReplaceStr(html, '%ImageURL%', FPreviewURL);
7916 sl.SaveToFile(HtmlFileName);
7923 NavURL := HtmlFileName;
7925 TargetFrameName := '';
7928 GikoSys.ParseURI(FPreviewURL, Protocol, Host, Path, Document, Port, Bookmark);
7929 Referer := Protocol + '://' + Host;
7931 Referer := Referer + ':' + Port;
7932 Referer := Referer + Path;
7933 Headers := 'Referer: ' + Referer;
7934 FPreviewBrowser.Navigate(NavURL, Flags, TargetFrameName, PostData, Headers);
7935 if ARect.Top + WindowHeight > Screen.DesktopHeight then
7936 ARect.Top := Screen.DesktopHeight - WindowHeight;
7937 if ARect.Left + WindowWidth > Screen.DesktopWidth then
7938 ARect.Left := Screen.DesktopWidth - WindowWidth;
7939 if ARect.Left < Screen.DesktopLeft then ARect.Left := Screen.DesktopLeft;
7940 if ARect.Bottom < Screen.DesktopTop then ARect.Bottom := Screen.DesktopTop;
7942 SetWindowPos(FPreviewBrowser.Handle, HWND_TOPMOST, ARect.Left, ARect.Top, WindowWidth, WindowHeight, SWP_NOACTIVATE or SWP_HIDEWINDOW);
7943 ShowWindow(FPreviewBrowser.Handle, SW_SHOWNOACTIVATE);
7945 // Style := GetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE);
7946 // SetWindowLong(FPreviewBrowser.Handle, GWL_EXSTYLE, Style xor WS_EX_APPWINDOW);
7950 procedure TGikoForm.WMSetCursor(var Message: TWMSetCursor);
7952 if PreviewTimer.Enabled then
7953 PreviewTimer.Enabled := False;
7954 if (FHint <> nil) and (IsWindowVisible(FHint.Handle)) then begin
7955 FHint.ReleaseHandle;
7958 if (FPreviewBrowser <> nil) and (IsWindowVisible(FPreviewBrowser.Handle)) then
7959 ShowWindow(FPreviewBrowser.Handle, SW_HIDE);
7960 Message.Result := 1;
7964 procedure TGikoForm.MessageHideButtonClick(Sender: TObject);
7966 MsgBarCloseAction.Execute;
7969 function TGikoForm.OnDocumentContextMenu(Sender: TObject): WordBool;
7971 Doc: IHtmlDocument2;
7972 Range: IHTMLTxtRange;
7975 ThreadItem: TThreadItem;
7978 Doc := FactiveContent.FBrowser.Document as IHtmlDocument2;
7979 if Assigned(Doc) then begin
7980 Range := Doc.selection.createRange as IHTMLTxtRange;
7981 s := CustomStringReplace(Range.text, '
\81@', ' ');//
\91S
\8ap
\8bó
\94\92\82ð
\94¼
\8ap
\8bó
\94\92\82É
7982 s := ZenToHan(Trim(s));
7983 if GikoSys.IsNumeric(s) then begin
7985 ThreadItem := GetActiveContent;
7986 if ThreadItem <> nil then begin
7988 FHint.PopupType := gptThread;
7989 SetResPopupText(ThreadItem, Num, Num, False, False);
7990 if FHint.ResCount <> 0 then
8001 procedure TGikoForm.SetResPopupText(threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
8013 boardPlugIn : TBoardPlugIn;
8016 if StNum > ToNum then begin
8022 //
\8dÅ
\91å10
\83\8c\83X
\82Ü
\82Å
\95\
\8e¦
8023 if StNum + MAX_POPUP_RES < ToNum then
8024 ToNum := StNum + MAX_POPUP_RES;
8026 //
\83^
\83C
\83g
\83\8b\95\
\8e¦
8028 if ThreadItem <> nil then
8029 FHint.Title := ThreadItem.Title;
8031 if ThreadItem <> nil then begin
8032 if ThreadItem.IsBoardPlugInAvailable then begin
8033 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
8034 boardPlugIn := ThreadItem.BoardPlugIn;
8036 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
8037 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
8038 for i := StNum to ToNum do begin
8040 //
\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½
8041 tmp := boardPlugIn.GetDat( DWORD( threadItem ), i );
8042 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
8043 Res := GikoSys.DivideStrLine(tmp);
8044 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
8045 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
8047 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
8050 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
8051 Body := CustomStringReplace(Body, '<br>', #10,true);
8052 Body := CustomStringReplace(Body, '</a>', '',true);
8053 Body := GikoSys.DeleteLink(Body);
8054 Body := CustomStringReplace(Body, '<', '<');
8055 Body := CustomStringReplace(Body, '>', '>');
8056 Body := CustomStringReplace(Body, '"', '"');
8057 Body := CustomStringReplace(Body, '&', '&');
8058 Body := CustomStringReplace(Body, ' ', ' ');
8060 FHint.Add(Header, Body);
8061 //FHint.Title := '';
8065 for i := StNum to ToNum do begin
8067 FileName := ThreadItem.FilePath;
8068 tmp := GikoSys.ReadThreadFile(FileName, Line);
8069 if (tmp <> '') And ( not GikoSys.FAbon.CheckAbonPopupRes(tmp) And( not GikoSys.FAbon.CheckIndividualAbonList(line))) then begin
8070 Res := GikoSys.DivideStrLine(tmp);
8071 if (GikoSys.Setting.ShowMail = false) or (Length(res.FMailTo) = 0) then
8072 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + '
\93\8a\8de
\93ú
\81F ' + Res.FDateTime
8074 Header := IntToStr(Line) + '
\96¼
\91O
\81F ' + Res.FName + ' [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + Res.FDateTime;
8076 Body := CustomStringReplace(Res.FBody, '<br> ', #10,true);
8077 Body := CustomStringReplace(Body, '<br>', #10,true);
8078 Body := CustomStringReplace(Body, '</a>', '',true);
8079 Body := GikoSys.DeleteLink(Body);
8080 Body := CustomStringReplace(Body, '<', '<');
8081 Body := CustomStringReplace(Body, '>', '>');
8082 Body := CustomStringReplace(Body, '"', '"');
8083 Body := CustomStringReplace(Body, '&', '&');
8084 Body := CustomStringReplace(Body, ' ', ' ');
8085 FHint.Add(Header, Body);
8086 //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
8095 procedure TGikoForm.ShowTextPopup;
8100 // if Trim(s) = '' then
8103 FHint.Font.Name := GikoSys.Setting.HintFontName;
8104 FHint.Font.Size := GikoSys.Setting.HintFontSize;
8105 FHint.Font.Color := GikoSys.Setting.HintFontColor;
8106 FHint.Color := GikoSys.Setting.HintBackColor;
8107 FHint.HeaderBold := GikoSys.Setting.ResPopupHeaderBold;
8109 if FHint.PopupType = gptRaw then
8110 ARect := FHint.CalcHintRect(Screen.Width, FHint.Caption, nil)
8112 ARect := FHint.CalcHintRect(Screen.Width, '', nil);
8113 case GikoSys.Setting.PopupPosition of
8114 gppRightTop: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8115 gppRight: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8116 gppRightBottom: OffsetRect(ARect, p.x - (ARect.Right - ARect.Left) - 15, p.y + 15);
8117 gppTop: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - (ARect.Bottom - ARect.Top) - 15);
8118 gppCenter: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y - ((ARect.Bottom - ARect.Top) div 2));
8119 gppBottom: OffsetRect(ARect, p.x - ((ARect.Right - ARect.Left) div 2), p.y + 15);
8120 gppLeftTop: OffsetRect(ARect, p.x + 15, p.y - (ARect.Bottom - ARect.Top) - 15);
8121 gppLeft: OffsetRect(ARect, p.x + 15, p.y - ((ARect.Bottom - ARect.Top) div 2));
8122 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Ó
8124 //FHint.ActivateHint(ARect, s);
8125 if FHint.PopupType = gptRaw then
8126 FHint.ActivateHint(ARect, FHint.Caption)
8128 FHint.ActivateHint(ARect, '');
8130 FHint.ReleaseHandle;
8135 procedure TGikoForm.GikoHelpActionExecute(Sender: TObject);
8139 FileName := GikoSys.GetAppDir + 'batahlp.chm';
8140 if not FileExists(FileName) then begin
8143 '
\83w
\83\8b\83v
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½' + #13#10 +
8144 '
\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 +
8145 '
\83w
\83\8b\83v
\82Í
\83M
\83R
\83i
\83r
\82Ì
\83T
\83C
\83g
\82É
\92u
\82¢
\82Ä
\82 \82è
\82Ü
\82·',
8150 ShellExecute(Handle, 'open', PChar(FileName), '', PChar(GikoSys.GetAppDir), SW_SHOW);
8153 procedure TGikoForm.ToolButton18Click(Sender: TObject);
8155 DEL_MSG = '
\97\9a\97ð
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
8156 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
8158 if FTreeType = gttHistory then begin
8159 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
8160 if MsgBox(Handle, DEL_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
8164 TreeView.Items.Clear;
8168 procedure TGikoForm.KotehanActionExecute(Sender: TObject);
8170 Dlg: TKotehanDialog;
8172 Dlg := TKotehanDialog.Create(Self);
8180 procedure TGikoForm.SetLinkBar;
8184 ToolButton: TLinkToolButton;
8185 MenuItem: TMenuItem;
8186 oldIgnoreResize : TResizeType;
8188 oldIgnoreResize := FIsIgnoreResize;
8189 FIsIgnoreResize := rtResizing;
8190 MainCoolBar.Bands.BeginUpdate;
8192 LinkBarPopupMenu.Items.Clear;
8193 for i := LinkToolBar.ButtonCount - 1 downto 0 do
8194 //LinkToolBar.RemoveControl(LinkToolBar.Buttons[i]);
8195 LinkToolBar.Buttons[i].Free;
8196 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8197 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8198 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8199 ToolButton := TLinkToolButton.Create(LinkToolBar);
8200 // ToolButton.Parent := LinkToolBar;
8201 if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteFolder then begin
8202 MenuItem := TMenuItem.Create(Self);
8203 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], MenuItem);
8204 LinkBarPopupMenu.Items.Add(MenuItem);
8205 ToolButton.MenuItem := MenuItem;
8206 ToolButton.ImageIndex := TOOL_ICON_FAV_FOLDER;
8207 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteBoardItem then begin
8208 ToolButton.ImageIndex := TOOL_ICON_FAV_BOARD;
8209 ToolButton.OnClick := FavoriteClick;
8210 end else if TObject(FavoriteTreeView.Items[i].Item[j].Data) is TFavoriteThreadItem then begin
8211 ToolButton.ImageIndex := TOOL_ICON_FAV_THREAD;
8212 ToolButton.OnClick := FavoriteClick;
8214 ToolButton.Caption := FavoriteTreeView.Items[i].Item[j].Text;
8215 ToolButton.Left := 10000;
8216 ToolButton.Data := FavoriteTreeView.Items[i].Item[j].Data;
8217 ToolButton.AutoSize := True;
8218 ToolButton.OnDragDrop := LinkToolButtonDragDrop;
8219 ToolButton.OnDragOver := FavoriteDragOver;
8220 ToolButton.OnMouseDown := LinkToolButtonOnMouseDown;
8221 ToolButton.OnMouseMove := LinkToolButtonOnMouseMove;
8222 ToolButton.OnMouseUp := LinkToolButtonOnMouseUp;
8223 ToolButton.OnStartDrag := LinkToolButtonStartDrag;
8224 //ToolButton.DragMode := dmAutomatic;
8225 ToolButton.DragMode := dmManual;
8226 ToolButton.PopupMenu := FavoriteTreePopupMenu;
8228 LinkToolBar.InsertControl(ToolButton);
8233 { if LinkToolBar.ButtonCount = 0 then begin
8234 ToolButton := TLinkToolButton.Create(LinkToolBar);
8235 ToolButton.Style := tbsButton;
8236 ToolButton.ImageIndex := -1;
8237 ToolButton.Caption := '';
8238 LinkToolBar.InsertControl(ToolButton);
8241 MainCoolBar.Bands.EndUpdate;
8242 LoadCoolBarSettings;
8243 FIsIgnoreResize := oldIgnoreResize;
8247 procedure TGikoForm.FavoriteDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8255 if Sender = FavoriteTreeView then begin
8256 Node := FavoriteTreeView.GetNodeAt(X, Y);
8261 bound := Node.DisplayRect( False );
8262 height := bound.Bottom - bound.Top;
8263 if (bound.Top + height / 2) <= Y then
8264 Node := FavoriteTreeView.GetNodeAt(X, Y + height);
8269 if Node.IsFirstNode then
8274 if FDropSpaceNode <> nil then
8275 if FDropSpaceNode.AbsoluteIndex = Node.AbsoluteIndex then
8278 if Change then begin
8279 if FDropSpaceNode <> nil then
8280 FDropSpaceNode.Free;
8282 FDropSpaceNode := FavoriteDM.TreeView.Items.AddChildObjectFirst(Node.Parent, '', nil );
8283 FDropSpaceNode.MoveTo( Node, naInsert );
8284 FDropSpaceNode.ImageIndex := -1;
8285 FDropSpaceNode.SelectedIndex := -1;
8289 if Source = FavoriteTreeView then begin
8290 if FavoriteTreeView.Selected = FavoriteTreeView.Items.GetFirstNode then begin
8295 end else if Source = BrowserTab then
8297 else if Source = ListView then
8299 else if Source is TLinkToolButton then
8301 else if Source = TreeView then
8307 procedure TGikoForm.FavoriteTreeViewDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
8310 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
8313 procedure TGikoForm.LinkToolButtonStartDrag(Sender: TObject; var DragObject: TDragObject);
8315 // FDragging := true;
8318 procedure TGikoForm.LinkToolButtonDragDrop(Sender, Source: TObject; X, Y: Integer);
8320 SenderNode: TTreeNode;
8321 LinkToolButton: TLinkToolButton;
8324 LinkToolButton := TLinkToolButton( Sender );
8325 SenderNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
8327 FavoriteDragDrop( SenderNode, Source );
8331 procedure TGikoForm.LinkToolButtonOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8333 favButton : TLinkToolButton;
8334 favThreadItem : TFavoriteThreadItem;
8340 if Sender is TLinkToolButton then begin
8341 favButton := TLinkToolButton( Sender );
8342 if TObject( favButton.Data ) is TFavoriteThreadItem then begin
8343 favThreadItem := TFavoriteThreadItem( favButton.Data );
8344 if favThreadItem.Item <> nil then
8345 InsertBrowserTab( favThreadItem.Item, False );
8353 procedure TGikoForm.LinkToolButtonOnMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
8357 TToolButton( Sender ).DragMode := dmManual;
8358 if ssLeft in Shift then begin
8359 // 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)
8360 if FDragTime = 0 then begin
8361 FDragTime := GetTickCount();
8363 Now := GetTickCount();
8364 if (Now - FDragTime) > 500 then begin
8365 if FDragButton <> TToolButton( Sender ) then begin
8367 FDragButton := TToolButton( Sender );
8368 TToolButton(Sender).BeginDrag(false ,5);
8371 {$IF Defined(debug)}
8372 ShowMessage('Error');
8383 procedure TGikoForm.LinkToolButtonOnMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
8388 function TGikoForm.GetWidthAllToolButton(ToolBar: TToolBar): Integer;
8393 for i := 0 to ToolBar.ButtonCount - 1 do
8394 if ToolBar.Buttons[i].Visible then
8395 Result := Result + ToolBar.Buttons[i].Width;
8398 procedure TGikoForm.MainCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8400 Control : TWinControl;
8403 Control := FindControl(BandInfo^.hwndChild);
8404 if Control = nil then
8407 for i := MainCoolBar.Bands.Count - 1 downto 0 do begin
8408 if MainCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8409 idx := MainCoolBar.Bands[ i ].ID;
8413 Canvas.Font.Handle := GetStockObject( DEFAULT_GUI_FONT );
8414 if (Control = MenuToolBar) or (Control = StdToolBar) then begin
8415 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8416 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8417 BandInfo^.cxMinChild := 0;
8418 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth;
8419 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8420 end else if Control = LinkToolBar then begin
8421 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8422 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8423 BandInfo^.cxMinChild := 0;
8424 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83\8a\83\93\83N' );
8425 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8426 end else begin // AddressToolBar
8427 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8428 BandInfo^.cxMinChild := 0;
8429 BandInfo^.cx := GikoSys.Setting.MainCoolSet[ idx ].FCoolWidth + Canvas.TextWidth( '
\83A
\83h
\83\8c\83X' );
8433 procedure TGikoForm.MainCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8439 ChevronPopupMenu.Items.Clear;
8441 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8442 if MainCoolBar.Bands[ i ].Visible then begin
8443 if Idx = Int64(RebarChevron^.uBand) then begin
8450 if (Idx >= 0) and (MainCoolBar.Bands.Count > Idx) then begin
8451 if MainCoolBar.Bands[Idx].Control = MenuToolbar then begin
8453 end else if MainCoolBar.Bands[Idx].Control = StdToolbar then begin
8454 ToolBarChevronMenu(StdToolBar);
8455 end else if MainCoolBar.Bands[Idx].Control = LinkToolbar then begin
8459 p := MainCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8460 ChevronPopupMenu.Popup(p.x, p.y);
8464 procedure TGikoForm.MenuBarChevronMenu;
8465 procedure SetSubMenu(MenuItem: TMenuItem; PopupItem: TMenuItem);
8471 for i := 0 to MenuItem.Count - 1 do begin
8473 if MenuItem[i] is TFavoriteMenuItem then begin
8474 Item := TFavoriteMenuItem.Create(Self);
8475 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(MenuItem[i]).Data;
8477 Item := TMenuItem.Create(Self);
8478 Item.Caption := MenuItem[i].Caption;
8479 Item.Action := MenuItem[i].Action;
8480 Item.ImageIndex := MenuItem[i].ImageIndex;
8481 Item.OnClick := MenuItem[i].OnClick;
8482 PopupItem.Add(Item);
8483 if MenuItem[i].Count > 0 then
8484 SetSubMenu(MenuItem[i], Item);
8493 ChevronPopupMenu.Items.Clear;
8494 ChevronPopupMenu.Images := MainMenu.Images;
8495 bw := GetWidthAllToolButton(MenuToolBar);
8496 if MenuToolBar.Width < bw then begin
8498 for i := 0 to MenuToolBar.ButtonCount - 1 do begin
8499 w := w + MenuToolBar.Buttons[i].Width;
8500 if MenuToolBar.Width <= w then begin
8501 Item := TMenuItem.Create(Self);
8502 Item.Caption := MenuToolBar.Buttons[i].MenuItem.Caption;
8503 //Item.Action := MenuToolBar.Buttons[i].MenuItem.Action;
8504 ChevronPopupMenu.Items.Add(Item);
8505 SetSubMenu(MenuToolbar.Buttons[i].MenuItem, Item);
8511 procedure TGikoForm.ToolBarChevronMenu(ToolBar: TToolBar);
8512 procedure SetSubMenu(PopupMenu: TPopupMenu; PopupItem: TMenuItem);
8517 if Assigned(PopupMenu.OnPopup) then
8518 PopupMenu.OnPopup(nil);
8519 for i := 0 to PopupMenu.Items.Count - 1 do begin
8521 if PopupMenu.Items[i] is TFavoriteMenuItem then begin
8522 Item := TFavoriteMenuItem.Create(Self);
8523 TFavoriteMenuItem(Item).Data := TFavoriteMenuItem(PopupMenu.Items[i]).Data;
8525 Item := TMenuItem.Create(Self);
8526 Item.Caption := PopupMenu.Items[i].Caption;
8527 Item.Action := PopupMenu.Items[i].Action;
8528 Item.ImageIndex := PopupMenu.Items[i].ImageIndex;
8529 Item.OnClick := PopupMenu.Items[i].OnClick;
8530 PopupItem.Add(Item);
8539 ChevronPopupMenu.Items.Clear;
8540 ChevronPopupMenu.Images := ToolBar.HotImages;
8541 bw := GetWidthAllToolButton(ToolBar);
8542 if ToolBar.Width < bw then begin
8544 for i := 0 to ToolBar.ButtonCount - 1 do begin
8545 w := w + ToolBar.Buttons[i].Width;
8546 if ToolBar.Width <= w then begin
8547 Case ToolBar.Buttons[i].Tag of
8550 Item := TMenuItem.Create(Self);
8551 if ToolBar.Buttons[i].Style = tbsSeparator then
8554 Item.Caption := ToolBar.Buttons[i].Caption;
8555 Item.Action := ToolBar.Buttons[i].Action;
8556 //Item.Visible := True;
8558 ChevronPopupMenu.Items.Add(Item);
8559 if ToolBar.Buttons[i].DropdownMenu <> nil then begin
8561 Item.OnClick := nil;
8562 SetSubMenu(ToolBar.Buttons[i].DropdownMenu, Item);
8566 //
\8f«
\97\88\82Ì
\82½
\82ß
\82Ì
\97\
\96ñ
8573 procedure TGikoForm.LinkBarChevronMenu;
8578 Item: TFavoriteMenuItem;
8580 Button: TLinkToolButton;
8582 ChevronPopupMenu.Items.Clear;
8583 ChevronPopupMenu.Images := LinkToolBar.Images;
8584 bw := GetWidthAllToolButton(LinkToolBar);
8585 if LinkToolBar.Width < bw then begin
8587 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
8588 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
8589 for j := 0 to FavoriteTreeView.Items[i].Count - 1 do begin
8590 w := w + LinkToolBar.Buttons[j].Width;
8591 if LinkToolBar.Width <= w then begin
8592 if LinkToolBar.Buttons[j] is TLinkToolButton then begin
8593 Button := TLinkToolButton(LinkToolBar.Buttons[j]);
8594 Item := TFavoriteMenuItem.Create(Self);
8595 if TObject(Button.Data) is TFavoriteFolder then begin
8596 CreateFavMenu(FavoriteTreeView.Items[i].Item[j], Item);
8597 end else if TObject(Button.Data) is TFavoriteBoardItem then begin
8598 Item.OnClick := FavoriteClick;
8599 end else if TObject(Button.Data) is TFavoriteThreadItem then begin
8600 Item.OnClick := FavoriteClick;
8602 Item.Data := Button.Data;
8603 Item.Caption := LinkToolBar.Buttons[j].Caption;
8604 Item.ImageIndex := LinkToolBar.Buttons[j].ImageIndex;
8605 ChevronPopupMenu.Items.Add(Item);
8616 \brief
\83o
\83\93\83h
\95\9d\82ð
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
8617 \param bar
\83o
\83\93\83h
\82ª
\8f\8a\91®
\82·
\82é CoolBar
8618 \param band
\8dÄ
\8cv
\8eZ
\81E
\8dÄ
\90Ý
\92è
\82·
\82é
\83o
\83\93\83h
8620 \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É
8621 \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
8623 procedure TGikoForm.ResetBandInfo( bar : TGikoCoolBar; band : TToolBar );
8625 bandInfo : tagREBARBANDINFOA;
8626 pBandInfo : PReBarBandInfoA;
8633 pBandInfo := @bandInfo;
8634 ZeroMemory( pBandInfo, sizeof( bandInfo ) );
8635 bandInfo.cbSize := sizeof( bandInfo );
8636 bandInfo.hwndChild := h;
8637 bandInfo.cyMinChild := bar.Height;
8638 bar.OnBandInfo( nil, pBandInfo );
8639 // band
\82Ì
\83C
\83\93\83f
\83b
\83N
\83X
\82ð
\92T
\82·
8641 for i := bar.Bands.Count - 1 downto 0 do begin
8642 if bar.Bands[ i ].Control.Handle = h then begin
8648 lResult := SendMessage( bar.Handle, RB_SETBANDINFO, idx, Integer( pBandInfo ) );
8652 procedure TGikoForm.ListCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8654 Control: TWinControl;
8657 Control := FindControl(BandInfo^.hwndChild);
8658 if Control = nil then
8661 for i := ListCoolBar.Bands.Count - 1 downto 0 do begin
8662 if ListCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8663 idx := ListCoolBar.Bands[ i ].ID;
8667 if Control = ListToolBar then begin
8668 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8669 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8670 BandInfo^.cxMinChild := 0;
8671 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8672 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8674 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8675 BandInfo^.cxMinChild := 0;
8676 BandInfo^.cx := GikoSys.Setting.ListCoolSet[ idx ].FCoolWidth;
8680 procedure TGikoForm.ListCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8685 ChevronPopupMenu.Items.Clear;
8686 Idx := RebarChevron^.uBand;
8687 if (Idx >= 0) and (ListCoolBar.Bands.Count > Idx) then begin
8688 if ListCoolBar.Bands[Idx].Control = ListToolBar then begin
8689 ToolBarChevronMenu(ListToolBar);
8692 p := ListCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8693 ChevronPopupMenu.Popup(p.x, p.y);
8697 procedure TGikoForm.BrowserCoolBarBandInfo(Sender: TObject; var BandInfo: PReBarBandInfoA);
8699 Control: TWinControl;
8702 Control := FindControl(BandInfo^.hwndChild);
8703 if Control = nil then
8706 for i := BrowserCoolBar.Bands.Count - 1 downto 0 do begin
8707 if BrowserCoolBar.Bands[ i ].Control.Handle = Control.Handle then begin
8708 idx := BrowserCoolBar.Bands[ i ].ID;
8712 if Control = BrowserToolBar then begin
8713 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE or RBBIM_STYLE or RBBIM_IDEALSIZE;
8714 BandInfo^.fStyle := BandInfo.fStyle or RBBS_USECHEVRON;
8715 BandInfo^.cxMinChild := 0;
8716 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8717 BandInfo^.cxIdeal := GetWidthAllToolButton(TToolBar(Control));
8719 BandInfo^.fMask := BandInfo.fMask or RBBIM_CHILDSIZE;
8720 BandInfo^.cxMinChild := 0;
8721 BandInfo^.cx := GikoSys.Setting.BrowserCoolSet[ idx ].FCoolWidth;
8725 procedure TGikoForm.BrowserCoolBarChevronClick(Sender: TObject; RebarChevron: PNMRebarChevron);
8730 ChevronPopupMenu.Items.Clear;
8731 Idx := RebarChevron^.uBand;
8732 if (Idx >= 0) and (BrowserCoolBar.Bands.Count > Idx) then begin
8733 if BrowserCoolBar.Bands[Idx].Control = BrowserToolBar then
8734 ToolBarChevronMenu(BrowserToolBar)
8737 p := BrowserCoolBar.ClientToScreen(Point(RebarChevron^.rc.left, RebarChevron^.rc.bottom));
8738 ChevronPopupMenu.Popup(p.x, p.y);
8742 procedure TGikoForm.ListViewColumnInfo(Sender: TObject; var Column: PLVColumnA);
8744 if Column^.iImage = -1 then begin
8745 Column^.mask := Column^.mask or LVCF_FMT;
8747 Column^.mask := Column^.mask or LVCF_FMT or LVCF_IMAGE;
8748 Column^.fmt := Column^.fmt or LVCFMT_IMAGE or LVCFMT_BITMAP_ON_RIGHT;
8752 procedure TGikoForm.ThreadEditorActionExecute(Sender: TObject);
8754 Editor: TEditorForm;
8756 if not (GetActiveList is TBoard) then
8758 Editor := TEditorForm.Create(Self);
8759 Editor.SetBoard(TBoard(GetActiveList));
8761 Editor.BodyEdit.SetFocus;
8764 procedure TGikoForm.ToolBarSettingActionExecute(Sender: TObject);
8766 Dlg: TToolBarSettingDialog;
8768 //Component: TComponent;
8770 Dlg := TToolBarSettingDialog.Create(Self, ActionList);
8772 Dlg.AddToolBar(StdToolBar, gttStandard);
8773 Dlg.AddToolBar(ListToolBar, gttList);
8774 Dlg.AddToolBar(BrowserToolBar, gttBrowser);
8775 case FToolBarSettingSender of
8776 tssMain: Dlg.ToolBarIndex := 0;
8777 tssList: Dlg.ToolBarIndex := 1;
8778 tssBrowser: Dlg.ToolBarIndex := 2;
8781 if ToolBarSettingAction.ActionComponent.GetParentComponent is TPopupMenu then begin
8782 Component := TPopupMenu( ToolBarSettingAction.ActionComponent.GetParentComponent ).PopupComponent;
8784 if Component = MainCoolBar then
8785 Dlg.ToolBarComboBox.ItemIndex := 0
8786 else if Component = ListCoolBar then
8787 Dlg.ToolBarComboBox.ItemIndex := 1
8788 else if Component = BrowserCoolBar then
8789 Dlg.ToolBarComboBox.ItemIndex := 2;
8792 if Dlg.ShowModal = mrOK then begin
8795 //
\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é
8796 for i := 0 to MainCoolBar.Bands.Count - 1 do begin
8797 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth + 1;
8798 MainCoolBar.Bands[i].MinWidth := MainCoolBar.Bands[i].MinWidth - 1;
8800 for i := 0 to ListCoolBar.Bands.Count - 1 do begin
8801 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth + 1;
8802 ListCoolBar.Bands[i].MinWidth := ListCoolBar.Bands[i].MinWidth - 1;
8804 for i := 0 to BrowserCoolBar.Bands.Count - 1 do begin
8805 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth + 1;
8806 BrowserCoolBar.Bands[i].MinWidth := BrowserCoolBar.Bands[i].MinWidth - 1;
8808 SaveToolBarSetting(StdToolBar);
8809 SaveToolBarSetting(ListToolBar);
8810 for i := ListToolBar.ControlCount - 1 downto 0 do
8812 if ListToolBar.Controls[ i ].Action = SelectItemAction then
8814 //
\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·
8815 if (i + 1) < ListToolBar.ControlCount then
8816 if ListToolBar.Controls[ i + 1 ] is TToolButton then
8817 if TToolButton( ListToolBar.Controls[ i + 1 ] ).Style = tbsSeparator then
8818 ListToolBar.Controls[ i + 1 ].Visible := False;
8820 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83{
\83^
\83\93\82ð
\89B
\82·
8821 ListToolBar.Controls[ i ].Visible := False;
8822 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\83t
\83B
\81[
\83\8b\83h
\82ð
\91}
\93ü
8823 SelectComboBox.Left := ListToolBar.Controls[ i ].Left;
8824 SelectComboBox.Width := GikoSys.Setting.SelectComboBoxWidth;
8825 SelectComboBox.Parent := ListToolBar;
8826 //
\83X
\83\8c\83b
\83h
\8di
\8d\9e\97p
\93Æ
\8e©
\83Z
\83p
\83\8c\81[
\83^
\82ð
\91}
\93ü
8827 SelectComboBoxSplitter.Left := SelectComboBox.Left + SelectComboBox.Width;
8828 SelectComboBoxSplitter.Parent := ListToolBar;
8833 ResetBandInfo( ListCoolBar, ListToolBar );
8834 SaveToolBarSetting(BrowserToolBar);
8838 FToolBarSettingSender := tssNone;
8842 function TGikoForm.FindToolBarButton( bar : TToolBar; action : TAction ) : TToolButton;
8847 for i := bar.ButtonCount - 1 downto 0 do begin
8848 if bar.Buttons[ i ].Action = action then begin
8849 Result := bar.Buttons[ i ];
8858 procedure TGikoForm.SetToolBarPopup;
8861 aIEButton : TToolButton;
8862 aCabinetBBSButton : TToolButton;
8863 aResRangeButton : TToolButton;
8864 aThreadRangeButton: TToolButton;
8866 for i := 0 to StdToolBar.ButtonCount - 1 do begin
8868 for i := 0 to ListToolBar.ButtonCount - 1 do begin
8869 if ListToolBar.Buttons[i].Action = IconStyle then
8870 ListToolBar.Buttons[i].DropdownMenu := ListIconPopupMenu;
8871 if ListToolBar.Buttons[i].Action = SelectReservAction then
8872 ListToolBar.Buttons[i].DropdownMenu := RoundNamePopupMenu;
8874 aIEButton := FindToolBarButton( BrowserToolBar, IEAction );
8875 if aIEButton <> nil then
8876 aIEButton.DropdownMenu := BrowserPopupMenu;
8877 aCabinetBBSButton := FindToolBarButton( StdToolBar, CabinetBBSAction );
8878 if aCabinetBBSButton <> nil then
8879 aCabinetBBSButton.DropdownMenu := BBSSelectPopupMenu;
8880 aResRangeButton := FindToolBarButton( BrowserToolBar, ResRangeAction );
8881 if aResRangeButton <> nil then
8882 aResRangeButton.DropdownMenu := ResRangePopupMenu;
8883 aThreadRangeButton:= FindToolBarButton( ListToolBar, ThreadRangeAction );
8884 if aThreadRangeButton <> nil then
8885 aThreadRangeButton.DropdownMenu := ThreadRangePopupMenu;
8888 procedure TGikoForm.FormMouseWheel(Sender: TObject; Shift: TShiftState;
8889 WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
8893 // browserPos : TPoint;
8897 Wnd := WindowFromPoint(Mouse.CursorPos);
8899 if WheelDelta > 0 then
8904 if (Wnd = BrowserTab.Handle) or
8905 (Wnd = BrowserTab.Parent.Handle) then begin
8906 BrowserTab.ScrollTabs(Delta);
8908 if FIsHandledWheel then begin
8909 FIsHandledWheel := False;
8912 FIsHandledWheel := True;
8913 if (Wnd = TreeView.Handle) or (Wnd = FavoriteTreeView.Handle)
8914 or (Wnd = ListView.Handle) or (Wnd = MessageListView.Handle)
8916 SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (Mouse.CursorPos.X shl 16) or Mouse.CursorPos.Y )
8921 // if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
8922 // TWebBrowser
\82Ì Handle
\82Æ
\94ä
\8ar
\82µ
\82Ä
\82à
\88ê
\92v
\82µ
\82È
\82¢
\82Ì
\82Å
\8dÀ
\95W
\82Å TWebBrowser
\82©
\82Ç
\82¤
\82©
\94»
\92è
8925 Windows.ClientToScreen( Browser.Handle, browserPos );
8926 if (Longword(Mouse.CursorPos.X - browserPos.X) >= Browser.Width)
8927 or (Longword(Mouse.CursorPos.Y - browserPos.Y) >= Browser.Height)
8928 or (Longword(Mouse.CursorPos.Y - browserPos.Y) < 0)
8929 or (Longword(Mouse.CursorPos.Y - browserPos.Y) < 0) then begin
8930 // or not FActiveContent.Browser.Focused then
8931 // TWebBrowser
\82Í
\96³
\8cÀ
\83\8b\81[
\83v
\82·
\82é
\82Ì
\82Å
\82»
\82ê
\88È
\8aO
\82È
\82ç
\83R
\83\93\83g
\83\8d\81[
\83\8b\82É
\91\97\90M
8932 if (Wnd <> BrowserToolBar.Handle) and (Wnd <> BrowserNameToolBar.Handle) then
8933 SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (Mouse.CursorPos.X shl 16) or Mouse.CursorPos.Y )
8940 // SendMessage( Wnd, WM_MOUSEWHEEL, WheelDelta shl 16, (MousePos.X shl 16) or MousePos.Y );
8947 procedure TGikoForm.SelectComboBoxChange(Sender: TObject);
8949 if Length( SelectComboBox.Text ) = 0 then
8951 AllItemAction.Checked := True;
8952 LogItemAction.Checked := False;
8953 NewItemAction.Checked := False;
8955 //
\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é
8956 if AllItemAction.Checked then
8957 AllItemAction.Checked := False;
8958 if LogItemAction.Checked then
8959 LogItemAction.Checked := False;
8960 if NewItemAction.Checked then
8961 NewItemaction.Checked := False;
8964 if Length( SelectComboBox.Text ) = 0 then
8965 SetListViewType( gvtAll )
8967 SetListViewType( gvtUser, SelectComboBox.Text, false);
8970 procedure TGikoForm.SelectComboBoxKeyDown(Sender: TObject; var Key: Word;
8971 Shift: TShiftState);
8974 if Key = VK_Return then
8977 end else if Length( SelectComboBox.Text ) = 0 then
8979 AllItemAction.Checked := True;
8980 LogItemAction.Checked := False;
8981 NewItemAction.Checked := False;
8983 //
\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é
8984 if AllItemAction.Checked then
8985 AllItemAction.Checked := False;
8986 if LogItemAction.Checked then
8987 LogItemAction.Checked := False;
8988 if NewItemAction.Checked then
8989 NewItemaction.Checked := False;
8994 procedure TGikoForm.SelectComboBoxExit(Sender: TObject);
8999 if Length( SelectComboBox.Text ) = 0 then
9001 SelectComboBox.Text := SELECTCOMBOBOX_NAME;
9002 SelectComboBox.Color := SELECTCOMBOBOX_COLOR;
9007 //
\8di
\82è
\8d\9e\82Ý
\8c\9f\8dõ
\82Ì
\97\9a\97ð
\8dX
\90V
9008 procedure TGikoForm.ModifySelectList;
9015 if SelectComboBox.Parent = nil then
9018 if Length( SelectComboBox.Text ) > 0 then
9020 oldText := SelectComboBox.Text;
9021 idx := GikoSys.Setting.SelectTextList.IndexOf( oldText );
9023 GikoSys.Setting.SelectTextList.Delete( idx );
9024 idx := SelectComboBox.Items.IndexOf( oldText );
9026 SelectComboBox.Items.Delete( idx );
9027 GikoSys.Setting.SelectTextList.Insert( 0, oldText );
9028 SelectComboBox.Items.Insert( 0, oldText );
9029 SelectComboBox.Text := oldText;
9037 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\8dÄ
\93Ç
\82Ý
\8d\9e\82Ý
\82·
\82é
9038 procedure TGikoForm.SelectResActionExecute(Sender: TObject);
9040 Dlg: TListSelectDialog;
9041 ThreadItem : TThreadItem;
9042 FilterList : TStringList;
9045 Dlg := TListSelectDialog.Create(Self);
9047 Dlg.SelectComboBox.Items.Assign(GikoSys.Setting.SelectTextList);
9048 Dlg.SelectComboBox.Text := FSelectResWord;
9050 if Dlg.ModalResult = mrOK then begin
9051 SelectResAction.Checked := True;
9052 if Length( Dlg.SelectComboBox.Text ) = 0 then begin
9053 //
\8bó
\93ü
\97Í
\82Å OK
\82Í
\8di
\82è
\8d\9e\82Ý
\89ð
\8f\9c\82Æ
\93¯
\88Ó
\8b`
9054 ResRangeAction.Execute;
9056 GikoSys.ResRange := Ord( grrSelect );
9058 //
\8dÅ
\8cã
\82É
\90Ý
\92è
\82µ
\82½
\82à
\82Ì
\82ð
\8ao
\82¦
\82Ä
\82¨
\82
9059 FSelectResWord := Dlg.SelectComboBox.Text;
9061 //
\8c\9f\8dõ
\97\9a\97ð
\82Ì
\8dX
\90V
9062 idx := GikoSys.Setting.SelectTextList.IndexOf(Dlg.SelectComboBox.Text);
9064 GikoSys.Setting.SelectTextList.Delete(idx);
9065 GikoSys.Setting.SelectTextList.Insert(0, Dlg.SelectComboBox.Text);
9066 while Dlg.SelectComboBox.Items.Count > 100 do begin
9067 Dlg.SelectComboBox.Items.Delete(Dlg.SelectComboBox.Items.Count - 1);
9071 if SelectComboBox.Parent <> nil then
9072 SelectComboBox.Items.Assign( GikoSys.Setting.SelectTextList );
9076 //
\83t
\83B
\83\8b\83^
\82Ì
\90Ý
\92è
9077 FilterList := TStringList.Create;
9079 GikoSys.FSelectResFilter.Reverse := True;
9080 FilterList.Delimiter := ' '; //
\8bæ
\90Ø
\82è
\8eq
\82ð
\94¼
\8ap
\83X
\83y
\81[
\83X
\82É
\90Ý
\92è
9081 FilterList.DelimitedText := Dlg.SelectComboBox.Text;
9083 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
9088 //
\83X
\83\8c\83b
\83h
\82Ì
\8dÄ
\95`
\89æ
9089 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
9090 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9092 ThreadItem := GetActiveContent;
9093 if ThreadItem <> nil then
9094 InsertBrowserTab( ThreadItem, True );
9097 //
\83L
\83\83\83\93\83Z
\83\8b
9098 if GikoSys.ResRange <> Ord( grrSelect ) then
9099 ResRangeAction.Execute;
9107 procedure TGikoForm.SelectResActionUpdate(Sender: TObject);
9109 SelectResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9112 //
\91S
\82Ä
\82Ì
\83\8c\83X
\82ð
\95\
\8e¦
9113 procedure TGikoForm.AllResActionExecute(Sender: TObject);
9115 ThreadItem : TThreadItem;
9116 FilterList : TStringList;
9119 if(FActiveContent <> nil) and (FActiveContent.FBrowser <> nil )
9120 and (FActiveContent.FBrowser.Busy) then Exit;
9122 FResRangeMenuSelect := Ord( grrAll );
9123 AllResAction.Checked := True;
9125 if GikoSys.ResRange <> Ord( grrAll ) then begin
9126 GikoSys.ResRange := Ord( grrAll );
9128 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
9129 FilterList := TStringList.Create;
9131 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
9132 GikoSys.FSelectResFilter.Reverse := False;
9137 FSelectResWord := '';
9139 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
9140 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
9141 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9143 ThreadItem := GetActiveContent;
9144 if ThreadItem <> nil then
9145 InsertBrowserTab( ThreadItem, True );
9149 procedure TGikoForm.AllResActionUpdate(Sender: TObject);
9151 AllResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
9154 procedure TGikoForm.ReloadClick(Sender: TObject);
9156 ThreadItem : TThreadItem;
9159 if GikoSys.FAbon.ReLoadFromNGwordFile =false then begin
9160 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);
9162 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9163 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9165 ThreadItem := GetActiveContent;
9166 if ThreadItem <> nil then
9167 InsertBrowserTab( ThreadItem, True );
9172 procedure TGikoForm.GoBackClick(Sender: TObject);
9174 ThreadItem : TThreadItem;
9178 if GikoSys.FAbon.GoForward =false then begin
9179 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);
9181 s := GikoSys.FAbon.NGwordname;
9182 StatusBar.Panels.Items[2].Text := s;
9183 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9184 StatusBarResize(Sender);
9185 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9186 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9188 ThreadItem := GetActiveContent;
9189 if ThreadItem <> nil then
9190 InsertBrowserTab( ThreadItem, True );
9195 procedure TGikoForm.GoFowardClick(Sender: TObject);
9197 ThreadItem : TThreadItem;
9201 if GikoSys.FAbon.GoBack =false then begin
9202 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);
9204 s := GikoSys.FAbon.NGwordname;
9205 StatusBar.Panels.Items[2].Text := s;
9206 StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100);
9207 StatusBarResize(Sender);
9208 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9209 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9211 ThreadItem := GetActiveContent;
9212 if ThreadItem <> nil then
9213 InsertBrowserTab( ThreadItem, True );
9218 procedure TGikoForm.SelectComboBoxSplitterMouseMove(Sender: TObject;
9219 Shift: TShiftState; X, Y: Integer);
9224 If (SelectComboBox.Parent <> nil) and (IsDraggingSelectComboBox) Then begin
9227 pos := SelectComboBoxSplitter.ClientToScreen( pos );
9228 w := SelectComboBox.Width + (pos.X - DraggingSelectComboBoxPosition.X);
9230 If w <= 50 Then Begin
9231 //
\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
9232 //
\81u
\8e~
\82Ü
\82Á
\82½(50pixel)
\88Ê
\92u
\81v
\82É
\82È
\82é
\82æ
\82¤
\82É
9233 pos.X := pos.X + (50 - w);
9235 //
\8f¬
\82³
\82
\82È
\82è
\82·
\82¬
\82È
\82¢
\82æ
\82¤
\82É
9239 //
\83`
\83\89\82Â
\82«
\8cy
\8c¸
\82Ì
\88×
9240 If SelectComboBox.Width <> w Then Begin
9241 SelectComboBox.Width := w;
9242 GikoSys.Setting.SelectComboBoxWidth := w;
9243 DraggingSelectComboBoxPosition := pos;
9245 //
\83V
\83F
\83u
\83\8d\83\93\88Ê
\92u
\82ª
\95Ï
\82í
\82é
\82Ì
\82Å BandInfo
\82Ì
\8dÄ
\90Ý
\92è
9246 ResetBandInfo( ListCoolBar, ListToolBar );
9251 procedure TGikoForm.SelectComboBoxSplitterMouseDown(Sender: TObject;
9252 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9256 IsDraggingSelectComboBox := True;
9259 DraggingSelectComboBoxPosition := SelectComboBoxSplitter.ClientToScreen( pos );
9262 procedure TGikoForm.SelectComboBoxSplitterMouseUp(Sender: TObject;
9263 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
9265 IsDraggingSelectComboBox := False;
9268 procedure TGikoForm.StatusBarResize(Sender: TObject);
9270 StatusBar.Panels[1].Width := StatusBar.Width -
9271 StatusBar.Panels[0].Width -
9272 StatusBar.Panels[2].Width;
9274 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\92Ê
\8fí
\81v
9275 procedure TGikoForm.IndividualAbon1Click(Sender: TObject);
9277 ThreadItem : TThreadItem;
9280 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,1);
9281 ThreadItem := GetActiveContent;
9282 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9283 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9285 if ThreadItem <> nil then
9286 InsertBrowserTab( ThreadItem, True );
9288 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\81u
\93§
\96¾
\81v
9289 procedure TGikoForm.IndividualAbon2Click(Sender: TObject);
9291 ThreadItem : TThreadItem;
9294 GikoSys.FAbon.AddIndividualAbon(KokoPopupMenu.Tag,0);
9295 ThreadItem := GetActiveContent;
9296 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9297 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9298 if ThreadItem <> nil then
9299 InsertBrowserTab( ThreadItem, True );
9301 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c\81i
\81j
9302 procedure TGikoForm.AntiIndividualAbonClick(Sender: TObject);
9304 ThreadItem : TThreadItem;
9308 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9309 GikoSys.FAbon.DeleteIndividualAbon(KokoPopupMenu.Tag);
9310 ThreadItem := GetActiveContent;
9311 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9312 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9313 if ThreadItem <> nil then
9314 InsertBrowserTab( ThreadItem, True );
9316 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9317 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9320 //
\8cÂ
\95Ê
\82 \82Ú
\81[
\82ñ
\89ð
\8f\9c
9321 procedure TGikoForm.N42Click(Sender: TObject);
9323 IndividualForm :TIndividualAbonForm;
9324 ThreadItem : TThreadItem;
9328 IndividualForm := TIndividualAbonForm.Create(Self);
9330 if GikoSys.FAbon.GetAbonResCount <> 0 then begin
9331 for i :=0 to GikoSys.FAbon.GetAbonResCount-1 do begin
9332 IndividualForm.ComboBox1.Items.Add(GikoSys.FAbon.GetAbonResString(i));
9334 if IndividualForm.ShowModal = mrOK then begin
9335 GikoSys.FAbon.DeleteIndividualAbon(IndividualForm.ResNumber);
9337 for i := BrowserTab.Tabs.Count - 1 downto 0 do
9338 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
9339 ThreadItem := GetActiveContent;
9340 if ThreadItem <> nil then
9341 InsertBrowserTab( ThreadItem, True );
9343 msg := '
\82±
\82Ì
\83X
\83\8c\83b
\83h
\82Å
\82Í
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82ð
\8ds
\82Á
\82Ä
\82Ü
\82¹
\82ñ';
9344 MsgBox(Handle, msg, '
\83\81\83b
\83Z
\81[
\83W', MB_OK);
9347 IndividualForm.Free;
9351 procedure TGikoForm.SelectComboBoxEnter(Sender: TObject);
9354 if (Length( SelectComboBox.Text ) = 0) or
9355 (SelectComboBox.Text = SELECTCOMBOBOX_NAME) then
9357 SelectComboBox.Text := '';
9358 SelectComboBox.Color := clWindow;
9363 procedure TGikoForm.N51Click(Sender: TObject);
9367 //
\94Â
\96¼
\8c\9f\8dõ
9368 procedure TGikoForm.TreeSelectSearchBoardNameExecute(Sender: TObject);
9372 CurItem : TTreeNode;
9375 if InputQuery('
\94Â
\96¼
\8c\9f\8dõ','
\94Â
\96¼
\82Ì
\93ü
\97Í',s) then begin
9378 if TreeView.Selected = nil then
9379 CurItem := TreeView.Items.GetFirstNode
9381 CurItem := TreeView.Selected.GetNext;
9382 if CurItem = nil then
9383 CurItem := TreeView.Items.GetFirstNode;
9385 while CurItem <> nil do begin
9386 if (CurItem.ImageIndex <> 2) and (VaguePos(s,CurItem.Text) <> 0) then begin
9389 CurItem := CurItem.GetNext;
9392 if CurItem = nil then begin
9393 msg := '
\90æ
\93ª
\82É
\96ß
\82è
\82Ü
\82·
\82©
\81H';
9394 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9395 CurItem := TreeView.Items.GetFirstNode;
9399 TreeView.Select(CurItem);
9402 TreeView.Select(CurItem);
9404 msg := '
\8e\9f\82É
\8ds
\82«
\82Ü
\82·
\82©
\81H';
9405 if MsgBox(Handle, msg, '', MB_YESNO or MB_ICONEXCLAMATION) = mrYes then begin
9419 procedure TGikoForm.CabinetFavoriteActionExecute(Sender: TObject);
9425 if CabinetPanel.Visible then begin
9426 if FTreeType = gttFavorite then begin
9427 CabinetVisible( False );
9428 CabinetFavoriteAction.Checked := False;
9430 CabinetFavoriteAction.Checked := True;
9433 CabinetVisible( True );
9434 CabinetFavoriteAction.Checked := True;
9437 // BBS...BBS, History, Favorite
9438 GikoSys.Setting.CabinetIndex := CabinetSelectPopupMenu.Items.Count - 1;
9440 b := CabinetSelectPopupMenu.Items.Count - 1;
9441 for i := 0 to b do begin
9442 item := CabinetSelectPopupMenu.Items[ i ];
9443 if item is TBBSMenuItem then begin
9444 item.Checked := False;
9445 // CabinetMenu
\82Í CabinetSelectPopupMenu
\82Æ
\93¯
\82¶
\82Æ
\8c\88\82ß
\82¤
\82¿
\82µ
\82¿
\82á
\82¤
9446 CabinetMenu.Items[ i ].Checked := False;
9450 //
\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Ö
9451 HistoryToolBar.Hide;
9452 FavoriteToolBar.Show;
9453 TreeView.Visible := False;
9454 FavoriteTreeView.Visible := True;
9456 CabinetSelectToolButton.Caption := '
\82¨
\8bC
\82É
\93ü
\82è';
9457 FTreeType := gttFavorite;
9459 //
\83\81\83j
\83\85\81[
\8by
\82Ñ
\83{
\83^
\83\93\82Ì
\83`
\83F
\83b
\83N
\82ð
\90Ý
\92è
9460 CabinetBBSAction.Checked := False;
9461 CabinetHistoryAction.Checked := False;
9463 //
\82¨
\8bC
\82É
\93ü
\82è
\82Ì
\83c
\83\8a\81[
\82ð
\93W
\8aJ
9464 FavoriteTreeView.Items.GetFirstNode.Expanded := True;
9468 procedure TGikoForm.FavoriteMoveTo( SenderNode, SourceNode: TTreeNode );
9471 if (SenderNode = nil) or (SourceNode = nil) or (SenderNode = SourceNode) then
9474 if TObject(SenderNode.Data) is TFavoriteFolder then
9475 SourceNode.MoveTo(SenderNode, naAddChild)
9477 SourceNode.MoveTo(SenderNode, naInsert);
9481 procedure TGikoForm.FavoriteAddTo( SenderNode: TTreeNode; Source: TObject );
9485 FavoBoardItem: TFavoriteBoardItem;
9486 FavoThreadItem: TFavoriteThreadItem;
9488 ThreadItem: TThreadItem;
9491 if (SenderNode = nil) or (Source = nil) then
9494 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9495 FavNode := SenderNode.Parent
9497 FavNode := SenderNode;
9501 if Source is TBoard then begin
9502 Board := TBoard( Source );
9503 FavoBoardItem := TFavoriteBoardItem.CreateWithItem( Board );
9504 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, FavoBoardItem);
9505 Node.ImageIndex := 15;
9506 Node.SelectedIndex := 15;
9507 end else if Source is TFavoriteBoardItem then begin
9508 FavoBoardItem := TFavoriteBoardItem( Source );
9509 Board := FavoBoardItem.Item;
9510 if Board <> nil then
9511 if not Board.IsThreadDatRead then
9512 GikoSys.ReadSubjectFile(Board);
9513 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Board.Title, Source);
9514 Node.ImageIndex := 15;
9515 Node.SelectedIndex := 15;
9516 end else if Source is TThreadItem then begin
9517 ThreadItem := TThreadItem( Source );
9518 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9519 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9520 Node.ImageIndex := 16;
9521 Node.SelectedIndex := 16;
9522 end else if Source is TBrowserRecord then begin
9523 ThreadItem := TBrowserRecord( Source ).FThread;
9524 FavoThreadItem := TFavoriteThreadItem.CreateWithItem( ThreadItem );
9525 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, FavoThreadItem);
9526 Node.ImageIndex := 16;
9527 Node.SelectedIndex := 16;
9528 end else if Source is TFavoriteThreadItem then begin
9529 FavoThreadItem := TFavoriteThreadItem( Source );
9530 ThreadItem := FavoThreadItem.Item;
9531 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, ThreadItem.Title, Source);
9532 Node.ImageIndex := 16;
9533 Node.SelectedIndex := 16;
9536 if not (TObject(SenderNode.Data) is TFavoriteFolder) then
9538 FavoriteMoveTo( SenderNode, Node );
9542 procedure TGikoForm.FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject );
9545 SourceNode: TTreeNode;
9546 LinkToolButton: TLinkToolButton;
9549 if SenderNode = nil then
9552 if not (TObject( SenderNode.Data ) is TFavoriteFolder) then
9553 if FDropSpaceNode <> nil then
9554 SenderNode := FDropSpaceNode;
9556 if Source = FavoriteTreeView then begin
9558 SourceNode := FavoriteTreeView.Selected;
9559 FavoriteMoveTo( SenderNode, SourceNode );
9561 end else if Source is TLinkToolButton then begin
9563 LinkToolButton := TLinkToolButton( Source );
9564 //ShowMessage(LinkToolButton.Text);
9565 SourceNode := TreeNodeDataFind( FavoriteTreeView.Items.GetFirstNode, LinkToolButton.Data );
9566 FavoriteMoveTo( SenderNode, SourceNode );
9568 end else if Source = BrowserTab then begin
9570 idx := BrowserTab.TabIndex;
9571 FavoriteAddTo( SenderNode, BrowserTab.Tabs.Objects[idx] );
9572 end else if Source = ListView then begin
9574 FavoriteAddTo( SenderNode, ListView.Selected.Data );
9576 end else if Source = TreeView then begin
9578 FavoriteAddTo( SenderNode, TreeView.Selected.Data );
9586 procedure TGikoForm.FavoriteTreeViewDragDrop(Sender, Source: TObject; X,
9589 SenderNode: TTreeNode;
9592 SenderNode := FavoriteTreeView.GetNodeAt(X, Y);
9593 if SenderNode <> nil then begin
9594 FavoriteDragDrop( SenderNode, Source );
9597 if FDropSpaceNode <> nil then begin
9598 FDropSpaceNode.Free;
9599 FDropSpaceNode := nil;
9604 procedure TGikoForm.FavoriteTreeViewEdited(Sender: TObject;
9605 Node: TTreeNode; var S: String);
9608 FavoriteTreeView.ReadOnly := True;
9613 procedure TGikoForm.FavoriteTreeViewKeyDown(Sender: TObject; var Key: Word;
9614 Shift: TShiftState);
9616 if not TTreeView(Sender).IsEditing then begin
9620 FClickNode := FavoriteTreeView.Selected;
9621 FavoriteTreeViewRenameActionExecute( Sender );
9625 FClickNode := FavoriteTreeView.Selected;
9626 FavoriteTreeViewDeleteActionExecute( Sender );
9630 FavoriteClick( FavoriteTreeView.Selected );
9631 FavoriteTreeView.Selected.Expanded := not FavoriteTreeView.Selected.Expanded;
9634 FavoriteTreeViewDblClick( Sender );
9640 procedure TGikoForm.FavoriteTreePopupMenuPopup(Sender: TObject);
9643 LinkToolButton: TLinkToolButton;
9646 if FavoriteTreePopupMenu.PopupComponent = FavoriteTreeView then begin
9648 FClickNode := FavoriteTreeView.Selected;
9650 end else if FavoriteTreePopupMenu.PopupComponent is TLinkToolButton then begin
9652 LinkToolButton := TLinkToolButton( FavoriteTreePopupMenu.PopupComponent );
9653 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
9654 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
9655 FClickNode := FavoriteTreeView.Items[i];
9659 for i := 0 to FClickNode.Count - 1 do begin
9660 if FClickNode.Item[i].Data = LinkToolButton.Data then begin
9661 FClickNode := FClickNode.Item[i];
9668 if FClickNode = nil then begin
9669 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9670 FavoriteTreeDeletePopupMenu.Visible := False;
9671 FavoriteTreeRenamePopupMenu.Visible := False;
9672 FavoriteTreeNewFolderPopupMenu.Visible := False;
9673 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9674 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9675 FavoriteTreeURLCopyPopupMenu.Visible := False;
9676 FavoriteTreeNameCopyPopupMenu.Visible := False;
9677 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9678 FavoriteTreeReloadPopupMenu.Visible := False;
9679 FavoriteTreeLogDeletePopupMenu.Visible := False;
9680 end else if FClickNode.IsFirstNode then begin
9681 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9682 FavoriteTreeDeletePopupMenu.Visible := False;
9683 FavoriteTreeRenamePopupMenu.Visible := False;
9684 FavoriteTreeNewFolderPopupMenu.Visible := True;
9685 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9686 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9687 FavoriteTreeURLCopyPopupMenu.Visible := False;
9688 FavoriteTreeNameCopyPopupMenu.Visible := True;
9689 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9690 FavoriteTreeReloadPopupMenu.Visible := False;
9691 FavoriteTreeLogDeletePopupMenu.Visible := False;
9692 end else if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9693 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9694 FavoriteTreeDeletePopupMenu.Visible := True;
9695 FavoriteTreeRenamePopupMenu.Visible := False;
9696 FavoriteTreeNewFolderPopupMenu.Visible := True;
9697 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9698 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9699 FavoriteTreeURLCopyPopupMenu.Visible := False;
9700 FavoriteTreeNameCopyPopupMenu.Visible := True;
9701 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9702 FavoriteTreeReloadPopupMenu.Visible := False;
9703 FavoriteTreeLogDeletePopupMenu.Visible := False;
9704 end else if TObject(FClickNode.Data) is TFavoriteFolder then begin
9705 FavoriteTreeBrowseFolderPopupMenu.Visible := True;
9706 FavoriteTreeDeletePopupMenu.Visible := True;
9707 FavoriteTreeRenamePopupMenu.Visible := True;
9708 FavoriteTreeNewFolderPopupMenu.Visible := True;
9709 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9710 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9711 FavoriteTreeURLCopyPopupMenu.Visible := False;
9712 FavoriteTreeNameCopyPopupMenu.Visible := True;
9713 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9714 FavoriteTreeReloadPopupMenu.Visible := False;
9715 FavoriteTreeLogDeletePopupMenu.Visible := False;
9716 end else if TObject(FClickNode.Data) is TFavoriteThreadItem then begin
9717 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9718 FavoriteTreeDeletePopupMenu.Visible := True;
9719 FavoriteTreeRenamePopupMenu.Visible := True;
9720 FavoriteTreeNewFolderPopupMenu.Visible := True;
9721 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9722 //FavoriteTreeBrowseThreadPopupMenu.Visible := True;
9723 FavoriteTreeURLCopyPopupMenu.Visible := True;
9724 FavoriteTreeNameCopyPopupMenu.Visible := True;
9725 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9726 FavoriteTreeReloadPopupMenu.Visible := True;
9727 FavoriteTreeLogDeletePopupMenu.Visible := True;
9728 end else if TObject(FClickNode.Data) is TFavoriteBoardItem then begin
9729 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9730 FavoriteTreeDeletePopupMenu.Visible := True;
9731 FavoriteTreeRenamePopupMenu.Visible := True;
9732 FavoriteTreeNewFolderPopupMenu.Visible := True;
9733 //FavoriteTreeBrowseBoardPopupMenu.Visible := True;
9734 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9735 FavoriteTreeURLCopyPopupMenu.Visible := True;
9736 FavoriteTreeNameCopyPopupMenu.Visible := True;
9737 FavoriteTreeNameURLCopyPopupMenu.Visible := True;
9738 FavoriteTreeReloadPopupMenu.Visible := True;
9739 FavoriteTreeLogDeletePopupMenu.Visible := False;
9741 FavoriteTreeBrowseFolderPopupMenu.Visible := False;
9742 FavoriteTreeDeletePopupMenu.Visible := False;
9743 FavoriteTreeRenamePopupMenu.Visible := False;
9744 FavoriteTreeNewFolderPopupMenu.Visible := False;
9745 //FavoriteTreeBrowseBoardPopupMenu.Visible := False;
9746 //FavoriteTreeBrowseThreadPopupMenu.Visible := False;
9747 FavoriteTreeURLCopyPopupMenu.Visible := False;
9748 FavoriteTreeNameCopyPopupMenu.Visible := False;
9749 FavoriteTreeNameURLCopyPopupMenu.Visible := False;
9750 FavoriteTreeReloadPopupMenu.Visible := False;
9751 FavoriteTreeLogDeletePopupMenu.Visible := False;
9756 procedure TGikoForm.FavoriteTreeViewDeleteActionExecute(Sender: TObject);
9758 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';
9759 DEL_MSG = '
\81g^0
\81h
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
9760 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9763 if FClickNode = nil then
9765 if FClickNode.IsFirstNode then
9767 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
9768 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then begin
9769 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9772 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9777 //FDeleteList.Add(FClickNode.Data);
9778 //SetDeleteItemList(FClickNode);
9786 procedure TGikoForm.FavoriteTreeViewRenameActionExecute(Sender: TObject);
9791 if FClickNode = nil then
9793 if FClickNode.IsFirstNode then
9795 if FClickNode.Text = Favorite.FAVORITE_LINK_NAME then
9797 FavoriteTreeView.ReadOnly := False;
9798 if (FTreeType = gttFavorite) and (CabinetPanel.Visible) then begin
9799 node := FClickNode.Parent;
9800 while node <> nil do begin
9801 node.Expanded := True;
9802 node := node.Parent;
9804 FClickNode.EditText;
9806 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 );
9813 procedure TGikoForm.FavoriteTreeViewNewFolderActionExecute(
9816 NewFavFolder: TFavoriteFolder;
9820 if FClickNode = nil then
9824 if not (TObject(FClickNode.Data) is TFavoriteFolder) then begin
9825 FavoriteTreeView.Selected := FClickNode.Parent;
9826 FClickNode := FClickNode.Parent;
9829 NewFavFolder := TFavoriteFolder.Create;
9830 Node := FavoriteTreeView.Items.AddChildObject(FClickNode, '
\90V
\82µ
\82¢
\83t
\83H
\83\8b\83_', NewFavFolder);
9831 Node.ImageIndex := 14;
9832 Node.SelectedIndex := 14;
9833 // FClickNode.Selected.Expanded := True;
9834 FavoriteTreeView.Selected := Node;
9836 FavoriteTreeViewRenameAction.Execute;
9842 procedure TGikoForm.ToolButton19Click(Sender: TObject);
9845 FavoriteArrangeActionExecute( nil );
9849 procedure TGikoForm.FavoriteBrowseFolder( node: TTreeNode );
9854 if not (TObject(node.Data) is TFavoriteFolder) then
9857 for i := 0 to node.Count - 1 do
9859 if TObject(node.Item[i].Data) is TFavoriteFolder then
9860 FavoriteBrowseFolder( node.Item[i] )
9861 else if TObject(node.Item[i].Data) is TFavoriteThreadItem then
9862 FavoriteClick( node.Item[i], False );
9867 procedure TGikoForm.FavoriteTreeViewBrowseFolderActionExecute(
9871 FavoriteBrowseFolder( FClickNode );
9872 //BrowserTab.OnChange(nil);
9876 procedure TGikoForm.FavoriteTreeViewDblClick(Sender: TObject);
9879 FClickNode := FavoriteTreeView.Selected;
9880 FavoriteTreeViewReloadActionExecute( Sender );
9884 procedure TGikoForm.FavoriteTreeViewLogDeleteActionExecute(
9887 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';
9888 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
9890 ThreadItem: TThreadItem;
9891 FavThread: TFavoriteThreadItem;
9894 if FClickNode = nil then Exit;
9895 if not (TObject(FClickNode.Data) is TFavoriteThreadItem) then Exit;
9897 FavThread := TFavoriteThreadItem( FClickNode.Data );
9898 ThreadItem := FavThread.Item;
9901 if GikoSys.Setting.DeleteMsg then begin
9902 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then
9903 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FClickNode.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
9907 DeleteHistory(ThreadItem);
9908 DeleteTab(ThreadItem);
9909 ThreadItem.DeleteLogFile;
9917 procedure TGikoForm.FavoriteTreeViewReloadActionExecute(Sender: TObject);
9919 ThreadItem: TThreadItem;
9920 FavThread: TFavoriteThreadItem;
9922 FavBoard: TFavoriteBoardItem;
9926 if FClickNode = nil then Exit;
9928 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
9930 if TObject( FClickNode.Data ) is TFavoriteThreadItem then begin
9931 FavThread := TFavoriteThreadItem( FClickNode.Data );
9932 ThreadItem := FavThread.Item;
9933 if ThreadItem <> nil then
9934 DownloadContent(ThreadItem, shiftDown);
9935 end else if TObject( FClickNode.Data ) is TFavoriteBoardItem then begin
9936 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9937 Board := FavBoard.Item;
9938 DownloadList(Board, shiftDown);
9943 procedure TGikoForm.FavoriteTreeViewURLCopyActionExecute(Sender: TObject);
9945 FavThread : TFavoriteThreadItem;
9946 FavBoard : TFavoriteBoardItem;
9950 if FClickNode = nil then Exit;
9952 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9954 FavThread := TFavoriteThreadItem( FClickNode.Data );
9955 s := FavThread.URL + #13#10;
9957 Clipboard.AsText := s;
9959 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9961 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9962 s := FavBoard.URL + #13#10;
9964 Clipboard.AsText := s;
9970 procedure TGikoForm.FavoriteTreeViewNameCopyActionExecute(Sender: TObject);
9972 ThreadItem: TThreadItem;
9973 FavThread: TFavoriteThreadItem;
9975 FavBoard: TFavoriteBoardItem;
9979 if FClickNode = nil then Exit;
9981 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
9983 FavThread := TFavoriteThreadItem( FClickNode.Data );
9984 ThreadItem := FavThread.Item;
9987 s := ThreadItem.Title + #13#10;
9989 Clipboard.AsText := s;
9993 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
9995 FavBoard := TFavoriteBoardItem( FClickNode.Data );
9996 Board := FavBoard.Item;
9997 if Board <> nil then
9998 if not Board.IsThreadDatRead then
9999 GikoSys.ReadSubjectFile(Board);
10002 s := Board.Title + #13#10;
10004 Clipboard.AsText := s;
10012 procedure TGikoForm.FavoriteTreeViewNameURLCopyActionExecute(
10015 ThreadItem: TThreadItem;
10016 FavThread: TFavoriteThreadItem;
10018 FavBoard: TFavoriteBoardItem;
10022 if FClickNode = nil then Exit;
10024 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10026 FavThread := TFavoriteThreadItem( FClickNode.Data );
10027 ThreadItem := FavThread.Item;
10030 s := ThreadItem.Title + #13#10 + ThreadItem.URL + #13#10;
10032 Clipboard.AsText := s;
10036 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10038 FavBoard := TFavoriteBoardItem( FClickNode.Data );
10039 Board := FavBoard.Item;
10040 if Board <> nil then
10041 if not Board.IsThreadDatRead then
10042 GikoSys.ReadSubjectFile(Board);
10045 s := Board.Title + #13#10 + Board.URL + #13#10;
10047 Clipboard.AsText := s;
10055 function TGikoForm.TreeNodeDataFind(Node: TTreeNode; FindPointer: Pointer): TTreeNode;
10061 for i := 0 to Node.Count - 1 do begin
10062 if Node.Item[i].Data = FindPointer then begin
10063 Result := Node.Item[i];
10065 end else if Node.Item[i].Count > 0 then begin
10066 Found := TreeNodeDataFind( Node.Item[i], FindPointer );
10067 if Found <> nil then begin
10078 procedure TGikoForm.LinkToolBarDragDrop(Sender, Source: TObject; X,
10082 SenderNode: TTreeNode;
10086 for i := 0 to FavoriteTreeView.Items.Count - 1 do begin
10087 if FavoriteTreeView.Items[i].Text = Favorite.FAVORITE_LINK_NAME then begin
10088 SenderNode := FavoriteTreeView.Items[i];
10093 FavoriteDragDrop( SenderNode, Source );
10097 procedure TGikoForm.BrowserTabMouseUp(Sender: TObject;
10098 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10100 if FDragWFirst <> true then begin
10101 FDragWFirst := false;
10103 end else if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold)
10104 and (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10108 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10109 if GikoSys.Setting.ListWidthState = glsMin then begin
10110 BrowserMaxAndFocusAction.Execute;
10113 if GikoSys.Setting.ListHeightState = glsMin then begin
10114 BrowserMaxAndFocusAction.Execute;
10120 procedure TGikoForm.LinkToolBarDragOver(Sender, Source: TObject; X,
10121 Y: Integer; State: TDragState; var Accept: Boolean);
10124 FavoriteDragOver( Sender, Source, X, Y, State, Accept );
10128 procedure TGikoForm.ResRangeActionExecute(Sender: TObject);
10130 case FResRangeMenuSelect of
10131 Ord( grrAll ): AllResAction.Execute;
10132 Ord( grrKoko ): OnlyKokoResAction.Execute;
10133 Ord( grrNew ): OnlyNewResAction.Execute;
10134 100: OnlyAHundredResAction.Execute;
10138 procedure TGikoForm.FavoriteTreeViewEndDrag(Sender, Target: TObject; X,
10142 if FDropSpaceNode <> nil then begin
10143 FDropSpaceNode.Free;
10144 FDropSpaceNode := nil;
10150 procedure TGikoForm.ListCoolBarContextPopup(Sender: TObject;
10151 MousePos: TPoint; var Handled: Boolean);
10154 FToolBarSettingSender := tssList;
10155 MousePos := ListCoolBar.ClientToScreen( MousePos );
10156 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10160 procedure TGikoForm.MainCoolBarContextPopup(Sender: TObject;
10161 MousePos: TPoint; var Handled: Boolean);
10164 FToolBarSettingSender := tssMain;
10165 MousePos := MainCoolBar.ClientToScreen( MousePos );
10166 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10170 procedure TGikoForm.BrowserCoolBarContextPopup(Sender: TObject;
10171 MousePos: TPoint; var Handled: Boolean);
10174 FToolBarSettingSender := tssBrowser;
10175 MousePos := BrowserCoolBar.ClientToScreen( MousePos );
10176 MainCoolBarPopupMenu.Popup( MousePos.X, MousePos.Y );
10179 procedure TGikoForm.ExportFavoriteFileAccept(Sender: TObject);
10182 if FavoriteDM.SaveFavoriteFile( ExportFavoriteFile.Dialog.FileName ) Then begin
10183 ShowMessage('
\83t
\83@
\83C
\83\8b\82ð
\8fo
\97Í
\82µ
\82Ü
\82µ
\82½');
10185 ShowMessage('
\83t
\83@
\83C
\83\8b\82Ì
\8fo
\97Í
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½');
10188 procedure TGikoForm.SetListViewBackGroundColor(value: TColor);
10190 if FListViewBackGroundColor <> value then begin
10191 FListViewBackGroundColor := value;
10192 ListView.Color := FListViewBackGroundColor;
10195 procedure TGikoForm.ExportFavoriteFileBeforeExecute(Sender: TObject);
10197 ExportFavoriteFile.Dialog.FileName := FavoriteDM.GetFavoriteFilePath;
10200 procedure TGikoForm.CabinetBBSActionExecute(Sender: TObject);
10203 if CabinetPanel.Visible then begin
10204 if FTreeType = gtt2ch then begin
10205 CabinetVisible( False );
10207 CabinetBBSAction.Checked := False;
10209 CabinetBBSAction.Checked := True;
10212 CabinetVisible( True );
10213 CabinetBBSAction.Checked := True;
10216 if FActiveBBS = nil then
10217 ShowBBSTree( BBSs[ 0 ] )
10219 ShowBBSTree( FActiveBBS );
10223 procedure TGikoForm.FavoriteTreeViewBrowseThreadActionExecute(
10226 threadItem : TThreadItem;
10229 if FClickNode = nil then Exit;
10231 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10233 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10234 if threadItem = nil then
10236 GikoSys.OpenBrowser( threadItem.URL, gbtAuto );
10242 procedure TGikoForm.FavoriteTreeBrowseBoardPopupMenuClick(Sender: TObject);
10244 threadItem : TThreadItem;
10245 boardItem : TBoard;
10248 if FClickNode = nil then Exit;
10250 if (TObject(FClickNode.Data) is TFavoriteThreadItem) then begin
10252 threadItem := TFavoriteThreadItem( FClickNode.Data ).Item;
10253 if threadItem = nil then
10255 GikoSys.OpenBrowser( threadItem.ParentBoard.URL, gbtAuto );
10257 end else if (TObject(FClickNode.Data) is TFavoriteBoardItem) then begin
10259 boardItem := TFavoriteBoardItem( FClickNode.Data ).Item;
10260 if boardItem = nil then
10262 GikoSys.OpenBrowser( boardItem.URL, gbtAuto );
10268 procedure TGikoForm.UpBoardActionExecute(Sender: TObject);
10271 SelectTreeNode( GetActiveContent.ParentBoard, True );
10275 procedure TGikoForm.UpBoardActionUpdate(Sender: TObject);
10278 UpBoardAction.Enabled := GetActiveContent <> nil;
10282 procedure TGikoForm.BrowserTabContextPopup(Sender: TObject;
10283 MousePos: TPoint; var Handled: Boolean);
10287 idx := BrowserTab.IndexOfTabAt(MousePos.X, MousePos.Y);
10288 if BrowserTab.TabIndex <> idx then begin
10289 BrowserTab.TabIndex := idx;
10290 BrowserTab.OnChange(nil);
10295 procedure TGikoForm.KoreCopyExecute(Sender: TObject);
10297 KonoresCopy(KokoPopupMenu.Tag, true);
10299 procedure TGikoForm.KonoresCopy(Number: Integer; ReplaceTag : Boolean);
10301 ThreadItem: TThreadItem;
10307 boardPlugIn : TBoardPlugIn;
10309 if Number = 0 then Exit;
10310 ThreadItem := GetActiveContent;
10312 if ThreadItem <> nil then begin
10313 if ThreadItem.IsBoardPlugInAvailable then begin
10314 //=====
\83v
\83\89\83O
\83C
\83\93\82É
\82æ
\82é
\95\
\8e¦
10315 boardPlugIn := ThreadItem.BoardPlugIn;
10317 //
\83t
\83H
\83\93\83g
\82â
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
10318 //
\95¶
\8e\9a\83R
\81[
\83h
\82Í
\83v
\83\89\83O
\83C
\83\93\82É
\94C
\82¹
\82é
10319 //
\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
10320 tmp := boardPlugIn.GetDat( DWORD( threadItem ), Number );
10322 FileName := ThreadItem.FilePath;
10323 tmp := GikoSys.ReadThreadFile(FileName, Number);
10325 if tmp <> '' then begin
10326 Res := GikoSys.DivideStrLine(tmp);
10328 Header := IntToStr(Number) + '
\81F' + Res.FName + '
\81F' + Res.FDateTime + #13#10;
10329 if ReplaceTag then begin
10330 Header := CustomStringReplace(Header, '</b>', '',true);
10331 Header := CustomStringReplace(Header, '<b>', '',true);
10333 if ThreadItem.IsBoardPlugInAvailable then begin
10334 Body := CustomStringReplace(Res.FBody, '<br>', #13#10,true);
10335 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10337 Body := CustomStringReplace(Res.FBody, ' <br> ', #13#10,true);
10338 Body := CustomStringReplace(Body, ' <br>', #13#10,true);
10339 Body := CustomStringReplace(Body, '<br> ', #13#10,true);
10340 Body := CustomStringReplace(Body, '<br>', #13#10,true);
10343 Body := CustomStringReplace(Body, '</a>', '',true);
10345 Body := GikoSys.DeleteLink(Body);
10346 if ReplaceTag then begin
10347 Body := CustomStringReplace(Body, '<', '<');
10348 Body := CustomStringReplace(Body, '>', '>');
10349 Body := CustomStringReplace(Body, '"', '"');
10350 Body := CustomStringReplace(Body, '&', '&');
10351 //Body := CustomStringReplace(Body, ' ', ' ');
10354 Header := Header + Body;
10356 Clipboard.SetTextBuf( PChar(Header) );
10362 procedure TGikoForm.BrowserTabPopupMenuPopup(Sender: TObject);
10364 AddRoundNameMenu(dummy1);
10367 procedure TGikoForm.FavoritesURLReplace(oldURLs: TStringList; newURLs: TStringList);
10369 FavoriteDM.URLReplace(oldURLs, newURLs);
10372 procedure TGikoForm.RoundListURLReplace(oldURLs: TStringList; newURLs: TStringList);
10374 RoundList.URLReplace(oldURLs, newURLs);
10377 procedure TGikoForm.TabFileURLReplace(oldURLs: TStringList; newURLs: TStringList);
10381 tempString: string;
10384 oldBoardName: string;
10386 newBoardName: string;
10387 TabList: TStringList;
10389 TabList := TStringList.Create;
10390 if oldURLs.Count <> newURLs.Count then
10392 //
\82±
\82±
\82©
\82ç
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10393 for j :=0 to oldURLs.Count - 1 do begin
10394 for i :=0 to TabList.Count - 1 do begin
10395 if TabList.Text = oldURLs[j] then
10396 TabList.Text := newURLs[j];
10399 //
\82±
\82±
\82Ü
\82Å
\81ABoard
\82ÌURL
\82Ì
\95Ï
\8dX
10401 //
\82±
\82±
\82©
\82ç
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10402 //
\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
10403 for i := 0 to oldURLs.Count - 1 do begin
10404 tmpURL := Copy(oldURLs[i], 1, Length(oldURLs[i]) -1);
10405 oldHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10406 oldBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10407 tmpURL := Copy(newURLs[i], 1, Length(newURLs[i]) -1);
10408 newHost := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
10409 newBoardName := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
10411 for j := 0 to TabList.Count - 1 do begin
10412 tempString := TabList.Text;
10413 if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
10414 tempString := StringReplace(tempString, oldHost, newHost,[]);
10415 TabList.Text := tempString;
10419 //
\82±
\82±
\82Ü
\82Å
\81AThread
\82ÌURL
\82Ì
\95Ï
\8dX
10423 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82é
10424 procedure TGikoForm.OnMinimize;
10426 if FActiveContent <> nil then begin
10427 FIsMinimize := mtMinimizing;
10428 FActiveContent.Thread.ScrollTop := OleVariant(IHTMLDocument2(FActiveContent.Browser.Document)).Body.ScrollTop;
10432 ///
\8dÅ
\8f¬
\89»
\82³
\82ê
\82½ (OnResized
\82©
\82ç
\8cÄ
\82Î
\82ê
\82é)
10433 procedure TGikoForm.OnMinimized;
10435 FIsMinimize := mtMinimized;
10438 procedure TGikoForm.CoolBarResized(Sender: TObject; CoolBar: TCoolBar);
10440 coolSet : TCoolSet;
10441 toolbar : TToolBar;
10443 affectedBand : TCoolBand;
10446 if (FOldFormWidth = Width) and not IsIconic( Handle ) and (FIsIgnoreResize = rtNone) then begin
10447 FIsIgnoreResize := rtResizing;
10448 PostMessage( Handle, USER_RESIZED, 0, 0 );
10449 if not (Sender is TToolBar) or (CoolBar = nil) then
10451 toolbar := TToolBar( Sender );
10453 //
\95Ï
\8dX
\82³
\82ê
\82½
\83N
\81[
\83\8b\83o
\81[
\82Ì
\92l
\82ð
\95Û
\91¶
10454 if CoolBar = MainCoolBar then begin
10455 for i := 0 to MAIN_COOLBAND_COUNT - 1 do begin
10456 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10457 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10458 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10459 GikoSys.Setting.MainCoolSet[i] := CoolSet;
10461 end else if CoolBar = ListCoolBar then begin
10462 for i := 0 to LIST_COOLBAND_COUNT - 1 do begin
10463 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10464 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10465 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10466 GikoSys.Setting.ListCoolSet[i] := CoolSet;
10468 end else if CoolBar = BrowserCoolBar then begin
10469 for i := 0 to BROWSER_COOLBAND_COUNT - 1 do begin
10470 CoolSet.FCoolID := CoolBar.Bands[i].ID;
10471 CoolSet.FCoolWidth := CoolBar.Bands[i].Width;
10472 CoolSet.FCoolBreak := CoolBar.Bands[i].Break;
10473 GikoSys.Setting.BrowserCoolSet[i] := CoolSet;
10476 //
\95\9d\82Ì
\95Ï
\8dX
\82³
\82ê
\82½
\83o
\83\93\83h
\82ð
\8c©
\82Â
\82¯
\82é
10477 affectedBand := nil;
10478 for i := CoolBar.Bands.Count - 1 downto 0 do begin
10479 if CoolBar.Bands[ i ].Control.Handle = toolbar.Handle then begin
10480 band := CoolBar.Bands[ i ];
10481 if band.Break or (i = 0) then begin
10482 if i + 1 < CoolBar.Bands.Count then
10483 if not CoolBar.Bands[ i + 1 ].Break then
10484 affectedBand := CoolBar.Bands[ i + 1 ];
10487 affectedBand := CoolBar.Bands[ i - 1 ];
10492 //
\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·
10493 if CoolBar = MainCoolBar then begin
10494 coolSet := GikoSys.Setting.MainCoolSet[ band.ID ];
10495 coolSet.FCoolWidth := toolbar.Width + 25;
10496 GikoSys.Setting.MainCoolSet[ band.ID ] := coolSet;
10497 if affectedBand <> nil then begin
10498 coolSet := GikoSys.Setting.MainCoolSet[ affectedBand.ID ];
10499 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10500 GikoSys.Setting.MainCoolSet[ affectedBand.ID ] := coolSet;
10502 end else if CoolBar = ListCoolBar then begin
10503 coolSet := GikoSys.Setting.ListCoolSet[ band.ID ];
10504 coolSet.FCoolWidth := toolbar.Width + 25;
10505 GikoSys.Setting.ListCoolSet[ band.ID ] := coolSet;
10506 if affectedBand <> nil then begin
10507 coolSet := GikoSys.Setting.ListCoolSet[ affectedBand.ID ];
10508 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10509 GikoSys.Setting.ListCoolSet[ affectedBand.ID ] := coolSet;
10511 end else if CoolBar = BrowserCoolBar then begin
10512 coolSet := GikoSYs.Setting.BrowserCoolSet[ band.ID ];
10513 coolSet.FCoolWidth := toolbar.Width + 25;
10514 GikoSys.Setting.BrowserCoolSet[ band.ID ] := coolSet;
10515 if affectedBand <> nil then begin
10516 coolSet := GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ];
10517 coolSet.FCoolWidth := affectedBand.Control.Width + 25;
10518 GikoSys.Setting.BrowserCoolSet[ affectedBand.ID ] := coolSet;
10524 procedure TGikoForm.MenuToolBarResize(Sender: TObject);
10526 CoolBarResized( Sender, MainCoolBar );
10529 procedure TGikoForm.StdToolBarResize(Sender: TObject);
10531 CoolBarResized( Sender, MainCoolBar );
10534 procedure TGikoForm.LinkToolBarResize(Sender: TObject);
10536 CoolBarResized( Sender, MainCoolBar );
10539 procedure TGikoForm.ListNameToolBarResize(Sender: TObject);
10541 CoolBarResized( Sender, ListCoolBar );
10544 procedure TGikoForm.ListToolBarResize(Sender: TObject);
10546 CoolBarResized( Sender, ListCoolBar );
10549 procedure TGikoForm.BrowserNameToolBarResize(Sender: TObject);
10551 CoolBarResized( Sender, BrowserCoolBar );
10554 procedure TGikoForm.BrowserToolBarResize(Sender: TObject);
10556 CoolBarResized( Sender, BrowserCoolBar );
10559 procedure TGikoForm.BrowserTabResize(Sender: TObject);
10561 CoolBarResized( Sender, BrowserCoolBar );
10564 // *************************************************************************
10565 // ExternalBoardPlugInMain
10566 //
\83v
\83\89\83O
\83C
\83\93\83\81\83j
\83\85\81[
\82Ì
\8d\80\96Ú
\82ª
\8eÀ
\8ds
\82³
\82ê
\82½
10567 // *************************************************************************
10568 procedure TGikoForm.OnPlugInMenuItem( Sender : TObject );
10571 boardPlugIn : TBoardPlugIn;
10574 if not (Sender is TMenuItem) then
10577 item := TMenuItem( Sender );
10578 if not Assigned( Pointer( item.Tag ) ) then
10581 //
\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·
10582 boardPlugIn := TBoardPlugIn( item.Tag );
10583 boardPlugIn.PlugInMenu( item.Handle );
10586 // TreeView
\82ª
\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10587 procedure TGikoForm.TreeClick( Node : TTreeNode );
10593 if FTreeType = gttHistory then begin
10594 if Node <> nil then
10595 if TObject( Node.Data ) is TFavoriteThreadItem then
10596 if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then
10597 FavoriteClick( Node );
10601 ActiveListColumnSave;
10603 if TObject(Node.Data) is TBBS then begin
10604 SetActiveList(Node.data);
10605 end else if TObject(Node.Data) is TCategory then begin
10606 SetActiveList(Node.data);
10607 end else if TObject(Node.Data) is TBoard then begin
10608 if not TBoard(Node.Data).IsThreadDatRead then begin
10609 Screen.Cursor := crHourGlass;
10611 if not TBoard(Node.Data).IsThreadDatRead then
10612 GikoSys.ReadSubjectFile(Node.Data);
10614 Screen.Cursor := crDefault;
10617 SetActiveList(Node.data);
10620 if TObject( Node.Data ) is TBoard then begin // not TCategory
10621 if GikoSys.Setting.ListOrientation = gloHorizontal then begin
10622 if GikoSys.Setting.ListWidthState = glsMax then begin
10623 BrowserMinAction.Execute;
10624 if GikoForm.Visible then
10628 if GikoSys.Setting.ListHeightState = glsMax then begin
10629 BrowserMinAction.Execute;
10630 if GikoForm.Visible then
10638 // TreeView
\82ª
\83_
\83u
\83\8b\83N
\83\8a\83b
\83N
\82³
\82ê
\82½
10639 procedure TGikoForm.TreeDoubleClick( Node : TTreeNode );
10642 ThreadItem : TThreadItem;
10643 shiftDown : Boolean;
10646 if Node = nil then Exit;
10648 shiftDown := GetAsyncKeyState(VK_SHIFT) = Smallint($8001);
10650 if FTreeType = gtt2ch then begin
10651 if not (TObject(Node.Data) is TBoard) then Exit;
10652 Board := TBoard(Node.Data);
10653 DownloadList(Board, shiftDown);
10654 end else if FTreeType = gttHistory then begin
10655 if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit;
10656 ThreadItem := TFavoriteThreadItem(Node.Data).Item;
10657 DownloadContent(ThreadItem, shiftDown);
10662 procedure TGikoForm.TreeViewClick(Sender: TObject);
10664 TreeClick( TreeView.Selected );
10667 procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word;
10668 Shift: TShiftState);
10670 if Key = VK_BACK then begin
10671 // UpFolderButtonClick(Sender);
10672 end else if Key = VK_SPACE then begin
10673 TreeDoubleClick( TreeView.Selected );
10674 end else if Key = VK_RETURN then begin
10675 TreeClick( TreeView.Selected );
10676 TreeView.Selected.Expanded := not TreeView.Selected.Expanded;
10680 //
\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ã
10681 //
\83C
\83x
\83\93\83g
\82ð
\8eæ
\82è
\88µ
\82Á
\82½
\8fê
\8d\87\82Í True
\82ð
\95Ô
\82·
10682 function TGikoForm.BrowserKeydown(var Msg: TMsg; Key: Word; State:TShiftState) : Boolean;
10684 iOIPAO : IOleInPlaceActiveObject;
10685 Dispatch : IDispatch;
10688 if Key = VK_BACK then begin
10689 UpBoardAction.Execute;
10691 {end else if Key in [VK_ESCAPE..VK_HELP] then begin
10692 //
\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
10695 end else if(Key in [VK_SPACE..VK_HELP]) and
10696 not(ssCtrl in State) and not(ssAlt in State) and not (ssShift in State) then begin
10699 //
\82»
\82ê
\88È
\8aO
\82Ì
\83C
\83x
\83\93\83g
\82Í Browser
\82É
\97¬
\82·
10700 if(FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10701 Dispatch := FActiveContent.Browser.Application;
10702 if Dispatch <> nil then begin
10703 Dispatch.QueryInterface( IOleInPlaceActiveObject, iOIPAO );
10704 if iOIPAO <> nil then
10705 iOIPAO.TranslateAccelerator( Msg );
10708 //
\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¢
10714 //
\83M
\83R
\83i
\83r
\82Ì
\83\81\83b
\83Z
\81[
\83W
\83\8b\81[
\83v
\82ð
\89¡
\8eæ
\82è
\82µ
\82Ü
\82·
10715 procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean);
10719 case Msg.message of
10721 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10722 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10724 Handled := BrowserKeyDown( Msg, key, KeyDataToShiftState( Msg.lParam ) );
10729 case Msg.wParam shr 16 of
10732 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then begin
10733 if IsDialogMessage( FActiveContent.Browser.Handle, Msg ) then begin
10734 UpBoardAction.Execute;
10738 if not Handled then begin
10739 if IsDialogMessage( ListView.Handle, Msg ) then begin
10740 UpFolderAction.Execute;
10750 procedure TGikoForm.FavoriteTreeViewMouseDown(Sender: TObject;
10751 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10753 favItem : TTreeNode;
10754 favThreadItem : TFavoriteThreadItem;
10760 FMouseDownPos.X := X;
10761 FMouseDownPos.Y := Y;
10765 favItem := FavoriteTreeView.GetNodeAt( X, Y );
10766 if favItem = nil then Exit;
10768 if TObject( favItem.Data ) is TFavoriteThreadItem then begin
10769 favThreadItem := TFavoriteThreadItem( favItem.Data );
10770 if favThreadItem.Item <> nil then
10771 InsertBrowserTab( favThreadItem.Item, False );
10778 procedure TGikoForm.MessagePanelResize(Sender: TObject);
10781 if FIsIgnoreResize <> rtNone then
10784 if GikoSys.Setting.ListOrientation = gloVertical then begin
10785 if GikoSys.Setting.ListHeightState = glsMin then begin
10786 //
\8dÅ
\8f¬
\95\
\8e¦
\82É
\82·
\82é
10787 ViewPanel.Height := ThreadMainPanel.Height - BrowserCoolBar.Height - 7;
10793 procedure TGikoForm.OnResized;
10798 FOldFormWidth := Width;
10799 FIsIgnoreResize := rtNone;
10801 case FIsMinimize of
10804 //
\8dÅ
\8f¬
\89»
\92\86\82Å
\82 \82é
10805 PostMessage( Handle, USER_MINIMIZED, 0, 0 );
10810 //
\8dÅ
\8f¬
\89»
\82Í
\8aù
\82É
\8a®
\97¹
\82µ
\82Ä
\82¢
\82é (
\82Â
\82Ü
\82è
\83^
\83X
\83N
\83o
\81[
\82©
\82ç
\83E
\83B
\83\93\83h
\83E
\82ð
\95\9c\8c³
\92\86)
10811 if FActiveContent <> nil then begin
10812 doc := Idispatch( olevariant(FActiveContent.Browser.ControlInterface).Document) as IHTMLDocument2;
10813 doc.Body.ScrollTop := FActiveContent.Thread.ScrollTop;
10815 FIsMinimize := mtNone;
10821 procedure TGikoForm.TreeSelectNameCopyExecute(Sender: TObject);
10825 TreeView.Selected := FClickNode;
10826 s := FClickNode.Text;
10827 Clipboard.AsText := s;
10830 procedure TGikoForm.FavoriteTreeViewMouseUp(Sender: TObject;
10831 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
10834 if (abs( X - FMouseDownPos.X ) < Mouse.DragThreshold) and
10835 (abs( Y - FMouseDownPos.Y ) < Mouse.DragThreshold) then begin
10836 FavoriteClick( TObject( FavoriteTreeView.Selected ) );
10841 destructor TBrowserRecord.Destroy;
10845 if Self.FEvent <> nil then
10847 if Self.FBrowser <> nil then begin
10848 if Self.Thread <> nil then begin
10849 //
\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Å
10850 //
\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
10851 if Self.FBrowser.OleObject.Document.documentElement.innerText <> '' then begin
10852 doc := Idispatch( olevariant(Self.FBrowser.ControlInterface).Document) as IHTMLDocument2;
10853 Self.Thread.ScrollTop := doc.Body.ScrollTop;
10856 //TOleControl(Self.FBrowser).Visible := false;
10857 ShowWindow(Self.FBrowser.Handle, SW_HIDE);
10862 procedure TGikoForm.ResRangeActionUpdate(Sender: TObject);
10864 ResRangeAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
10867 function TGikoForm.WebBrowserClick(Sender: TObject): WordBool;
10871 if (FActiveContent <> nil) and (FActiveContent.Browser <> nil) then
10872 FActiveContent.FBrowser.SetFocus;
10877 procedure TGikoForm.SetFocusForBrowserActionExecute(Sender: TObject);
10879 FActiveContent.FBrowser.SetFocus;
10882 procedure TGikoForm.SetFocusForBrowserActionUpdate(Sender: TObject);
10884 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10885 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10886 SetFocusForBrowserAction.Enabled := true
10888 SetFocusForBrowserAction.Enabled := false;
10891 procedure TGikoForm.SetFocusForThreadListActionExecute(Sender: TObject);
10895 if FActiveContent <> nil then
10896 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10898 if( ListView.Items.Count > 0 ) and (ListView.ItemFocused = nil) then
10899 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é
10900 else if ListView.Items.Count > 0 then begin
10901 ListView.Scroll(-ListView.ClientWidth, -ListView.ClientHeight);
10902 rct := ListView.ItemFocused.DisplayRect(drBounds);
10903 ListView.Scroll(0, 2 * rct.Top - rct.Bottom);
10904 if ListView.ViewStyle <> vsReport then begin
10905 ListView.Scroll(rct.Left, 0);
10910 procedure TGikoForm.SetFocusForCabinetActionExecute(Sender: TObject);
10912 if FActiveContent <> nil then
10913 WebBrowserClick(FActiveContent.Browser); //
\88ê
\89ñBrowser
\82É
\93\96\82Ä
\82È
\82¢
\82Æ
\93®
\82©
\82È
\82¢
\82Æ
\82«
\82ª
\82 \82é
10914 if TreeView.Visible then begin
10916 if(TreeView.Items.Count > 0) and ( TreeView.Selected = nil ) then
10917 TreeView.Items.Item[0].Selected := true;
10918 end else if FavoriteTreeView.Visible then begin
10919 FavoriteTreeView.SetFocus;
10920 if(FavoriteTreeView.Items.Count > 0) and (FavoriteTreeView.Selected = nil) then
10921 FavoriteTreeView.Items.Item[0].Selected := true;
10924 procedure TGikoForm.SetFocusForCabinetActionUpdate(Sender: TObject);
10926 SetFocusForCabinetAction.Enabled := CabinetPanel.Visible;
10929 //
\83u
\83\89\83E
\83U
\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
\81B
10930 procedure TGikoForm.BrowserMaxAndFocusActionExecute(Sender: TObject);
10932 BrowserMaxAction.Execute;
10933 SetFocusForBrowserAction.Execute;
10936 procedure TGikoForm.BrowserMaxAndFocusActionUpdate(Sender: TObject);
10938 if( FActiveContent <> nil) and (FActiveContent.Browser <> nil) and
10939 (FActiveContent.Browser <> BrowserNullTab.Browser) then
10940 BrowserMaxAndFocusAction.Enabled := true
10942 BrowserMaxAndFocusAction.Enabled := false;
10944 //
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\8dÅ
\91å
\89»
\82µ
\82Ä
\83t
\83H
\81[
\83J
\83X
\82ð
\93\96\82Ä
\82é
10945 procedure TGikoForm.ThreadlistMaxAndFocusActionExecute(Sender: TObject);
10947 BrowserMinAction.Execute;
10948 SetFocusForThreadListAction.Execute;
10951 procedure TGikoForm.ListViewExit(Sender: TObject);
10957 procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem;
10958 Selected: Boolean);
10961 if not (GikoSys.Setting.BrowserTabVisible) and (Item <> nil) then
10962 if (TObject( Item.Data ) is TThreadItem) then begin
10963 SelectTimer.Interval := GikoSys.Setting.SelectInterval;
10965 SelectTimer.Interval := 0
10967 SelectTimer.Interval := 0;
10971 procedure TGikoForm.SelectTimerTimer(Sender: TObject);
10973 if not (ListView.Selected = nil) then
10974 if( FActiveContent = nil) or
10975 (GetActiveContent <> TThreadItem(ListView.Selected.Data) ) then begin
10976 SelectTimer.Interval := 0;
10981 procedure TGikoForm.SelectItemSaveForDatExecute(Sender: TObject);
10986 List := TList.Create;
10988 Screen.Cursor := crHourGlass;
10989 SelectListItem(List);
10990 if ((GikoSys.Setting.ListOrientation = gloVertical) and
10991 (GikoSys.Setting.ListHeightState = glsMax)) or
10992 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
10993 (GikoSys.Setting.ListWidthState = glsMax)) then
10994 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10995 else if(List.Count = 0) then
10996 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
10998 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðdat
\82Ì
\82Ü
\82Ü
\95Û
\91¶';
10999 FileSaveAs1.Dialog.Filter := 'DAT
\83t
\83@
\83C
\83\8b(*.dat)|*.dat';
11000 for i := 0 to List.Count - 1 do begin
11001 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
11002 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).FileName;
11003 if FileSaveAs1.Execute then begin
11004 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
11005 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
11006 CopyFile(PChar(TThreadItem(List[i]).FilePath),
11007 PChar(FileSaveAs1.Dialog.FileName), true);
11014 Screen.Cursor := crDefault;
11020 procedure TGikoForm.SelectItemSaveForHTMLExecute(Sender: TObject);
11027 List := TList.Create;
11029 Screen.Cursor := crHourGlass;
11030 SelectListItem(List);
11031 if ((GikoSys.Setting.ListOrientation = gloVertical) and
11032 (GikoSys.Setting.ListHeightState = glsMax)) or
11033 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
11034 (GikoSys.Setting.ListWidthState = glsMax)) then
11035 ShowMessage('
\83X
\83\8c\83b
\83h
\88ê
\97\97\82ð
\95\
\8e¦
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11036 else if(List.Count = 0) then
11037 ShowMessage('
\83X
\83\8c\83b
\83h
\82ð
\91I
\91ð
\82µ
\82Ä
\82
\82¾
\82³
\82¢')
11039 FileSaveAs1.Dialog.Title := '
\91I
\91ð
\83X
\83\8c\83b
\83h
\82ðHTML
\89»
\82µ
\82Ä
\95Û
\91¶';
11040 FileSaveAs1.Dialog.Filter := 'HTML
\83t
\83@
\83C
\83\8b(*.html)|*.html';
11041 for i := 0 to List.Count - 1 do begin
11042 if (TObject(List[i]) is TThreadItem) and (TThreadItem(List[i]).IsLogFile) then begin
11043 FileSaveAs1.Dialog.FileName := TThreadItem(List[i]).Title + '.html';
11044 if FileSaveAs1.Execute then begin
11045 //
\82È
\82º
\82©
\83L
\83\83\83\93\83Z
\83\8b\82Å
\82à
\82±
\82Á
\82¿
\82É
\93ü
\82Á
\82Ä
\82
\82é
11046 if ExtractFilePath(FileSaveAs1.Dialog.FileName) <> '' then begin
11047 html := TStringList.Create;
11048 title := TThreadItem(List[i]).Title;
11050 GikoSys.CreateHTML3(html, TThreadItem(List[i]), title);
11051 html.SaveToFile(FileSaveAs1.Dialog.FileName);
11052 SkinorCSSFilesCopy(ExtractFilePath(FileSaveAs1.Dialog.FileName));
11062 Screen.Cursor := crDefault;
11066 procedure TGikoForm.SkinorCSSFilesCopy(path: string);
11068 tmp, tmpD, tmpF: string;
11071 files: TStringList;
11074 if GikoSys.Setting.UseSkin then begin
11075 current := ExtractFilePath(GikoSys.GetSkinDir);
11076 tmp := GikoSys.Setting.CSSFileName;
11077 end else if GikoSys.Setting.UseCSS then begin
11078 current := ExtractFilePath(GikoSys.GetStyleSheetDir);
11079 tmp := ExtractFilePath(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName);
11081 dirs := TStringList.Create;
11084 if tmp <> current then begin
11085 GikoSys.GetDirectoryList(current, '*.*', dirs, true);
11086 for i := 0 to dirs.Count - 1 do begin
11087 files := TStringList.Create;
11089 gikoSys.GetFileList(dirs[i], '*.*', files, true);
11090 tmpD := CustomStringReplace(dirs[i], GikoSys.GetConfigDir, path);
11091 if (AnsiPos(dirs[i], tmp) <> 0) and not (DirectoryExists(tmpD)) then
11092 ForceDirectories(tmpD);
11094 if(dirs[i] = tmp) and (dirs[i] <> current) then begin
11095 for j := 0 to files.Count - 1 do begin
11096 tmpF := CustomStringReplace(files[j], GikoSys.GetConfigDir, path);
11097 if not FileExists(tmpF) then begin
11098 CopyFile(PChar(files[j]), PChar(tmpF),True);
11107 tmpD := CustomStringReplace(dirs[0], GikoSys.GetConfigDir, path);
11108 if not DirectoryExists(tmpD) then
11109 ForceDirectories(tmpD);
11110 tmpF := CustomStringReplace(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName
11111 , GikoSys.GetConfigDir, path);
11112 if not FileExists(tmpF) then begin
11113 CopyFile(PChar(GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName)
11114 , PChar(tmpF), True);
11123 procedure TGikoForm.KidokuActionExecute(Sender: TObject);
11128 List := TList.Create;
11130 SelectListItem(List);
11131 for i := 0 to List.Count - 1 do begin
11132 if TObject(List[i]) is TThreadItem then begin
11133 TThreadItem(List[i]).UnRead := false;
11134 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead - 1;
11137 if TreeView.Visible then
11144 procedure TGikoForm.MidokuActionExecute(Sender: TObject);
11149 List := TList.Create;
11151 SelectListItem(List);
11152 for i := 0 to List.Count - 1 do begin
11153 if TObject(List[i]) is TThreadItem then begin
11154 TThreadItem(List[i]).UnRead := true;
11155 TThreadItem(List[i]).ParentBoard.UnRead := TThreadItem(List[i]).ParentBoard.UnRead + 1;
11158 if TreeView.Visible then
11165 procedure TGikoForm.BrowserPanelCanResize(Sender: TObject; var NewWidth,
11166 NewHeight: Integer; var Resize: Boolean);
11170 for i := BROWSER_COUNT - 1 downto 0 do begin
11171 SetWindowPos(TWebBrowser(FBrowsers[i]).Handle, HWND_NOTOPMOST, 0, 0, NewWidth, NewHeight, SWP_NOMOVE + SWP_NOZORDER);
11175 procedure TGikoForm.LogFolderOpenActionExecute(Sender: TObject);
11179 if ((GikoSys.Setting.ListOrientation = gloVertical) and
11180 (GikoSys.Setting.ListHeightState = glsMax)) or
11181 ((GikoSys.Setting.ListOrientation = gloHorizontal) and
11182 (GikoSys.Setting.ListWidthState = glsMax)) then begin
11183 if(GetActiveContent <> nil) then begin
11184 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(GetActiveContent.FilePath) + '"');
11186 end else if GetActiveList is TCategory then begin
11187 List := TList.Create;
11189 SelectListItem(List);
11190 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(List[0]).FilePath) + '"');
11194 end else if GetActiveList is TBoard then begin
11195 GikoSys.CreateProcess('explorer.exe', '/e,"' + ExtractFilePath(TBoard(GetActiveList).FilePath) + '"');
11200 procedure TGikoForm.LogFolderOpenActionUpdate(Sender: TObject);
11202 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11203 LogFolderOpenAction.Enabled := True
11204 else if GetActiveList is TBoard then
11205 LogFolderOpenAction.Enabled := True
11207 LogFolderOpenAction.Enabled := False;
11210 function TGikoForm.GetTabURLs(AStringList: TStringList) : Boolean;
11212 rec : TBrowserRecord;
11213 i, bound : Integer;
11215 bound := BrowserTab.Tabs.Count -1;
11216 if bound = -1 then begin
11218 Exit; //for
\82É
\94ò
\82Î
\82È
\82¢
\82Å
\91\80\8dì
\82ð
\94²
\82¯
\82é
11221 for i := 0 to bound do begin
11222 rec := TBrowserRecord( BrowserTab.Tabs.Objects[ i ] );
11223 if( rec <> nil) and (rec.Thread <> nil) then
11224 AStringList.Add( rec.Thread.URL );
11229 procedure TGikoForm.TabsSaveActionExecute(Sender: TObject);
11231 if not SaveTabURLs then begin
11232 ShowMessage('
\95Û
\91¶
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ');
11236 function TGikoForm.SaveTabURLs : Boolean;
11238 SaveStringList: TStringList;
11240 SaveStringList := TStringList.Create;
11242 Result := GetTabURLs(SaveStringList);
11243 SaveStringList.SaveToFile(ExtractFilePath(Application.ExeName) + 'tab.sav');
11245 SaveStringList.Free
11249 procedure TGikoForm.TabsOpenActionExecute(Sender: TObject);
11251 if not LoadTabURLs then begin
11252 ShowMessage('
\95\
\8e¦
\82·
\82é
\83^
\83u
\82ª
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
11256 procedure TGikoForm.FileTabSaveClick(Sender: TObject);
11258 SaveStringList: TStringList;
11260 SaveTabList := TStringList.Create;
11261 SaveTabList := GetTabURLs;
11262 if TabSaveDialog.Execute then begin
11263 SaveTabList.SaveToFile(TabSaveDialog.FileName);
11268 function TGikoForm.LoadTabURLs : Boolean;
11270 i, bound : Integer;
11271 item : TThreadItem;
11272 URLs : TStringList;
11273 GikoTab : TGikoTabAppend;
11276 fileName := ExtractFilePath(Application.ExeName) + 'tab.sav';
11277 URLs := TStringList.Create();
11278 GikoTab := GikoSys.Setting.BrowserTabAppend;
11281 if FileExists(fileName) then
11282 URLs.LoadFromFile(fileName);
11285 ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11287 bound := URLs.Count - 1;
11288 if bound = -1 then begin
11294 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11295 for i := 0 to URLs.Count - 1 do begin
11296 item := BBSsFindThreadFromURL( URLs[ i ] );
11297 if item <> nil then
11298 InsertBrowserTab( item, false );
11301 GikoSys.Setting.BrowserTabAppend := GikoTab;
11307 procedure TGikoForm.TabsSaveToFileActionExecute(Sender: TObject);
11309 SaveTabList: TStringList;
11312 SaveTabList := TStringList.Create;
11314 Result := GetTabURLs(SaveTabList);
11315 // if TabSaveDialog.Execute then begin
11316 // SaveTabList.SaveToFile(TabSaveDialog.FileName);
11323 procedure TGikoForm.TabsOpenFromFileActionExecute(Sender: TObject);
11326 item : TThreadItem;
11327 URLs : TStringList;
11328 GikoTab: TGikoTabAppend;
11330 URLs := TStringList.Create();
11331 GikoTab := GikoSys.Setting.BrowserTabAppend;
11334 // if TabOpenDialog.Execute then begin
11335 // URLs.LoadFromFile(TabOpenDialog.FileName);
11338 on EFOpenError do ShowMessage('
\83^
\83u
\83t
\83@
\83C
\83\8b\82ª
\8aJ
\82¯
\82Ü
\82¹
\82ñ');
11341 GikoSys.Setting.BrowserTabAppend := gtpLast;//TGikoTabAppend(1);
11342 for i := 0 to URLs.Count - 1 do begin
11343 item := BBSsFindThreadFromURL( URLs[ i ] );
11344 if item <> nil then
11345 InsertBrowserTab( item, false );
11348 GikoSys.Setting.BrowserTabAppend := GikoTab;
11353 procedure TGikoForm.OnlyAHundredResActionExecute(Sender: TObject);
11355 ThreadItem : TThreadItem;
11356 FilterList : TStringList;
11359 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11360 and (FActiveContent.FBrowser.Busy) then Exit;
11362 FResRangeMenuSelect := 100;
11363 OnlyAHundredResAction.Checked := True;
11365 if GikoSys.ResRange <> 100 then begin
11366 GikoSys.ResRange := 100;
11368 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11369 FilterList := TStringList.Create;
11371 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11372 GikoSys.FSelectResFilter.Reverse := False;
11374 FilterList.Destroy;
11377 FSelectResWord := '';
11379 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11380 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11381 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11383 ThreadItem := GetActiveContent;
11384 if ThreadItem <> nil then
11385 InsertBrowserTab( ThreadItem, True );
11389 procedure TGikoForm.OnlyKokoResActionExecute(Sender: TObject);
11391 ThreadItem : TThreadItem;
11392 FilterList : TStringList;
11395 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11396 and (FActiveContent.FBrowser.Busy) then Exit;
11398 FResRangeMenuSelect := Ord( grrKoko );
11399 OnlyKokoResAction.Checked := True;
11401 if GikoSys.ResRange <> Ord( grrKoko ) then begin
11402 GikoSys.ResRange := Ord( grrKoko );
11404 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11405 FilterList := TStringList.Create;
11407 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11408 GikoSys.FSelectResFilter.Reverse := False;
11410 FilterList.Destroy;
11413 FSelectResWord := '';
11415 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11416 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11417 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11419 ThreadItem := GetActiveContent;
11420 if ThreadItem <> nil then
11421 InsertBrowserTab( ThreadItem, True );
11425 procedure TGikoForm.OnlyNewResActionExecute(Sender: TObject);
11427 ThreadItem : TThreadItem;
11428 FilterList : TStringList;
11431 if (FActiveContent <> nil) and (FActiveContent.FBrowser <> nil)
11432 and (FActiveContent.FBrowser.Busy) then Exit;
11434 FResRangeMenuSelect := Ord( grrNew );
11435 OnlyNewResAction.Checked := True;
11437 if GikoSys.ResRange <> Ord( grrNew ) then begin
11438 GikoSys.ResRange := Ord( grrNew );
11440 //
\83t
\83B
\83\8b\83^
\95¶
\8e\9a\97ñ
\82ð
\8bó
\82É
\82·
\82é
11441 FilterList := TStringList.Create;
11443 GikoSys.FSelectResFilter.LoadFromStringList( FilterList );
11444 GikoSys.FSelectResFilter.Reverse := False;
11446 FilterList.Destroy;
11449 FSelectResWord := '';
11451 //
\83X
\83\8c\83b
\83h
\82ð
\8dÄ
\95`
\89æ
11452 for i := BrowserTab.Tabs.Count - 1 downto 0 do begin
11453 TBrowserRecord(BrowserTab.Tabs.Objects[i]).Repaint := true;
11455 ThreadItem := GetActiveContent;
11456 if ThreadItem <> nil then
11457 InsertBrowserTab( ThreadItem, True );
11461 procedure TGikoForm.BrowsBoradHeadActionExecute(Sender: TObject);
11463 RefURL, URL : string;
11467 if GetActiveList is TCategory then begin
11468 List := TList.Create;
11470 SelectListItem(List);
11471 RefURL := TBoard(List[0]).URL;
11475 end else if GetActiveList is TBoard then begin
11476 RefURL := TBoard(GetActiveList).URL
11478 if RefURL <> '' then begin
11479 if RefURL[Length(RefURL)] <> '/' then
11480 URL := RefURL + '/' + 'head.txt'
11482 URL := RefURL + 'head.txt';
11486 ShowMessage('
\94Â
\82ð
\93Á
\92è
\82Å
\82«
\82Ü
\82¹
\82ñ
\82Å
\82µ
\82½
\81B');
11491 procedure TGikoForm.BrowsBoradHeadActionUpdate(Sender: TObject);
11493 if (GetActiveList is TCategory) and (ListView.SelCount > 0) then
11494 BrowsBoradHeadAction.Enabled := True
11495 else if GetActiveList is TBoard then
11496 BrowsBoradHeadAction.Enabled := True
11498 BrowsBoradHeadAction.Enabled := False;
11501 //NG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\95Ò
\8fW
\82·
\82é
\82½
\82ß
\82É
\8aJ
\82
11502 procedure TGikoForm.EditNGActionExecute(Sender: TObject);
11504 GikoSys.FAbon.EditNGwords;
11507 procedure TGikoForm.ThreadRangeActionUpdate(Sender: TObject);
11509 ThreadRangeAction.Enabled := (GetActiveList is TBoard);
11512 procedure TGikoForm.ThreadRangeActionExecute(Sender: TObject);
11514 case GikoSys.Setting.ThreadRange of
11515 gtrAll: AllItemAction.Execute;
11516 gtrLog: LogItemAction.Execute;
11517 gtrNew: NewItemAction.Execute;
11521 procedure TGikoForm.TabAutoSaveActionExecute(Sender: TObject);
11526 procedure TGikoForm.TabAutoLoadActionExecute(Sender: TObject);
11531 /// ListView
\82Ì
\83J
\83\89\83\80\95\9d\82¨
\82æ
\82Ñ
\88Ê
\92u
\82Ì
\95Û
\91¶
11532 procedure TGikoForm.ActiveListColumnSave;
11534 ActivListObj : TObject;
11535 i, id, idx : Integer;
11536 BBSOrder : TGikoBBSColumnList;
11537 CategoryOrder : TGikoCategoryColumnList;
11538 BoardOrder : TGikoBoardColumnList;
11541 ActivListObj := ActiveList;
11542 if ActivListObj is TBBS then begin
11543 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
11544 BBSOrder := TGikoBBSColumnList.Create;
11546 for i := 0 to ListView.Columns.Count - 1 do begin
11547 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11548 idx := ListView.Column[ i ].Tag;
11549 id := Ord( GikoSys.Setting.BBSColumnOrder[ idx ] );
11550 BBSOrder.Add( TGikoBBSColumnID( id ) );
11551 //
\95\9d\82Ì
\95Û
\91¶
11552 GikoSys.Setting.BBSColumnWidth[ id ] := ListView.Column[ i ].Width;
11554 for i := 0 to ListView.Columns.Count - 1 do
11555 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11556 GikoSys.Setting.BBSColumnOrder[ i ] := BBSOrder[ i ];
11560 end else if ActivListObj is TCategory then begin
11561 //=====
\94Â
\83\8a\83X
\83g =====
11562 CategoryOrder := TGikoCategoryColumnList.Create;
11564 for i := 0 to ListView.Columns.Count - 1 do begin
11565 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11566 idx := ListView.Column[ i ].Tag;
11567 id := Ord( GikoSys.Setting.CategoryColumnOrder[ idx ] );
11568 CategoryOrder.Add( TGikoCategoryColumnID( id ) );
11569 //
\95\9d\82Ì
\95Û
\91¶
11570 GikoSys.Setting.CategoryColumnWidth[ id ] := ListView.Column[ i ].Width;
11572 for i := 0 to ListView.Columns.Count - 1 do
11573 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11574 GikoSys.Setting.CategoryColumnOrder[ i ] := CategoryOrder[ i ];
11576 CategoryOrder.Free;
11578 end else if ActivListObj is TBoard then begin
11579 //=====
\83X
\83\8c\83\8a\83X
\83g =====
11580 BoardOrder := TGikoBoardColumnList.Create;
11582 for i := 0 to ListView.Columns.Count - 1 do begin
11583 //
\8f\87\8f\98\82Ì
\8eæ
\93¾
11584 idx := ListView.Column[ i ].Tag;
11585 id := Ord( GikoSys.Setting.BoardColumnOrder[ idx ] );
11586 BoardOrder.Add( TGikoBoardColumnID( id ) );
11587 //
\95\9d\82Ì
\95Û
\91¶
11588 GikoSys.Setting.BoardColumnWidth[ id ] := ListView.Column[ i ].Width;
11590 for i := 0 to ListView.Columns.Count - 1 do
11591 //
\8f\87\8f\98\82Ì
\95Û
\91¶
11592 GikoSys.Setting.BoardColumnOrder[ i ] := BoardOrder[ i ];
11600 procedure TGikoForm.ListViewColumnRightClick(Sender: TObject;
11601 Column: TListColumn; Point: TPoint);
11607 //
\83|
\83b
\83v
\83A
\83b
\83v
\83\81\83j
\83\85\81[
\82ð
\83N
\83\8a\83A
11608 for i := ListColumnPopupMenu.Items.Count - 1 downto 0 do
11609 ListColumnPopupMenu.Items.Items[ i ].Free;
11611 //
\83\81\83j
\83\85\81[
\82Ì
\8dì
\90¬ (
\83\81\83C
\83\93\83J
\83\89\83\80\82Í
\95K
\90{
\82È
\82Ì
\82Å
\83\81\83j
\83\85\81[
\82É
\8aÜ
\82ß
\82È
\82¢)
11612 if TObject( FActiveList ) is TBBS then begin
11614 //=====
\83J
\83e
\83S
\83\8a\83\8a\83X
\83g =====
11615 for i := 1 to Length( GikoBBSColumnCaption ) - 1 do begin
11616 item := TMenuItem.Create( ListColumnPopupMenu );
11617 item.Caption := GikoBBSColumnCaption[ i ];
11619 item.OnClick := ListColumnPopupMenuOnClick;
11620 for j := GikoSys.Setting.BBSColumnOrder.Count - 1 downto 0 do begin
11621 if GikoSys.Setting.BBSColumnOrder[ j ] = TGikoBBSColumnID( i ) then begin
11622 item.Checked := True;
11626 ListColumnPopupMenu.Items.Add( item );
11629 end else if TObject( FActiveList ) is TCategory then begin
11631 //=====
\94Â
\83\8a\83X
\83g =====
11632 for i := 1 to Length( GikoCategoryColumnCaption ) - 1 do begin
11633 item := TMenuItem.Create( ListColumnPopupMenu );
11634 item.Caption := GikoCategoryColumnCaption[ i ];
11636 item.OnClick := ListColumnPopupMenuOnClick;
11637 for j := GikoSys.Setting.CategoryColumnOrder.Count - 1 downto 0 do begin
11638 if GikoSys.Setting.CategoryColumnOrder[ j ] = TGikoCategoryColumnID( i ) then begin
11639 item.Checked := True;
11643 ListColumnPopupMenu.Items.Add( item );
11646 end else if TObject( FActiveList ) is TBoard then begin
11648 //=====
\83X
\83\8c\83\8a\83X
\83g =====
11649 for i := 1 to Length( GikoBoardColumnCaption ) - 1 do begin
11650 item := TMenuItem.Create( ListColumnPopupMenu );
11651 item.Caption := GikoBoardColumnCaption[ i ];
11653 item.OnClick := ListColumnPopupMenuOnClick;
11654 for j := GikoSys.Setting.BoardColumnOrder.Count - 1 downto 0 do begin
11655 if GikoSys.Setting.BoardColumnOrder[ j ] = TGikoBoardColumnID( i ) then begin
11656 item.Checked := True;
11660 ListColumnPopupMenu.Items.Add( item );
11665 //
\83\81\83j
\83\85\81[
\82Ì
\95\
\8e¦
11666 Point := ListView.ClientToScreen( Point );
11667 if ListColumnPopupMenu.Items.Count > 0 then
11668 ListColumnPopupMenu.Popup( Point.X, Point.Y );
11672 /// ListColumnPopupMenu
\83A
\83C
\83e
\83\80\82Ì
\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
11673 procedure TGikoForm.ListColumnPopupMenuOnClick( Sender : TObject );
11680 if not (Sender is TMenuItem) then
11683 ActiveListColumnSave;
11684 item := TMenuItem( Sender );
11686 if TObject( FActiveList ) is TBBS then
11687 orderList := GikoSys.Setting.BBSColumnOrder
11688 else if TObject( FActiveList ) is TCategory then
11689 orderList := GikoSys.Setting.CategoryColumnOrder
11690 else if TObject( FActiveList ) is TBoard then
11691 orderList := GikoSys.Setting.BoardColumnOrder
11695 if item.Checked then begin
11696 //
\83J
\83\89\83\80\82Ì
\8dí
\8f\9c
11697 for i := orderList.Count - 1 downto 0 do begin
11698 if Integer( orderList[ i ] ) = item.Tag then begin
11699 orderList.Delete( i );
11704 //
\83J
\83\89\83\80\82Ì
\92Ç
\89Á
11705 orderList.Add( Pointer( item.Tag ) );
11708 SetActiveList( FActiveList );
11711 //
\8ew
\92è
\82µ
\82½
\94Ô
\8d\86\82Ì
\83\8c\83X
\82Éjump
\82·
\82éAction
11712 procedure TGikoForm.JumpToNumOfResActionExecute(Sender: TObject);
11718 if( InputQuery('
\8ew
\92è
\82µ
\82½
\94Ô
\8d\86\82Ì
\83\8c\83X
\82É
\94ò
\82Ô', '
\94Ô
\8d\86\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢', str) ) then begin
11719 str := ZenToHan(str);
11720 res := StrToIntDef(str, -1);
11721 if (res > 0) and (res <= GetActiveContent.Count) then begin
11722 BrowserMovement(IntToStr(res), FActiveContent);
11723 SetFocusForBrowserAction.Execute;
11724 end else if res > GetActiveContent.Count then begin
11725 BrowserMovement(IntToStr(GetActiveContent.Count), FActiveContent);
11726 SetFocusForBrowserAction.Execute;
11731 procedure TGikoForm.JumpToNumOfResActionUpdate(Sender: TObject);
11733 JumpToNumOfResAction.Enabled := (GetActiveContent <> nil) and (GetActiveContent.IsLogFile);
11736 procedure TGikoForm.FavoriteTreeViewCollapseActionExecute(Sender: TObject);
11741 node := FavoriteTreeView.Items.GetFirstNode;
11742 while node <> nil do begin
11743 if node.HasChildren then
11744 node.Expanded := False;
11745 node := node.GetNext;
11751 OleInitialize(nil);