Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.13;
Скачать: CL | DM;

Вниз

TMemo с событием OnDestroy?   Найти похожие ветки 

 
Ezorcist   (2007-04-10 20:37) [0]

unit MMemo;

interface

uses
 SysUtils, Classes, Controls, StdCtrls;

type
 TMyAction = procedure (Sender:TObject) of object;

 TMMemo = class(TMemo)
 private
   { Private declarations }
   FOnDestroy:TMyAction;
 protected
   { Protected declarations }
 public
   { Public declarations }
 published
   property OnDestroy:TMyAction read FOnDestroy write FOnDestroy;
   destructor Destroy; override;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Standard", [TMMemo]);
end;

destructor TMMemo.Destroy;
begin
 FOnDestroy(self);
 inherited;
end;

end.

Подскажите что тут не так? После установки такого чудо-компонента и помещения его на форму, новое приложение с этой memo вызывает invalid pointer operation при закрытии, и сама дельфи выдает массу сообщений eav при выходе.


 
default ©   (2007-04-10 20:43) [1]

destructor TMMemo.Destroy;
begin
if Assigned(FOnDestroy) then FOnDestroy(self); inherited;
end;


 
Loginov Dmitry ©   (2007-04-10 20:45) [2]

destructor TMMemo.Destroy;
begin
 if Assignet(FOnDestroy) then
   FOnDestroy(self);
inherited;
end;


Причем FOnDestroy: TNotifyEvent;


 
Ezorcist   (2007-04-10 22:33) [3]

А если еще и OnCreate?

....

 published
   property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
   constructor Create(aowner:Tcomponent);

....

constructor TMMemo.Create(aowner:Tcomponent);
begin
 inherited;
 If Assigned(FOnCreate) then FOnCreate(self);
end;


Опять что то не так...


 
Сергей М. ©   (2007-04-11 08:20) [4]

..
private
 FOnCreate, FOnDestroy: TNotifyEvent;
..
protected
..
 procedure AfterConstruction; override;
 procedure BeforeDestruction; override;
..
published
..
 property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;
 property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy;
..

procedure TMMemo.AfterConstruction;
begin
 inherited;
 If Assigned(FOnCreate) then FOnCreate(self);
end;

procedure TMMemo.BeforeDestruction;
begin
 If Assigned(FOnDestroy) then FOnDestroy(self);
 inherited;
end;


 
Юрий Зотов ©   (2007-04-11 13:03) [5]

А вообще, стоит сначала заглянуть в код VCL. Вполне возможно, что эти события уже есть и их надо только опубликовать.


 
Ezorcist   (2007-04-11 17:06) [6]

unit MMemo;

interface

uses
 SysUtils, Classes, Controls, StdCtrls;

type

 TMMemo = class(TMemo)
 private
   FOnDestroy:TNotifyEvent;
   FOnCreate:TNotifyEvent;
 protected
    procedure AfterConstruction; override;
    procedure BeforeDestruction; override;
 public
 published
   property OnDestroy:TNotifyEvent read FOnDestroy write FOnDestroy;
   property OnCreate: TNotifyEvent read FOnCreate write FOnCreate;

 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Standard", [TMMemo]);
end;

procedure TMMemo.AfterConstruction;
begin
inherited;
If Assigned(FOnCreate) then FOnCreate(self);
end;

procedure TMMemo.BeforeDestruction;
begin
If Assigned(FOnDestroy) then FOnDestroy(self);
inherited;
end;

end.


Destroy есть, Create нету(


 
Юрий Зотов ©   (2007-04-20 01:43) [7]

> Ezorcist   (11.04.07 17:06) [6]

> Create нету

И не может быть. Сразу после создания контрола поле FOnCreate всегда будет равно nil, поэтому в этом коде:

procedure TMMemo.AfterConstruction;
begin
 inherited;
 If Assigned(FOnCreate) then FOnCreate(self);
end;

событие не сработает никогда.

Посмотрите метод Loaded - возможно, это и есть то, что вы ищете.



Страницы: 1 вся ветка

Текущий архив: 2007.05.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
4-1166210871
kolj
2006-12-15 22:27
2007.05.13
ShellExecute


1-1171009449
Fin
2007-02-09 11:24
2007.05.13
Как вложить в почтовое сообщение несколько файлов?


1-1174011762
VitAngel
2007-03-16 05:22
2007.05.13
Прозрачный логотип


2-1176971469
pasha_golub
2007-04-19 12:31
2007.05.13
Не могу закрыть MDIChild окно


15-1176458015
Kostafey
2007-04-13 13:53
2007.05.13
Прочитал в разделе требования к системе.