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

Вниз

Проблема с окном наследником TDesignWindow   Найти похожие ветки 

 
Igorek   (2003-06-29 16:11) [0]

Уважаемые программисты. Прошу помощи.
Напр. есть такой компонент (привожу все модули):

unit Reg;

interface

uses DesignIntf, Classes, Editor, SampleControl;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("", [TSampleControl]);
RegisterComponentEditor(TSampleControl, TSampleEditor);
end;

end.

unit SampleControl;

interface

uses
Graphics, Windows, Messages, SysUtils, Classes, Controls;

type
TSampleControl = class(TCustomControl)
public
constructor Create(AOwner: TComponent); override;
procedure Paint; override;
end;

implementation

constructor TSampleControl.Create(AOwner: TComponent);
begin
inherited;
Width := 100;
Height := 100;

end;

procedure TSampleControl.Paint;
begin
inherited;
Canvas.Brush.Color := clGreen;
Canvas.Rectangle(0,0,Width,Height);
end;

end.

unit Editor;

interface

uses DesignEditors, DesignWindows, EdWindow, SampleControl, ColnEdit, Forms;

type
TSampleEditor = class(TComponentEditor)
public
procedure Edit; override;
end;

implementation

procedure TSampleEditor.Edit;
var
E: TEdForm;
begin
E := TEdForm.Create(Application);
E.FEditedControl := TSampleControl(GetComponent);
E.Show;
end;

end.

unit EdWindow;

interface

uses
Windows
,Messages
,SysUtils
,Variants
,Classes
,Graphics
,Controls
,Dialogs
,DesignWindows
,Forms
,SampleControl
,DesignIntf
;

type

TEdForm = class(TDesignWindow)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
public
FEditedControl: TSampleControl;
procedure Activated; override;
procedure ItemDeleted(const ADesigner: IDesigner; Item: TPersistent); override;
procedure DesignerClosed(const ADesigner: IDesigner; AGoingDormant: Boolean); override;
end;

var
EdForm: TEdForm;

implementation

{$R *.dfm}

procedure TEdForm.Activated;
begin
if Designer <> nil then
Designer.Activate;
end;

procedure TEdForm.DesignerClosed(const ADesigner: IDesigner;
AGoingDormant: Boolean);
begin
if Designer = ADesigner then
Close;
end;

procedure TEdForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

procedure TEdForm.ItemDeleted(const ADesigner: IDesigner;
Item: TPersistent);
begin
if Item = FEditedControl then
Close;
end;

end.


Теперь делаем так:
- компилируем и инсталлируем пакет (я его не привел)
- закрываем в Дельфи все
- создаем пустое приложение
- открываем пакет (в группе проектов он должен быть активным)
- кладем компонент на форму приложения
- кликаем два раза (появляется окно)
- нажимаем Ctrl+F9 (перекомпилируем пакет)

И получаем такое:
---------------------------
Error
---------------------------
Access violation at address 40005974 in module "RTL60.BPL". Read of address 056E1FE8.
---------------------------
OK
---------------------------

Причем с VCL компонентами такой ошибки нет.
Уже просмотрел все исходники окон редакторов в VCL. Все делаю как у них - вес равно ошибка.
Подозреваю, что собака зарыта в коде самого редактора компонента. К сожалению Борланд не дает код редакторов своих компонент.
Кто может помочь?


 
Ученик   (2003-06-29 20:17) [1]

В Delphi 7 ошибка не повторяется, но можно попробовать комментарить куски кода в EdWindow



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

Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-31320
Vick
2003-06-26 12:31
2003.07.10
Ослеживание открытия MDIChild-форм


1-31268
AnSi
2003-06-27 12:53
2003.07.10
Чтение из текстового файла


14-31506
qwerty335@yandex.ru
2003-06-25 07:44
2003.07.10
Функция перехвата открывания Floppy диска


1-31196
SEYD
2003-06-28 14:00
2003.07.10
Зацикливание классов


14-31476
Onward
2003-06-23 00:10
2003.07.10
Строковые переменные...





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