📄 teevideoplayer.pas
字号:
ITimer.Enabled:=True
else
if not Playing then
begin
Open;
ICount:=StartFrame;
IPlaying:=True;
ITimer.Enabled:=True;
IEndFrame:=EndFrame;
end;
end;
procedure TVideoPlayerTool.Stop;
begin
if Playing then
begin
ITimer.Enabled:=False;
Finish;
IPlaying:=False;
IPaused:=False;
end;
end;
function TVideoPlayerTool.GetDelay: Integer;
begin
result:=ITimer.Interval;
end;
procedure TVideoPlayerTool.SetDelay(const Value: Integer);
begin
ITimer.Interval:=Value;
end;
procedure TVideoPlayerTool.SetFilters(const Value: TFilterItems);
begin
Filters.Assign(Value);
end;
class function TVideoPlayerTool.GetEditorClass: String;
begin
result:='TVideoPlayerEditor';
end;
procedure TVideoPlayerEditor.BPlayClick(Sender: TObject);
begin
if BPlay.Tag=1 then
begin
Player.Stop;
Player.OnFrame:=OldOnFrame;
BPlay.Caption:=TeeMsg_Play;
BPlay.Tag:=0;
LFrame.Caption:='';
end
else
begin
Player.Play;
SetupPlay;
end;
end;
procedure TVideoPlayerEditor.SetupPlay;
begin
OldOnFrame:=Player.OnFrame;
Player.OnFrame:=PlayerFrame;
VideoSize:=Player.GetEnd-Player.GetStart;
BPlay.Caption:=TeeMsg_Stop;
BPlay.Tag:=1;
end;
procedure TVideoPlayerEditor.PlayerFrame(Sender: TObject);
begin
if Assigned(OldOnFrame) then
OldOnFrame(Sender);
LFrame.Caption:=IntToStr(Player.Position)+' / '+IntToStr(VideoSize);
end;
procedure TVideoPlayerEditor.FormShow(Sender: TObject);
procedure FindPicture(Display,Index:Integer);
begin
CBDisplay.ItemIndex:=Display;
CBDisplayChange(Self);
CBItem.ItemIndex:=Index;
end;
procedure SearchTool;
function FindTool(Index:Integer; APicture:TTeePicture):Boolean;
begin
CBDisplay.ItemIndex:=Index;
CBDisplayChange(Self);
CBItem.ItemIndex:=CBItem.Items.IndexOfObject(APicture);
result:=Player.Picture=APicture;
end;
var t : Integer;
begin
with Player.ParentChart do
for t:=0 to Tools.Count-1 do
if Tools[t] is TAnnotationTool then
begin
if FindTool(0,TAnnotationTool(Tools[t]).Shape.Picture) then
break;
end
else
if Tools[t] is TChartImageTool then
begin
if FindTool(1,TChartImageTool(Tools[t]).Picture) then
break;
end;
end;
procedure CheckToBack;
begin
if Player.ParentChart.BackImage.Inside then
begin
RBOther.Checked:=True;
CBDisplay.ItemIndex:=4;
CBDisplayChange(Self);
CBItem.ItemIndex:=0;
end
else
RBBack.Checked:=True;
end;
begin
Player:=TVideoPlayerTool(Tag);
if Assigned(Player) then
with Player do
begin
BPlay.Enabled:=FileName<>'';
if Playing then
SetupPlay;
if Assigned(Picture) then
begin
if Picture=ParentChart.BackImage then
CheckToBack
else
begin
RBOther.Checked:=True;
with ParentChart as TCustomChart do
begin
if Legend.Picture=Picture then
CBDisplay.ItemIndex:=2
else
if Walls.Back.Picture=Picture then
FindPicture(4,0)
else
if Walls.Bottom.Picture=Picture then
FindPicture(4,1)
else
if Walls.Left.Picture=Picture then
FindPicture(4,2)
else
if Walls.Right.Picture=Picture then
FindPicture(4,3)
else
if Picture=Title.Picture then
FindPicture(3,0)
else
if Picture=SubTitle.Picture then
FindPicture(3,1)
else
if Picture=Foot.Picture then
FindPicture(3,2)
else
if Picture=SubFoot.Picture then
FindPicture(3,3)
else
SearchTool;
end;
end;
end
else
CheckToBack;
CBDisplay.Enabled:=RBOther.Checked;
LFrame.Caption:='';
CBLoop.Checked:=Loop;
UDDelay.Position:=Delay;
EName.Text:=FileName;
end;
end;
procedure TVideoPlayerEditor.CBLoopClick(Sender: TObject);
begin
Player.Loop:=CBLoop.Checked;
end;
procedure TVideoPlayerEditor.EDelayChange(Sender: TObject);
begin
if Showing then
Player.Delay:=UDDelay.Position;
end;
procedure TVideoPlayerEditor.Button1Click(Sender: TObject);
begin
ShowFiltersEditor(Self,Player.IBitmap,Player.Filters);
end;
procedure TVideoPlayerEditor.ENameChange(Sender: TObject);
begin
Player.FileName:=EName.Text;
BPlay.Enabled:=Player.FileName<>'';
end;
procedure TVideoPlayerEditor.SpeedButton1Click(Sender: TObject);
begin
OpenDialog1.FileName:=EName.Text;
if OpenDialog1.Execute then
EName.Text:=OpenDialog1.FileName;
end;
procedure TVideoPlayerEditor.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Player.OnFrame:=OldOnFrame;
end;
procedure TVideoPlayerEditor.RBOtherClick(Sender: TObject);
begin
RBBack.Checked:=False;
CBDisplay.Enabled:=True;
CBDisplay.ItemIndex:=-1;
CBItem.Clear;
end;
procedure TVideoPlayerEditor.RBBackClick(Sender: TObject);
begin
RBOther.Checked:=False;
CBDisplay.Enabled:=False;
CBItem.Enabled:=False;
Player.Picture:=Player.ParentChart.BackImage;
Player.ParentChart.BackImage.Inside:=False;
end;
procedure TVideoPlayerEditor.CBDisplayChange(Sender: TObject);
procedure AddTools(AToolClass:TTeeCustomToolClass; Annotation:Boolean);
var t : Integer;
tmp : TTeePicture;
begin
with Player.ParentChart.Tools do
for t:=0 to Count-1 do
if Items[t] is AToolClass then
begin
if Annotation then
tmp:=(Items[t] as TAnnotationTool).Shape.Picture
else
tmp:=(Items[t] as TChartImageTool).Picture;
CBItem.Items.AddObject(Items[t].Name,tmp);
end;
end;
begin
Player.Picture:=nil;
CBItem.Enabled:=True;
CBItem.Clear;
case CBDisplay.ItemIndex of
0: AddTools(TAnnotationTool,True);
1: AddTools(TChartImageTool,False);
2: begin
Player.Picture:=(Player.ParentChart as TCustomChart).Legend.Picture;
CBItem.Enabled:=False;
end;
3: with (Player.ParentChart as TCustomChart) do
begin
CBItem.Items.AddObject(TeeMsg_Title,Title.Picture);
CBItem.Items.AddObject(TeeMsg_SubTitle,SubTitle.Picture);
CBItem.Items.AddObject(TeeMsg_Foot,Foot.Picture);
CBItem.Items.AddObject(TeeMsg_SubFoot,SubFoot.Picture);
end;
4: with (Player.ParentChart as TCustomChart) do
begin
CBItem.Items.AddObject('Back',Walls.Back.Picture);
CBItem.Items.AddObject('Bottom',Walls.Bottom.Picture);
CBItem.Items.AddObject('Left',Walls.Left.Picture);
CBItem.Items.AddObject('Right',Walls.Right.Picture);
end;
end;
end;
procedure TVideoPlayerEditor.FormDestroy(Sender: TObject);
begin
if Assigned(Player) then
Player.OnFrame:=OldOnFrame;
end;
procedure TVideoPlayerEditor.CBItemChange(Sender: TObject);
begin
Player.Picture:=CBItem.SelectedObject as TTeePicture;
end;
procedure TVideoPlayerTool.SetPicture(const Value: TPicture);
begin
if FPicture<>Value then
begin
if Assigned(FPicture) then
begin
FPicture.Assign(nil);
FPicture.Bitmap.FreeImage;
end;
FPicture:=Value;
end;
end;
initialization
RegisterTeeTools([TVideoPlayerTool]);
RegisterClass(TVideoPlayerEditor);
finalization
UnRegisterTeeTools([TVideoPlayerTool]);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -