我需要在我的表单中使用透明的 tpanel。谁能给我推荐一个好的组件,可能是免费的?如果不是很长,可以发布代码或一些关于它的链接吗?非常感谢。马塞洛。
问问题
27938 次
3 回答
8
您可以尝试下载 Jedi 组件库,并查看 TjvTransparentPanel 组件,安装该组件库后,您可以在“Jv Additional”选项卡下找到它。
于 2012-11-03T21:57:44.253 回答
4
创建一个组件并覆盖 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.
于 2013-10-26T00:51:33.407 回答
0
为什么不使用 TBevel,并将形状设置为 bsSpacer、bsBox 或其中一条线?如果边界的性质不是问题,您可能会发现这已经解决了您的问题。
于 2018-03-11T19:41:50.730 回答