PS:因为我现在用的电脑是WIN7 64位系统,所以没有实现功能,不知道XP是否可行。
//1.定义方法 procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT; //2.实现方法 procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); var dc:hDc; Pen:hPen; OldPen:hPen; OldBrush:hBrush; begin inherited; //获取本窗口设备上下文 dc:=GetWindowDC(Handle); msg.Result:=1; //创建画笔,实线、宽度为l、红色 Pen:=CreatePen(PS_SOLID,1,RGB(255,0,0)); //将新创建的画笔选入窗体的设备上下文 OldPen:=SelectObject(dc,Pen); //将系统库存的空画刷入窗体的设备上下文 OldBrush:=SelectObject(dc,GetStockObject(NULL_BRUSH)); //给窗体“镶边” Rectangle(dc,0,0,Form1.Width,Form1.Height); //恢复旧画笔和旧画刷 SelectObject(dc,OldBrush); SelectObject(dc,oldPen); //删除新创建的画笔,释放系统资源 DeleteObject(Pen); //释放设备上下文 ReleaseDC(Handle,Canvas.Handle); end; //3.DBGrid控件描边 procedure TForm1.FormPaint(Sender: TObject); var Rct: TRect; begin Rct:=Rect(Dbgrid1.Left-1,Dbgrid1.Top-1,Dbgrid1.Left+Dbgrid1.Width+1,Dbgrid1.top+Dbgrid1.Height+1); with Form1.Canvas do begin Pen.Color := clRed; Pen.Width := 1; Brush.Style := bsClear; Rectangle(Rct); end; end;
http://www.cnblogs.com/FKdelphi/p/4633801.html