首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎的调用TreeView1Change这个过程

2013-01-07 
怎样调用TreeView1Change这个过程?我是delphi初学者,学习中碰到个问题。自己写个媒体播放机,代码如下:varFo

怎样调用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:

unit Unit1;

interface

uses
  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.

热点排行