本例效果图:



代码文件:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTMyShape = class(TShape)protectedprocedure CMMouseenter(var Message: TMessage); message CM_MOUSEENTER;procedure CMMouseleave(var Message: TMessage); message CM_MOUSELEAVE;end;TForm1 = class(TForm)Panel1: TPanel;Button1: TButton;Button2: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
constW = 50;H = 50;
varshape: TMyShape;
beginshape := TMyShape.Create(Self);shape.Parent := Panel1;shape.Width := W;shape.Height := H;Randomize;shape.Left := Random(Panel1.ClientWidth - W);shape.Top := Random(Panel1.ClientHeight - H);shape.Brush.Color := Random($FFFFFF);
end;procedure TForm1.Button2Click(Sender: TObject);
vari: Integer;
beginif Panel1.ControlCount = 0 then Exit;Randomize;i := Random(Panel1.ControlCount - 1);Panel1.Controls[i].Free;
end;{ TMyShape }procedure TMyShape.CMMouseenter(var Message: TMessage);
consts = '当前 %s 的颜色值是: %.6x';
varWCtrl: TWinControl;
beginWCtrl := Parent;while WCtrl.HasParent do WCtrl := WCtrl.Parent;if WCtrl is TForm then TForm(WCtrl).Caption := Format(s, [ClassName,Brush.Color]);inherited;
end;procedure TMyShape.CMMouseleave(var Message: TMessage);
consts = 'Form1';
varWCtrl: TWinControl;
beginWCtrl := Parent;while WCtrl.HasParent do WCtrl := WCtrl.Parent;if WCtrl is TForm then TForm(WCtrl).Caption := s;inherited;
end;end.

窗体文件:


object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 212ClientWidth = 395Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalsePixelsPerInch = 96TextHeight = 13object Panel1: TPanelLeft = 8Top = 8Width = 297Height = 193Caption = 'Panel1'TabOrder = 0endobject Button1: TButtonLeft = 311Top = 40Width = 75Height = 25Caption = #28155#21152TabOrder = 1OnClick = Button1Clickendobject Button2: TButtonLeft = 311Top = 85Width = 75Height = 25Caption = #38543#26426#21024#38500TabOrder = 2OnClick = Button2Clickend
end

转载于:https://www.cnblogs.com/del/archive/2008/10/23/1317926.html

Controls 属性与继承 TShape 类的小练习相关推荐

  1. class传参 python_Python类的概念、定义、属性、继承

    1.面向对象(Object Oriented,OO)概念 面向对象,是我们编程的一种思维. 早期的计算机编程是基于面向过程的方法,例如实现算术运算1+1+2 = 4,通过设计一个算法就可以解决当时的问 ...

  2. php函数、类和对象以及类的封装、继承、类的静态方法、静态属性

    php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 原文:php函数.类和对象以及类的封装.继承.类的静态方法.静态属性 1.函数 php内置函数可以直接使用,如果没有安装php扩展即可 ...

  3. python2筑基-(封装/继承/多态/类属性)

    继承 单继承 """""" """ 在对象中,有种关系叫做父子关系 继承--子类拥有父类中定义的属性,函数语法 ...

  4. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...

    封装,继承,多态 隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写 -**************************************************** ...

  5. 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)

    27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...

  6. python查询模块所有类_python 小技巧(import模块、查询类继承关系、安装包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在这里列举一些我使用Python时积累的小技巧.这些技巧是我在使用Python过程 ...

  7. python完全支持面向对象编程思想_面向对象的编程思想和Python的类,访问和属性,继承...

    本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和Python类的继承. 复制代码 一.访问权限: Python中在类的内部定义属性和方法,在类的外部是可以直接调用或进行访问 ...

  8. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  9. python 类和对象_面向对象的编程思想和Python的类,访问和属性,继承

    面向对象的编程思想和Python的类,类的方法和属性,实例方法这一文从面向对象的角度,介绍类的定义,类的属性和自定义方法. 本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和 ...

最新文章

  1. SegmentFault Hackathon 2018 火热登场,Let's hack!
  2. 分析Kotlin协程只挂起不恢复会怎样(是否存在协程泄漏),以及挂起的协程存在哪里?
  3. 鸿蒙开发-基础组件介绍及chart组件使用
  4. 视频+PPT | 企业服务进阶第一课:客户全生命周期运营总览
  5. Transition 实现轮播图
  6. 使用python将excel数据导入数据库
  7. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略
  8. 在创建maven项目时出现: GC overhead limit exceeded 问题
  9. nginx相关概念——负载均衡和动静分离
  10. 从 RequireJS 到 SeaJS(3)
  11. Lucene中的各种consumer
  12. BT656与BT1120的区别
  13. 报表工具能实现怎么的导出效果?
  14. 职业规划-服务器运维工程师(待完善)
  15. 联想服务器安装系统鼠标失灵,ThinkPad自行安装操作系统后键盘鼠标失灵怎么办...
  16. 推荐一本好书《 Java程序员 上班那点事儿》
  17. 手机最快的网络服务器,手机网速最快的dns地址
  18. 自定义view仿写今日头条点赞动画
  19. python中关于Process finished with exit code -1073740791 (0xC0000409)的解决办法
  20. 21届实习腾讯面试的经验贴(已凉)

热门文章

  1. python中的位置怎么看_如何知道项目在Python有序字典中的位置
  2. socket连接时间太长受什么原因影响?_真全粮多功能酿酒设备-酿酒发酵前期为什么要通风处理?...
  3. Docker Centos 7.X部署Mysql并修改编码
  4. html辅助方法以及常用属性值,工作总结 @Html 辅助方法 为 生成的 标签设置元素属性 htmlAttributes 一个对象,其中包含要为该元素设置的 HTML 特性。...
  5. php生成首页 教程,简单静态页生成 过程_PHP教程
  6. dvd管理器java_Java DVD管理器 基础示例代码下载
  7. phpsocket服务端和VC客户端通信实例
  8. c语言中malloc、realloc与calloc 的区别以及联系
  9. 第十一届河南省赛--H : Attack City and Capture Territory
  10. ashx 跨域_ASP.NET通用HTTP处理程序(ashx的),支持JSONP