Index
» Empathy Jukebox : Blob 68cf96 / Standalone_Components / TTransparentPanel / TransparentPanel.pas
unit TransparentPanel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, extctrls,stdctrls; type TTransparentPanel = class(TCustomControl) private fborder : boolean; fsource : tbitmap; drawn : boolean; procedure setborder(value : boolean); //procedure StopFlicker(var msg : TWMEraseBkGnd); message WM_ERASEBKGND; { Private declaration} protected { Protected declarations } public procedure CreateParams(var Params : TCreateparams);override; constructor Create(AOwner : TComponent); override; procedure Paint;override; destructor Destroy;override; procedure Resize; override; { Public declarations } published property sourcebitmap : tbitmap read fsource write fsource; property border : boolean read fborder write setborder; property Visible; property Enabled; property Align; property OnClick; property OnMouseDown; property OnMouseMove; property OnMouseUp; property Font; { Published declarations } end; procedure Register; implementation procedure TTransparentPanel.createparams(var Params : TCreateparams); begin inherited CreateParams(Params); ControlStyle:=ControlStyle + [csAcceptsControls] + [csOpaque]; end; procedure TTransparentPanel.resize; begin drawn:=false; end; constructor TTransparentPanel.Create(AOwner : TComponent); begin inherited Create(AOwner); width:=100; height:=100; drawn:=false; end; destructor TTransparentPanel.destroy; begin inherited destroy; end; procedure Register; begin RegisterComponents('LibrarySmith', [TTransparentPanel]); end; Procedure TTransparentPanel.setborder; begin if value<>fborder then begin fborder:=value; invalidate; end; end; {procedure TTransparentPanel.StopFlicker(var Msg: TWMEraseBkgnd); begin Msg.Result := 0; drawn:=false; end; } Procedure TTransparentPanel.Paint; var str,dtr : trect; begin //inherited paint; //if drawn=true then exit; if not assigned(fsource) then exit; if (csDesigning in Componentstate) or (border=true) then begin Canvas.brush.color:=clbtnshadow; canvas.FrameRect(clientrect); exit; end; str.top:=Top+parent.top; str.left:=left+parent.left; str.right:=width+str.left; str.bottom:=height+str.top; dtr.left:=0; dtr.top:=0; dtr.right:=width; dtr.bottom:=height; Canvas.copyrect(dtr,fsource.Canvas,str); lockwindowupdate(canvas.Handle); //drawn:=true; end; end.