文档章节

Controls 属性与继承 TShape 类的小练习

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 308
阅读 8
收藏 0
本例效果图:



代码文件:
unit Unit1;

interface

uses
  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
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/10/23/1317926.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Objective-c 继承,多态,封装

.m文件 // // main.m // Objective-c 继承 // Created by 非凡 on 15/10/10. // Copyright (c) 2015年 非凡. All rights reserved. // #import <Foundation/Foundation.h> //引入其他类的头文......

_pioneer_
2015/10/12
76
0
练习项目06:解析XML(下)

练习项目06:解析XML(下) Python自动化运维2017-12-281 阅读 PythonXMLPython教程 这一篇教程,我们通过更好的方式对XML文件进行解析并生成网站结构与HTML文件。 一、因为需要创建目录,我...

Python自动化运维
2017/12/28
0
0
练习项目06:解析XML(下)

练习项目06:解析XML(下) Python自动化运维2017-12-281 阅读 PythonXMLPython教程 这一篇教程,我们通过更好的方式对XML文件进行解析并生成网站结构与HTML文件。 一、因为需要创建目录,我...

Python自动化运维
2017/12/28
0
0
D06——C语言基础学PYTHON

C语言基础学习PYTHON——基础学习D06 20180821内容纲要:  面向对象初级学习     1 面向对象     2 类       (1)封装       (2)继承       (3)多态    ...

m1racle
2018/08/22
0
0
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

tony关东升
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
2
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
4
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部