26.04.2014, 14:19
|
Начинающий
|
|
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
|
|
Подскажите почему пропадает звук у приложения если использовать этот модуль вот код
Код:
unit HomeUnit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, AppBar, Vcl.Menus, OptionsUnit2, System.Contnrs,
Vcl.ComCtrls,
Winapi.MMSystem, bass_simple ;
type
TForm1 = class(TAppBar)
Panel1: TPanel;
Panel2: TPanel;
PopupMenu1: TPopupMenu;
mniOptions: TMenuItem;
Timer1: TTimer;
Timer2: TTimer;
procedure FormCreate(Sender: TObject);
procedure mniOptionsClick(Sender: TObject);
procedure Panel1Resize(Sender: TObject);
procedure PClick(Sender: TObject);
function IndexInParent(vControl: TControl): integer;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
procedure openPanel;
public
{ Public declarations }
b: TbassSimple;
end;
var
Form1: TForm1;
numberPages: Byte ; // номер панели
selekt_panel: Integer ; // нажатие на панель
focusPanel: Integer ; // панель в фокусе
MinForma,MaxForma : Integer ; // минемальный/максимальный размер панели
paus: Integer ; // Пауза для закрытия
implementation
{$R *.dfm}
procedure TForm1.openPanel;
var
spid : Integer ;
begin
if Form1.Height<=MinForma then
begin
//PlaySound('sound\hew\System Notifi.wav', 0, SND_ASYNC);
b.Play('sound\GTAtitles.mp3');
for spid := 0 to MaxForma do
begin
Form1.Top:=Form1.Top-1;
Form1.Height:=Form1.Height+1;
end;
end;
Form1.Panel1Resize(nil);
end;
// закрыть панель
procedure closePanel;
var
spid : Integer ;
begin
if Form1.Height>=MaxForma then
begin
// PlaySound('sound\steam.wav', 0, SND_ASYNC);
for spid := 0 to MaxForma do
begin
Form1.Top:=Form1.Top+1;
Form1.Height:=Form1.Height-1;
end;
end;
end;
{ функция, возвращающая индекс искомого компонента в
списке родителя; возвращает -1 при отсутствии компонента }
function TForm1.IndexInParent(vControl: TControl): integer;
var
ParentControl: TWinControl;
begin
{делаем "слепок" родителя через базовой класс на предмет доступности }
ParentControl := TForm(vControl.Parent);
if (ParentControl <> nil) then
begin
for Result := 0 to ParentControl.ControlCount - 1 do
begin
if (ParentControl.Controls[Result] = vControl) then Exit;
end;
end;
{ если мы уж попали в это место, то либо не найден компонент, либо компонент не имел родителя }
Result := -1;
end;
procedure TForm1.PClick(Sender: TObject);
var
i,j: Integer;
begin
focusPanel:=IndexInParent((sender as TPanel));
for i:=0 to list.Count-1 do
begin
if ( TPanel(list[i]) is TPanel) then // and (Panel4.Controls[i] <> Sender) and (Pos('Pages',TPanel(Panel4.Controls[i]).Caption) = 1)
begin
TPanel(list[i]).Color:=clSilver;
(sender as TPanel).Color:= clLime;
if i=focusPanel then
begin
TPanel(ListPage[i]).Visible:=True;
end
else
begin
TPanel(ListPage[i]).Visible:=False;
end;
end;
end;
openPanel;
Timer1.Enabled:=True;
Panel1Resize(nil);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// закрыть панель
if (Mouse.CursorPos.y<Form1.top) or (Mouse.CursorPos.y>Form1.top+Form1.Height) or (Mouse.CursorPos.x<Form1.Left) or (Mouse.CursorPos.x>Form1.Left + Form1.Width) then
begin
Timer2.Enabled:=True;
end
else
begin
Timer2.Enabled:=False;
paus:=0;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
paus:=paus+1;
if paus=50 then
begin
closePanel;
paus:=0;
Timer2.Enabled:=False;
Timer1.Enabled:=False;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MinForma:=30;
MaxForma:=100;
selekt_panel:=-1;
indexsLst:=-1;
focusPanel:=0;
b:=TBassSimple.Create(Handle);
Form1.Edge:= abeBottom;
Form1.Left:=10;
Panel1.Height:=30;
Form1.Height:=MinForma;
Form1.Top:=Screen.WorkAreaHeight - Form1.Height;
Form1.Width:=Screen.WorkAreaWidth-20;
paus:=1; // Пауза для закрытия
// waveOutSetVolume(0,100000); // громкость панельки
end;
procedure TForm1.mniOptionsClick(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm1.Panel1Resize(Sender: TObject);
const
Pad = 2;
var
i,j: Integer;
begin
Form2.ListBox1.Clear;
if List.Count>0 then
begin
For i := 0 to list.Count-1 do
begin
TPanel(list[i]).Left:=(Panel1.Width - Pad) * i div List.Count + Pad;
TPanel(list[i]).Top:=Pad;
TPanel(list[i]).Height:= Panel1.Height - Pad * 2;
TPanel(list[i]).Width:= (Panel1.Width - Pad) * (i + 1) div List.Count - TPanel(list[i]).Left;
end;
end;
for j := 0 to list.Count-1 do
begin
Form2.ListBox1.Items.Add(TPanel(list[j]).Caption)
end;
Form2.ListBox1.ItemIndex:=selekt_panel;
end;
end.
|