Subversion Repositories musikbox

Compare Revisions

Regard whitespace Rev 1 → Rev 2

/trunk/VCL_WAVECONTROL/WaveControl.pas
0,0 → 1,134
{=====================================================|
| WaveControl 1.00 - (c) 1998 by John Mogesnen, DK |
|-----------------------------------------------------|
| Change the WAV-Volume settings for Delphi 3 |
| (16 and 32 bits) |
|-----------------------------------------------------|
| E-Mail: JMogensnen@Web4you.dk |
|=====================================================}
(* Attention: To enabled componentuser to change the
Update time remove the {} from the Code!*)
 
unit WaveControl;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls;
 
type
TWaveVolumeSetting = class(TTrackBar)
private
FTimer : TTimer;
FInterval : Integer;
 
{ procedure SetInterval(Value : integer);}
procedure FTimerOnTimer(sender:TObject);
procedure OnTrackChange(Sender : TObject);
function GetTrackBar : integer;
procedure SetVolume;
protected
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
{ property WavUpdateInterval: integer read FInterval write SetInterval;}
end;
 
procedure Register;
 
var
pCurrentVolumeLevel: PDWord;
CurrentVolumeLevel: DWord;
VolumeControlHandle: hWnd;
GetCurrentVolumeLevel: LPDWORD;
 
implementation
 
Uses Wave_System_Control;
 
procedure Register;
begin
RegisterComponents('Samples', [TWaveVolumeSetting]);
end;
 
 
constructor TWaveVolumeSetting.Create (AOwner : TComponent);
begin
inherited Create(Aowner);
New(pCurrentVolumeLevel);
Orientation := trVertical;
TickStyle := tsNone;
TickMarks := tmBoth;
Width := 27;
Height := 113;
min := 0;
max := 26;
 
FInterval := 1;
FTimer := TTimer.create(self);
FTimer.Enabled := TRUE;
FTimer.interval := FInterval;
FTimer.OnTimer := FTimerOnTimer;
OnChange := OnTrackChange;
SetVolume;
end;
 
 
destructor TWaveVolumeSetting.Destroy;
begin
inherited Destroy;
end;
 
{
procedure TWaveVolumeSetting.SetInterval(Value: integer);
begin
if (FInterval <> Value) then
begin
FInterval := Value;
FTimer.interval := FInterval;
end;
end;
}
 
function TWaveVolumeSetting.GetTrackBar: integer;
begin
result := 65535 div max;
end;
 
 
procedure TWaveVolumeSetting.OnTrackChange(Sender : TObject);
Var
x : Integer;
 
begin
IF Orientation=trVertical then
x := max - position
ELSE
x := position;
 
CurrentVolumeLevel := (x * GetTrackBar shl 16) + (x * GetTrackBar);
WaveOutSetVolume(VolumeControlHandle, CurrentVolumeLevel);
end;
 
 
procedure TWaveVolumeSetting.SetVolume;
begin
VolumeControlHandle := FindWindow('Volume Control', nil);
WaveOutGetVolume(VolumeControlHandle, pCurrentVolumeLevel);
CurrentVolumeLevel := pCurrentVolumeLevel^;
 
IF Orientation=trVertical then
position := max - LoWord(CurrentVolumeLevel) DIV GetTrackBar
ELSE
position := LoWord(CurrentVolumeLevel) DIV GetTrackBar;
end;
 
 
procedure TWaveVolumeSetting.FTimerOnTimer(sender:TObject);
begin
SetVolume;
end;
 
end.