请问一下如何修改DELPHI中的控件的属性?比如我们给Edit添加一个边框颜色的属性,请问一下该怎么写,请各位高手写出代码好吗,小弟是菜鸟一个,谢谢!!
解决方案 »
- Fri, 10 Sep 2010 22:46:28 +0800转化成日期格式
- RichEdit 问题,改变颜色。。。。。。。。。。
- 关于CoolTrayIcon控件在任务栏中的图标显示问题?
- 怎样使鼠标捕捉直线或者曲线的交叉点?[悬赏50分]
- 请问delphi+ado+sqlserver2000的程序怎么打包发布?
- @@@@@@@@DateTimePicker1取现在的日期,,DateTimePicker2取第二个日期,,,,取好分别放入STR1,STR2,在求二者的工作日工资,在线等,一解决,马
- 请教:数据库文件导出到XML文件方法(100分请教)
- 我新写的考试系统第二版(源程序),欢迎免费下载...
- 如何调试delphi串口通讯的结果
- 如何判断光驱的门是打开的,还是关闭的
- 急急急!!如何动态更改DBChart中X,Y坐标轴的内容
- 怎么才能使下面的语句在delphi程序中执行?
然后增加所需
Windows, Messages, SysUtils, Classes, Controls, StdCtrls, Graphics, Forms;type
TEditEx = class(TEdit)
private
{ Private declarations }
FBorderColor: TColor;
procedure SetColors(Value: TColor);
procedure RedrawBorder (const Clip: HRGN);
procedure WMNCPaint (var Message: TMessage); message WM_NCPAINT;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create (AOwner: TComponent); override;
published
{ Published declarations }
property ColorBorder: TColor read FBorderColor write SetColors default $008396A0;
end;procedure Register;implementationconstructor TEditEx.Create(AOwner: TComponent);
begin
inherited;
FBorderColor := $008396A0;
end;procedure TEditEx.WMNCPaint (var Message: TMessage);
begin
inherited;
RedrawBorder(HRGN(Message.WParam));
end;procedure TEditEx.SetColors(Value: TColor);
begin
if FBorderColor <> Value then
FBorderColor := Value;
RedrawBorder(0);
end;procedure TEditEx.RedrawBorder (const Clip: HRGN);
var
DC: HDC;
R: TRect;
BtnFaceBrush: HBRUSH;
begin
DC := GetWindowDC(Handle);
try
GetWindowRect(Handle, R);
OffsetRect(R, -R.Left, -R.Top);
BtnFaceBrush := CreateSolidBrush(ColorToRGB(FBorderColor));
if (not(csDesigning in ComponentState) and
(Focused or (not(Screen.ActiveControl is TEdit)))) then
begin
{ Focus }
FrameRect(DC, R, BtnFaceBrush);
InflateRect(R, -1, -1);
end
else
begin
{ non Focus }
FrameRect(DC, R, BtnFaceBrush);
InflateRect(R, -1, -1);
end;
finally
ReleaseDC(Handle, DC);
end;
DeleteObject(BtnFaceBrush);
end;procedure Register;
begin
RegisterComponents('Test', [TEditEx]);
end;end.
以上可以实现,不过代码我没有时间进行优化。你自己研究一下。