1936 lines
56 KiB
ObjectPascal
1936 lines
56 KiB
ObjectPascal
{-----------------------------------------------------------------------------
|
|
The contents of this file are subject to the Mozilla Public License
|
|
Version 1.1 (the "License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
http://www.mozilla.org/MPL/MPL-1.1.html
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
|
|
the specific language governing rights and limitations under the License.
|
|
|
|
The Original Code is: JvBreatheSkin.PAS, released on 2001-02-28.
|
|
|
|
The Initial Developer of the Original Code is Sébastien Buysse [sbuysse att buypin dott com]
|
|
Portions created by Sébastien Buysse are Copyright (C) 2001 Sébastien Buysse.
|
|
All Rights Reserved.
|
|
|
|
Contributor(s): Michael Beck [mbeck att bigfoot dott com].
|
|
|
|
Last Modified: 2000-02-28
|
|
|
|
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
|
|
located at http://jvcl.sourceforge.net
|
|
|
|
Known Issues:
|
|
-----------------------------------------------------------------------------}
|
|
|
|
{$I JVCL.INC}
|
|
|
|
unit JvBreatheSkin;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ExtCtrls, Registry, IniFiles, jpeg, Menus, JvBehaviorLabel,
|
|
JvSlider, JvLabel, JvPcx, JvImage, JvTypes, JVCLVer;
|
|
|
|
type
|
|
TJvBreatheLabel = class(TPersistent)
|
|
private
|
|
FLabel: TJvLabel;
|
|
FLeft: Integer;
|
|
FTop: Integer;
|
|
FWidth: Integer;
|
|
FHeight: Integer;
|
|
FCaption: string;
|
|
procedure SetCaption(const Value: string);
|
|
procedure SetHeight(const Value: Integer);
|
|
procedure SetLeft(const Value: Integer);
|
|
procedure SetTop(const Value: Integer);
|
|
procedure SetWidth(const Value: Integer);
|
|
function GetColor: TColor;
|
|
function GetFont: TFont;
|
|
function GetTransparent: Boolean;
|
|
procedure SetColor(const Value: TColor);
|
|
procedure SetFont(const Value: TFont);
|
|
procedure SetTransparent(const Value: Boolean);
|
|
function GetHint: string;
|
|
function GetShowHint: Boolean;
|
|
procedure SetHint(const Value: string);
|
|
procedure SetShowHint(const Value: Boolean);
|
|
function GetPopupMenu: TPopupMenu;
|
|
procedure SetPopupMenu(const Value: TPopupMenu);
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
published
|
|
property Left: Integer read FLeft write SetLeft;
|
|
property Top: Integer read FTop write SetTop;
|
|
property Width: Integer read FWidth write SetWidth;
|
|
property Height: Integer read FHeight write SetHeight;
|
|
property Caption: string read FCaption write SetCaption;
|
|
property Font: TFont read GetFont write SetFont;
|
|
property Color: TColor read GetColor write SetColor;
|
|
property Transparent: Boolean read GetTransparent write SetTransparent;
|
|
property Hint: string read GetHint write SetHint;
|
|
property ShowHint: Boolean read GetShowHint write SetShowHint;
|
|
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
|
|
end;
|
|
|
|
TJvBreatheScrollLabel = class(TPersistent)
|
|
private
|
|
FLabel: TJvBehaviorLabel;
|
|
FHeight: Integer;
|
|
FTop: Integer;
|
|
FWidth: Integer;
|
|
FLeft: Integer;
|
|
FCaption: string;
|
|
function GetColor: TColor;
|
|
function GetDirection: TJvLabelScrollDirection;
|
|
function GetFont: TFont;
|
|
function GetHint: string;
|
|
function GetInterval: Cardinal;
|
|
// function GetNoGrap: Boolean;
|
|
function GetScrolling: Boolean;
|
|
function GetShowHint: Boolean;
|
|
function GetTransparent: Boolean;
|
|
procedure SetCaption(const Value: string);
|
|
procedure SetColor(const Value: TColor);
|
|
procedure SetDirection(const Value: TJvLabelScrollDirection);
|
|
procedure SetFont(const Value: TFont);
|
|
procedure SetHeight(const Value: Integer);
|
|
procedure SetHint(const Value: string);
|
|
procedure SetInterval(const Value: Cardinal);
|
|
procedure SetLeft(const Value: Integer);
|
|
// procedure SetNoGrap(const Value: Boolean);
|
|
procedure SetScrolling(const Value: Boolean);
|
|
procedure SetShowHint(const Value: Boolean);
|
|
procedure SetTop(const Value: Integer);
|
|
procedure SetTransparent(const Value: Boolean);
|
|
procedure SetWidth(const Value: Integer);
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
published
|
|
property Left: Integer read FLeft write SetLeft;
|
|
property Top: Integer read FTop write SetTop;
|
|
property Width: Integer read FWidth write SetWidth;
|
|
property Height: Integer read FHeight write SetHeight;
|
|
property Caption: string read FCaption write SetCaption;
|
|
property Font: TFont read GetFont write SetFont;
|
|
property Color: TColor read GetColor write SetColor;
|
|
property Transparent: Boolean read GetTransparent write SetTransparent;
|
|
property Hint: string read GetHint write SetHint;
|
|
property ShowHint: Boolean read GetShowHint write SetShowHint;
|
|
property Scrolling: Boolean read GetScrolling write SetScrolling;
|
|
property ScrollDirection: TJvLabelScrollDirection read GetDirection write SetDirection;
|
|
property ScrollInterval: Cardinal read GetInterval write SetInterval;
|
|
// property NoGrap: Boolean read GetNoGrap write SetNoGrap;
|
|
end;
|
|
|
|
TJvBreatheButton = class(TPersistent)
|
|
private
|
|
FButton: TJvImage;
|
|
function GetEnabled: Boolean;
|
|
function GetHint: string;
|
|
function GetShowHint: Boolean;
|
|
procedure SetEnabled(const Value: Boolean);
|
|
procedure SetHint(const Value: string);
|
|
procedure SetShowHint(const Value: Boolean);
|
|
function GetMouseDown: TMouseEvent;
|
|
function GetMouseMove: TMouseMoveEvent;
|
|
function GetOnClick: TNotifyEvent;
|
|
function GetOnDblClick: TNotifyEvent;
|
|
function GetPopupMenu: TPopupMenu;
|
|
function GetVisible: Boolean;
|
|
procedure SetMouseDown(const Value: TMouseEvent);
|
|
procedure SetMouveMove(const Value: TMouseMoveEvent);
|
|
procedure SetOnClick(const Value: TNotifyEvent);
|
|
procedure SetOnDblClick(const Value: TNotifyEvent);
|
|
procedure SetPopupMenu(const Value: TPopupMenu);
|
|
procedure SetVisible(const Value: Boolean);
|
|
function GetMouseUp: TMouseEvent;
|
|
procedure SetMouseUp(const Value: TMouseEvent);
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
published
|
|
property Hint: string read GetHint write SetHint;
|
|
property ShowHint: Boolean read GetShowHint write SetShowHint;
|
|
property Enabled: Boolean read GetEnabled write SetEnabled;
|
|
property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu;
|
|
property Visible: Boolean read GetVisible write SetVisible;
|
|
property OnMouseMove: TMouseMoveEvent read GetMouseMove write SetMouveMove;
|
|
property OnMouseDown: TMouseEvent read GetMouseDown write SetMouseDown;
|
|
property OnMouseUp: TMouseEvent read GetMouseUp write SetMouseUp;
|
|
property OnClick: TNotifyEvent read GetOnClick write SetOnClick;
|
|
property OnDblClick: TNotifyEvent read GetOnDblClick write SetOnDblClick;
|
|
end;
|
|
|
|
TJvBreatheButtons = class(TPersistent)
|
|
private
|
|
FPlaylist: TJvBreatheButton;
|
|
FPrev: TJvBreatheButton;
|
|
FMove: TJvBreatheButton;
|
|
FPlay: TJvBreatheButton;
|
|
FNext: TJvBreatheButton;
|
|
FExit: TJvBreatheButton;
|
|
FOptions: TJvBreatheButton;
|
|
FOpen: TJvBreatheButton;
|
|
FPause: TJvBreatheButton;
|
|
FId3: TJvBreatheButton;
|
|
FForward: TJvBreatheButton;
|
|
FRewind: TJvBreatheButton;
|
|
FStop: TJvBreatheButton;
|
|
FMinimize: TJvBreatheButton;
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
destructor Destroy; override;
|
|
published
|
|
property Play: TJvBreatheButton read FPlay write FPlay;
|
|
property Stop: TJvBreatheButton read FStop write FStop;
|
|
property Pause: TJvBreatheButton read FPause write FPause;
|
|
property Next: TJvBreatheButton read FNext write FNext;
|
|
property Previous: TJvBreatheButton read FPrev write FPrev;
|
|
property Open: TJvBreatheButton read FOpen write FOpen;
|
|
property Exit: TJvBreatheButton read FExit write FExit;
|
|
property Move: TJvBreatheButton read FMove write FMove;
|
|
property Minimize: TJvBreatheButton read FMinimize write FMinimize;
|
|
property Id3: TJvBreatheButton read FId3 write FId3;
|
|
// (rom) Forward is not a good name.
|
|
property Forward: TJvBreatheButton read FForward write FForward;
|
|
property Rewind: TJvBreatheButton read FRewind write FRewind;
|
|
property Options: TJvBreatheButton read FOptions write FOptions;
|
|
property Playlist: TJvBreatheButton read FPlaylist write FPlaylist;
|
|
end;
|
|
|
|
TJvBreatheLabels = class(TPersistent)
|
|
private
|
|
FStatus: TJvBreatheLabel;
|
|
FBitRate: TJvBreatheLabel;
|
|
FTime: TJvBreatheLabel;
|
|
FFrequency: TJvBreatheLabel;
|
|
FSongName: TJvBreatheScrollLabel;
|
|
FTotalInfo: TJvBreatheLabel;
|
|
FTotalTime: TJvBreatheLabel;
|
|
FLayer: TJvBreatheLabel;
|
|
FVersion: TJvBreatheLabel;
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
destructor Destroy; override;
|
|
published
|
|
property Status: TJvBreatheLabel read FStatus write FStatus;
|
|
property CurrentTime: TJvBreatheLabel read FTime write FTime;
|
|
property Layer: TJvBreatheLabel read FLayer write FLayer;
|
|
property BitRate: TJvBreatheLabel read FBitRate write FBitRate;
|
|
property Frequency: TJvBreatheLabel read FFrequency write FFrequency;
|
|
property Version: TJvBreatheLabel read FVersion write FVersion;
|
|
property SongName: TJvBreatheScrollLabel read FSongName write FSongName;
|
|
property TotalTime: TJvBreatheLabel read FTotalTime write FTotalTime;
|
|
property TotalInfo: TJvBreatheLabel read FTotalInfo write FTotalInfo;
|
|
end;
|
|
|
|
TJvBreatheOption = class(TPersistent)
|
|
private
|
|
FAutoSize: Boolean;
|
|
FOnChange: TNotifyEvent;
|
|
FAutoMove: Boolean;
|
|
FAutoRegion: Boolean;
|
|
FEasyMove: Boolean;
|
|
procedure SetAutoSize(const Value: Boolean);
|
|
procedure SetAutoMove(const Value: Boolean);
|
|
procedure SetAutoRegion(const Value: Boolean);
|
|
procedure SetEasyMove(const Value: Boolean);
|
|
protected
|
|
property OnChange: TNotifyEvent read FOnChange write FOnChange;
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
published
|
|
property AutoSize: Boolean read FAutoSize write SetAutoSize default True;
|
|
property AutoMove: Boolean read FAutoMove write SetAutoMove default True;
|
|
property AutoRegion: Boolean read FAutoRegion write SetAutoRegion default False;
|
|
property EasyMove: Boolean read FEasyMove write SetEasyMove default False;
|
|
end;
|
|
|
|
TJvBreatheVolume = class(TPersistent)
|
|
private
|
|
FSlider: TJvSlider;
|
|
function GetMaximum: Integer;
|
|
function GetPosition: Integer;
|
|
procedure SetMaximum(const Value: Integer);
|
|
procedure SetPosition(const Value: Integer);
|
|
function GetHint: string;
|
|
function GetShow: Boolean;
|
|
procedure SetHint(const Value: string);
|
|
procedure SetShow(const Value: Boolean);
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
destructor Destroy; override;
|
|
published
|
|
property Maximum: Integer read GetMaximum write SetMaximum;
|
|
property Position: Integer read GetPosition write SetPosition;
|
|
property Hint: string read GetHint write SetHint;
|
|
property ShowHint: Boolean read GetShow write SetShow;
|
|
end;
|
|
|
|
TJvBreathePosition = class(TPersistent)
|
|
private
|
|
FSlider: TJvSlider;
|
|
function GetMaximum: Integer;
|
|
function GetPosition: Integer;
|
|
procedure SetMaximum(const Value: Integer);
|
|
procedure SetPosition(const Value: Integer);
|
|
function GetHint: string;
|
|
procedure SetHint(const Value: string);
|
|
function GetShow: Boolean;
|
|
procedure SetShow(const Value: Boolean);
|
|
public
|
|
constructor Create(AOwner: TComponent);
|
|
destructor Destroy; override;
|
|
published
|
|
property Maximum: Integer read GetMaximum write SetMaximum;
|
|
property Position: Integer read GetPosition write SetPosition;
|
|
property Hint: string read GetHint write SetHint;
|
|
property ShowHint: Boolean read GetShow write SetShow;
|
|
end;
|
|
|
|
TJvBreatheSkin = class(TWinControl)
|
|
private
|
|
// Internal data
|
|
FImg: TImage;
|
|
FSkin: TFileName;
|
|
FBOptions: TJvBreatheOption;
|
|
FLabels: TJvBreatheLabels;
|
|
FTAbout: TStringList;
|
|
FLastX: Integer;
|
|
FLastY: Integer;
|
|
|
|
// Sliders
|
|
FVolume: TJvBreatheVolume;
|
|
FPosition: TJvBreathePosition;
|
|
|
|
// Images
|
|
FBack: TBitmap;
|
|
FDeact: TBitmap;
|
|
FInfo: TBItmap;
|
|
FMask: TBitmap;
|
|
FOver: TBitmap;
|
|
FPosRuler: TBitmap;
|
|
FPosThumb: TBitmap;
|
|
FVolRuler: TBitmap;
|
|
FVolThumb: TBitmap;
|
|
FOnMoveDown: TMouseEvent;
|
|
FOnMoveMove: TMouseMoveEvent;
|
|
FButtons: TJvBreatheButtons;
|
|
FOnSkinLoaded: TNotifyEvent;
|
|
FAboutJVCL: TJVCLAboutInfo;
|
|
|
|
// Methods
|
|
procedure LoadDefault;
|
|
procedure InitBtn(Value: TJvImage);
|
|
procedure SetSkin(const Value: TFileName);
|
|
procedure LoadSkin(Value: string);
|
|
procedure InitAllBtn;
|
|
procedure DecoupeOver(Value: TJvImage);
|
|
procedure DecoupeOverAll;
|
|
procedure LoadBtn(Ini: TIniFile; Value: TJvImage; Prefix: string);
|
|
procedure LoadSlider(Ini: TIniFile; Value: TJvSlider; Prefix: string);
|
|
procedure LoadLabel(Ini: TIniFile; Value: TJvBreatheLabel; Prefix: string); overload;
|
|
procedure LoadLabel(Ini: TIniFile; Value: TJvBreatheScrollLabel; Prefix: string); overload;
|
|
procedure OptionsChanged(Sender: TObject);
|
|
function GetOnExit: TNotifyEvent;
|
|
function GetOnForward: TNotifyEvent;
|
|
function GetOnID3: TNotifyEvent;
|
|
function GetOnMinimize: TNotifyEvent;
|
|
function GetOnMove: TNotifyEvent;
|
|
function GetOnNext: TNotifyEvent;
|
|
function GetOnOpen: TNotifyEvent;
|
|
function GetOnOptions: TNotifyEvent;
|
|
function GetOnPause: TNotifyEvent;
|
|
function GetOnPlay: TNotifyEvent;
|
|
function GetOnPlaylist: TNotifyEvent;
|
|
function GetOnPosition: TNotifyEvent;
|
|
function GetOnPrevious: TNotifyEvent;
|
|
function GetOnRewind: TNotifyEvent;
|
|
function GetOnStop: TNotifyEvent;
|
|
function GetOnVolume: TNotifyEvent;
|
|
procedure SetOnExit(const Value: TNotifyEvent);
|
|
procedure SetOnForward(const Value: TNotifyEvent);
|
|
procedure SetOnID3(const Value: TNotifyEvent);
|
|
procedure SetOnMinimize(const Value: TNotifyEvent);
|
|
procedure SetOnMove(const Value: TNotifyEvent);
|
|
procedure SetOnNext(const Value: TNotifyEvent);
|
|
procedure SetOnOpen(const Value: TNotifyEvent);
|
|
procedure SetOnOptions(const Value: TNotifyEvent);
|
|
procedure SetOnPause(const Value: TNotifyEvent);
|
|
procedure SetOnPlay(const Value: TNotifyEvent);
|
|
procedure SetOnPlaylist(const Value: TNotifyEvent);
|
|
procedure SetOnPosition(const Value: TNotifyEvent);
|
|
procedure SetOnPrevious(const Value: TNotifyEvent);
|
|
procedure SetOnRewind(const Value: TNotifyEvent);
|
|
procedure SetOnStop(const Value: TNotifyEvent);
|
|
procedure SetOnVolume(const Value: TNotifyEvent);
|
|
function GetOnPosChanging: TNotifyEvent;
|
|
function GetOnVolChanging: TNotifyEvent;
|
|
procedure SetOnPosChanging(const Value: TNotifyEvent);
|
|
procedure SetOnVolChanging(const Value: TNotifyEvent);
|
|
function GetCurrentTime: TNotifyEvent;
|
|
function GetOnBitRate: TNotifyEvent;
|
|
function GetOnFrequency: TNotifyEvent;
|
|
function GetOnLayer: TNotifyEvent;
|
|
function GetOnSongName: TNotifyEvent;
|
|
function GetOnStatus: TNotifyEvent;
|
|
function GetOnTotalInfo: TNotifyEvent;
|
|
function GetOnTotalTime: TNotifyEvent;
|
|
function GetOnVersion: TNotifyEvent;
|
|
procedure SetCurrentTime(const Value: TNotifyEvent);
|
|
procedure SetOnBitRate(const Value: TNotifyEvent);
|
|
procedure SetOnFrequency(const Value: TNotifyEvent);
|
|
procedure SetOnLayer(const Value: TNotifyEvent);
|
|
procedure SetOnSongName(const Value: TNotifyEvent);
|
|
procedure SetOnStatus(const Value: TNotifyEvent);
|
|
procedure SetOnTotalInfo(const Value: TNotifyEvent);
|
|
procedure SetOnTotalTime(const Value: TNotifyEvent);
|
|
procedure SetOnVersion(const Value: TNotifyEvent);
|
|
procedure MoveFormDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure MoveFormMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
procedure EasyFormDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
procedure EasyFormMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
public
|
|
constructor Create(AOwner: TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property AboutJVCL: TJVCLAboutInfo read FAboutJVCL write FAboutJVCL stored False;
|
|
property SkinFile: TFileName read FSkin write SetSkin;
|
|
property Options: TJvBreatheOption read FBOptions write FBOptions;
|
|
property Labels: TJvBreatheLabels read FLabels write FLabels;
|
|
property Volume: TJvBreatheVolume read FVolume write FVolume;
|
|
property Buttons: TJvBreatheButtons read FButtons write FButtons;
|
|
property Position: TJvBreathePosition read FPosition write FPosition;
|
|
property OnPlayClick: TNotifyEvent read GetOnPlay write SetOnPlay;
|
|
property OnStopClick: TNotifyEvent read GetOnStop write SetOnStop;
|
|
property OnPauseClick: TNotifyEvent read GetOnPause write SetOnPause;
|
|
property OnNextClick: TNotifyEvent read GetOnNext write SetOnNext;
|
|
property OnPreviousClick: TNotifyEvent read GetOnPrevious write SetOnPrevious;
|
|
property OnForwardClick: TNotifyEvent read GetOnForward write SetOnForward;
|
|
property OnRewindClick: TNotifyEvent read GetOnRewind write SetOnRewind;
|
|
property OnOptionsClick: TNotifyEvent read GetOnOptions write SetOnOptions;
|
|
property OnID3Click: TNotifyEvent read GetOnID3 write SetOnID3;
|
|
property OnPlaylistClick: TNotifyEvent read GetOnPlaylist write SetOnPlaylist;
|
|
property OnMinimizeClick: TNotifyEvent read GetOnMinimize write SetOnMinimize;
|
|
property OnExitClick: TNotifyEvent read GetOnExit write SetOnExit;
|
|
property OnMoveClick: TNotifyEvent read GetOnMove write SetOnMove;
|
|
property OnMoveDown: TMouseEvent read FOnMoveDown write FOnMoveDown;
|
|
property OnMoveMove: TMouseMoveEvent read FOnMoveMove write FOnMoveMove;
|
|
property OnOpenClick: TNotifyEvent read GetOnOpen write SetOnOpen;
|
|
property OnVolumeChanged: TNotifyEvent read GetOnVolume write SetOnVolume;
|
|
property OnPositionChanged: TNotifyEvent read GetOnPosition write SetOnPosition;
|
|
property OnVolumeChanging: TNotifyEvent read GetOnVolChanging write SetOnVolChanging;
|
|
property OnPositionChanging: TNotifyEvent read GetOnPosChanging write SetOnPosChanging;
|
|
property OnStatusClick: TNotifyEvent read GetOnStatus write SetOnStatus;
|
|
property OnCurrenTTimeClick: TNotifyEvent read GetCurrentTime write SetCurrentTime;
|
|
property OnLayerClick: TNotifyEvent read GetOnLayer write SetOnLayer;
|
|
property OnBitRateClick: TNotifyEvent read GetOnBitRate write SetOnBitRate;
|
|
property OnFrequencyClick: TNotifyEvent read GetOnFrequency write SetOnFrequency;
|
|
property OnVersionClick: TNotifyEvent read GetOnVersion write SetOnVersion;
|
|
property OnSongNameClick: TNotifyEvent read GetOnSongName write SetOnSongName;
|
|
property OnTotalTimeClick: TNotifyEvent read GetOnTotalTime write SetOnTotalTime;
|
|
property OnTotalInfoClick: TNotifyEvent read GetOnTotalInfo write SetOnTotalInfo;
|
|
procedure ShowAbout;
|
|
procedure Activate;
|
|
procedure Deactivate;
|
|
property PopupMenu;
|
|
property OnSkinLoaded: TNotifyEvent read FOnSkinLoaded write FOnSkinLoaded;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
JvFunctions;
|
|
|
|
{$R JvBreatheSkin.res}
|
|
|
|
resourcestring
|
|
RC_AboutCaption = 'About';
|
|
|
|
RC_PrefixSongtitle = 'songtitle';
|
|
RC_PrefixTotalInfo = 'totalinfo';
|
|
RC_PrefixTotalTime = 'totaltime';
|
|
RC_PrefixTime = 'time';
|
|
RC_PrefixInfo = 'info';
|
|
RC_PrefixLayer = 'layer';
|
|
RC_PrefixBitRate = 'BitRate';
|
|
RC_PrefixFrequency = 'frequency';
|
|
RC_PrefixVersion = 'versiontext';
|
|
RC_PrefixVolbar = 'volbar';
|
|
RC_PrefixTbbar = 'tbbar';
|
|
RC_PrefixExit = 'exit';
|
|
RC_PrefixMove = 'move';
|
|
RC_PrefixMinimize = 'mini';
|
|
RC_PrefixOption = 'option';
|
|
RC_PrefixOpen = 'open';
|
|
RC_PrefixId3 = 'id3';
|
|
RC_PrefixPlaylist = 'plist';
|
|
RC_PrefixNext = 'next';
|
|
RC_PrefixForward = 'fwd';
|
|
RC_PrefixPlay = 'play';
|
|
RC_PrefixPause = 'pause';
|
|
RC_PrefixStop = 'stop';
|
|
RC_PrefixRewind = 'rev';
|
|
RC_PrefixPrevious = 'prev';
|
|
|
|
RC_Section = 'main';
|
|
|
|
RC_SufixTransp = 'transparent';
|
|
RC_SufixTop = 'Top';
|
|
RC_SufixLeft = 'Left';
|
|
RC_SufixBKColor = 'bkcolor';
|
|
RC_SufixColor = 'color';
|
|
RC_SufixFontSize = 'fontsize';
|
|
RC_SufixFont = 'font';
|
|
RC_SufixHeight = 'Height';
|
|
RC_SufixWidth = 'Width';
|
|
RC_SufixVertical = 'vertical';
|
|
|
|
RC_InfoFile = 'info.txt';
|
|
|
|
RC_BmpThumb = 'volthumb.bmp';
|
|
RC_BmpVolRuler = 'volruler.bmp';
|
|
RC_BmpPosThumb = 'posthumb.bmp';
|
|
RC_BmpPosRuler = 'posruler.bmp';
|
|
RC_BmpOver = 'over.bmp';
|
|
RC_BmpMask = 'mask.bmp';
|
|
RC_BmpInfo = 'info.bmp';
|
|
RC_BmpDeact = 'deact.bmp';
|
|
RC_BmpBack = 'back.bmp';
|
|
|
|
RC_DefTotalInfo = 'Info';
|
|
RC_DefTotalTime = '00:00';
|
|
RC_DefSongName = 'none';
|
|
RC_DefVersion = '1.0';
|
|
RC_DefNothing = '-';
|
|
RC_DefStatus = 'Status';
|
|
|
|
//=== TJvBreatheSkin =========================================================
|
|
|
|
constructor TJvBreatheSkin.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
FSkin := '';
|
|
FBOptions := TJvBreatheOption.Create(Self);
|
|
FBOptions.OnChange := OptionsChanged;
|
|
FTAbout := TStringList.Create;
|
|
|
|
// enable painting ;)
|
|
|
|
Parent := TWinControl(AOwner);
|
|
|
|
FImg := TImage.Create(Self);
|
|
FImg.AutoSize := True;
|
|
FImg.Parent := Self;
|
|
FImg.Left := 0;
|
|
FImg.Top := 0;
|
|
FImg.OnMouseDown := EasyFormDown;
|
|
FImg.OnMouseMove := EasyFormMove;
|
|
|
|
FLabels := TJvBreatheLabels.Create(Self);
|
|
FButtons := TJvBreatheButtons.Create(Self);
|
|
FButtons.Move.OnMouseMove := MoveFormMove;
|
|
FButtons.Move.OnMouseDown := MoveFormDown;
|
|
|
|
// Sliders
|
|
FVolume := TJvBreatheVolume.Create(Self);
|
|
FVolume.FSlider.Left := 0;
|
|
FVolume.FSlider.Top := 0;
|
|
FVolume.FSlider.Width := 0;
|
|
FVolume.FSlider.Height := 0;
|
|
FVolume.Maximum := 100;
|
|
FVolume.Position := 100;
|
|
|
|
FPosition := TJvBreathePosition.Create(Self);
|
|
FPosition.FSlider.Left := 0;
|
|
FPosition.FSlider.Top := 0;
|
|
FPosition.FSlider.Width := 0;
|
|
FPosition.FSlider.Height := 0;
|
|
FPosition.FSlider.Parent := Self;
|
|
|
|
// Images
|
|
FBack := TBitmap.Create;
|
|
FDeact := TBitmap.Create;
|
|
FInfo := TBitmap.Create;
|
|
FMask := TBitmap.Create;
|
|
FOver := TBitmap.Create;
|
|
FPosRuler := TBitmap.Create;
|
|
FPosThumb := TBitmap.Create;
|
|
FVolRuler := TBitmap.Create;
|
|
FVolThumb := TBitmap.Create;
|
|
|
|
// Labels
|
|
FLabels.Status.Caption := RC_DefStatus;
|
|
FLabels.CurrentTime.Caption := RC_DefTotalTime;
|
|
FLabels.Layer.Caption := RC_DefNothing;
|
|
FLabels.BitRate.Caption := RC_DefNothing;
|
|
FLabels.Frequency.Caption := RC_DefNothing;
|
|
FLabels.Version.Caption := RC_DefVersion;
|
|
FLabels.SongName.Caption := RC_DefSongName;
|
|
FLabels.TotalTime.Caption := RC_DefTotalTime;
|
|
FLabels.TotalInfo.Caption := RC_DefTotalInfo;
|
|
|
|
// Load default design
|
|
InitAllBtn;
|
|
LoadDefault;
|
|
end;
|
|
|
|
destructor TJvBreatheSkin.Destroy;
|
|
var
|
|
h: THandle;
|
|
begin
|
|
try
|
|
// Reset the region of the window if not destroying
|
|
if not (csDestroying in GetParentForm(TControl(Self)).ComponentState) then
|
|
begin
|
|
// Enable Caption
|
|
h := GetParentForm(TControl(Self)).Handle;
|
|
SetWindowLong(h, GWL_STYLE, GetWindowLong(h, GWL_STYLE) or WS_CAPTION);
|
|
|
|
// Use form region
|
|
SetWindowRgn(h, 0, True);
|
|
end;
|
|
except
|
|
end;
|
|
|
|
FBack.Free;
|
|
FDeact.Free;
|
|
FInfo.Free;
|
|
FMask.Free;
|
|
FOver.Free;
|
|
FPosRuler.Free;
|
|
FPosThumb.Free;
|
|
FVolRuler.Free;
|
|
FVolThumb.Free;
|
|
|
|
FImg.Free;
|
|
FVolume.Free;
|
|
FPosition.Free;
|
|
FBOptions.Free;
|
|
FLabels.Free;
|
|
FTAbout.Free;
|
|
FButtons.Free;
|
|
|
|
inherited Destroy;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadDefault;
|
|
var
|
|
res: TResourceStream;
|
|
buf: array [0..255] of Char;
|
|
st: string;
|
|
|
|
procedure LoadFromRes(bmp: TBitmap; Value: string);
|
|
var
|
|
jpeg: TJpegImage;
|
|
r: TResourceStream;
|
|
begin
|
|
r := TResourceStream.Create(hInstance, Value, RT_RCDATA);
|
|
jpeg := TJPegImage.Create;
|
|
jpeg.LoadFromStream(r);
|
|
|
|
bmp.Assign(jpeg);
|
|
|
|
r.Free;
|
|
jpeg.Free;
|
|
end;
|
|
|
|
procedure LoadFromResPcx(bmp: TBitmap; Value: string);
|
|
var
|
|
pcx: TJvPcx;
|
|
r: TResourceStream;
|
|
begin
|
|
r := TResourceStream.Create(hInstance, Value, RT_RCDATA);
|
|
pcx := TJvPcx.Create;
|
|
pcx.LoadFromStream(r);
|
|
|
|
bmp.Assign(pcx);
|
|
|
|
r.Free;
|
|
pcx.Free;
|
|
end;
|
|
|
|
begin
|
|
// Load About text
|
|
res := TResourceStream.Create(hInstance, 'infot', RT_RCDATA);
|
|
FTAbout.LoadFromStream(res);
|
|
res.Free;
|
|
|
|
LoadFromRes(FBack, 'back');
|
|
LoadFromRes(FDeact, 'deact');
|
|
LoadFromRes(FInfo, 'info');
|
|
LoadFromRes(FPosRuler, 'posruler');
|
|
LoadFromRes(FPosThumb, 'posthumb');
|
|
LoadFromRes(FVolRuler, 'volruler');
|
|
LoadFromRes(FVolThumb, 'volthumb');
|
|
|
|
LoadFromResPcx(FOver, 'over');
|
|
LoadFromResPcx(FMask, 'mask');
|
|
|
|
// assign back picture
|
|
FImg.Picture.Assign(FBack);
|
|
Width := FImg.Width;
|
|
Height := FImg.Height;
|
|
|
|
// load default skin
|
|
GetTempPath(255, buf);
|
|
st := buf;
|
|
if st[Length(st)] <> '\' then
|
|
st := st + '\';
|
|
|
|
res := TResourceStream.Create(hInstance, 'main', RT_RCDATA);
|
|
res.SaveToFile(st + '1.Ini');
|
|
LoadSkin(st + '1.Ini');
|
|
DeleteFile(st + '1.Ini');
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.InitBtn(Value: TJvImage);
|
|
begin
|
|
Value.Left := 0;
|
|
Value.Top := 0;
|
|
Value.Width := 0;
|
|
Value.Height := 0;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.InitAllBtn;
|
|
begin
|
|
InitBtn(FButtons.FPlay.FButton);
|
|
InitBtn(FButtons.FStop.FButton);
|
|
InitBtn(FButtons.FPause.FButton);
|
|
InitBtn(FButtons.FNext.FButton);
|
|
InitBtn(FButtons.FPrev.FButton);
|
|
InitBtn(FButtons.FOpen.FButton);
|
|
InitBtn(FButtons.FExit.FButton);
|
|
InitBtn(FButtons.FMove.FButton);
|
|
InitBtn(FButtons.FMinimize.FButton);
|
|
InitBtn(FButtons.FId3.FButton);
|
|
InitBtn(FButtons.FForward.FButton);
|
|
InitBtn(FButtons.FRewind.FButton);
|
|
InitBtn(FButtons.FOptions.FButton);
|
|
InitBtn(FButtons.FPlaylist.FButton);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetSkin(const Value: TFileName);
|
|
var
|
|
Path: string;
|
|
|
|
procedure LoadFromRes(bmp: TBitmap; Value: string);
|
|
var
|
|
jpeg: TJpegImage;
|
|
r: TResourceStream;
|
|
begin
|
|
r := TResourceStream.Create(HInstance, Value, RT_RCDATA);
|
|
jpeg := TJPegImage.Create;
|
|
jpeg.LoadFromStream(r);
|
|
|
|
bmp.Assign(jpeg);
|
|
|
|
r.Free;
|
|
jpeg.Free;
|
|
end;
|
|
|
|
begin
|
|
FSkin := Value;
|
|
if FSkin <> '' then
|
|
begin
|
|
// Load images
|
|
Path := ExtractFilePath(Value);
|
|
if FileExists(Path + RC_BmpBack) then
|
|
FBack.LoadFromFile(Path + RC_BmpBack)
|
|
else
|
|
FBack.Assign(nil);
|
|
if FileExists(Path + RC_BmpDeact) then
|
|
FDeact.LoadFromFile(Path + RC_BmpDeact)
|
|
else
|
|
FDeact.Assign(nil);
|
|
if FileExists(Path + RC_BmpInfo) then
|
|
FInfo.LoadFromFile(Path + RC_BmpInfo)
|
|
else
|
|
FInfo.Assign(nil);
|
|
if FileExists(Path + RC_BmpMask) then
|
|
FMask.LoadFromFile(Path + RC_BmpMask)
|
|
else
|
|
FMask.Assign(nil);
|
|
if FileExists(Path + RC_BmpOver) then
|
|
FOver.LoadFromFile(Path + RC_BmpOver)
|
|
else
|
|
FOver.Assign(nil);
|
|
|
|
if FileExists(Path + RC_BmpPosRuler) then
|
|
FPosRuler.LoadFromFile(Path + RC_BmpPosRuler)
|
|
else
|
|
LoadFromRes(FPosRuler, 'posruler');
|
|
if FileExists(Path + RC_BmpPosThumb) then
|
|
FPosThumb.LoadFromFile(Path + RC_BmpPosThumb)
|
|
else
|
|
LoadFromRes(FPosThumb, 'posthumb');
|
|
if FileExists(Path + RC_BmpVolRuler) then
|
|
FVolRuler.LoadFromFile(Path + RC_BmpVolRuler)
|
|
else
|
|
LoadFromRes(FVolRuler, 'volruler');
|
|
if FileExists(Path + RC_BmpThumb) then
|
|
FVolThumb.LoadFromFile(Path + RC_BmpThumb)
|
|
else
|
|
LoadFromRes(FVolThumb, 'volthumb');
|
|
|
|
// Assign background
|
|
FImg.Picture.Bitmap.Assign(FBack);
|
|
|
|
if FileExists(Path + RC_InfoFile) then
|
|
FTAbout.LoadFromFile(Path + RC_InfoFile)
|
|
else
|
|
FTAbout.Clear;
|
|
|
|
// if AutoSize
|
|
if FBOptions.AutoSize then
|
|
begin
|
|
Self.Width := FImg.Width;
|
|
Self.Height := FImg.Height;
|
|
end;
|
|
|
|
// Load Ini file
|
|
LoadSkin(FSkin);
|
|
end
|
|
else
|
|
LoadDefault;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.DecoupeOver(Value: TJvImage);
|
|
var
|
|
src: TRect;
|
|
bmp: TBitmap;
|
|
begin
|
|
src.Left := Value.Left;
|
|
src.Top := Value.Top;
|
|
src.Right := Value.Left + Value.Width;
|
|
src.Bottom := Value.Top + Value.Height;
|
|
|
|
bmp := TBItmap.Create;
|
|
bmp.Width := Value.Width;
|
|
bmp.Height := Value.Height;
|
|
bmp.Canvas.CopyRect(Rect(0, 0, Value.Width, Value.Height), FOver.Canvas, src);
|
|
|
|
Value.Picture.Bitmap.Assign(bmp);
|
|
|
|
bmp.Free;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.DecoupeOverAll;
|
|
begin
|
|
DecoupeOver(FButtons.FPlay.FButton);
|
|
DecoupeOver(FButtons.FStop.FButton);
|
|
DecoupeOver(FButtons.FPause.FButton);
|
|
DecoupeOver(FButtons.FNext.FButton);
|
|
DecoupeOver(FButtons.FPrev.FButton);
|
|
DecoupeOver(FButtons.FOpen.FButton);
|
|
DecoupeOver(FButtons.FExit.FButton);
|
|
DecoupeOver(FButtons.FMove.FButton);
|
|
DecoupeOver(FButtons.FMinimize.FButton);
|
|
DecoupeOver(FButtons.FId3.FButton);
|
|
DecoupeOver(FButtons.FForward.FButton);
|
|
DecoupeOver(FButtons.FRewind.FButton);
|
|
DecoupeOver(FButtons.FOptions.FButton);
|
|
DecoupeOver(FButtons.FPlaylist.FButton);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadBtn(Ini: TIniFile; Value: TJvImage; Prefix: string);
|
|
begin
|
|
Value.Top := Ini.ReadInteger(RC_Section, Prefix + RC_SufixTop, 0);
|
|
Value.Left := Ini.ReadInteger(RC_Section, Prefix + RC_SufixLeft, 0);
|
|
Value.Width := Ini.ReadInteger(RC_Section, Prefix + RC_SufixWidth, 0);
|
|
Value.Height := Ini.ReadInteger(RC_Section, Prefix + RC_SufixHeight, 0);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadSlider(Ini: TIniFile; Value: TJvSlider; Prefix: string);
|
|
begin
|
|
Value.Horizontal := not (Ini.ReadBool(RC_Section, Prefix + RC_SufixVertical, False));
|
|
Value.Top := Ini.ReadInteger(RC_Section, Prefix + RC_SufixTop, 0);
|
|
Value.Left := Ini.ReadInteger(RC_Section, Prefix + RC_SufixLeft, 0);
|
|
Value.Width := Ini.ReadInteger(RC_Section, Prefix + RC_SufixWidth, 0);
|
|
Value.Height := Ini.ReadInteger(RC_Section, Prefix + RC_SufixHeight, 0);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadLabel(Ini: TIniFile; Value: TJvBreatheLabel; Prefix: string);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
Value.Transparent := Ini.ReadBool(RC_Section, Prefix + RC_SufixTransp, False);
|
|
Value.Top := Ini.ReadInteger(RC_Section, Prefix + RC_SufixTop, 0);
|
|
Value.Left := Ini.ReadInteger(RC_Section, Prefix + RC_SufixLeft, 0);
|
|
Value.Width := Ini.ReadInteger(RC_Section, Prefix + RC_SufixWidth, 0);
|
|
Value.Height := Ini.ReadInteger(RC_Section, Prefix + RC_SufixHeight, 0);
|
|
Value.Font.Name := Ini.ReadString(RC_Section, Prefix + RC_SufixFont, 'arial');
|
|
|
|
i := Ini.ReadInteger(RC_Section, Prefix + RC_SufixFontSize, 8);
|
|
with TControlCanvas.Create do
|
|
begin
|
|
Control := Value.FLabel;
|
|
Font.Name := Value.Font.Name;
|
|
Font.Size := i;
|
|
if Value.Height > 0 then
|
|
while TextHeight('abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-*/|') > Value.Height do
|
|
begin
|
|
Dec(i);
|
|
Font.Size := i;
|
|
end;
|
|
Free;
|
|
end;
|
|
Value.Font.Size := i;
|
|
Value.Font.Color := Ini.ReadInteger(RC_Section, Prefix + RC_SufixColor, clBlack);
|
|
Value.Color := Ini.ReadInteger(RC_Section, Prefix + RC_SufixBKColor, clBlack);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadLabel(Ini: TIniFile; Value: TJvBreatheScrollLabel; Prefix: string);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
Value.Transparent := Ini.ReadBool(RC_Section, Prefix + RC_SufixTransp, False);
|
|
Value.Top := Ini.ReadInteger(RC_Section, Prefix + RC_SufixTop, 0);
|
|
Value.Left := Ini.ReadInteger(RC_Section, Prefix + RC_SufixLeft, 0);
|
|
Value.Width := Ini.ReadInteger(RC_Section, Prefix + RC_SufixWidth, 0);
|
|
Value.Height := Ini.ReadInteger(RC_Section, Prefix + RC_SufixHeight, 0);
|
|
Value.Font.Name := Ini.ReadString(RC_Section, Prefix + RC_SufixFont, 'arial');
|
|
|
|
i := Ini.ReadInteger(RC_Section, Prefix + RC_SufixFontSize, 8);
|
|
with TControlCanvas.Create do
|
|
begin
|
|
Control := Value.FLabel;
|
|
Font.Name := Value.Font.Name;
|
|
Font.Size := i;
|
|
if Value.Height > 0 then
|
|
while TextHeight('abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ+-*/|') > Value.Height do
|
|
begin
|
|
Dec(i);
|
|
Font.Size := i;
|
|
end;
|
|
Free;
|
|
end;
|
|
Value.Font.Size := i;
|
|
Value.Font.Color := Ini.ReadInteger(RC_Section, Prefix + RC_SufixColor, clBlack);
|
|
Value.Color := Ini.ReadInteger(RC_Section, Prefix + RC_SufixBKColor, clBlack);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.LoadSkin(Value: string);
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(Value);
|
|
|
|
InitAllBtn;
|
|
|
|
LoadBtn(Ini, FButtons.FPrev.FButton, RC_PrefixPrevious);
|
|
LoadBtn(Ini, FButtons.FRewind.FButton, RC_PrefixRewind);
|
|
LoadBtn(Ini, FButtons.FStop.FButton, RC_PrefixStop);
|
|
LoadBtn(Ini, FButtons.FPause.FButton, RC_PrefixPause);
|
|
LoadBtn(Ini, FButtons.FPlay.FButton, RC_PrefixPlay);
|
|
LoadBtn(Ini, FButtons.FForward.FButton, RC_PrefixForward);
|
|
LoadBtn(Ini, FButtons.FNext.FButton, RC_PrefixNext);
|
|
LoadBtn(Ini, FButtons.FPlaylist.FButton, RC_PrefixPlaylist);
|
|
LoadBtn(Ini, FButtons.FId3.FButton, RC_PrefixId3);
|
|
LoadBtn(Ini, FButtons.FOpen.FButton, RC_PrefixOpen);
|
|
LoadBtn(Ini, FButtons.FOptions.FButton, RC_PrefixOption);
|
|
LoadBtn(Ini, FButtons.FMinimize.FButton, RC_PrefixMinimize);
|
|
LoadBtn(Ini, FButtons.FMove.FButton, RC_PrefixMove);
|
|
LoadBtn(Ini, FButtons.FExit.FButton, RC_PrefixExit);
|
|
|
|
FPosition.FSlider.ImageRuler.Assign(FPosRuler);
|
|
FPosition.FSlider.ImageThumb.Assign(FPosThumb);
|
|
FVolume.FSlider.ImageRuler.Assign(FVolRuler);
|
|
FVolume.FSlider.ImageThumb.Assign(FVolThumb);
|
|
LoadSlider(Ini, FPosition.FSlider, RC_PrefixTbbar);
|
|
LoadSlider(Ini, FVolume.FSlider, RC_PrefixVolbar);
|
|
|
|
LoadLabel(Ini, FLabels.Version, RC_PrefixVersion);
|
|
LoadLabel(Ini, FLabels.Frequency, RC_PrefixFrequency);
|
|
LoadLabel(Ini, FLabels.BitRate, RC_PrefixBitRate);
|
|
LoadLabel(Ini, FLabels.Layer, RC_PrefixLayer);
|
|
LoadLabel(Ini, FLabels.Status, RC_PrefixInfo);
|
|
LoadLabel(Ini, FLabels.CurrentTime, RC_PrefixTime);
|
|
LoadLabel(Ini, FLabels.TotalTime, RC_PrefixTotalTime);
|
|
LoadLabel(Ini, FLabels.TotalInfo, RC_PrefixTotalInfo);
|
|
LoadLabel(Ini, FLabels.SongName, RC_PrefixSongtitle);
|
|
|
|
if not FOver.Empty then
|
|
DecoupeOverAll;
|
|
|
|
Ini.Free;
|
|
|
|
OptionsChanged(Self);
|
|
if Assigned(FOnSkinLoaded) then
|
|
FOnSkinLoaded(Self);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.OptionsChanged(Sender: TObject);
|
|
var
|
|
h: THandle;
|
|
begin
|
|
if FBOptions.AutoSize then
|
|
begin
|
|
Width := FBack.Width;
|
|
Height := FBack.Height;
|
|
end;
|
|
if FBOptions.AutoRegion then
|
|
begin
|
|
Left := -3;
|
|
Top := -3;
|
|
|
|
// Remove Caption
|
|
h := GetParentForm(TControl(Self)).Handle;
|
|
SetWindowLong(h, GWL_STYLE, GetWindowLong(h, GWL_STYLE) and not WS_CAPTION);
|
|
GetParentForm(Self).ClientWidth := Width;
|
|
GetParentForm(Self).ClientHeight := Height;
|
|
GetParentForm(Self).Invalidate;
|
|
|
|
// Use region
|
|
SetWindowRgn(h, RegionFromBitmap(FMask), True);
|
|
end
|
|
else
|
|
begin
|
|
// Enable Caption
|
|
h := GetParentForm(TControl(Self)).Handle;
|
|
SetWindowLong(h, GWL_STYLE, GetWindowLong(h, GWL_STYLE) or WS_CAPTION);
|
|
GetParentForm(Self).Invalidate;
|
|
|
|
// Use form region
|
|
SetWindowRgn(h, 0, True);
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.ShowAbout;
|
|
var
|
|
im: TJvImage;
|
|
t: TForm;
|
|
m: TMemo;
|
|
begin
|
|
if not (FInfo.Empty) or (FTAbout.Count > 0) then
|
|
begin
|
|
t := TForm.Create(Application);
|
|
with t do
|
|
begin
|
|
Caption := RC_AboutCaption;
|
|
if FTAbout.Count > 0 then
|
|
Width := 500
|
|
else
|
|
ClientWidth := 137;
|
|
ClientHeight := 157;
|
|
BorderStyle := bsDialog;
|
|
Position := poScreenCenter;
|
|
|
|
im := TJvImage.Create(t);
|
|
if not FInfo.Empty then
|
|
begin
|
|
im.Parent := t;
|
|
im.Top := 0;
|
|
im.Left := 0;
|
|
im.Width := 137;
|
|
im.AutoSize := False;
|
|
im.Stretch := True;
|
|
im.Align := alLeft;
|
|
im.Picture.Bitmap.Assign(FInfo);
|
|
im.Pictures.PicEnter.Bitmap.Assign(FInfo);
|
|
end;
|
|
|
|
m := TMemo.Create(t);
|
|
if FTAbout.Count > 0 then
|
|
begin
|
|
m.Parent := t;
|
|
m.Align := alClient;
|
|
m.ReadOnly := True;
|
|
m.ScrollBars := ssBoth;
|
|
m.Text := FTAbout.Text;
|
|
end;
|
|
|
|
ShowModal;
|
|
|
|
m.Free;
|
|
im.Free;
|
|
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.MoveFormDown(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
FLastX := x;
|
|
FLastY := y;
|
|
|
|
if Assigned(FOnMoveDown) then
|
|
FOnMoveDown(Sender, Button, Shift, X, Y);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.MoveFormMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
begin
|
|
if FBOptions.AutoMove and (HiWord(GetAsyncKeystate(VK_LBUTTON)) > 0) then
|
|
begin
|
|
GetParentForm(Self).Left := GetParentForm(Self).Left + x - FLastX;
|
|
GetParentForm(Self).Top := GetParentForm(Self).Top + y - FLastY;
|
|
end;
|
|
|
|
if Assigned(FOnMoveMove) then
|
|
FOnMoveMove(Sender, Shift, X, Y);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.EasyFormDown(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
begin
|
|
FLastX := X;
|
|
FLastY := Y;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.EasyFormMove(Sender: TObject; Shift: TShiftState;
|
|
X, Y: Integer);
|
|
begin
|
|
if FBOptions.AutoMove and (HiWord(GetAsyncKeystate(VK_LBUTTON)) > 0) then
|
|
begin
|
|
GetParentForm(Self).Left := GetParentForm(Self).Left + X - FLastX;
|
|
GetParentForm(Self).Top := GetParentForm(Self).Top + Y - FLastY;
|
|
end;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.Activate;
|
|
begin
|
|
FImg.Picture.Bitmap.Assign(FBack);
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.Deactivate;
|
|
begin
|
|
if not FDeact.Empty then
|
|
FImg.Picture.Bitmap.Assign(FDeact);
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnExit: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FExit.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnForward: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FForward.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnID3: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FID3.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnMinimize: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FMinimize.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnMove: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FMove.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnNext: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FNext.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnOpen: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FOpen.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnOptions: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FOptions.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPause: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FPause.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPlay: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FPlay.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPlaylist: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FPlaylist.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPosition: TNotifyEvent;
|
|
begin
|
|
Result := FPosition.FSlider.OnStopChanged;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPrevious: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FPrev.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnRewind: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FRewind.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnStop: TNotifyEvent;
|
|
begin
|
|
Result := FButtons.FStop.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnVolume: TNotifyEvent;
|
|
begin
|
|
Result := FVolume.FSlider.OnStopChanged;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnExit(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FExit.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnForward(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FForward.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnID3(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FID3.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnMinimize(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FMinimize.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnMove(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FMove.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnNext(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FNext.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnOpen(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FOpen.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnOptions(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FOptions.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPause(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FPause.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPlay(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FPlay.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPlaylist(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FPlayList.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPosition(const Value: TNotifyEvent);
|
|
begin
|
|
FPosition.FSlider.OnStopChanged := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPrevious(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FPrev.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnRewind(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FRewind.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnStop(const Value: TNotifyEvent);
|
|
begin
|
|
FButtons.FStop.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnVolume(const Value: TNotifyEvent);
|
|
begin
|
|
FVolume.FSlider.OnStopChanged := Value;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnPosChanging: TNotifyEvent;
|
|
begin
|
|
Result := FPosition.FSlider.OnChanged;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnVolChanging: TNotifyEvent;
|
|
begin
|
|
Result := FVolume.FSlider.OnChanged;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnPosChanging(const Value: TNotifyEvent);
|
|
begin
|
|
FPosition.FSlider.OnChanged := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnVolChanging(const Value: TNotifyEvent);
|
|
begin
|
|
FVolume.FSlider.OnChanged := Value;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetCurrentTime: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FTime.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnBitRate: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FBitRate.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnFrequency: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FFrequency.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnLayer: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FLayer.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnSongName: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FSongName.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnStatus: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FStatus.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnTotalInfo: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FTotalInfo.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnTotalTime: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FTotalTime.FLabel.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheSkin.GetOnVersion: TNotifyEvent;
|
|
begin
|
|
Result := FLabels.FVersion.FLabel.OnClick;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetCurrentTime(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FTime.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnBitRate(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FBitRate.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnFrequency(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FFrequency.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnLayer(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FLayer.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnSongName(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FSongName.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnStatus(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FStatus.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnTotalInfo(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FTotalInfo.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnTotalTime(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FTotalTime.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheSkin.SetOnVersion(const Value: TNotifyEvent);
|
|
begin
|
|
FLabels.FVersion.FLabel.OnClick := Value;
|
|
end;
|
|
|
|
//=== TJvBreatheOption =======================================================
|
|
|
|
constructor TJvBreatheOption.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FAutoSize := True;
|
|
FAutoMove := True;
|
|
FAutoRegion := False;
|
|
FEasyMove := False;
|
|
end;
|
|
|
|
procedure TJvBreatheOption.SetAutoMove(const Value: Boolean);
|
|
begin
|
|
FAutoMove := Value;
|
|
if Assigned(FOnChange) then
|
|
FOnChange(Self);
|
|
end;
|
|
|
|
procedure TJvBreatheOption.SetAutoRegion(const Value: Boolean);
|
|
begin
|
|
FAutoRegion := Value;
|
|
if Assigned(FOnChange) then
|
|
FOnChange(Self);
|
|
end;
|
|
|
|
procedure TJvBreatheOption.SetAutoSize(const Value: Boolean);
|
|
begin
|
|
FAutoSize := Value;
|
|
if Assigned(FOnChange) then
|
|
FOnChange(Self);
|
|
end;
|
|
|
|
procedure TJvBreatheOption.SetEasyMove(const Value: Boolean);
|
|
begin
|
|
FEasyMove := Value;
|
|
if Assigned(FOnChange) then
|
|
FOnChange(Self);
|
|
end;
|
|
|
|
//=== TJvBreatheLabels =======================================================
|
|
|
|
constructor TJvBreatheLabels.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FStatus := TJvBreatheLabel.Create(AOwner);
|
|
FBitRate := TJvBreatheLabel.Create(AOwner);
|
|
FTime := TJvBreatheLabel.Create(AOwner);
|
|
FFrequency := TJvBreatheLabel.Create(AOwner);
|
|
FSongName := TJvBreatheScrollLabel.Create(AOwner);
|
|
FTotalInfo := TJvBreatheLabel.Create(AOwner);
|
|
FTotalTime := TJvBreatheLabel.Create(AOwner);
|
|
FLayer := TJvBreatheLabel.Create(AOwner);
|
|
FVersion := TJvBreatheLabel.Create(AOwner);
|
|
end;
|
|
|
|
destructor TJvBreatheLabels.Destroy;
|
|
begin
|
|
FStatus.Free;
|
|
FBitRate.Free;
|
|
FTime.Free;
|
|
FFrequency.Free;
|
|
FSongName.Free;
|
|
FTotalInfo.Free;
|
|
FTotalTime.Free;
|
|
FLayer.Free;
|
|
FVersion.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
//=== TJvBreatheLabel ========================================================
|
|
|
|
constructor TJvBreatheLabel.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FLabel := TJvLabel.Create(AOwner);
|
|
FLabel.Parent := TWinControl(AOwner);
|
|
FLabel.AutoSize := False;
|
|
FLabel.HotTrack := False;
|
|
FLabel.ParentColor := False;
|
|
FLabel.ParentFont := False;
|
|
FLabel.ParentShowHint := False;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetColor: TColor;
|
|
begin
|
|
Result := FLabel.Color;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetFont: TFont;
|
|
begin
|
|
Result := FLabel.Font;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetHint: string;
|
|
begin
|
|
Result := FLabel.Hint;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetPopupMenu: TPopupMenu;
|
|
begin
|
|
Result := FLabel.PopupMenu;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetShowHint: Boolean;
|
|
begin
|
|
Result := FLabel.ShowHint;
|
|
end;
|
|
|
|
function TJvBreatheLabel.GetTransparent: Boolean;
|
|
begin
|
|
Result := FLabel.Transparent;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetCaption(const Value: string);
|
|
begin
|
|
FCaption := Value;
|
|
FLabel.Caption := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetColor(const Value: TColor);
|
|
begin
|
|
FLabel.Color := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetFont(const Value: TFont);
|
|
begin
|
|
FLabel.Font.Assign(Value);
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetHeight(const Value: Integer);
|
|
begin
|
|
FHeight := Value;
|
|
FLabel.Height := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetHint(const Value: string);
|
|
begin
|
|
FLabel.Hint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetLeft(const Value: Integer);
|
|
begin
|
|
FLeft := Value;
|
|
FLabel.Left := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetPopupMenu(const Value: TPopupMenu);
|
|
begin
|
|
FLabel.PopupMenu := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetShowHint(const Value: Boolean);
|
|
begin
|
|
FLabel.ShowHint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetTop(const Value: Integer);
|
|
begin
|
|
FTop := Value;
|
|
FLabel.Top := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetTransparent(const Value: Boolean);
|
|
begin
|
|
FLabel.Transparent := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheLabel.SetWidth(const Value: Integer);
|
|
begin
|
|
FWidth := Value;
|
|
FLabel.Width := Value;
|
|
end;
|
|
|
|
//=== TJvBreatheVolume =======================================================
|
|
|
|
constructor TJvBreatheVolume.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FSlider := TJvSlider.Create(AOwner);
|
|
FSlider.Parent := TWinControl(AOwner);
|
|
end;
|
|
|
|
destructor TJvBreatheVolume.Destroy;
|
|
begin
|
|
FSlider.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TJvBreatheVolume.GetHint: string;
|
|
begin
|
|
Result := FSlider.Hint;
|
|
end;
|
|
|
|
function TJvBreatheVolume.GetMaximum: Integer;
|
|
begin
|
|
Result := FSlider.Maximum;
|
|
end;
|
|
|
|
function TJvBreatheVolume.GetPosition: Integer;
|
|
begin
|
|
Result := FSlider.Position;
|
|
end;
|
|
|
|
function TJvBreatheVolume.GetShow: Boolean;
|
|
begin
|
|
Result := FSlider.ShowHint;
|
|
end;
|
|
|
|
procedure TJvBreatheVolume.SetHint(const Value: string);
|
|
begin
|
|
FSlider.Hint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheVolume.SetMaximum(const Value: Integer);
|
|
begin
|
|
FSlider.Maximum := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheVolume.SetPosition(const Value: Integer);
|
|
begin
|
|
FSlider.Position := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheVolume.SetShow(const Value: Boolean);
|
|
begin
|
|
FSlider.ShowHint := Value;
|
|
end;
|
|
|
|
//=== TJvBreathePosition =====================================================
|
|
|
|
constructor TJvBreathePosition.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FSlider := TJvSlider.Create(AOwner);
|
|
FSlider.Parent := TWinControl(AOwner);
|
|
end;
|
|
|
|
destructor TJvBreathePosition.Destroy;
|
|
begin
|
|
FSlider.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TJvBreathePosition.GetHint: string;
|
|
begin
|
|
Result := FSlider.Hint;
|
|
end;
|
|
|
|
function TJvBreathePosition.GetMaximum: Integer;
|
|
begin
|
|
Result := FSlider.Maximum;
|
|
end;
|
|
|
|
function TJvBreathePosition.GetPosition: Integer;
|
|
begin
|
|
Result := FSlider.Position;
|
|
end;
|
|
|
|
function TJvBreathePosition.GetShow: Boolean;
|
|
begin
|
|
Result := FSlider.ShowHint;
|
|
end;
|
|
|
|
procedure TJvBreathePosition.SetHint(const Value: string);
|
|
begin
|
|
FSlider.Hint := Value;
|
|
end;
|
|
|
|
procedure TJvBreathePosition.SetMaximum(const Value: Integer);
|
|
begin
|
|
FSlider.Maximum := Value;
|
|
end;
|
|
|
|
procedure TJvBreathePosition.SetPosition(const Value: Integer);
|
|
begin
|
|
FSlider.Position := Value;
|
|
end;
|
|
|
|
procedure TJvBreathePosition.SetShow(const Value: Boolean);
|
|
begin
|
|
FSlider.ShowHint := Value;
|
|
end;
|
|
|
|
//=== TJvBreatheButtons ======================================================
|
|
|
|
constructor TJvBreatheButtons.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FPlaylist := TJvBreatheButton.Create(AOwner);
|
|
FPrev := TJvBreatheButton.Create(AOwner);
|
|
FMove := TJvBreatheButton.Create(AOwner);
|
|
FPlay := TJvBreatheButton.Create(AOwner);
|
|
FNext := TJvBreatheButton.Create(AOwner);
|
|
FExit := TJvBreatheButton.Create(AOwner);
|
|
FOptions := TJvBreatheButton.Create(AOwner);
|
|
FOpen := TJvBreatheButton.Create(AOwner);
|
|
FPause := TJvBreatheButton.Create(AOwner);
|
|
FId3 := TJvBreatheButton.Create(AOwner);
|
|
FForward := TJvBreatheButton.Create(AOwner);
|
|
FRewind := TJvBreatheButton.Create(AOwner);
|
|
FStop := TJvBreatheButton.Create(AOwner);
|
|
FMinimize := TJvBreatheButton.Create(AOwner);
|
|
end;
|
|
|
|
destructor TJvBreatheButtons.Destroy;
|
|
begin
|
|
FPlaylist.Free;
|
|
FPrev.Free;
|
|
FMove.Free;
|
|
FPlay.Free;
|
|
FNext.Free;
|
|
FExit.Free;
|
|
FOptions.Free;
|
|
FOpen.Free;
|
|
FPause.Free;
|
|
FId3.Free;
|
|
FForward.Free;
|
|
FRewind.Free;
|
|
FStop.Free;
|
|
FMinimize.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
//=== TJvBreatheButton =======================================================
|
|
|
|
constructor TJvBreatheButton.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FButton := TJvImage.Create(AOwner);
|
|
FButton.Parent := TWinControl(AOwner);
|
|
end;
|
|
|
|
function TJvBreatheButton.GetEnabled: Boolean;
|
|
begin
|
|
Result := FButton.Enabled;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetHint: string;
|
|
begin
|
|
Result := FButton.Hint;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetMouseDown: TMouseEvent;
|
|
begin
|
|
Result := FButton.OnMouseDown;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetMouseMove: TMouseMoveEvent;
|
|
begin
|
|
Result := FButton.OnMouseMove;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetMouseUp: TMouseEvent;
|
|
begin
|
|
Result := FButton.OnMouseUp;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetOnClick: TNotifyEvent;
|
|
begin
|
|
Result := FButton.OnClick;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetOnDblClick: TNotifyEvent;
|
|
begin
|
|
Result := FButton.OnDblClick;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetPopupMenu: TPopupMenu;
|
|
begin
|
|
Result := FButton.PopupMenu;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetShowHint: Boolean;
|
|
begin
|
|
Result := FButton.ShowHint;
|
|
end;
|
|
|
|
function TJvBreatheButton.GetVisible: Boolean;
|
|
begin
|
|
Result := FButton.Visible;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetEnabled(const Value: Boolean);
|
|
begin
|
|
FButton.Enabled := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetHint(const Value: string);
|
|
begin
|
|
FButton.Hint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetMouseDown(const Value: TMouseEvent);
|
|
begin
|
|
FButton.OnMouseDown := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetMouseUp(const Value: TMouseEvent);
|
|
begin
|
|
FButton.OnMouseUp := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetMouveMove(const Value: TMouseMoveEvent);
|
|
begin
|
|
FButton.OnMouseMove := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetOnClick(const Value: TNotifyEvent);
|
|
begin
|
|
FButton.OnClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetOnDblClick(const Value: TNotifyEvent);
|
|
begin
|
|
FButton.OnDblClick := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetPopupMenu(const Value: TPopupMenu);
|
|
begin
|
|
FButton.PopupMenu := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetShowHint(const Value: Boolean);
|
|
begin
|
|
FButton.ShowHint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheButton.SetVisible(const Value: Boolean);
|
|
begin
|
|
FButton.Visible := Value;
|
|
end;
|
|
|
|
//=== TJvBreatheScrollLabel ==================================================
|
|
|
|
constructor TJvBreatheScrollLabel.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create;
|
|
FLabel := TJvBehaviorLabel.Create(AOwner);
|
|
FLabel.Parent := TWinControl(AOwner);
|
|
FLabel.AutoSize := False;
|
|
FLabel.ParentColor := False;
|
|
FLabel.ParentFont := False;
|
|
FLabel.ParentShowHint := False;
|
|
FLabel.Behavior := 'Scrolling';
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetColor: TColor;
|
|
begin
|
|
Result := FLabel.Color;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetDirection: TJvLabelScrollDirection;
|
|
begin
|
|
Result := TJvLabelScroll(FLabel.BehaviorOptions).Direction;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetFont: TFont;
|
|
begin
|
|
Result := FLabel.Font;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetHint: string;
|
|
begin
|
|
Result := FLabel.Hint;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetInterval: Cardinal;
|
|
begin
|
|
Result := TJvLabelScroll(FLabel.BehaviorOptions).Interval;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetScrolling: Boolean;
|
|
begin
|
|
Result := TJvLabelScroll(FLabel.BehaviorOptions).Active;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetShowHint: Boolean;
|
|
begin
|
|
Result := FLabel.ShowHint;
|
|
end;
|
|
|
|
function TJvBreatheScrollLabel.GetTransparent: Boolean;
|
|
begin
|
|
Result := FLabel.Transparent;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetCaption(const Value: string);
|
|
begin
|
|
FCaption := Value;
|
|
FLabel.Caption := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetColor(const Value: TColor);
|
|
begin
|
|
FLabel.Color := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetDirection(const Value: TJvLabelScrollDirection);
|
|
begin
|
|
TJvLabelScroll(FLabel.BehaviorOptions).Direction := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetFont(const Value: TFont);
|
|
begin
|
|
FLabel.Font := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetHeight(const Value: Integer);
|
|
begin
|
|
FHeight := Value;
|
|
FLabel.Height := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetHint(const Value: string);
|
|
begin
|
|
FLabel.Hint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetInterval(const Value: Cardinal);
|
|
begin
|
|
TJvLabelScroll(FLabel.BehaviorOptions).Interval := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetLeft(const Value: Integer);
|
|
begin
|
|
FLeft := Value;
|
|
FLabel.Left := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetScrolling(const Value: Boolean);
|
|
begin
|
|
TJvLabelScroll(FLabel.BehaviorOptions).Active := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetShowHint(const Value: Boolean);
|
|
begin
|
|
FLabel.ShowHint := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetTop(const Value: Integer);
|
|
begin
|
|
FTop := Value;
|
|
FLabel.Top := FTop;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetTransparent(const Value: Boolean);
|
|
begin
|
|
FLabel.Transparent := Value;
|
|
end;
|
|
|
|
procedure TJvBreatheScrollLabel.SetWidth(const Value: Integer);
|
|
begin
|
|
FWidth := Value;
|
|
FLabel.Width := Value;
|
|
end;
|
|
|
|
end.
|
|
|