zoukankan      html  css  js  c++  java
  • 透明Panel

    unit TransparentPanel;
    
    interface
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;
    type
      TTransparentPanelClass = class(TPanel)
      private
        procedure SetParent(AParent: TWinControl); override;
        procedure WMEraseBkGnd(var Message: TWMEraseBkGnd); message WM_EraseBkGnd;
      protected
        procedure CreateParams(var Params: TCreateParams); override;
        procedure Paint; override;
      public
        constructor Create(AOwner: TComponent); override;
        procedure Invalidate; override;
      end;
    
    implementation
    constructor TTransparentPanelClass.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      ControlStyle := ControlStyle - [csOpaque];
    end;
    
    procedure TTransparentPanelClass.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
    end;
    
    //进行绘制
    procedure TTransparentPanelClass.Paint;
    begin
      Canvas.Brush.Style := bsClear;
      Canvas.Rectangle(0, 0, Width, Height);
      Canvas.TextOut(Width div 2, Height div 2, 'Transparent');
    end;
    
    procedure TTransparentPanelClass.WMEraseBkGnd(var Message: TWMEraseBkGnd);
    begin
      Message.Result := 1;
    end;
    
    procedure TTransparentPanelClass.SetParent(AParent: TWinControl);
    begin
      inherited SetParent(AParent);
      if Parent <> nil then
        SetWindowLong(Parent.Handle, GWL_STYLE, GetWindowLong
          (Parent.Handle, GWL_STYLE) and not WS_ClipChildren);
    end;
    
    procedure TTransparentPanelClass.Invalidate;
    var
      oRect: TRect;
    begin
      //重画
      oRect := BoundsRect;
      if (Parent <> nil) and Parent.HandleAllocated then
        InvalidateRect(Parent.Handle, @oRect, True)
      else
        inherited Invalidate;
    end;
    
    end.
  • 相关阅读:
    企业搜索引擎开发之连接器connector(二十九)
    solr&lucene3.6.0源码解析(四)
    solr&lucene3.6.0源码解析(三)
    elasticsearch 7.7.0 最新版+Java High Level REST Client测试
    自制聊天软件测试
    网页正文内容抽取测试
    Kernel Functions for Machine Learning Applications
    Latent semantic analysis note(LSA)
    jQuery插件备忘
    比较成系列的文章[备份.感谢这些作者的辛苦]
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/10595383.html
Copyright © 2011-2022 走看看