Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
{ ****************************************************************** } { } { VCL component TDTNTMMPlayer } { } { This was developed by request!! } { } { } { Copyright ® 2001 by Jason White jason@dtnt.co.uk } { } { ****************************************************************** } unitDTNTMMPlayer; interface
uses
WinTypes, WinProcs, Messages, SysUtils, Classes, Controls, Forms, Graphics, Mplayer, mmsystem; type
TDTNTMMPlayer = class
(TMediaPlayer) private
{ Private fields of TDTNTMMPlayer } { Pointer to application's OnChangeTempoError handler, if any } FOnChangeTempoError : TNotifyEvent; { Pointer to application's OnTempoChanged handler, if any } FOnTempoChanged : TNotifyEvent; { Private methods of TDTNTMMPlayer } { Method to set variable and property values and create objects } procedure
AutoInitialize;
{ Method to free any objects created by AutoInitialize } procedureAutoDestroy; protected
{ Protected fields of TDTNTMMPlayer } { Protected methods of TDTNTMMPlayer } { Method to generate OnChangeTempoError event } procedure
ChangeTempoError(Sender : TObject); virtual
;
{ Method to generate OnTempoChanged event } procedureTempoChanged(Sender : TObject); virtual
; procedure
Loaded; override
; procedure
Paint; override
; public
{ Public fields and properties of TDTNTMMPlayer } { Public methods of TDTNTMMPlayer } constructor
Create(AOwner: TComponent); override
; destructor
Destroy; override
;
{ SetsTempo } procedureSetTempo( Value : Integer ); published
{ Published properties of TDTNTMMPlayer } property
OnChangeTempoError : TNotifyEvent read
FOnChangeTempoError write
FOnChangeTempoError;
{ Tempo Changed Event } propertyOnTempoChanged : TNotifyEvent read
FOnTempoChanged write
FOnTempoChanged; property
OnClick; property
OnEnter; property
OnExit; property
OnNotify; property
OnPostClick; property
AutoEnable default
True; property
AutoOpen default
False; property
AutoRewind default
True; property
ColoredButtons default
[btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; property
DeviceType default
dtAutoSelect; property
EnabledButtons default
[btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; property
FileName; property
Shareable default
False; property
Visible default
True; property
VisibleButtons default
[btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; end
; procedure
Register
; implementation
procedure
Register
; begin
{ Register TDTNTMMPlayer with D-TNT as its default page on the Delphi component palette } RegisterComponents('D-TNT', [TDTNTMMPlayer]); end
;
{ Method to set variable and property values and create objects } procedureTDTNTMMPlayer.AutoInitialize; begin
AutoEnable := True
; AutoOpen := False
; AutoRewind := True
; ColoredButtons := [btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; DeviceType := dtAutoSelect; EnabledButtons := [btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; Shareable := False
; Visible := True
; VisibleButtons := [btPlay, btPause, btStop, btNext, btPrev, btStep, btBack, btRecord, btEject]; end
;
{ of AutoInitialize } { Method to free any objects created by AutoInitialize } procedureTDTNTMMPlayer.AutoDestroy; begin
{ No objects from AutoInitialize to free } end
;
{ of AutoDestroy } { Method to generate OnChangeTempoError event } procedureTDTNTMMPlayer.ChangeTempoError(Sender : TObject); begin
{ Has the application assigned a method to the event, whether via the Object Inspector or a run-time assignment? If so, execute that method } if
Assigned(FOnChangeTempoError) then
FOnChangeTempoError(Sender); end
;
{ Method to generate OnTempoChanged event } procedureTDTNTMMPlayer.TempoChanged(Sender : TObject); begin
{ Has the application assigned a method to the event, whether via the Object Inspector or a run-time assignment? If so, execute that method } if
Assigned(FOnTempoChanged) then
FOnTempoChanged(Sender); end
; constructor
TDTNTMMPlayer.Create(AOwner: TComponent); begin
{ Call the Create method of the parent class } inherited
Create(AOwner);
{ AutoInitialize sets the initial values of variables and } { properties; also, it creates objects for properties of } { standard Delphi object types (e.g., TFont, TTimer, } { TPicture) and for any variables marked as objects. } { AutoInitialize method is generated by Component Create. } AutoInitialize; { Code to perform other tasks when the component is created } end; destructor
TDTNTMMPlayer.Destroy; begin
{ AutoDestroy, which is generated by Component Create, frees any } { objects created by AutoInitialize. } AutoDestroy; { Here, free any other dynamic objects that the component methods } { created but have not yet freed. Also perform any other clean-up } { operations needed before the component is destroyed. } { Last, free the component by calling the Destroy method of the } { parent class. } inherited
Destroy; end
; procedure
TDTNTMMPlayer.Loaded; begin
inherited
Loaded;
{ Perform any component setup that depends on the property values having been set } end; procedure
TDTNTMMPlayer.Paint; begin
{ Make this component look like its parent component by calling its parent's Paint method. } inherited
Paint;
{ To change the appearance of the component, use the methods supplied by the component's Canvas property (which is of type TCanvas). For example, } { Canvas.Rectangle(0, 0, Width, Height); } end;
{ SetsTempo } procedureTDTNTMMPlayer.SetTempo( Value : Integer ); var
Flags: LongInt; SeqParm: TMCI_Seq_Set_Parms; begin
pause; if
DeviceType = dtSequencer then
begin
SeqParm.dwTempo := Value; Flags := MCI_SEQ_SET_TEMPO; mciSendCommand(DeviceID, MCI_SET, Flags, Longint(@SeqParm)); TempoChanged(self); end
else
ChangeTempoError(self); resume; end
; end
.