📄 mmmixblk.pas
字号:
{========================================================================}
{= (c) 1995-98 SwiftSoft Ronald Dittrich =}
{========================================================================}
{= All Rights Reserved =}
{========================================================================}
{= D 01099 Dresden = Tel.: +0351-8012255 =}
{= Loewenstr.7a = info@swiftsoft.de =}
{========================================================================}
{= Actual versions on http://www.swiftsoft.de/mmtools.html =}
{========================================================================}
{= This code is for reference purposes only and may not be copied or =}
{= distributed in any format electronic or otherwise except one copy =}
{= for backup purposes. =}
{= =}
{= No Delphi Component Kit or Component individually or in a collection=}
{= subclassed or otherwise from the code in this unit, or associated =}
{= .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed =}
{= without express permission from SwiftSoft. =}
{= =}
{= For more licence informations please refer to the associated =}
{= HelpFile. =}
{========================================================================}
{= $Date: 20.01.1998 - 18:00:00 $ =}
{========================================================================}
unit MMMixBlk;
{$I COMPILER.INC}
{.$DEFINE _MMDEBUG}
interface
uses
{$IFDEF WIN32}
Windows,
{$ELSE}
WinTypes,
WinProcs,
{$ENDIF}
Forms,
Messages,
Stdctrls,
ExtCtrls,
SysUtils,
Controls,
Classes,
Graphics,
MMObj,
MMObsrv,
MMUtils,
MMScale,
MMLevel,
MMSlider,
{$IFDEF BUILD_ACTIVEX}
AxCtrlsUtil,
{$ENDIF}
MMMixer,
MMMixCtl;
const
MM_SETPARENT = MM_USER + 1;
type
TMMSetParentAction = (saInsert,saInsNoRole,saRemove,saUpdate);
TMMSetParent = record
Msg : Cardinal;
Action : Cardinal;
Control : TControl;
Result : LongInt;
end;
type
TMMBlockSliderStyle = (ssWin95);
TMMBlockSliderRole = (srPan,srLeftVolume,srRightVolume);
{-- TMMCustomBlockSlider -----------------------------------------------}
TMMCustomBlockSlider = class(TMMCustomMixerSlider)
private
FStyle : TMMBlockSliderStyle;
FRole : TMMBlockSliderRole;
FIsRole : Boolean;
procedure SetStyle(Value: TMMBlockSliderStyle);
procedure SetRole(Value: TMMBlockSliderRole);
protected
procedure SetParent(Value: TWinControl); override;
procedure UpdateStyle; virtual;
{$IFDEF BUILD_ACTIVEX}
procedure MMParentWindowChanged(var M: TMessage); message MM_PARENTWINDOWCHANGED;
procedure ChangeDesigning(Value: Boolean); override;
{$ENDIF}
public
constructor Create(AOwner: TComponent); override;
protected
property Style: TMMBlockSliderStyle read FStyle write SetStyle default ssWin95;
property Role: TMMBlockSliderRole read FRole write SetRole default srPan;
property GrooveSize nodefault;
property ScalePosition nodefault;
property Logarithmic nodefault;
end;
{-- TMMMixerBlockSlider ---------------------------------------------}
TMMMixerBlockSlider = class(TMMCustomBlockSlider)
published
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnChange;
property OnTrack;
property OnTrackEnd;
property OnDrawThumb;
property OnDrawGroove;
property Style;
property Role;
property Logarithmic;
property Sensitivity;
property Enabled;
property Visible;
property Color;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabStop;
property TabOrder;
property Width;
property Height;
property Bevel;
property Groove;
property FocusAction;
property FocusColor;
property GrooveColor;
property ThumbColor;
property DisabledColor;
property HandCursor;
property Orientation;
property GrooveSize;
property ThumbWidth;
property ThumbHeight;
property ThumbStyle;
property Scale;
property ScalePosition;
property ScaleDistance;
property PicLeft;
property PicRight;
property Position;
end;
TMMBlockLevelStyle = (lsWin95);
TMMBlockLevelRole = (lrLeftLevel,lrRightLevel);
{-- TMMCustomBlockLevel ------------------------------------------------}
TMMCustomBlockLevel = class(TMMCustomLevel)
private
FStyle : TMMBlockLevelStyle;
FRole : TMMBlockLevelRole;
FIsRole : Boolean;
procedure SetStyle(Value: TMMBlockLevelStyle);
procedure SetRole(Value: TMMBlockLevelRole);
protected
procedure UpdateStyle; virtual;
procedure SetParent(Value: TWinControl); override;
{$IFDEF BUILD_ACTIVEX}
procedure MMParentWindowChanged(var M: TMessage); message MM_PARENTWINDOWCHANGED;
procedure ChangeDesigning(Value: Boolean); override;
{$ENDIF}
public
constructor Create(AOwner: TComponent); override;
protected
property Style: TMMBlockLevelStyle read FStyle write SetStyle default lsWin95;
property Role: TMMBlockLevelRole read FRole write SetRole default lrLeftLevel;
property Color nodefault;
property SpotWidth nodefault;
property Bar1Color nodefault;
property Bar2Color nodefault;
property Bar3Color nodefault;
property Inactive1Color nodefault;
property Inactive2Color nodefault;
property Inactive3Color nodefault;
property Point1 nodefault;
property Point2 nodefault;
property LogAmp nodefault;
property NumPeaks nodefault;
end;
{-- TMMMixerBlockLevel ----------------------------------------------}
TMMMixerBlockLevel = class(TMMCustomBlockLevel)
published
property OnClick;
property OnDblClick;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnGainOverflow;
property OnPcmOverflow;
property Style;
property Role;
property Align;
property Bevel;
property ParentShowHint;
property ParentColor;
property ShowHint;
property Visible;
property Color;
property Enabled;
property Kind;
property Height;
property Width;
property SpotSpace;
property SpotWidth;
property Bar1Color;
property Bar2Color;
property Bar3Color;
property Inactive1Color;
property Inactive2Color;
property Inactive3Color;
property InactiveDoted;
property ActiveDoted;
property Point1;
property Point2;
property Direction;
property BitLength;
property Channel;
property Mode;
property Gain;
property Samples;
property Sensitivy;
property LogAmp;
property NumPeaks;
property PeakSpeed;
property PeakDelay;
property DecayMode;
property Decay;
property Value;
end;
{-- TMMCustomBlockCheck ----------------------------------------------}
TMMCustomBlockCheck = class(TMMCustomMixerCheckBox)
protected
procedure SetParent(Value: TWinControl); override;
{$IFDEF BUILD_ACTIVEX}
procedure MMParentWindowChanged(var M: TMessage); message MM_PARENTWINDOWCHANGED;
procedure MMDesignModeChanged(var M: TMessage); message MM_DESIGNMODECHANGED;
public
constructor Create(AOwner: TComponent); override;
{$ENDIF}
end;
{-- TMMMixerBlockCheck -----------------------------------------------}
TMMMixerBlockCheck = class(TMMCustomBlockCheck)
published
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property AutoCaption;
property Short;
property Enabled;
property Checked;
property Caption;
property Alignment;
property Color;
property Ctl3D;
property DragCursor;
property DragMode;
property Font;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
end;
TMMBlockLabelRole = (lrLineTitle,lrPanTitle,lrVolumeTitle);
{-- TMMCustomMixerLabel ----------------------------------------------}
{$IFNDEF BUILD_ACTIVEX}
TMMCustomBlockLabel = class(TCustomLabel)
{$ELSE}
TMMCustomBlockLabel = class(TStaticText)
{$ENDIF}
private
FRole : TMMBlockLabelRole;
FIsRole: Boolean;
procedure SetRole(Value: TMMBlockLabelRole);
protected
procedure SetParent(Value: TWinControl); override;
{$IFDEF BUILD_ACTIVEX}
procedure MMParentWindowChanged(var M: TMessage); message MM_PARENTWINDOWCHANGED;
procedure MMDesignModeChanged(var M: TMessage); message MM_DESIGNMODECHANGED;
public
constructor Create(AOwner: TComponent); override;
{$ENDIF}
protected
property Role: TMMBlockLabelRole read FRole write SetRole default lrLineTitle;
end;
{-- TMMMixerBlockLabel ----------------------------------------------}
TMMMixerBlockLabel = class(TMMCustomBlockLabel)
published
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
property Role;
property Align;
property Alignment;
property AutoSize;
property Caption;
property Color;
property DragCursor;
property DragMode;
property Enabled;
property FocusControl;
property Font;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowAccelChar;
property ShowHint;
property Visible;
{$IFNDEF BUILD_ACTIVEX}
property Transparent;
property WordWrap;
{$ENDIF}
end;
EMMBlockError = class(Exception);
TMMBlockStyle = (bsWin95);
TMMMuteKind = (mkMute,mkSelect);
{-- TMMCustomMixerBlock ------------------------------------------------}
TMMCustomMixerBlock = class(TMMCustomPanel)
private
FAutoArrange: Boolean;
FAutoSize : Boolean;
FPan : TMMCustomBlockSlider;
FMute : TMMCustomBlockCheck;
FVolumeLeft : TMMCustomBlockSlider;
FVolumeRight: TMMCustomBlockSlider;
FLevelLeft : TMMCustomBlockLevel;
FLevelRight : TMMCustomBlockLevel;
FLineTitle : TMMCustomBlockLabel;
FPanTitle : TMMCustomBlockLabel;
FVolumeTitle: TMMCustomBlockLabel;
FPanCtl : TMMPanControl;
FVolumeCtl : TMMVolumeControl;
FMuteCtl : TMMMixerControl;
FConnector : TMMMixerConnector;
FPeakCtl : TMMMixerControl;
FLine : TMMAudioLine;
FObserver : TMMObserver;
FMixer : TMMCustomMixerControl;
FItem : TMMItemIndex;
FMixObserver: TMMObserver;
FStyle : TMMBlockStyle;
FRemoving : TControl;
FKDummy : TMMMuteKind;
procedure SetLine(Value: TMMAudioLine);
procedure LineNotify(Sender, Data : TObject);
procedure SetAutoArrange(Value: Boolean);
procedure SetAutoSize(Value: Boolean);
procedure SetStyle(Value: TMMBlockStyle);
procedure SetMixer(Value: TMMCustomMixerControl);
procedure MixNotify(Sender, Data: TObject);
procedure SetItem(Value: TMMItemIndex);
protected
procedure UpdateBlock; virtual;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure InsertCtl(C: TComponent); virtual;
procedure Loaded; override;
procedure ArrangeControls; virtual;
procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override;
procedure ConnectLine;
procedure DisconnectLine;
procedure ConnectControls;
procedure MMSetParent(var Msg: TMMSetParent); message MM_SETPARENT;
procedure CollectControls;
{$IFDEF BUILD_ACTIVEX}
procedure ChangeDesigning(Value: Boolean); override;
{$ENDIF}
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetMuteKind: TMMMuteKind;
property Pan: TMMCustomBlockSlider read FPan;
property Mute: TMMCustomBlockCheck read FMute;
property VolumeLeft: TMMCustomBlockSlider read FVolumeLeft;
property VolumeRight: TMMCustomBlockSlider read FVolumeRight;
property LevelLeft: TMMCustomBlockLevel read FLevelLeft;
property LevelRight: TMMCustomBlockLevel read FLevelRight;
property LineTitle: TMMCustomBlockLabel read FLineTitle;
property PanTitle: TMMCustomBlockLabel read FPanTitle;
property VolumeTitle: TMMCustomBlockLabel read FVolumeTitle;
protected
property Line: TMMAudioLine read FLine write SetLine;
property AutoArrange : Boolean read FAutoArrange write SetAutoArrange default True;
property AutoSize : Boolean read FAutoSize write SetAutoSize default True;
property Style: TMMBlockStyle read FStyle write SetStyle default bsWin95;
property Mixer: TMMCustomMixerControl read FMixer write SetMixer;
property Item: TMMItemIndex read FItem write SetItem default NoItem;
property MuteKind: TMMMuteKind read GetMuteKind write FKDummy stored False;
end;
{-- TMMMixerBlock ------------------------------------------------------}
TMMMixerBlock = class(TMMCustomMixerBlock)
published
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnResize;
{$IFDEF WIN32}
property OnStartDrag;
{$ENDIF}
property Align;
property Bevel;
property DragCursor;
property DragMode;
property Enabled;
property Color;
property Ctl3D;
property Font;
property ParentColor;
property ParentCtl3D;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
property Line;
property AutoArrange;
property AutoSize;
property Style;
property Mixer;
property Item;
property MuteKind;
end;
implementation
const
SpkLeftBmp = 'SPK_LEFT';
SpkRightBmp = 'SPK_RIGHT';
{$IFDEF DELPHI2}
const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -