unit volume; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,Global; type Tvolumedisplay = class(TForm) delay: TTimer; procedure FormCreate(Sender: TObject); procedure delayTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure draw(i : byte); var volumedisplay: Tvolumedisplay; symbolrect : Trect; progressrect : Trect; symbol : tform; increment : real; vol : dword; lastvol,lastbass,lasttreb : dword; mixerinc : dword; max : integer; const col = cllime; delayinterval=1000; STICKNUMBER = 0; implementation uses main; {$R *.DFM} procedure settitle(title : string; value : integer); var op : string; begin with symbol.canvas do begin brush.color:=col; pen.color:=col; rectangle(0,0,symbol.width,symbol.height); symbol.top:=volumedisplay.top; font.name:=DEFAULTFONT; Font.size:=symbol.width div 10; font.style:=[fsbold]; textout(symbol.width div 2 - textwidth(title) div 2,0,title); font.style:=[]; op:='('+inttostr(value)+')'; textout(symbol.width div 2 - textwidth(op) div 2,textheight('title')+1,op); end; end; procedure draw(i : byte); var s : string; begin volumedisplay.delay.interval:=delayinterval; volumedisplay.delay.tag:=0; volumedisplay.delay.Enabled:=true; s:='Volume'; if mainform.mutebut.Down=true then s:='Muted'; volumedisplay.width:=round(i*increment); symbol.visible:=true; settitle(s,i); volumedisplay.visible:=true; application.ProcessMessages; end; procedure Tvolumedisplay.FormCreate(Sender: TObject); begin max:=VOLINCREMENTS; width:=(screen.width - screen.width div 10)-screen.width div 100; height:=screen.height div 24; top:=screen.height div 10 * 8; left:=screen.width div 10; borderstyle:=bsNone; formstyle:=fsStayonTop; color:=col; symbolrect.left:=screen.width div 100; symbolrect.bottom:=height; symbolrect.top:=Top; symbolrect.right:=left-((screen.width div 100)*2); symbol:=tform.Create(self); symbol.FormStyle:=fsStayonTop; symbol.BorderStyle:=bsNone; symbol.left:=symbolrect.left; symbol.width:=symbolrect.right; symbol.height:=symbolrect.bottom; symbol.top:=top; symbol.color:=col; symbol.Visible:=false; increment := width / max; end; procedure Tvolumedisplay.delayTimer(Sender: TObject); begin delay.tag:=delay.tag+1; if delay.tag=2 then begin visible:=false; symbol.visible:=false; delay.tag:=0; delay.enabled:=false; end; end; end.