如何使RxRichEdit控件透明? 再没人帮助,俺就活不下去了!!(1分)

M

Ming618

Unregistered / Unconfirmed
GUEST, unregistred user!
热情期待中......ing
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
我在19:24时的时候已经搞定啦,
用了10来分钟咯,
我要分呀,
是富翁的就施舍一点咯`~~~~~~~~~
呵呵`~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
Y

yxjdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我开个台

Netsoft透明RxRichEdit大甩卖
这个名字不介意吧?

:http://www.delphibbs.com/delphibbs/dispq.asp?lid=2244694
 
P

pingpingniu

Unregistered / Unconfirmed
GUEST, unregistred user!
Netsoft,把控件贴上来呀,收到给分,我想你会发的,呵呵……
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
上论坛是去年,
可到现在我的分数才1153呀,
好难受的,
有慷慨的DFW就再可怜可怜我吧,
想大家以前开过的关于此的贴也不少,
链出来我去收分,不太过分吧,
我想收一点分耶, 我也知道一朝一夕难做DFW的,
这是贪心了一点,可我保证“售后服务”~~~~~~~~~~~~~~~~~~~~
想要什么透明的东东找我试试~~~~~~~~~~~~有点吹牛~~~~~~~~~~~~~~~~~~~~~~~~~~
呵呵~~~~~~~~~~~~~~~~
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
不就是要分嘛!早讲,我开了两个关于透明的richedit问题,我分都给你,不够可以再开一个加个500给你!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2231152
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2233959
把问题解决了,要什么有什么,除了女人!
 
P

pingpingniu

