我是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过程!这里不知如何调用
望帮助.

解决方案 »

  1.   

    那随着这个过程treeview的焦点自动打到下一行怎么办呢?
      

  2.   

    下一行?
    TreeView1Change(TreeView1,下一个node);
    或者直接选中下一个node就会触发change事件
      

  3.   

    我是说自动打到下一行,也就是treeview转入下一首歌
    treeview的焦点转到下一首歌的名字上
      

  4.   

    就是treeview的焦点随之selectedindex的变化而变化
      

  5.   

    先求出你点击的Node; TreeView1Change(TreeView1,Node);不过点击的node改变了,TreeView1Change会自动触发,不用另外调用
      

  6.   

    提供一个TWindowsMediaPlayer应用的较为完整工程让你参考:新建工程、双击窗体、用下列代码覆盖Unit1: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.