Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
15-1176691083
Slider007
2007-04-16 06:38
2007.05.13
С днем рождения ! 16 апреля


15-1176355035
Ega23
2007-04-12 09:17
2007.05.13
С Днём Космонавтики!!!!


11-1159283659
Моторокер
2006-09-26 19:14
2007.05.13
Int2Str vs. IntToStr


15-1176554514
Kerk
2007-04-14 16:41
2007.05.13
Интересный сервис


11-1155043335
Моторокер
2006-08-08 17:22
2007.05.13
Иконка в TKOLTrayIcon размазывается





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский