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;
时间: 2024-12-19 05:04:02

Delphi给窗体镶边-为控件加边框,描边,改变边框颜色的相关文章

如何控制其他程序窗体上的窗口控件

用我的方法来控制其他程序窗体上的窗口控件,必须先了解什么是回调函数.我的理解是这样的:回调函数写出来不是自己的程序去调用的,反而是让其他的东西去调用,比如windows操作系统,比如其他的程序等等之类的.但是什么时候被调用却不知道了.回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数.所以很多人打比方,说回调函数还真有点像您随身带的BP机:告诉别人

delphi Components[i]清除所有edit控件中的内容

(* 一般的清空combobox方法 combobox1.clear; ... combobox9.clear; *) procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i:=0 to self.ComponentCount-1 do begin if self.Components[i] is TCombobox then TCombobox(self.Components[i]).clear;

C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下的Microsoft Excel电子表格程序开始引入的,Excel电子表格用户有时需要同时操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于是就产生了MDI程序 2.效果图: 如下图所示,多窗体嵌套,其中一个是父窗体,其条是子窗体. 横向排列下面的窗体: 纵向排列下面的窗体: 关闭全部子窗

delphi xe6 for android 自带控件LocationSensor优先使用GPS定位的方法

delphi xe6 for android LocationSensor控件默认是优先使用网络定位,对定位精度要求高的应用我们可以修改原码直接指定GPS定位. 修改方法: 将C:\Program Files\Embarcadero\Studio\14.0\source\rtl\common\System.Android.Sensors.pas拷贝到自己的工程目录里 打开System.Android.Sensors.pas找到function TUIAndroidLocationSensor.D

WinForm 鼠标进入移开窗体事件,因子控件导致的误触发

1 /// <summary> 2 /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 3 /// </summary> 4 /// <param name="e"></param> 5 protected override void OnControlAdded(ControlEventArgs e) 6 { 7 Control control = e.Control; // 获取添加的子控件 8 c

C#实现窗体拖动时各个控件同比自动放缩大小

实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录, 然后根据窗体改变的大小同时放缩. 简要步骤如下: 1 创建C#窗体程序项目. 2  Panel放置到窗体. 3  设置属性dock为fill. 4  注意MinnumSize不能设置为0, 改成大于0都行. public partial class FrmDemo : Form { double dFrmWidth; double dFrmHeight; double dZoomHorizon; doubl

C#窗体加载和控件加载不同步导致控件闪烁

窗体加载和控件加载不同步导致的控件闪烁现象:// 代码块加在父窗体中的任意位置,解决窗体加载和控件加载不同步导致的控件闪烁问题        protected override CreateParams CreateParams        {            get            {                CreateParams cp = base.CreateParams;                cp.ExStyle |= 0x02000000;     

C# winform窗体简单保存界面控件参数到xml

原文:C# winform窗体简单保存界面控件参数到xml 引用网上的 XMLHelper 地址 :https://www.cnblogs.com/chnboy/archive/2009/04/02/1427652.html 稍做修改 using System; using System.Linq; using System.Xml; namespace FormTest { /// <summary> /// XMLHelper XML文档操作管理器 /// </summary>

如果希望点击父控件子控件也响应的话, 可以给子控件加如下属性: ?android:duplicateParentState="true"

如果希望点击父控件子控件也响应的话, 可以给子控件加如下属性: android:duplicateParentState="true" 来自为知笔记(Wiz)