Главная страница
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.02 c
14-35858
AL2002
2002-08-16 15:07
2002.09.12
Нужен козырный снимок или рисунок


14-35852
Vahmurka
2002-08-16 11:32
2002.09.12
Знаетее, что меня больше всего бесит?


14-35861
s
2002-07-18 15:07
2002.09.12
Где найти APRO 4?


1-35632
Yaro
2002-08-30 09:45
2002.09.12
CheckBox в Cell e StringGrid a


3-35622
Наташа
2002-08-23 10:18
2002.09.12
MS SQL