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

Вниз

Access violation at address 00356273 in module designide60.bpl .   Найти похожие ветки 

 
DROWSY   (2010-06-16 10:00) [0]

Сделал робкую попытку создать простой компонент :
unit fb_DataSet;

interface

uses
 Windows, Messages, SysUtils, Classes, DB, IBCustomDataSet;

type
 TfbDataSet = class(TIBDataSet)
 private
   FMastData: TDataSet;
   procedure SetMastData(const Value: TDataSet);
 protected
 published
   property MastData : TDataSet read FMastData write SetMastData;
 public
 end;

procedure Register;

implementation

{ TfbDataSet }

procedure TfbDataSet.SetMastData(const Value: TDataSet);
begin
 FMastData := Value;
end;

procedure Register;
begin
 RegisterComponents("few_DataSet", [TfbDataSet]);
end;

end.

Установил его на панель инструментов.

И расположил на датамодуле рядом с обычным компонентом TIBDataSet;

type
 TdmLayOut = class(TDataModule)
   ibLayOut   : TIBDataSet;
   fbDataSet : TfbDataSet;
.......
.......

После этого, при попытке в дизайне редактировать свойства
и
   ibLayOut
и
   fbDataSet
выдаётся ошибка :
Access violation at address 00356273 in module "designide60.bpl".

Если разместить их на разных датамодулях, то всё нормально.
В чём причина?


 
Ega23 ©   (2010-06-16 11:59) [1]

ЕМНИП, это что-то связанное с поведением компонента в design-time. Тебе 2 пакета надо, один для runtime, другой для designtime. У Тейксейры это очень хорошо было расписано. Ну или на крайняк погугли "designide60.bpl", тоже много нароешь.


 
DROWSY   (2010-06-16 12:21) [2]


> Ega23 ©   (16.06.10 11:59) [1]
> ЕМНИП, это что-то связанное с поведением компонента в design-
> time. Тебе 2 пакета надо, один для runtime, другой для designtime.
>  У Тейксейры это очень хорошо было расписано. Ну или на
> крайняк погугли "designide60.bpl", тоже много нароешь.


Спасибо, EGA23!
Будет время, обязательно посмотрю Текстейру.

> Тебе 2 пакета надо, один для runtime, другой для designtime.

У меня, кажется не такой сложный случай.
Почему - не знаю, но выяснилось, что если после добавления нового
свойства в  TfbDataSet = class(TIBDataSet), и компиляции пакета,
если выйти и снова загрузить Дельфи, то новый компонент ведёт себя
нормально.


 
icWasya ©   (2010-06-16 12:24) [3]

в интерфейсе

procedure Notification(AComponent: TComponent; Operation: TOperation);override

и в реализации
procedure TfbDataSet .SetMastData(const Value: TDataSet);
begin
 if FMastData = Value then Exit;

 if Assigned(FMastData ) then RemoveFreeNotification(FMastData );
 FMastData := Value;
 if Assigned(FMastData ) then  FreeNotification(FMastData );

end;

procedure TfbDataSet .Notification(AComponent: TComponent; Operation: TOperation);
begin
 if Operation = opRemove then begin
   if (AComponent = FMastData ) then
     FMastData := Nil;
 end;
 inherited;

end;


 
DROWSY   (2010-06-16 13:08) [4]


> icWasya ©   (16.06.10 12:24) [3]

Спасибо!



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
10-1167900733
d_oleg
2007-01-04 11:52
2010.09.12
TActiveForm и переход фокуса по TAB


15-1276633802
Юрий
2010-06-16 00:30
2010.09.12
С днем рождения ! 16 июня 2010 среда


15-1276348839
Дмитрий С
2010-06-12 17:20
2010.09.12
Помогите рассчитать сопротивление.


2-1274947026
Dzmitry
2010-05-27 11:57
2010.09.12
A call to an OS function failed


15-1269882677
Piter
2010-03-29 21:11
2010.09.12
Установка windows на ноутбук без мышки