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

Вниз

Не могу понять что происходит?   Найти похожие ветки 

 
alexvanglukhman   (2002-08-30 15:59) [0]

Уважаемые мастера подскажите плиз. У меня в одной форме по нажатию кнопки динамически создаётся новая форма.Прежняя форма скрывается(hide), далее я работаю в новой форме и по окончанию работы жму на ней кнопку где эта форма уничтожается (free) а старая (show). Всё бы было нормально но в конце процедуры обработки onclick выскакивает Exception класса EAbstractError. Можно конечно его обработать, но хотелось бы понять суть этого исключения.


 
Skier ©   (2002-08-30 16:02) [1]

>alexvanglukhman

> но хотелось бы понять суть этого исключения


EAbstractError - это попытка вызова абстрактного метода.


 
Skier ©   (2002-08-30 16:04) [2]

>alexvanglukhman

> форма уничтожается (free) а старая (show)

попробуй Release...


 
alexvanglukhman   (2002-08-30 16:04) [3]

Ну то что это абстрактный метод и так понятно. Но хотелось бы подробнее об абстрактном методе.


 
alexvanglukhman   (2002-08-30 16:08) [4]

Попробовал Release. Пошло EAccessViolation


 
Lola ©   (2002-08-30 16:10) [5]

Исключение класса EAbstractError генерируется во время выполнения при попытке вызвать абстрактный метод. В процессе проектирования это исключение генерируется при размещении на форме компонента с абстрактным методом.
Абстрактный метод, объявляемый директивой abstract должен быть перегружен в производных классах прежде, чем создается экземпляр объекта.
Все свойства и методы исключения EAbstractError наследуются от базового класса Exception.
Это цитата из Help-а. ;)


 
Skier ©   (2002-08-30 16:15) [6]

>alexvanglukhman
Ещё вариант :)
-Делай Close (вместо Free)
-А в обработчике OnClose напиши
Action := caFree

Не поможет ?


 
alexvanglukhman   (2002-08-30 16:30) [7]

To Skier Не помогло


 
Skier ©   (2002-08-30 16:32) [8]

>alexvanglukhman
Всё !
Удалённая отладка закончена !
Либо код, либо...


 
alexvanglukhman   (2002-08-30 16:39) [9]

procedure TFGlavnaja.ButtonClick(Sender: TObject);
begin
FNeGlavnaja:=TFNeGlavnaja.Create(Application);
FNeGlavnaja.Show;
FGlavnaja.Hide;
end;


procedure TFNeGlavnaja.ButtonVihodClick(Sender: TObject);
begin
FGlavnaja.Show;
FNeglavnaja.Free;
end;


 
Mikhail ©   (2002-08-30 16:47) [10]


FNeGlavnaja.Free <- ?
м.б FNeGlavnaja.Close


 
alexvanglukhman   (2002-08-30 16:50) [11]

Пробовал уже. Сути не меняет при Free EAbstractError, при Сlose, Release, Destroy - EAccessViolation


 
Mikhail ©   (2002-08-30 16:54) [12]

Ищи ошибку в другом месте


 
Skier ©   (2002-08-30 16:54) [13]

>alexvanglukhman
Вот рабочий код
Убери форму TFNeGlavnaja из списка Auto-Create

program Project2;

uses
Forms,
Unit1 in "Unit1.pas" {FGlavnaja},
Unit2 in "Unit2.pas" {FNeGlavnaja};

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TFGlavnaja, FGlavnaja);
Application.Run;
end.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TFGlavnaja = class(TForm)
Button: TButton;
procedure ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FGlavnaja: TFGlavnaja;

implementation

{$R *.DFM}

uses Unit2;

procedure TFGlavnaja.ButtonClick(Sender: TObject);
begin
FNeGlavnaja:=TFNeGlavnaja.Create(Application);
FNeGlavnaja.Show;
FGlavnaja.Hide;
end;

end.

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TFNeGlavnaja = class(TForm)
ButtonVihod: TButton;
procedure ButtonVihodClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FNeGlavnaja: TFNeGlavnaja;

implementation

uses Unit1;

{$R *.DFM}

procedure TFNeGlavnaja.ButtonVihodClick(Sender: TObject);
begin
FGlavnaja.Show;
FNeglavnaja.Free;
end;

end.


И ошибка вожет быть из-за того что у тебя не формах есть
(или создаётся в run-time) "что-то" подозрительное...


 
alexvanglukhman   (2002-08-30 17:03) [14]

Единственное, что у меня на форме подозрительное - это динамически создаваемый Query. В TRadioGroup у меня категория выбора. И в зависимости от этого идёт тот или иной SQL. Естественно 2 элемента. DBGrid и Query меняют свои свойства и первоначально они не определены. Но мне кажется, это то должно проходить.


 
alexvanglukhman   (2002-08-30 17:09) [15]

А за код,который написан спасибо,но у меня он аналогичен. Это вроде бы должен знать каждый кто пытается чего й то рисовать.
Самое интересное, что из главной формы я делал точно такие же вызовы в другие формы и всё проходило. Всё-таки наверное это запрос. Попробую втупую определить свойства.


 
Skier ©   (2002-08-30 17:10) [16]

>alexvanglukhman

procedure TFNeGlavnaja.ButtonVihodClick(Sender: TObject);
begin
FGlavnaja.Show;
FNeglavnaja := nil;
Release;
end;

и в коде проверяй FNeglavnaja на nil



 
alexvanglukhman   (2002-08-30 17:16) [17]

TO SkierYes Yes Yes!!!!!!!!
Спасибо огромное. А из-за чего всё это происходило? Именно от этих объектов на второй форме?


 
Skier ©   (2002-08-30 17:19) [18]

>alexvanglukhman
Ну вот и ладушки...:)))




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

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

Наверх




Память: 0.51 MB
Время: 0.024 c
1-35701
lovres
2002-09-02 13:28
2002.09.12
Как сделать отчёт в Word?


1-35658
Begin
2002-08-31 21:57
2002.09.12
TDrawGrid проблема


14-35884
Вадим
2002-08-16 14:46
2002.09.12
Как реализовать?


14-35908
Song
2002-08-19 22:25
2002.09.12
Проблема: КАК может частное лицо продать своё ПО юр. лицу,


1-35689
Sergey-ZZZ
2002-08-30 12:12
2002.09.12
Компоненты