Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
ВнизНе могу понять что происходит? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c