|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.07.2014, 00:22 | #1 |
Регистрация: 17.07.2014
Сообщений: 5
|
Динамическая привязка событий и удаление объектов
Быть добру!
С формами и прочими контролами, кроме фоксовских, не работал. Решил тут покрутить извилины на билдере, что оно да как. Есть давно писаный для себя на С++ класс для работы с матрицами. Захотелось потренироваться на кошках и всё это дело слегка "визуализировать" в меру собственных сил. Начал с осторожных шагов и сходу застрял. Есть главная форма (TmfTestForm *mfTestForm). На ней кнопка (TButton *Button1). По нажатию создаем динамически новую "вспомогательную" форму (TForm *matrixForm) и на ней editbox (TEdit *cellEdit). Потом прячем главную форму и показываем вспомогательную matrixForm. Тут и начали возникать вопросы. Вопрос 1: По закрытии вспомогательной формы нужно отобразить главную форму. Объясните, почему к событию OnClose удается прикрутить функцию-обработчик (FormClose), только сделав её членом класса главной формы? Пробовал отдельной функцией - ругается на невозможность приведения там чего-то к чему-то... Пришлось закомментить до поры до времени (см. заголовочный) Вопрос 2: Раз создавал форму и контрол динамически, то, как мне казалось, нужно и поубивать явно при закрытии вспомогательной формы. Для простоты эксперимента переменные-указатели объявлены глобальными (???), но... При попытке освобождения через delete получаю критическую ошибку Access violation at address 00000000. Read ... Что-то не могу найти зацепок почему...то ли их до этого уже поубивало...но что и когда.... Не в службу - гляньте да посоветуйте, что не так ЗС Код:
Код:
|
18.07.2014, 01:12 | #2 |
Регистрация: 17.07.2014
Сообщений: 5
|
Вопрос номер 2 СНИМАЮ
Индеец - что поделать. Сначала "освобождаю" форму, а потом пытаюсь освободить контрол, для которого форма является "родительской". Может деструктор ~TForm() сам освобождает память, "занятую" всеми контролами на этой форме? Вообщем, махнул местами два делита - ошибка пропала. Вопрос номер 1 - остался |
22.07.2014, 13:37 | #3 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Обработчиком события может быть только функция класса. Там используется некоторая хитрость, связанная с неявной передачей параметра. Но никто не мешает использовать вызов внешней функции из обработчика события...
|
23.07.2014, 19:48 | #4 |
Регистрация: 14.11.2013
Сообщений: 3
|
void __fastcall TForm1::btn1Click(TObject *Sender)
{ std::auto_ptr<TForm2> newForm(new TForm2(Application)); this->Visible=false; __try { newForm->ShowModal(); } __finally { this->Visible=true; } } //--------------------------------------------------------------------------- |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Динамическая привязка события к ListViewItem | coNsept | Общие вопросы .NET | 1 | 26.03.2012 10:01 |
Привязка событий к графику | medvednick | Microsoft Office Excel | 0 | 07.10.2011 01:42 |
Привязка объектов к DataGridView | DeCo | C# (си шарп) | 0 | 19.08.2011 15:01 |
обработчик событий динамических объектов | Vervolf | Общие вопросы Delphi | 2 | 17.01.2011 18:45 |
Привязка объектов(картинок) к странице | Lynch | Microsoft Office Word | 2 | 18.11.2009 11:31 |