首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TPanel透明

TPanel透明
EN

Stack Overflow用户
提问于 2012-11-03 22:59:16
回答 3查看 27.4K关注 0票数 8

我需要在我的表单中使用透明的tpanel。谁能为我推荐一个好的组件,可能是免费的?如果不是很长,是不是可以发布代码或一些关于它的链接?非常感谢。马塞洛。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-04 05:57:44

您可以尝试下载Jedi组件库,并查看TjvTransparentPanel组件,一旦您安装了该组件库,您就可以在"Jv Additional“选项卡中找到它。

http://www.delphipages.com/forum/showthread.php?t=187137

票数 8
EN

Stack Overflow用户

发布于 2013-10-26 08:51:33

创建一个组件并覆盖Paint方法和其他一些东西:没有边框或标题,但它是一个功能面板。其中的任何组件也需要变得透明。祝好运。

代码语言:javascript
复制
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.
票数 4
EN

Stack Overflow用户

发布于 2018-03-12 03:41:51

为什么不使用TBevel,并将形状设置为bsSpacer、bsBox或其中一条线?如果边界的性质不是问题,您可能会发现这已经解决了您的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13210310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档