Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Курс видеоуроков КРЭКЕРСТВО + ПРОГРАММИРОВАНИЕ 2017
(актуальность: май 2017)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



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

Автор: Mike Scott(Mobius Ltd.)

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

Удачи!


 unit PropDemo;
 
 { Демонстрация DefineProperties.
 
 Mike Scott, CIS 100140,2420. }
 
 interface
 
 uses
   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;
 
 procedure Register;
 
 implementation
 
 constructor TDemoProps.Create(AOwner: TComponent);
 
 begin
   inherited Create(AOwner);
 
   { создайте любые данные, чтобы было что передать в поток}
   FStringThing := 'Всем привет!';
   with FThing do
   begin
     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);
 
 begin
   inherited DefineProperties(Filer);
   Filer.DefineProperty('StringThing', ReadStringThing, WriteStringThing,
     FStringThing <> '');
   Filer.DefineBinaryProperty('Thing', ReadThing, WriteThing, true);
 end;
 
 procedure Register;
 begin
   RegisterComponents('Samples', [TDemoProps]);
 end;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS