Советы по Delphi

         

Демонстрация DefineProperties


...да, да, опубликуй это, пожалуйста, снова!

Хорошо, создайте на основе опубликованного ниже кода модуль PropDemo.pas и добавьте новый компонент в палитру компонентов. Расположите его на форме и сохраните ее. Затем посмотрите файл DFM каким-либо шестнадцатиричным редактором и проверьте наличие определенных свойств по их именнованным тэгам. Вы можете также попробовать закрыть форму и модуль, а затем открыть его с помощью пункта меню File | Open file..., изменив тип файла в выпадающем списке на *.DFM.

Удачи!

Mike Scott
Mobius Ltd.

unit PropDemo;
{ Демонстрация DefineProperties.
Mike Scott, CIS 100140,2420. }
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,Forms, Dialogs;
typeTDemoProps = class(TComponent)private{ Private declarations }FStringThing : string ;FThing : recordi, j, k : integer ;x, y : real ;ch : char ;end ;procedure ReadStringThing( Reader : TReader ) ;procedure WriteStringThing( Writer : TWriter ) ;procedure ReadThing( Stream : TStream ) ;procedure WriteThing( Stream : TStream ) ;protected{ Protected declarations }procedure DefineProperties(Filer: TFiler); override ;public{ Public declarations }constructor Create( AOwner : TComponent ) ; override ;published{ Published declarations }end;
procedure Register;
implementation
constructor
TDemoProps.Create( AOwner : TComponent ) ;
begininherited Create( AOwner ) ;
{ создайте любые данные, чтобы было что передать в поток}FStringThing := 'Всем привет!' ;with FThing do begini := 1 ;j := 2 ;k := 3 ;x := PI ;y := 180 / PI ;ch := '?' ;end ;end ;
procedure TDemoProps.ReadStringThing( Reader : TReader ) ;
beginFStringThing := Reader.ReadString ;end ;

procedure TDemoProps.WriteStringThing( Writer : TWriter ) ;
beginWriter.WriteString( FStringThing ) ;end ;
procedure TDemoProps.ReadThing( Stream : TStream ) ;
beginStream.ReadBuffer( FThing, sizeof( FThing ) ) ;end ;
procedure TDemoProps.WriteThing( Stream : TStream ) ;
beginStream.WriteBuffer( FThing, sizeof( FThing ) ) ;end ;
procedure TDemoProps.DefineProperties(Filer: TFiler);
begininherited DefineProperties( Filer ) ;Filer.DefineProperty( 'StringThing', ReadStringThing, WriteStringThing,FStringThing <> '' ) ;Filer.DefineBinaryProperty( 'Thing', ReadThing, WriteThing, true ) ;end ;
procedure Register;beginRegisterComponents('Samples', [TDemoProps]);end;
end.

[000543]



Содержание раздела