Главная страница
    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.009 c
1-31195
zomba
2003-06-26 08:27
2003.07.10
ms word проблема с открытием документа


14-31478
Администратор
2003-06-23 15:11
2003.07.10
Зацени! http://delphi.ma.cx


6-31381
Art1111111
2003-05-05 00:22
2003.07.10
Named pipes (ERROR_PIPE_NOT_CONNECTED).


1-31176
Mishenka
2003-06-27 20:55
2003.07.10
RightClick в Treeview...


14-31499
Soft
2003-06-22 00:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский