Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c