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