用dephi作会计表格录入,因要仿真手工表金额填写的一条条线,表单用了很多tshape控件作为表线,  
tedit控件上也覆盖了很多线条.整个表单上的控件总数量较多(一百多个吧),正常运行时,无什么问题,运行时,用鼠标拖动其它  
应用程序(如word,ie等),在其上晃动,再拖走,表单即会出现色块,象是未刷新的样子,很难看.经调试发现,是自己作的一透明twincontrol控件 
以及放于其上的tpanel控件(tpanel控件仅用于作为线条使用,盖于tedit上,用于模仿手工表中金额栏上的线条),以及tedit有重叠,将tpanel 
控件去掉,好象不会出现色块.不知是什么原因造成,用什么办法可解决? 
表单与控件的代码大概如下(因实际表单很大,只抽相关的部分) Delphi(Pascal) code
{控件的代码}
unit Unit2;interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
type
  twin1=class(twincontrol)  protected
    procedure CreateParams(var Params: TCreateParams); override;
  private
  public
    constructor Create(AOwner: TComponent); override;
  end;
implementation{twin1}
constructor twin1.Create(AOwner: TComponent);
begin
  inherited;
  ControlStyle:=controlstyle-[csopaque]
end;
procedure twin1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  params.ExStyle:=params.ExStyle or WS_EX_TRANSPARENT
end;
{twin1 end}
end.
Delphi(Pascal) code
{表单的代码}
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,unit2, Buttons;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    BitBtn1: TBitBtn;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    mywin:twin1;
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
  mywin:=twin1.Create(self);
  mywin.Parent:=self;
  mywin.Left:=5;
  mywin.Top:=30;
  edit1.Parent:=mywin;
  edit2.Parent:=mywin;
  edit3.Parent:=mywin;
  edit4.Parent:=mywin;
  edit5.Parent:=mywin;
  edit6.Parent:=mywin;
  edit7.Parent:=mywin;
  edit8.Parent:=mywin;
  edit9.Parent:=mywin;
  edit10.Parent:=mywin;
  edit11.Parent:=mywin;
  edit12.Parent:=mywin;
  edit13.Parent:=mywin;
  edit14.Parent:=mywin;
  edit15.Parent:=mywin;
  edit16.Parent:=mywin;
  edit17.Parent:=mywin;
  edit18.Parent:=mywin;
  edit19.Parent:=mywin;
  edit20.Parent:=mywin;
  edit21.Parent:=mywin;
  edit22.Parent:=mywin;
  edit23.Parent:=mywin;
  edit24.Parent:=mywin;
  edit1.Left:=edit1.Left-5;
  edit2.Left:=edit2.Left-5;
  edit3.Left:=edit3.Left-5;
  edit4.Left:=edit4.Left-5;
  edit5.Left:=edit5.Left-5;
  edit6.Left:=edit6.Left-5;
  edit7.Left:=edit7.Left-5;
  edit8.Left:=edit8.Left-5;
  edit9.Left:=edit9.Left-5;
  edit10.Left:=edit10.Left-5;
  edit11.Left:=edit11.Left-5;
  edit12.Left:=edit12.Left-5;
  edit13.Left:=edit13.Left-5;
  edit14.Left:=edit14.Left-5;
  edit15.Left:=edit15.Left-5;
  edit16.Left:=edit16.Left-5;
  edit17.Left:=edit17.Left-5;
  edit18.Left:=edit18.Left-5;
  edit19.Left:=edit19.Left-5;
  edit20.Left:=edit20.Left-5;
  edit21.Left:=edit21.Left-5;
  edit22.Left:=edit22.Left-5;
  edit23.Left:=edit23.Left-5;
  edit24.Left:=edit24.Left-5;  edit1.Top:=edit1.Top-5;
  edit2.Top:=edit2.Top-5;
  edit3.Top:=edit3.Top-5;
  edit4.Top:=edit4.Top-5;
  edit5.top:=edit5.top-5;
  edit6.top:=edit6.top-5;
  edit7.top:=edit7.top-5;
  edit8.top:=edit8.top-5;
  edit9.top:=edit9.top-5;
  edit10.top:=edit10.top-5;
  edit11.top:=edit11.top-5;
  edit12.top:=edit12.top-5;
  edit13.top:=edit13.top-5;
  edit14.top:=edit14.top-5;
  edit15.top:=edit15.top-5;
  edit16.top:=edit16.top-5;
  edit17.top:=edit17.top-5;
  edit18.top:=edit18.top-5;
  edit19.top:=edit19.top-5;
  edit20.top:=edit20.top-5;
  edit21.top:=edit21.top-5;
  edit22.top:=edit22.top-5;
  edit23.top:=edit23.top-5;
  edit24.top:=edit24.top-5;  mywin.Width:=shape6.Width+20;
  mywin.Height:=shape6.Height+10;
  mywin.SendToBack;
  mywin.Visible:=true;end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  mywin.Refresh;
end;end.造成的色块,就与执行mywin.refresh命令产生的一样,不过无那么严重 试着在twin1=class(twincontrol) 
的repaint方法中增加一事件,在事件中加上刷新tshape与tpanel的代码,这样,执行mywin.refresh时可避免色块, 
但其它程序在其上飞过时,mywin.repaint并不执行,不知其它程序在其上飞过时,delphi程序是如果刷新表单与控件的?