用了xpman后, edit边框变成浅蓝色,有没有办法改变这个颜色?
解决方案 »
- 【板务醒目】辞去 Windows SDK/API 板斑竹职务 2/10【散分醒目】
- 要做程序收集公司每台电脑Windows的安装序列号,要求可以收集到所有Windows版本的安装序列号,有什么好方法?
- 多线程问题求助
- 一个Socket client 连接多个socket server 的 问题(急)
- 关于panel的问题?(50分)
- 我的cs程序怎么不能正确连接数据库
- 各位老大!!如何使用delphi对autocad进行二次开发!
- 怎样在SQL2000数据库中存入图像(.bmp ,.jpg)?急!!!!
- 问一个简单的问题
- 在控件TPageControl中的数据表控制问题
- 除了tocrdll识别验码的外?还有别的吗?
- delphi record pchar类型 乱码问题。。。。。。。
不得闲的博客有一个模仿 QQ 的 Edit,你可以参考一下。
http://www.cnblogs.com/DxSoft/archive/2010/05/04/1727023.html
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan;type
TForm1 = class(TForm)
Edit1: TEdit;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldEdtWndProc: TWndMethod;
procedure NewEdtWndProc(var Message: TMessage);
procedure DrawControl(FEdit: TCustomEdit);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
function GetWinExStyle(const Handle, dwStyle: Integer): boolean;
begin
Result := ((GetWindowLong(Handle, GWL_EXSTYLE) and dwStyle) <> 0);
end;
procedure DrawRoundRect(const DC: HDC; const c: TColor; const r: TRect; const w: Integer; const xRound: Integer = 6);
var
Pen: hPen;
OldPen: hPen;
OldBrush: hBrush;
begin
Pen := CreatePen(PS_SOLID, w, c);
OldPen := SelectObject(dc, Pen);
OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
RoundRect(DC, r.Left, r.Top, r.Right, r.Bottom, xRound, xRound); SelectObject(dc, OldBrush);
SelectObject(dc, OldPen);
DeleteObject(Pen);
end;procedure TForm1.DrawControl(FEdit: TCustomEdit);
var
DC: HDC;
r: TRect;
begin
if not GetWinExStyle(FEdit.Handle , WS_EX_CLIENTEDGE) then
Exit; DC := GetWindowDC(FEdit.Handle);
try
GetWindowRect(FEdit.Handle, r);
OffsetRect(r, -r.Left, -r.Top);
DrawRoundRect(DC, clRed, r, 1, 4);
InflateRect(r, -1, -1);
DrawRoundRect(DC, clWhite, r, 1, 0);
finally
ReleaseDC(FEdit.Handle, DC);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldEdtWndProc := Edit1.WindowProc;
Edit1.WindowProc := NewEdtWndProc;end;procedure TForm1.NewEdtWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_NCPAINT:
begin
//Default(Message);
DrawControl(Edit1);
end;
else
OldEdtWndProc(Message);
end;end;end.