Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-35795
set
2002-08-31 23:02
2002.09.12
Как полностью закрыть рабочий стол формой ?


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


7-35931
SGrigory
2002-04-29 15:38
2002.09.12
Как скрыть приложение от Ctrl-Alt-Del в NT (XP)


3-35546
Старик
2002-08-21 14:16
2002.09.12
Визуализация таблиц


4-35958
Igor_Z
2002-07-22 14:19
2002.09.12
Отключение запуска всех приложений при клике по иконкам файлов





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