Unregistered / Unconfirmed
GUEST, unregistred user!
期待中!
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
To constrol
哇,
太慷慨了吧,
你这个朋友我交了,
如果有什么帮忙我可以搞定的,
我一定尽量帮你~~~~~~~~~~~~~~~~`~~~``
现源码如下:

unit NSTrEdit;

interface

uses Windows, Messages, Controls, StdCtrls, classes, Graphics, ComCtrls, RXRichEd;

const TMWM_SpecialInvalidate=WM_USER+1111;
type
TNSTransEdit = class(TEdit)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure WMKillFocus(Var Message: TWMKillFocus)
Message WM_KillFocus;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;
protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

TNSTransMemo = class(TMemo)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMHScroll(var Message: TWMHScroll)
message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll)
message WM_VSCROLL;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure WMKillFocus(Var Message: TWMKillFocus)
Message WM_KillFocus;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;
protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

TNSTransRichEdit = class(TRXRichEdit)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMHScroll(var Message: TWMHScroll)
message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll)
message WM_VSCROLL;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;
protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

procedure Register;

implementation

{ TNSTransEdit }

procedure TNSTransEdit.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;

procedure TNSTransEdit.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,true);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TNSTransEdit.WMKeyDown(var Message: TWMKeyDown);
begin
SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransEdit.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.WMKillFocus(Var Message: TWMKillFocus);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result:=1
end;

constructor TNSTransEdit.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csSetCaption, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents];
end;

procedure TNSTransEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
end;
end;
{ TNSTransMemo }
procedure TNSTransMemo.WMHScroll(var Message: TWMHScroll);
begin
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransMemo.WMVScroll(var Message: TWMVScroll);
begin
SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransMemo.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransMemo.WMKillFocus(Var Message: TWMKillFocus);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;


procedure TNSTransMemo.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;

procedure TNSTransMemo.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransMemo.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,true);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TNSTransMemo.WMKeyDown(var Message: TWMKeyDown);
begin
SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransMemo.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result:=1
end;

constructor TNSTransMemo.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csSetCaption, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents];
end;

procedure TNSTransMemo.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
end;
end;

{ TNSTransRichEdit }
procedure TNSTransRichEdit.WMHScroll(var Message: TWMHScroll);
begin
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransRichEdit.WMVScroll(var Message: TWMVScroll);
begin
SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransRichEdit.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransRichEdit.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;
procedure TNSTransRichEdit.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransRichEdit.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,true);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TNSTransRichEdit.WMKeyDown(var Message: TWMKeyDown);
begin
SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransRichEdit.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
brush.style:= bsClear;
Message.Result:=1
end;

constructor TNSTransRichEdit.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csSetCaption, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents];
end;

procedure TNSTransRichEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
end;
end;

procedure Register;
begin
RegisterComponents('Netsoft', [TNSTransEdit, TNSTransMemo, TNSTransRichEdit]);
end;

end.
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
很牛,我已把分给你了,还有一个问题我再加100分,在上面编辑的时候,会闪,解决一下吧!

kostrol@163.net
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
To constrol
哦,这样呀,
这贴又太下了,好不容易找到,
具体是哪个呢?????
我想三个都差不多啦~~~~~~~~~~~
这样吧,我今晚再看看咯,
应该是要取消某个消息的截取了,
明天答复你啦,我也不会贴出来了,
我mail你啦,发后我会通知你的~~~~~~~~~~`
分数我看就算啦,你也给我加了不少分啦,呵呵`~~~~~~~~~~~~~~~
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
谢,帮我解决一下,会闪的问题,谢谢!
我的Mail kostrol@163.net
 
P

pingpingniu

Unregistered / Unconfirmed
GUEST, unregistred user!
Netsoft,去我开的贴子拿分!
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
就是用richedit的是候,我在背景下有张底图,当编辑时,就会闪,眼睛受不了啊!
大哥!
修改一下吧!分的事,没问题!
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
不好意思,今天要出差啦,我把昨晚改后的代码再贴出来吧,呵呵~~~~~~~~~~~~~~~
基本上都搞定了,不过因为我还是没有亲自处理WM_Paint事件,所有在使用了TNSTransMemo的时候不停按键时(正常输入不会出现)有点闪啦,TNSTransRichEdit可以说没有什么事的了,还有就是将控件放在底图范围内,不好意思啦!!!!如果在使用中还有问题,贴出来啦!!
unit NSTrEdit;

interface

uses Windows, Messages, Controls, StdCtrls, classes, Graphics, ComCtrls, RXRichEd;

const TMWM_SpecialInvalidate=WM_USER+1111;
type
TNSTransEdit = class(TEdit)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure EMReplaceSel(var Message: TMessage)
Message EM_REPLACESEL;
procedure WMKillFocus(Var Message: TWMKillFocus)
Message WM_KillFocus;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;
protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

TNSTransMemo = class(TMemo)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMHScroll(var Message: TWMHScroll)
message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll)
message WM_VSCROLL;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure WMKillFocus(Var Message: TWMKillFocus)
Message WM_KillFocus;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure EMReplaceSel(var Message: TMessage)
message EM_REPLACESEL;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;
procedure WMPaint(var Message: TWMPaint)
message WM_Paint

protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

TNSTransRichEdit = class(TRXRichEdit)
private
procedure SpecialInvalidate(var Message:TMessage)
message TMWM_SpecialInvalidate;
procedure WMHScroll(var Message: TWMHScroll)
message WM_HSCROLL;
procedure WMVScroll(var Message: TWMVScroll)
message WM_VSCROLL;
procedure WMSetText(var Message:TWMSetText)
message WM_SETTEXT;
procedure WMLButtonDown(Var Message: TWMLButtonDown)
Message WM_LButtonDown;
procedure CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT)
message CN_CTLCOLOREDIT;
procedure WMKeyDown(var Message: TWMKeyDown)
message WM_KEYDOWN;
procedure WMEraseBkgnd(var Message: TWMEraseBkgnd)
message WM_ERASEBKGND;

protected
procedure CreateParams(var Params: TCreateParams)
override;
public
constructor Create(AOwner: TComponent)
override;
end;

procedure Register;

implementation

{ TNSTransEdit }

procedure TNSTransEdit.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;

procedure TNSTransEdit.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,false);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TNSTransEdit.WMKeyDown(var Message: TWMKeyDown);
begin
// SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransEdit.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.WMKillFocus(Var Message: TWMKillFocus);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.EMReplaceSel(var Message: TMessage);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransEdit.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result:=1;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

constructor TNSTransEdit.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents]
// csSetCaption,
end;

procedure TNSTransEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
end;
end;
{ TNSTransMemo }
procedure TNSTransMemo.WMHScroll(var Message: TWMHScroll);
begin
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
end;

procedure TNSTransMemo.WMVScroll(var Message: TWMVScroll);
begin
// SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
end;

procedure TNSTransMemo.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransMemo.WMPaint(Var Message: TWMPaint);
begin
Brush.Style:= bsClear;
FillRect(Handle, ClientRect, GetBrushObj(
inherited;
end;

procedure TNSTransMemo.WMKillFocus(Var Message: TWMKillFocus);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;


procedure TNSTransMemo.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;

procedure TNSTransMemo.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransMemo.EMReplaceSel(var Message: TMessage);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransMemo.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,false);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE);
end;
end;

procedure TNSTransMemo.WMKeyDown(var Message: TWMKeyDown);
begin
// SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
end;

procedure TNSTransMemo.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result:=1;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

constructor TNSTransMemo.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents]
// csSetCaption,
end;

procedure TNSTransMemo.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
end;
end;

{ TNSTransRichEdit }
procedure TNSTransRichEdit.WMHScroll(var Message: TWMHScroll);
begin
inherited;
// PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransRichEdit.WMVScroll(var Message: TWMVScroll);
begin
// SendMessage(Handle,TMWM_SpecialInvalidate,0,0);
inherited;
// PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

procedure TNSTransRichEdit.WMLButtonDown(Var Message: TWMLButtonDown);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransRichEdit.CNCTLCOLOREDIT(var Message:TWMCTLCOLOREDIT);
begin
with Message do
begin
SetBkMode(ChildDC,TRANSPARENT);
Result:=GetStockObject(HOLLOW_BRUSH)
end
end;
procedure TNSTransRichEdit.WMSetText(var Message:TWMSetText);
begin
inherited;
if not (csDesigning in ComponentState) then
PostMessage(Handle,TMWM_SpecialInvalidate,0,0)
end;

procedure TNSTransRichEdit.SpecialInvalidate(var Message:TMessage);
var r:TRect;
begin
if Parent<>nil then
begin
r:=ClientRect;
r.TopLeft:=Parent.ScreenToClient(ClientToScreen(r.TopLeft));
r.BottomRight:=Parent.ScreenToClient(ClientToScreen(r.BottomRight));
InvalidateRect(Parent.Handle,@r,false);
RedrawWindow(Handle,nil,0,RDW_FRAME+RDW_INVALIDATE)
end;
end;

procedure TNSTransRichEdit.WMKeyDown(var Message: TWMKeyDown);
begin
inherited;
end;

procedure TNSTransRichEdit.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
Message.Result:=1;
PostMessage(Handle,TMWM_SpecialInvalidate,0,0);
end;

constructor TNSTransRichEdit.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=[csCaptureMouse, csDesignInteractive,
csClickEvents, csOpaque, csDoubleClicks,
csReplicatable, csNoStdEvents]
// csSetCaption,
end;

procedure TNSTransRichEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle:=ExStyle or WS_EX_TRANSPARENT and not WS_EX_WINDOWEDGE
and not WS_EX_STATICEDGE and not WS_EX_DLGMODALFRAME and not
WS_EX_CLIENTEDGE;
WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
end;
end;

procedure Register;
begin
RegisterComponents('Netsoft', [TNSTransEdit, TNSTransMemo, TNSTransRichEdit]);
end;

end.
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
非常感谢你还在关注!
现在的问题是:一编译到这里就出错!
procedure TNSTransMemo.WMPaint(Var Message: TWMPaint);
begin
Brush.Style:= bsClear;
FillRect(Handle, ClientRect, GetBrushObj( //在这里,
inherited;
end;
更改成: FillRect(Handle, ClientRect, GetBrushObj)
还是不行!
我是把这些代码生成NSTrEdit.pas,然后当成控件来安装的!
请帮忙 一下,谢谢!
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
哦,份内之事啦
不好意思啦,
把那句去掉吧~~~~~~~~~
那句无关紧要的~~~~~~~~~~~~~~
我本来想用来将控件填充的,
后来不想亲自处理WM_Paint啦,
当然就没有用咯~~~~~~~~~~~~~~~
删除它,就OK啦~~~~~~~~~~~~~~~~~
不好意思啦,XIXI,呵呵~~~~~~~~~~~~
 
M

Ming618

Unregistered / Unconfirmed
GUEST, unregistred user!
Netsoft,请你到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2254459领分
你让RichEdit透明了但如何使RxRichEdit控件透明呢?希望你能解答
 
C

constrol

Unregistered / Unconfirmed
GUEST, unregistred user!
不行啊,netsoft大哥,把它你上面的那段copy成NSTrEdit.pas,也删了那行,然后当成控件安装,不能通过,出错:Build [Fatal Error] NSTrEdit.pas(1): Program or unit 'NSTrEdit.pas' recursively uses itself

给个QQ吧!好联系!
 
N

Netsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
啊,不会吧!!
你把上面的代码保存后,
如果说哪句错误的话,
就删除哪行,
其实就是那个
procedure TNSTransMemo.WMPaint(Var Message: TWMPaint);
把下面这句删掉啦:
FillRect(Handle, ClientRect, GetBrushObj( //删除他啦

呵呵~~~~~~~~~~~~~~~~~~~`
 

Similar threads

S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
I
回复
0
查看
897
import
I
I
回复
0
查看
552
import
I
顶部