请问如何实现圆角的TEdit或者TMemo ( 积分: 300 )

  • 主题发起人 主题发起人 ccw128
  • 开始时间 开始时间
C

ccw128

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何可以实现四个角是圆角的TEdit以及TMemo控件?如下图所示:

http://ihome.cuhk.edu.hk/~s040991/edit.jpg

我试图用VCLSkin来实现,但是做出来的TEdit控件四个角都是方的。
 
请问如何可以实现四个角是圆角的TEdit以及TMemo控件?如下图所示:

http://ihome.cuhk.edu.hk/~s040991/edit.jpg

我试图用VCLSkin来实现,但是做出来的TEdit控件四个角都是方的。
 
做一个圆角面板,然后将输入框放入这个面板中就可以了!
 
vclskin应该能行吧。
 
用换肤控件,更多的效果都能做出来。
我用VCLSkin就能达到楼主要的效果。
 
VCL的SkinBuilder里面没有对TEdit的Skin的设计功能阿?
 
var
Rgn: HRgn;
begin
Rgn := CreateRoundRectRgn(0, 0, Edit.Width, Edit.Height, 4, 4);
SetWindowRgn(Edit.Handle, Rgn, True);
end;
 
//使TWinControl 的边角变成半圆形
//Author: jfyes(转贴)
//date: 2004-12-3
procedure TTaiShing.MakeRounded(Control: TWinControl);
var
R: TRect;
Rgn: HRGN;
begin
with Control do
begin
R := ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20);
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, - 3, - 3);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Handle, rgn, True);
Invalidate;
end;
end;
 
procedure MakeRounded(Control: TWinControl);
var
R: TRect;
Rgn: HRGN;
begin
with Control do
begin
R := ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20);
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, - 5, - 5);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Handle, rgn, True);
Invalidate;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
// TMemo:
Memo1.BorderStyle := bsNone;
MakeRounded(Memo1);
// TEdit:
Edit2.BorderStyle := bsNone;
MakeRounded(Edit2);
// TPanel:
MakeRounded(Panel1);
// TStaticText:
MakeRounded(StaticText1);
// TForm
Form1.BorderStyle := bsNone;
MakeRounded(Form1);
end;
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
790
DelphiTeacher的专栏
D
D
回复
0
查看
648
DelphiTeacher的专栏
D
后退
顶部