博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Controls 属性与继承 TShape 类的小练习
阅读量:6243 次
发布时间:2019-06-22

本文共 2410 字,大约阅读时间需要 8 分钟。

  hot3.png

本例效果图:
26153623_lxcZ.gif

代码文件:

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ExtCtrls;type  TMyShape = class(TShape)  protected    procedure 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;var  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);const  W = 50;  H = 50;var  shape: TMyShape;begin  shape := 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);var  i: Integer;begin  if Panel1.ControlCount = 0 then Exit;  Randomize;  i := Random(Panel1.ControlCount - 1);  Panel1.Controls[i].Free;end;{ TMyShape }procedure TMyShape.CMMouseenter(var Message: TMessage);const  s = '当前 %s 的颜色值是: %.6x';var  WCtrl: TWinControl;begin  WCtrl := 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);const  s = 'Form1';var  WCtrl: TWinControl;begin  WCtrl := Parent;  while WCtrl.HasParent do WCtrl := WCtrl.Parent;  if WCtrl is TForm then TForm(WCtrl).Caption := s;  inherited;end;end.
窗体文件:

object Form1: TForm1  Left = 0  Top = 0  Caption = 'Form1'  ClientHeight = 212  ClientWidth = 395  Color = clBtnFace  Font.Charset = DEFAULT_CHARSET  Font.Color = clWindowText  Font.Height = -11  Font.Name = 'Tahoma'  Font.Style = []  OldCreateOrder = False  PixelsPerInch = 96  TextHeight = 13  object Panel1: TPanel    Left = 8    Top = 8    Width = 297    Height = 193    Caption = 'Panel1'    TabOrder = 0  end  object Button1: TButton    Left = 311    Top = 40    Width = 75    Height = 25    Caption = #28155#21152    TabOrder = 1    OnClick = Button1Click  end  object Button2: TButton    Left = 311    Top = 85    Width = 75    Height = 25    Caption = #38543#26426#21024#38500    TabOrder = 2    OnClick = Button2Click  endend

转载于:https://my.oschina.net/hermer/blog/320278

你可能感兴趣的文章
Linux下svn常用指令【转】
查看>>
C#下2\10\16进制互转代码总汇
查看>>
人工智能和机器学习领域的一些有趣的开源项目
查看>>
Objective-C:继承的体现
查看>>
三星发布Exynos 7872移动处理器 定位中端市场
查看>>
面试题大全
查看>>
设计模式系列-命令模式
查看>>
Java中的流
查看>>
如何启动或关闭oracle的归档(ARCHIVELOG)模式
查看>>
[LintCode] Paint Fence 粉刷篱笆
查看>>
mysql中实现类似oracle中的nextval函数
查看>>
使用按键精灵+umdh定位内存泄露问题的方式
查看>>
RecyclerView实现ViewPager效果
查看>>
Bandicam视频录制技巧总结+小丸工具箱压缩视频解决视频体积问题
查看>>
JSP实现用户登录样例
查看>>
搞笑的W3C和M$对DOM中属性命名
查看>>
[Struts]让Dreamweaver显示Struts标签的插件
查看>>
便利的html5 之 required、number 、pattern
查看>>
[LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字
查看>>
VC6.0 C++ 如何调用微软windows系统SDK 语音API
查看>>