Хорошо, создайте на основе опубликованного ниже кода модуль PropDemo.pas и
добавьте новый компонент в палитру компонентов. Расположите его на форме и
сохраните ее. Затем посмотрите файл DFM каким-либо шестнадцатиричным редактором
и проверьте наличие определенных свойств по их именнованным тэгам. Вы можете
также попробовать закрыть форму и модуль, а затем открыть его с помощью пункта
меню File | Open file..., изменив тип файла в выпадающем списке на *.DFM.
Удачи!
unit PropDemo;
{ Демонстрация DefineProperties.
Mike Scott, CIS 100140,2420. }interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TDemoProps = class(TComponent)
private{ Private declarations }
FStringThing: string;
FThing: record
i, 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;
procedureRegister;
implementationconstructor TDemoProps.Create(AOwner: TComponent);
begininherited Create(AOwner);
{ создайте любые данные, чтобы было что передать в поток}
FStringThing := 'Всем привет!';
with FThing dobegin
i := 1;
j := 2;
k := 3;
x := PI;
y := 180 / PI;
ch := '?';
end;
end;
procedure TDemoProps.ReadStringThing(Reader: TReader);
begin
FStringThing := Reader.ReadString;
end;
procedure TDemoProps.WriteStringThing(Writer: TWriter);
begin
Writer.WriteString(FStringThing);
end;
procedure TDemoProps.ReadThing(Stream: TStream);
begin
Stream.ReadBuffer(FThing, sizeof(FThing));
end;
procedure TDemoProps.WriteThing(Stream: TStream);
begin
Stream.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;
procedureRegister;
begin
RegisterComponents('Samples', [TDemoProps]);
end;
end.
Статья Демонстрация DefineProperties раздела Компоненты и Классы Свойства и События может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.