如何在TEdit或memo中实现背景图案呀 没有第三方控件是不行的,推荐你到:http://vclxx.vcl.orghttp://www.dream-com.com 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.dream-com.com/memo.html的一个Memo功能非常强 我下载了dream memo,控件真多,每个控件都可带背景,源码要钱,但非源码好象不要钱,试一试,会使你的眼睛发直呀 从TCustomEdit或TEdit派生,请参考http://www.csdn.net/expert/topic/120/120168.shtm TesBasicEdit = class(TEdit) private { Private declarations } FPicture:TPicture; protected { Protected declarations } SetPicture(const Value:TPicture); procedure paint;override; public { Public declarations } published { Published declarations } property Picture:TPicture read FPicture write SetPicture; end; 中关于派生VCL类的方法,不过这个类更加容易,因为无须理解消息的处理; 只要在内声明中添加一个FPicture:TPicture对象,再添加属性:property Picture:TPicture read FPicture write SetPicture; 其中SetPicture(const Value:TPicture)为函数;procedure TesBasicEdit.SetPicture(const Value:TPicture);begin //还可以进一步添加对图片要求的代码,如 //if Value.BitMap.Width>200 then Exit; FPicture:=Value; Invalidate;end; 以上代码是将图片存入控件对象,还有一件最重要的事情,就是将它显示出来,这需要重载Paint方法(注意是override);procedure TesBasicEdit.Paint;const Gap=3;begin inherited; Canvas.Font:=Font; //Canvas.Font.Size:=7; //可以在此更改最小字体输出(大小可以小于8) Canvas.Brush.Style := bsClear; Canvas.Lock; Canvas.CopyRect(Rect(Gap,Gap,Width-Gap,Height-Gap), FPicture.BitMap.Canvas, Rect(0,0,FPicture.BitMap.Width,FPicture.BitMap.Height)); Canvas.TextOut(4,4,Text); Canvas.UnLock;end; 以上代码未经破坏性测试,仍需调节,所以质量不保证,希望对你有用。 对与对TMemo的派生基本类似,不过要困难的多,可以这样说“不如从TCustomEdit派生”(注:TMemo<-TCustomMemo<-TCustomEdit)。因为直接从TMemo或TCustomMemo派生会有许多重复的文字输出代码,这样出来控件的执行效率下降,快速变化时还可能出现抖动、闪烁的后遗症。 Sorry!类声明有错: TesBasicEdit = class(TEdit) private { Private declarations } FPicture:TPicture; protected { Protected declarations } //此处出错 procedure SetPicture(const Value:TPicture); procedure paint;override; public { Public declarations } published { Published declarations } property Picture:TPicture read FPicture write SetPicture; end; 窗体上所有控件都不见了,就看见两个,很奇怪 用delphi写 阴历转阳历的函数 delphi utf-8 支持乱码问题 急需Delphi、VC、ASP、PHP人才,只要你说行,待遇自己提 DELPHI中怎样定义一个全局对象? 请问资源泄露问题 sos:dbgrid中如何实现隔行颜色变幻? 怎样隐藏已经存在的窗体,比如ie delphi Tcxspreadsheetbook 使用问题 有关socket问题,请高手指教 我写有一套完整的局域网udp监控系统for 9x,如何将其改至nt系统,望见教。 如何使用TNMHTTP的Get函数
功能非常强
源码要钱,但非源码好象不要钱,试一试,会使你的眼睛发直呀
从TCustomEdit或TEdit派生,请参考http://www.csdn.net/expert/topic/120/120168.shtm
TesBasicEdit = class(TEdit)
private
{ Private declarations }
FPicture:TPicture;
protected
{ Protected declarations }
SetPicture(const Value:TPicture);
procedure paint;override;
public
{ Public declarations }
published
{ Published declarations }
property Picture:TPicture read FPicture write SetPicture;
end;
中关于派生VCL类的方法,不过这个类更加容易,因为无须理解消息的处理; 只要在内声明中添加一个FPicture:TPicture对象,再添加属性:
property Picture:TPicture read FPicture write SetPicture; 其中SetPicture(const Value:TPicture)为函数;procedure TesBasicEdit.SetPicture(const Value:TPicture);
begin
//还可以进一步添加对图片要求的代码,如
//if Value.BitMap.Width>200 then Exit;
FPicture:=Value;
Invalidate;
end; 以上代码是将图片存入控件对象,还有一件最重要的事情,就是将它显示出来,这需要重载Paint方法(注意是override);procedure TesBasicEdit.Paint;
const
Gap=3;
begin
inherited;
Canvas.Font:=Font;
//Canvas.Font.Size:=7; //可以在此更改最小字体输出(大小可以小于8)
Canvas.Brush.Style := bsClear;
Canvas.Lock;
Canvas.CopyRect(Rect(Gap,Gap,Width-Gap,Height-Gap),
FPicture.BitMap.Canvas,
Rect(0,0,FPicture.BitMap.Width,FPicture.BitMap.Height));
Canvas.TextOut(4,4,Text);
Canvas.UnLock;
end; 以上代码未经破坏性测试,仍需调节,所以质量不保证,希望对你有用。 对与对TMemo的派生基本类似,不过要困难的多,可以这样说“不如从TCustomEdit派生”(注:TMemo<-TCustomMemo<-TCustomEdit)。因为直接从TMemo或TCustomMemo派生会有许多重复的文字输出代码,这样出来控件的执行效率下降,快速变化时还可能出现抖动、闪烁的后遗症。
private
{ Private declarations }
FPicture:TPicture;
protected
{ Protected declarations }
//此处出错
procedure SetPicture(const Value:TPicture);
procedure paint;override;
public
{ Public declarations }
published
{ Published declarations }
property Picture:TPicture read FPicture write SetPicture;
end;