unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, bass, Registry;
type
TMainForm = class(TForm)
ListBox1: TListBox;
Label1: TLabel;
O: TOpenDialog;
TrackLength: TImage;
Thumbs: TImage;
procedure TrackLengthMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
private
{ Private declarations }
public
{ Public declarations }
function SolveForY(X, Y: integer): integer;// функция
function GetPercentDone(FMinValue,FCurValue,FMaxValue:LongWord): Byte;//функция2
end;
var
MainForm: TMainForm;
channel:hstream;
implementation
{$R *.dfm}
procedure TMainForm.TrackLengthMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if button = mbleft then begin
if Thumbs.Left <> TrackLength.Left + x then
Thumbs.Left:=TrackLength.Left + x - 10;
SolveForY(Thumbs.Left,TrackLength.Width);
bass.BASS_ChannelGetPosition(application.Handle,SolveForY(Thumbs.Left,TrackLength.Width) );
end;
end;
function TMainForm.GetPercentDone(FMinValue, FCurValue,
FMaxValue: LongWord): Byte;
begin
Result := SolveForY(FCurValue - FMinValue, FMaxValue - FMinValue);
end;
function TMainForm.SolveForY(X, Y: integer): integer;
begin
if Y = 0 then Result := 0
else Result := Trunc((X/Y)* 100);
end;
procedure TMainForm.Label1Click(Sender: TObject);
begin
o.Execute;
BASS_StreamFree(Channel);
Channel := BASS_StreamCreateFile(FALSE, PChar(o.filename), 0, 0, 0);
BASS_ChannelPlay(Channel, False);
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
BASS_Init(-1, 44100, 0, application.Handle, nil);
Thumbs.Left:=TrackLength.Left - 10;
end;
procedure TMainForm.ListBox1DragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
with (Sender as TListBox) do
Items.Move(ItemIndex,ItemAtPos(Point(x,y),True));
end;
procedure TMainForm.ListBox1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := (Sender=Source);
end;
end.