我需要在我的表单中使用透明的tpanel。谁能为我推荐一个好的组件,可能是免费的?如果不是很长,是不是可以发布代码或一些关于它的链接?非常感谢。马塞洛。
发布于 2012-11-04 05:57:44
您可以尝试下载Jedi组件库,并查看TjvTransparentPanel组件,一旦您安装了该组件库,您就可以在"Jv Additional“选项卡中找到它。
http://www.delphipages.com/forum/showthread.php?t=187137
发布于 2013-10-26 08:51:33
创建一个组件并覆盖Paint方法和其他一些东西:没有边框或标题,但它是一个功能面板。其中的任何组件也需要变得透明。祝好运。
unit PanelTransparent;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;
type
TPanelTransparent = class (TPanel)
private
procedure CnCtlColorStatic (var Msg: TWMCtlColorStatic); message CN_CTLCOLORSTATIC;
procedure WmEraseBkgnd (var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
procedure Paint; override;
protected
procedure CreateParams (var Params: TCreateParams); override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents ('AppMic', [TPanelTransparent]);
end;
procedure TPanelTransparent.CreateParams (var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
procedure TPanelTransparent.WmEraseBkgnd(var Msg: TWMEraseBkgnd);
begin
Msg.Result := 1;
end;
procedure TPanelTransparent.CnCtlColorStatic(var Msg: TWMCtlColorStatic);
begin
SetBKMode (Msg.ChildDC, TRANSPARENT);
Msg.Result := GetStockObject (NULL_BRUSH);
end;
procedure TPanelTransparent.Paint;
begin
SetBKMode (Handle, TRANSPARENT);
//inherited;
end;
end.发布于 2018-03-12 03:41:51
为什么不使用TBevel,并将形状设置为bsSpacer、bsBox或其中一条线?如果边界的性质不是问题,您可能会发现这已经解决了您的问题。
https://stackoverflow.com/questions/13210310
复制相似问题