From: yoffy Date: Sun, 4 Apr 2004 19:31:46 +0000 (+0000) Subject: ・ブラウザのキー入力を受け取る BrowserKeyDown を追加。 X-Git-Tag: v1_64_1_820~1322 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d4ca3a69fcd7d974fb504b3441629ba5aa81557c;p=gikonavigoeson%2Fgikonavi.git ・ブラウザのキー入力を受け取る BrowserKeyDown を追加。 ・1 ペイン/2 ペインモードを実装。 ・各ペインのキー操作を強化。 --- diff --git a/Giko.dfm b/Giko.dfm index 4e3471a..538e5da 100644 --- a/Giko.dfm +++ b/Giko.dfm @@ -1,6 +1,6 @@ object GikoForm: TGikoForm - Left = 357 - Top = 119 + Left = 148 + Top = 133 HorzScrollBar.Visible = False VertScrollBar.Visible = False AutoScroll = False @@ -104,13 +104,14 @@ object GikoForm: TGikoForm RightClickSelect = True ShowRoot = False TabOrder = 0 - OnChange = TreeViewChange OnChanging = TreeViewChanging + OnClick = TreeViewClick OnCollapsed = TreeViewCollapsed OnCustomDraw = TreeViewCustomDraw OnCustomDrawItem = TreeViewCustomDrawItem OnDblClick = TreeViewDblClick OnExpanded = TreeViewExpanded + OnKeyDown = TreeViewKeyDown end object Panel3: TPanel Left = 0 @@ -314,6 +315,7 @@ object GikoForm: TGikoForm TabOrder = 0 ViewStyle = vsReport OnAdvancedCustomDrawItem = ListViewAdvancedCustomDrawItem + OnClick = ListViewClick OnColumnClick = ListViewColumnClick OnCustomDraw = ListViewCustomDraw OnData = ListViewData @@ -322,7 +324,6 @@ object GikoForm: TGikoForm OnDataStateChange = ListViewDataStateChange OnDblClick = ListViewDblClick OnKeyDown = ListViewKeyDown - OnSelectItem = ListViewSelectItem OnColumnInfo = ListViewColumnInfo end object ListCoolBar: TGikoCoolBar diff --git a/Giko.pas b/Giko.pas index fed948e..da87df9 100644 --- a/Giko.pas +++ b/Giko.pas @@ -531,7 +531,6 @@ type procedure FormDestroy(Sender: TObject); procedure CabinetPanelHide(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure TreeViewChange(Sender: TObject; Node: TTreeNode); procedure ListViewData(Sender: TObject; Item: TListItem); procedure ListViewDataFind(Sender: TObject; Find: TItemFind; const FindString: String; const FindPosition: TPoint; @@ -627,8 +626,6 @@ type procedure ShowThreadActionUpdate(Sender: TObject); procedure ShowBoardActionUpdate(Sender: TObject); procedure SelectThreadReloadActionUpdate(Sender: TObject); - procedure ListViewSelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); procedure SelectTimerTimer(Sender: TObject); procedure ItemReloadActionUpdate(Sender: TObject); procedure ListViewDblClick(Sender: TObject); @@ -840,6 +837,10 @@ type procedure BrowserNameToolBarResize(Sender: TObject); procedure BrowserToolBarResize(Sender: TObject); procedure BrowserTabResize(Sender: TObject); + procedure ListViewClick(Sender: TObject); + procedure TreeViewClick(Sender: TObject); + procedure TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); private { Private éŒ¾ } //RoundList : TRoundList; @@ -921,7 +922,7 @@ type function Hook(var Message: TMessage): Boolean; procedure AddRoundNameMenu(MenuItem: TMenuItem); procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string); overload; - procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload; + procedure SetSelectItemRound(RoundFlag: Boolean; RoundName: string; ParentName: string); overload; procedure SetSelectRoundName(Sender: TObject); function GetCoolBand(CoolBar: TCoolBar; Control: TWinControl): TCoolBand; @@ -940,7 +941,7 @@ type // procedure SetStdToolBar; // function GetAction(ActionName: string): TContainedAction; procedure SetLinkBar; - procedure ClearLinkBar; + procedure ClearLinkBar; function GetWidthAllToolButton(ToolBar: TToolBar): Integer; procedure MenuBarChevronMenu; procedure LinkBarChevronMenu; @@ -956,12 +957,12 @@ type procedure FavoriteMoveTo( SenderNode, SourceNode: TTreeNode ); procedure FavoriteAddTo( SenderNode: TTreeNode; Source: TObject ); procedure FavoriteDragDrop( SenderNode: TTreeNode; Source: TObject ); - // + // procedure BrowserTabClick(Sender: TObject); procedure SetListViewBackGroundColor(value: TColor); procedure BBSMenuItemOnClick( Sender : TObject ); - // - procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean); + // + procedure KonoresCopy(Number: Integer; ReplaceTag : Boolean); // CoolBar ‚̐ݒè‚ð•Ï”‚É•Û‘¶ procedure SaveCoolBarSettings; // CoolBar ‚̐ݒè‚ð•Ï”‚©‚ç•œŒ³ @@ -970,6 +971,15 @@ type procedure OnMinimize; // CoolBar ‚ªƒTƒCƒY•ÏX‚³‚ꂽ procedure CoolBarResized(Sender: TObject; CoolBar: TCoolBar); + // TreeView ‚ªƒNƒŠƒbƒN‚³‚ꂽ + procedure TreeClick( Node : TTreeNode ); + // TreeView ‚ªƒ_ƒuƒ‹ƒNƒŠƒbƒN‚³‚ꂽ + procedure TreeDoubleClick( Node : TTreeNode ); + // ƒMƒRƒiƒr‚̃ƒbƒZ[ƒWƒ‹[ƒv‚ð‰¡Žæ‚肵‚Ü‚· + procedure HandleAppMessage(var Msg: TMsg; var Handled: Boolean); + // ƒuƒ‰ƒEƒU‚̃L[ƒ_ƒEƒ“ƒCƒxƒ“ƒg + // ƒCƒxƒ“ƒg‚ðŽæ‚舵‚Á‚½ê‡‚Í True ‚ð•Ô‚· + function BrowserKeydown(Sender: TObject; Key: Word; State:TShiftState) : Boolean; protected procedure CreateParams(var Params: TCreateParams); override; @@ -1146,6 +1156,7 @@ begin Application.OnDeactivate := AppFormDeactivate; Self.OnDeactivate := AppFormDeactivate; Application.HookMainWindow(Hook); + Application.OnMessage := HandleAppMessage; FTreeType := gttNone; @@ -1176,8 +1187,8 @@ begin RoundList.LoadRoundThreadFile; - if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then - GikoSys.ListBoardFile; + if RoundList.OldFileRead or ( RoundList.Count[grtItem] > 0 ) then + GikoSys.ListBoardFile; // ƒƒjƒ…[‚ɒljÁ for i := Length( BBSs ) - 1 downto 0 do begin @@ -1257,9 +1268,9 @@ begin ListView.Font.Size := GikoSys.Setting.ListFontSize; ListView.Font.Color := GikoSys.Setting.ListFontColor; //ListView.Color := GikoSys.Setting.ListBackColor; - ListViewBackGroundColor := GikoSys.Setting.ListBackColor; - FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum; - FOddColor := GikoSys.Setting.OddColor; + ListViewBackGroundColor := GikoSys.Setting.ListBackColor; + FUseOddResOddColor := GikoSys.Setting.UseOddColorOddResNum; + FOddColor := GikoSys.Setting.OddColor; finally TreeView.Items.EndUpdate; @@ -1410,11 +1421,11 @@ begin ListToolBar.Wrapable := GikoSys.Setting.ListToolBarWrapable; BrowserToolBar.Wrapable := GikoSys.Setting.BrowserToolBarWrapable; - KeepDefaultToolButton(StdToolBar, TmpToolBar); - KeepDefaultToolButton(ListToolBar, TmpToolBar); - KeepDefaultToolButton(BrowserToolBar, TmpToolBar); + KeepDefaultToolButton(StdToolBar, TmpToolBar); + KeepDefaultToolButton(ListToolBar, TmpToolBar); + KeepDefaultToolButton(BrowserToolBar, TmpToolBar); - MakeDefaultINIFile(); + MakeDefaultINIFile(); //ƒc[ƒ‹ƒ{ƒ^ƒ““ǂݍž‚Ý ReadToolBarSetting(ActionList, StdToolBar); ReadToolBarSetting(ActionList, ListToolBar); @@ -1503,11 +1514,11 @@ begin StatusBar.Panels[2].Width := Max(StatusBar.Canvas.TextWidth(s), 100); StatusBarResize(Sender); - dummy1.Caption := ItemReservPMenu.Caption; - dummy1.Hint := ItemReservPMenu.Hint; + dummy1.Caption := ItemReservPMenu.Caption; + dummy1.Hint := ItemReservPMenu.Hint; - //Samba24‚̃tƒ@ƒCƒ‹ƒ`ƒFƒbƒN - GikoSys.SambaFileExists(); + //Samba24‚̃tƒ@ƒCƒ‹ƒ`ƒFƒbƒN + GikoSys.SambaFileExists(); end; // CoolBar ‚̐ݒè‚ð•Ï”‚É•Û‘¶ @@ -1658,16 +1669,16 @@ var // CoolSet: TCoolSet; wp: TWindowPlacement; begin - if ( GikoSys.Setting.ShowDialogForEnd ) and - (MessageDlg('ƒMƒRƒiƒr‚ðI—¹‚µ‚Ä‚æ‚낵‚¢‚Å‚·‚©H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin - CanClose := false; - Exit; - end else begin - CanClose := True; - end; + if ( GikoSys.Setting.ShowDialogForEnd ) and + (MessageDlg('ƒMƒRƒiƒr‚ðI—¹‚µ‚Ä‚æ‚낵‚¢‚Å‚·‚©H', mtConfirmation,[mbOk, mbCancel], 0) = mrCancel ) then begin + CanClose := false; + Exit; + end else begin + CanClose := True; + end; // Application.OnDeactivate := nil; // Self.OnDeactivate := nil; - try + try //column• if GetActiveList is TBBS then begin for i := 0 to ListView.Columns.Count - 1 do @@ -1679,9 +1690,9 @@ begin for i := 0 to ListView.Columns.Count - 1 do GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width; end; - except - end; - try + except + end; + try //Å‘剻EƒEƒBƒ“ƒhƒEˆÊ’u•Û‘¶ wp.length := sizeof(wp); GetWindowPlacement(Handle, @wp); @@ -1701,7 +1712,7 @@ begin else GikoSys.Setting.ListOrientation := gloHorizontal; GikoSys.Setting.MessegeBarHeight := MessagePanel.Height; - except + except end; // ƒŠƒAƒ‹ƒ^ƒCƒ€‚É•Û‘¶‚³‚ê‚é‚̂ŁA‚Ü‚½AƒEƒBƒ“ƒhƒEƒTƒCƒY‚ª CoolBar ‚æ‚è @@ -1709,18 +1720,18 @@ begin { // CoolBar •Û‘¶ SaveCoolBarSettings; - } - try + } + try GikoSys.Setting.WriteWindowSettingFile; GikoSys.Setting.WriteNameMailSettingFile; - except - end; + except + end; //‚¨‹C‚É“ü‚è•Û‘¶ try - //FavoriteDM‚ÍŽ©“®¶¬ƒtƒH[ƒ€‚Ȃ̂ŁA‰ð•ú‚ÍŽ©“®“I‚É‚³‚ê‚é + //FavoriteDM‚ÍŽ©“®¶¬ƒtƒH[ƒ€‚Ȃ̂ŁA‰ð•ú‚ÍŽ©“®“I‚É‚³‚ê‚é FavoriteDM.WriteFavorite; - FavoriteDM.Clear; + FavoriteDM.Clear; except end; @@ -1735,18 +1746,18 @@ begin end; try - TreeView.Items.BeginUpdate; - for i := TreeView.Items.Count - 1 downto 0 do begin - TreeView.Items[i].Free; - end; - TreeView.Items.Clear; - TreeView.Items.EndUpdate; + TreeView.Items.BeginUpdate; + for i := TreeView.Items.Count - 1 downto 0 do begin + TreeView.Items[i].Free; + end; + TreeView.Items.Clear; + TreeView.Items.EndUpdate; except end; //ƒAƒhƒŒƒX—š—ð•Û‘¶ try - //AddressHistoryDM‚ÍŽ©“®¶¬ƒtƒH[ƒ€‚Ȃ̂ŁA‰ð•ú‚ÍŽ©“®“I‚É‚³‚ê‚éB + //AddressHistoryDM‚ÍŽ©“®¶¬ƒtƒH[ƒ€‚Ȃ̂ŁA‰ð•ú‚ÍŽ©“®“I‚É‚³‚ê‚éB AddressHistoryDM.WriteHistory(AddressComboBox.Items, GikoSys.Setting.AddressHistoryCount); except end; @@ -1756,38 +1767,38 @@ begin SaveHistory; except end; - try - try - ClearHistory; - except - end; - finally - FHistoryList.Free; - end; + try + try + ClearHistory; + except + end; + finally + FHistoryList.Free; + end; //„‰ñƒŠƒXƒg•Û‘¶&”jŠü try RoundList.SaveRoundFile; except end; - try + try try - RoundList.Clear; + RoundList.Clear; except end; - finally - RoundList.Free; - end; + finally + RoundList.Free; + end; - try + try try FControlThread.Terminate; - FControlThread.WaitFor; + FControlThread.WaitFor; except end; - finally - FControlThread.Free; - end; + finally + FControlThread.Free; + end; // TBBS ‚Í•ÛŽ‚µ‚Ä‚¢‚é TCategory, TBoard, TThreadItem ‚·‚ׂĂðŠJ•ú‚·‚é // TBoard, TThreadItem ‚̃fƒXƒgƒ‰ƒNƒ^‚̓vƒ‰ƒOƒCƒ“‚É”jŠü‚ð“`‚¦‚é‚Ì‚Å @@ -1811,8 +1822,8 @@ begin end; try - if FEvent <> nil then - FEvent.Free; + if FEvent <> nil then + FEvent.Free; //Hint”jŠü if FHint <> nil then begin @@ -1827,9 +1838,9 @@ begin end; except end; - //Application.HookMainWindow(Hook); - Application.UnhookMainWindow(Hook); - Application.Terminate; + //Application.HookMainWindow(Hook); + Application.UnhookMainWindow(Hook); + Application.Terminate; end; procedure TGikoForm.FormDestroy(Sender: TObject); @@ -2146,56 +2157,6 @@ begin end; end; -procedure TGikoForm.TreeViewChange(Sender: TObject; Node: TTreeNode); -var - i: Integer; -begin - if FTreeType = gttHistory then begin - if Node <> nil then - if TObject( Node.Data ) is TFavoriteThreadItem then - if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then - FavoriteClick( Node ); - Exit; - end; - - ListView.Selected := nil; - ListView.Items.Count := 0; - ListView.Items.Clear; -// ListView.Columns.Clear; - - Caption := CAPTION_NAME; - //Application.Title := CAPTION_NAME; - - - if GetActiveList is TBBS then begin - for i := 0 to ListView.Columns.Count - 1 do - GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width; - end else if GetActiveList is TCategory then begin - for i := 0 to ListView.Columns.Count - 1 do - GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width; - end else if GetActiveList is TBoard then begin - for i := 0 to ListView.Columns.Count - 1 do - GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width; - end; - - if TObject(Node.Data) is TBBS then begin - SetActiveList(Node.data); - end else if TObject(Node.Data) is TCategory then begin - SetActiveList(Node.data); - end else if TObject(Node.Data) is TBoard then begin - if not TBoard(Node.Data).IsThreadDatRead then begin - Screen.Cursor := crHourGlass; - try - if not TBoard(Node.Data).IsThreadDatRead then - GikoSys.ReadSubjectFile(Node.Data); - finally - Screen.Cursor := crDefault; - end; - end; - SetActiveList(Node.data); - end; -end; - procedure TGikoForm.ListViewData(Sender: TObject; Item: TListItem); var // FileName: string; @@ -2206,9 +2167,9 @@ var Board: TBoard; ThreadItem: TThreadItem; RepStr: string; - ActivListObj : TObject; + ActivListObj : TObject; begin - ActivListObj := ActiveList; + ActivListObj := ActiveList; if ActivListObj is TBBS then begin BBS := TBBS(ActivListObj); @@ -2628,12 +2589,22 @@ end; procedure TGikoForm.ListViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin - if Key = VK_BACK then begin + if GetActiveList is TBoard then begin + if Key = VK_BACK then begin // UpFolderButtonClick(Sender); - end else if Key = VK_SPACE then begin -// ListClick; - end else if Key = VK_RETURN then begin - ListDoubleClick; + end else if Key = VK_SPACE then begin + ListDoubleClick; + end else if Key = VK_RETURN then begin + ListClick; + end; + end else begin // TBBS, TCategory + if Key = VK_BACK then begin +// UpFolderButtonClick(Sender); + end else if Key = VK_SPACE then begin + ListClick; + end else if Key = VK_RETURN then begin + ListDoubleClick; + end; end; end; @@ -2937,8 +2908,6 @@ end; procedure TGikoForm.TreeViewDblClick(Sender: TObject); var - Board: TBoard; - ThreadItem: TThreadItem; APoint: TPoint; HitTest: THitTests; begin @@ -2946,17 +2915,8 @@ begin APoint := TreeView.ScreenToClient(APoint); HitTest := TreeView.GetHitTestInfoAt(APoint.x, APoint.y); if not (htOnLabel in HitTest) then Exit; - if TreeView.Selected = nil then Exit; - if FTreeType = gtt2ch then begin - if not (TObject(TreeView.Selected.Data) is TBoard) then Exit; - Board := TBoard(TreeView.Selected.Data); - DownloadList(Board); - end else if FTreeType = gttHistory then begin - if not (TObject(TreeView.Selected.Data) is TFavoriteThreadItem) then Exit; - ThreadItem := TFavoriteThreadItem(TreeView.Selected.Data).Item; - DownloadContent(ThreadItem); - end; + TreeDoubleClick( TreeView.Selected ); end; procedure TGikoForm.FavoriteTreeViewClick(Sender: TObject); @@ -3355,13 +3315,20 @@ begin ListView.Column[i].Width := GikoSys.Setting.CategoryColumnWidth[i]; SetBoardListItem(TCategory(Obj)); end else if Obj is TBoard then begin - // SetThreadListItem ŒÄ‚Ô‚È‚ç‚¢‚ç‚È‚¢‚ñ‚¶‚á‚Ë‚¥H - { - for i := 0 to ListView.Columns.Count - 1 do - ListView.Column[i].Width := GikoSys.Setting.BoardColumnWidth[i]; - } SetThreadListItem(TBoard(Obj)); end; + + if GikoSys.Setting.ListOrientation = gloHorizontal then begin + if GikoSys.Setting.ListWidthState = glsMax then begin + BrowserMinAction.Execute; + ListView.SetFocus; + end; + end else begin + if GikoSys.Setting.ListHeightState = glsMax then begin + BrowserMinAction.Execute; + ListView.SetFocus; + end; + end; end; @@ -3720,15 +3687,15 @@ begin TreeView.TopItem.Expanded := True; //ƒcƒŠ[ƒgƒbƒv€–Ú‚¾‚¯‚ðŠJ‚­ //ƒcƒŠ[‚̃gƒbƒv€–Ú‚ð‘I‘ð‚·‚é if GetActiveList = nil then - TreeView.Selected := TreeView.Items[0] + TreeClick( TreeView.Items[0] ) else begin for i := 0 to TreeView.Items.Count - 1 do begin if TreeView.Items[i].Data = GetActiveList then begin - TreeView.Selected := TreeView.Items[i]; + TreeClick( TreeView.Items[i] ); Exit; end; end; - TreeView.Selected := TreeView.Items[0] + TreeClick( TreeView.Items[0] ); end; end; except @@ -3845,7 +3812,7 @@ begin if TreeView.Items[i].Data = Item then begin TreeView.Items[i].Selected := True; if CallEvent then - TreeViewChange(TreeView, TreeView.Items[i]); + TreeClick(TreeView.Items[i]); Break; end; end; @@ -3869,13 +3836,13 @@ begin end; if (Item is TBBS) or (Item is TCategory) then begin - ListView.Columns.Clear; + ListView.Columns.Clear; SetActiveList( Item ); end else if Item is TBoard then begin if not TBoard( Item ).IsThreadDatRead then begin Screen.Cursor := crHourGlass; try - if not TBoard( Item ).IsThreadDatRead then + if not TBoard( Item ).IsThreadDatRead then GikoSys.ReadSubjectFile(TBoard( Item )); finally Screen.Cursor := crDefault; @@ -3938,6 +3905,24 @@ begin // SetContent(ThreadItem); InsertBrowserTab(ListItem.Data); end; + + if ListView.Selected = nil then + Exit; + if ListView.Selected.Data = nil then + Exit; + if TThreadItem( ListView.Selected.Data ).IsLogFile then begin + if GikoSys.Setting.ListOrientation = gloHorizontal then begin + if GikoSys.Setting.ListWidthState = glsMin then begin + BrowserMaxAction.Execute; + Browser.SetFocus; + end; + end else begin + if GikoSys.Setting.ListHeightState = glsMin then begin + BrowserMaxAction.Execute; + Browser.SetFocus; + end; + end; + end; end; procedure TGikoForm.ListDoubleClick; @@ -3981,19 +3966,19 @@ begin Application.ProcessMessages; end; } + // Access Violation ‚ª‹N‚«‚鎖‚ª‚ ‚é‚̂ō¡Œã—vƒ`ƒFƒbƒN try - top := 0; - nm := AName; - item := OleVariant( Browser.Document as IHTMLDocument2).anchors.item(nm); - repeat - top := top + item.offsetTop; - item := item.offsetParent; - until AnsiCompareText(item.tagName, 'body' ) = 0; - - OleVariant(Browser.Document as IHTMLDocument2).body.scrollTop := top; - - except - end; + top := 0; + nm := AName; + item := OleVariant( Browser.Document as IHTMLDocument2).anchors.item(nm); + repeat + top := top + item.offsetTop; + item := item.offsetParent; + until AnsiCompareText(item.tagName, 'body' ) = 0; + + OleVariant(Browser.Document as IHTMLDocument2).body.scrollTop := top; + except + end; end; procedure TGikoForm.TreeViewCollapsed(Sender: TObject; Node: TTreeNode); @@ -4848,31 +4833,6 @@ begin ActiveLogDeleteAction.Enabled := GetActiveContent <> nil; end; -procedure TGikoForm.ListViewSelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); -begin - //SelectTimer.Enabled := False; - //if Selected then - // SelectTimer.Enabled := True; - SelectTimer.Enabled := Selected; - - { - if ListView.Selected = nil then - Exit; - if ListView.Selected.Data = nil then - Exit; - if TThreadItem( ListView.Selected.Data ).IsLogFile then begin - if GikoSys.Setting.ListOrientation = gloHorizontal then begin - if GikoSys.Setting.ListWidthState = glsMin then - BrowserMaxAction.Execute; - end else begin - if GikoSys.Setting.ListHeightState = glsMin then - BrowserMaxAction.Execute; - end; - end; - } -end; - procedure TGikoForm.SelectTimerTimer(Sender: TObject); begin SelectTimer.Enabled := False; @@ -4993,7 +4953,10 @@ end; function TGikoForm.Hook(var Message: TMessage): Boolean; begin Result := False; - if Message.Msg = CM_APPKEYDOWN then Result := True; + case Message.Msg of + CM_APPKEYDOWN: + Result := True; + end; end; procedure TGikoForm.KokoResActionExecute(Sender: TObject); @@ -9025,15 +8988,6 @@ procedure TGikoForm.UpBoardActionExecute(Sender: TObject); begin SelectTreeNode( GetActiveContent.ParentBoard, True ); - { - if GikoSys.Setting.ListOrientation = gloHorizontal then begin - if GikoSys.Setting.ListWidthState = glsMax then - BrowserMinAction.Execute; - end else begin - if GikoSys.Setting.ListHeightState = glsMax then - BrowserMinAction.Execute; - end; - } end; @@ -9233,6 +9187,132 @@ begin end; +procedure TGikoForm.ListViewClick(Sender: TObject); +begin + ListClick; +end; + +// TreeView ‚ªƒNƒŠƒbƒN‚³‚ꂽ +procedure TGikoForm.TreeClick( Node : TTreeNode ); +var + i: Integer; +begin + + if FTreeType = gttHistory then begin + if Node <> nil then + if TObject( Node.Data ) is TFavoriteThreadItem then + if GetActiveContent <> TFavoriteThreadItem( Node.Data ).Item then + FavoriteClick( Node ); + Exit; + end; + + ListView.Selected := nil; + ListView.Items.Count := 0; + ListView.Items.Clear; +// ListView.Columns.Clear; + + Caption := CAPTION_NAME; + //Application.Title := CAPTION_NAME; + + + if GetActiveList is TBBS then begin + for i := 0 to ListView.Columns.Count - 1 do + GikoSys.Setting.BBSColumnWidth[i] := ListView.Column[i].Width; + end else if GetActiveList is TCategory then begin + for i := 0 to ListView.Columns.Count - 1 do + GikoSys.Setting.CategoryColumnWidth[i] := ListView.Column[i].Width; + end else if GetActiveList is TBoard then begin + for i := 0 to ListView.Columns.Count - 1 do + GikoSys.Setting.BoardColumnWidth[i] := ListView.Column[i].Width; + end; + + if TObject(Node.Data) is TBBS then begin + SetActiveList(Node.data); + end else if TObject(Node.Data) is TCategory then begin + SetActiveList(Node.data); + end else if TObject(Node.Data) is TBoard then begin + if not TBoard(Node.Data).IsThreadDatRead then begin + Screen.Cursor := crHourGlass; + try + if not TBoard(Node.Data).IsThreadDatRead then + GikoSys.ReadSubjectFile(Node.Data); + finally + Screen.Cursor := crDefault; + end; + end; + SetActiveList(Node.data); + end; + +end; + +// TreeView ‚ªƒ_ƒuƒ‹ƒNƒŠƒbƒN‚³‚ꂽ +procedure TGikoForm.TreeDoubleClick( Node : TTreeNode ); +var + Board : TBoard; + ThreadItem : TThreadItem; +begin + + if Node = nil then Exit; + + if FTreeType = gtt2ch then begin + if not (TObject(Node.Data) is TBoard) then Exit; + Board := TBoard(Node.Data); + DownloadList(Board); + end else if FTreeType = gttHistory then begin + if not (TObject(Node.Data) is TFavoriteThreadItem) then Exit; + ThreadItem := TFavoriteThreadItem(Node.Data).Item; + DownloadContent(ThreadItem); + end; + +end; + +procedure TGikoForm.TreeViewClick(Sender: TObject); +begin + TreeClick( TreeView.Selected ); +end; + +procedure TGikoForm.TreeViewKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); +begin + if Key = VK_BACK then begin +// UpFolderButtonClick(Sender); + end else if Key = VK_SPACE then begin + TreeDoubleClick( TreeView.Selected ); + end else if Key = VK_RETURN then begin + TreeClick( TreeView.Selected ); + end; +end; + +// ƒuƒ‰ƒEƒU‚̃L[ƒ_ƒEƒ“ƒCƒxƒ“ƒg + // ƒCƒxƒ“ƒg‚ðŽæ‚舵‚Á‚½ê‡‚Í True ‚ð•Ô‚· +function TGikoForm.BrowserKeydown(Sender: TObject; Key: Word; State:TShiftState) : Boolean; +begin + + if Key = VK_BACK then begin + UpBoardAction.Execute; + Result := True; + end; + +end; + +// ƒMƒRƒiƒr‚̃ƒbƒZ[ƒWƒ‹[ƒv‚ð‰¡Žæ‚肵‚Ü‚· +procedure TGikoForm.HandleAppMessage(var Msg: TMsg; var Handled: Boolean); +var + key : Word; + h : Boolean; +begin + + case Msg.message of + WM_KEYFIRST..WM_KEYLAST: + if IsDialogMessage(Browser.Handle, Msg) then begin + key := Msg.wParam; + Handled := BrowserKeyDown( nil, key, KeyDataToShiftState( Msg.lParam ) ); + Msg.wParam := key; + end; + end; + +end; + initialization OleInitialize(nil); finalization