非常简单的问题,送分. 没有读写方法的属性的含义是什么?(100分)

  • 主题发起人 主题发起人 Enter319
  • 开始时间 开始时间
E

Enter319

Unregistered / Unconfirmed
GUEST, unregistred user!
我刚刚学写控件,不明白在delphi的vcl中经常看到没有读写方法的属性的含义.
如下面的代码
published
property Width;
property Height;
另外在控件中,子控件继承父控件,属性如何组织.
 
这就是属性的重载,
//另外在控件中,子控件继承父控件,属性如何组织.
什么意思呀!
 

这要怎么说?找本书看看或者看看源码。
例如TEdit,你能看到TEdit = class(TCustomEdit)
看看TCursomEdit是怎样实现的。TCustomEdit = class(TWinControl),类推。
 
是的, 有些方法在基类已经实现只是没有公布, 可以在子类中公布出来
 
这样的代码在基类中肯定不是 published ,很可能是 protected

published
property Width;
property Height;

在派生类中把它“公布”一下。这样可以在属性编辑器中使用。
 
懂一点点,在基类中定义一些保护属性,主要是便于子类的扩展,那位提供一个完整的例子.
马上就给分.
 
Delphi自代了许多例子,
如面的代码,
unit FRMMAIN;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, Menus, ExtCtrls, ImgList, XPMenu, Buttons,
StdCtrls, DBTables,registry,ShellApi, myself,CommCtrl,
DB, TFlatSpeedButtonUnit, TFlatHintUnit,Grids, DBGrids;

type
TFrm_main = class(TForm)
CoolBar_tools: TCoolBar;
MainMenu_main: TMainMenu;
Menu_file: TMenuItem;
Menu_file_print: TMenuItem;
N3: TMenuItem;
………………
在代码编辑器中按下Ctrl,然后用鼠标去点类名,或Unit名,
如上面的TForm,Controls,这时代码编辑器就会自动
给这些类名或Unit名加下划线,并且还能找到delphi中响应的原码,标准的TControl,
TWinControl等,几呼所有的控件都有原玛,自己研究去;
 
published
property Width read fWidth write fWidth;
...
 
将基类中的同名属性访问权限放宽!
 
多人接受答案了。
 
后退
顶部