请问下面的代码为何不能时背景透明,抱歉,我没分了 (10分)

  • 主题发起人 主题发起人 活在来生的鱼
  • 开始时间 开始时间

活在来生的鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
您好, 为何下面的代码没有使Edit 的背景透明 ?
同时请教 : Create 方法 和 CreateParams 方法 有何差别 ? 哪个先被执行 ?
谢谢您,我没分了...,抱歉

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,StdCtrls;

type

TEdit1 = Class(TEdit)
Public
procedure CreateParams(var Params: TCreateParams) ; overload ;
end ;

TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

procedure TEdit1.CreateParams(var Params: TCreateParams) ;
begin
Inherited CreateParams(Params); ;
Params.Style := Params.Style + WS_OVERLAPPED ; // 怎么没有效果,和 原来的Edit一样 ?
end ;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
e : TEdit1 ;
begin
e := TEdit1.Create(Self) ;
e.Left := 10 ;
e.Top := 10 ;
e.Width := 100 ;
e.Height := 30 ;
e.Text := 'Edit1' ;
e.Parent := Self ;
end;

end.
 
你为什么要用edit呢?Label控件的transparent属性设为true不就行了。
你如果实在要做,就重载 procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
和 procedure WMEraseBkgnd(var Message: TMessage);message WM_ERASEBKGND;
 
应该为override; 而非 overload; 含义不同
一个为覆盖, 一个为重载
 
LiChaoHui说得的有道理。
不过即使override恐怕也不能做成透明的。我曾做过透明的TEdit,但在输入文本时有闪烁,一时想不到办法解决。
 
sorry ,写错了
 
接受答案了.
 
后退
顶部