Главная страница
    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.46 MB
Время: 0.061 c
4-1165973458
Джо
2006-12-13 04:30
2007.05.13
IMAPI for DVD disks in XP


15-1176037360
Nic (ro)
2007-04-08 17:02
2007.05.13
Siemens A50


15-1176788261
Riply
2007-04-17 09:37
2007.05.13
Интернет кафе с программистским уклоном :)


11-1159190982
lse
2006-09-25 17:29
2007.05.13
stroke2windowEx


2-1177065316
Ezorcist
2007-04-20 14:35
2007.05.13
Вопрос по работе с xml-файлом.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский