这两天做了一个小程序,主要是想让界面漂亮一点,老是GroupBox老是灰灰的一块,盖住image的图片,怎么样才能使groupbox变透明呢?

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      GroupBox1.Brush.Style := bsClear;
      SetWindowLong(GroupBox1.Handle,GWL_EXSTYLE,GetWindowLong(GroupBox1.Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT);
    end;
      

  2.   

    type
      TTransparentGroupBox = class(TCustomGroupBox)
      private
        procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND;
      protected
        procedure CreateParams(var Params: TCreateParams); override;
      published
    //....
      end;implementationprocedure TTransparentGroupbox.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
    end;procedure TTransparentGroupbox.WMEraseBkGnd(var Msg: TWMEraseBkGnd);
    begin
      SetBkMode(Msg.DC, TRANSPARENT);
      Msg.Result := 1;
    end;
      

  3.   

    'undeclared WM_ERASEBKGND' why?
      

  4.   

    you can think that you are better make a yourself ttrancheck that inherit from tgraphicscontrol, you can draw "√" on it's surface if it's checked.