怎样调用TreeView1Change这个过程?
我是delphi初学者,学习中碰到个问题。
自己写个媒体播放机,代码如下:
var
Form1: TForm1;
i:integer;
implementation
{$R *.dfm}
procedure TForm1.WindowsMediaPlayer1StatusChange(Sender: TObject);
begin
if windowsmediaplayer1.status='已停止' then
begin
treeview1.SetFocus;
TreeView1.Selected.SelectedIndex:=i+1;
//调用treeview1change过程!
end;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if treeview1.Selected.SelectedIndex = 2 then
begin
windowsmediaplayer1.URL:='http://hcflv.yinyuetai.com/uploads/videos/common/8CCA012F130824FAEE52143CA4AFEB06.flv?sc=e4f1278199939bb9&br=741&ptp=mv&rd=yinyuetai.com';
i:=2;
end;
if treeview1.Selected.SelectedIndex = 3 then
begin
windowsmediaplayer1.URL:='http://hcflv.yinyuetai.com/uploads/videos/common/133F012ECC9C54D14720F163BDF28D7E.flv?sc=0c519faff55e0f11&br=755&ptp=mv&rd=yinyuetai.com';
i:=3;
end;
end;
end.
其中//调用treeview1change过程!这里不知如何调用
望帮助.
[解决办法]
TreeView1Change(TreeView1,nil);
[解决办法]
先求出你点击的Node; TreeView1Change(TreeView1,Node);
不过点击的node改变了,TreeView1Change会自动触发,不用另外调用
[解决办法]
提供一个TWindowsMediaPlayer应用的较为完整工程让你参考:
新建工程、双击窗体、用下列代码覆盖Unit1:
- Delphi(Pascal) code
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,OleCtrls,WMPLib_TLB, StdCtrls, ExtCtrls, ComCtrls;type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } procedure Bttn_playClick(Sender: TObject); procedure Bttn_stopClick(Sender: TObject); procedure Bttn_listClick(Sender: TObject); procedure TreeViewChange(Sender: TObject; Node: TTreeNode); procedure WindowsMediaPlayerStatusChange(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormResize(Sender: TObject); public { Public declarations } end;TLocOleCtrl = Class (TOleControl);var Form1: TForm1;implementation{$R *.dfm}var ls:Tstringlist; TreeView: TTreeView; WindowsMediaPlayer: TWindowsMediaPlayer; Panel: TPanel; Bttn_list: TButton; Bttn_play: TButton; Bttn_stop: TButton;procedure TForm1.FormCreate(Sender: TObject);begin Width:=450; Height:=330; Position:=poScreenCenter; Caption:='中国软件研发联盟Q群122058606__广州佬'; OnCloseQuery:=FormCloseQuery; OnResize:=FormResize; ls:=Tstringlist.Create; Panel:=TPanel.Create(self); Panel.Parent:=Form1; Panel.Height:=50; Panel.Align:=alBottom; Panel.Color:=clSkyBlue; Bttn_play:=TButton.Create(Panel); Bttn_play.Parent:=Panel; Bttn_play.Caption:='播放'; Bttn_play.Left:=16; Bttn_play.Top:=16; Bttn_play.OnClick:=Bttn_playClick; Bttn_stop:=TButton.Create(Panel); Bttn_stop.Parent:=Panel; Bttn_stop.Caption:='停止'; Bttn_stop.Left:=150; Bttn_stop.Top:=16; Bttn_stop.OnClick:=Bttn_stopClick; Bttn_list:=TButton.Create(Panel); Bttn_list.Parent:=Panel; Bttn_list.Caption:='列表'; Bttn_list.Left:=345; Bttn_list.Top:=16; Bttn_list.OnClick:=Bttn_listClick; TreeView:=TTreeView.Create(self); TreeView.Parent:=Form1; TreeView.Align:=alRight; TreeView.Width:=150; TreeView.OnChange:=TreeViewChange; WindowsMediaPlayer:=TWindowsMediaPlayer.Create(self); WindowsMediaPlayer.Parent:=Form1; WindowsMediaPlayer.Align:=alClient; WindowsMediaPlayer.OnStatusChange:=WindowsMediaPlayerStatusChange;end;procedure TForm1.WindowsMediaPlayerStatusChange(Sender: TObject);var i:integer;begin if windowsmediaplayer.status='正在更改媒体...' then begin if windowsmediaplayer.Tag<>-1 then begin i:=ls.IndexOf(windowsmediaplayer.currentMedia.sourceURL); if i>-1 then begin TreeView.Selected:=TreeView.Items.Item[i]; TreeView.SetFocus; end; end; end; windowsmediaplayer.Tag:=0;end;procedure TForm1.Bttn_listClick(Sender: TObject);var i:integer; s,exs:string; OpenDialog:TOpenDialog;begin OpenDialog:=TOpenDialog.Create(self); with OpenDialog do begin Options:=[ofAllowMultiSelect];//允许多选 FilterIndex :=8; Filter :='mp3File(*.mp3)|*.mp3|MidFile(*.mid)|*.mid|wmaFile(*.wma)|*.wma|FlvFile(*.flv)|' +'*.flv|MpgFile(*.mpg)|*.mpg|AviFile(*.avi)|*.avi|rmFile(*rm)|*.rm'; if Execute then begin TreeView.Items.Clear; ls.Clear; ls.Assign(Files); for i:=0 to Files.Count-1 do begin windowsmediaplayer.currentPlaylist.appendItem( windowsmediaplayer.newMedia(Files.Strings[i])); s:=ExtractFileName(Files.Strings[i]); exs:=ExtractFileExt(Files.Strings[i]); if exs<>'' then Delete(s,pos(exs,s),length(exs)); TreeView.Items.AddChild(nil,s); end; end; TreeView.SetFocus; end;end;procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);begin WindowsMediaPlayer.OnStatusChange:=nil;end;procedure TForm1.FormResize(Sender: TObject);begin if (not Visible) or (WindowsMediaPlayer=nil) then exit; TLocOleCtrl(WindowsMediaPlayer).OnPosRectChange(Rect(0,0,ClientWidth-150,ClientHeight-20));end;procedure TForm1.Bttn_playClick(Sender: TObject);begin windowsmediaplayer.controls.play;end;procedure TForm1.Bttn_stopClick(Sender: TObject);begin windowsmediaplayer.controls.stop;end;procedure TForm1.TreeViewChange(Sender: TObject; Node: TTreeNode);begin if windowsmediaplayer.Tag=-1 then exit; windowsmediaplayer.Tag:=-1; windowsmediaplayer.controls.playItem(windowsmediaplayer.currentPlaylist.Item[TreeView.Selected.Index]);end;end.