Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильно закрыть динамическую форму, access violation при закрытии формы 
:(
    Опции темы
SERGSERG
Дата 7.2.2012, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



При установке чека, создаётся форма, тут всё ок, а вот при снятии чека (закрытии формы) - access violation
Не пойму в чём проблемма, как правильно закрыть форму2???? smile 

Код

procedure TForm1.CheckBox30Click(Sender: TObject);
 var
      F: TForm2;
begin
if checkbox30.Checked=true then
begin
//Form2.Show;


      F := TForm2.Create(nil);
      F.Show;
      SetWindowLong(F.Handle, GWL_HWNDPARENT, GetDesktopWindow);
      SetWindowPos(F.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE   or SWP_NOSIZE);
F.Button1.Enabled:=form1.Button8.Enabled;


//form1.WindowState:=wsminimized;
end;

if checkbox30.Checked=false then
begin
//form1.FormStyle:=fsnormal;
 F.close;
  F.free;
end;


Это сообщение отредактировал(а) SERGSERG - 7.2.2012, 20:46
PM MAIL   Вверх
northener
Дата 7.2.2012, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Не внимательно прочитал. Пардон.
При каждом заходе в процедуру CheckBox30Click переменная  F разная. Объявление
 var
      F: TForm2;
нужно вынести за рамки этой процедуры.

Это сообщение отредактировал(а) northener - 7.2.2012, 21:10


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
SERGSERG
Дата 7.2.2012, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Скорей всего вы правы, т.к. при танцах с бубном исчезали элементы формы1. Но чем дальше в лес тем больше дров.
Каким образом можно вынести переменную  F: TForm2; за рамки процедуры?
Приведите пример кода если несложно

Это сообщение отредактировал(а) SERGSERG - 7.2.2012, 22:28
PM MAIL   Вверх
Данкинг
Дата 7.2.2012, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(SERGSERG @  7.2.2012,  23:28 Найти цитируемый пост)
Каким образом можно вынести переменную  F: TForm2; за рамки процедуры?

Код

unit Unit1;
...
var
 F: TForm2;

implementation



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
SERGSERG
Дата 7.2.2012, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



Блин var забыл))
Только переменную надо после  implementation и всех юнитов вроде как объявить smile  

Код

implementation

uses Unit2;
 var
      F: TForm2;


Всем огромное спасибо!!! smile 
Жаль что репы не могу добавить 

З.ы. Процедура размещает форму2 по верх всех окон виндовса и там удерживается, может кому пригодиться smile 

Это сообщение отредактировал(а) SERGSERG - 7.2.2012, 23:03
PM MAIL   Вверх
northener
Дата 7.2.2012, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(SERGSERG @  7.2.2012,  22:57 Найти цитируемый пост)
Только переменную надо после  implementation вроде как объявить

В данном случае можно и до и после.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
SERGSERG
Дата 7.2.2012, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 4.5.2005

Репутация: нет
Всего: нет



У меня ДО не хочет работать. Пишу в Delphi 7.
PM MAIL   Вверх
Данкинг
Дата 7.2.2012, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Я тоже в D7 пишу, и всегда ставил до.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 8.2.2012, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(SERGSERG @  7.2.2012,  23:05 Найти цитируемый пост)
У меня ДО не хочет работать. Пишу в Delphi 7. 

Тут явно прослеживается необходимость читать учебники.

"У меня ДО не хочет работать."
Очевидно, что в модуле, в котором разработан класс TForm2 и в Инспекторе объектов его свойству Name было задано "F".

Добавлено через 5 минут и 1 секунду
Цитата(Данкинг @  7.2.2012,  23:18 Найти цитируемый пост)
Я тоже в D7 пишу, и всегда ставил до.

Не верю, что "арбитр изящества" всегда ставит до (или всегда после).  И то и другое всегда зависит от других причин/обстоятельств.

Это сообщение отредактировал(а) northener - 8.2.2012, 00:49


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1290 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.