Delphi给窗体镶边-为控件加边框,描边,改变边框颜色
PS:因为我现在用的电脑是WIN7 64位系统,所以没有实现功能,不知道XP是否可行。
1 //1.定义方法 2 procedure WMNCPaint(var Msg : TWMNCPaint); message WM_NCPAINT; 3 4 //2.实现方法 5 procedure TForm1.WMNCPaint(var Msg: TWMNCPaint); 6 var 7 dc:hDc; 8 Pen:hPen; 9 OldPen:hPen; 10 OldBrush:hBrush; 11 begin 12 inherited; 13 //获取本窗口设备上下文 14 dc:=GetWindowDC(Handle); 15 msg.Result:=1; 16 //创建画笔,实线、宽度为l、红色 17 Pen:=CreatePen(PS_SOLID,1,RGB(255,0,0)); 18 //将新创建的画笔选入窗体的设备上下文 19 OldPen:=SelectObject(dc,Pen); 20 //将系统库存的空画刷入窗体的设备上下文 21 OldBrush:=SelectObject(dc,GetStockObject(NULL_BRUSH)); 22 //给窗体“镶边” 23 Rectangle(dc,0,0,Form1.Width,Form1.Height); 24 //恢复旧画笔和旧画刷 25 SelectObject(dc,OldBrush); 26 SelectObject(dc,oldPen); 27 //删除新创建的画笔,释放系统资源 28 DeleteObject(Pen); 29 //释放设备上下文 30 ReleaseDC(Handle,Canvas.Handle); 31 end; 32 33 34 //3.DBGrid控件描边 35 procedure TForm1.FormPaint(Sender: TObject); 36 var 37 Rct: TRect; 38 begin 39 Rct:=Rect(Dbgrid1.Left-1,Dbgrid1.Top-1,Dbgrid1.Left+Dbgrid1.Width+1,Dbgrid1.top+Dbgrid1.Height+1); 40 with Form1.Canvas do 41 begin 42 Pen.Color := clRed; 43 Pen.Width := 1; 44 Brush.Style := bsClear; 45 Rectangle(Rct); 46 end; 47 end;
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_200417075318%E5%8A%A0%E6%88%91QQ.jpg)
![](https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_200417080925%E5%8A%A0%E6%88%91%E5%BE%AE%E4%BF%A1.jpg)