这个透明的远离实际是靠这个TImage来充当背景模拟的,这个TImage必须重叠在这个memo的下面, 所以你改变memo大小时,应该相应的把这个Timage的大小跟着改变照着你上面给的网页里的改一下,当然这里richedit就换成memo了 if msg.Msg = WM_ERASEBKGND then msg.result := 1 else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then begin bb := null; msg.result := bb end // 当memo尺寸改变时 else if (Msg.Msg = WM_SIZE) then begin // 把Image1控件跟memo1的大小设置相同 Image1.SetBounds(memo1.Left, memo1.Top, memo1.Width, memo1.Height); end else oldproc(msg)
procedure TForm1.ClassWndProc(var Msg: TMessage); begin if msg.Msg = WM_ERASEBKGND then msg.result := 1 else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then begin bb := null; msg.result := bb end else if (Msg.Msg = WM_SIZE) then begin Image1.SetBounds(mmo1.Left, mmo1.Top, mmo1.Width, mmo1.Height); end else oldproc(msg) end;
所以你改变memo大小时,应该相应的把这个Timage的大小跟着改变照着你上面给的网页里的改一下,当然这里richedit就换成memo了 if msg.Msg = WM_ERASEBKGND then
msg.result := 1
else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then
begin
bb := null;
msg.result := bb
end
// 当memo尺寸改变时
else if (Msg.Msg = WM_SIZE) then
begin
// 把Image1控件跟memo1的大小设置相同
Image1.SetBounds(memo1.Left, memo1.Top, memo1.Width, memo1.Height);
end
else
oldproc(msg)
procedure TForm1.ClassWndProc(var Msg: TMessage);
begin
if msg.Msg = WM_ERASEBKGND then
msg.result := 1
else if (msg.Msg = CN_CTLCOLORMSGBOX) or (msg.Msg = CN_CTLCOLORSTATIC) then
begin
bb := null;
msg.result := bb
end
else if (Msg.Msg = WM_SIZE) then
begin
Image1.SetBounds(mmo1.Left, mmo1.Top, mmo1.Width, mmo1.Height);
end
else
oldproc(msg)
end;