|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.07.2008, 15:49 | #1 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Событие для динамически созданной Button
Здравствуйте, уважаемые форумчане, ниже приведен код функции создающей динамически форму, лэйблу и кнопки заданного количества. Вообще попытка сделать чтото вроде собственного MessageBox-а только с произвольным количеством кнопок, потому желательно, чтобы возращался номер нажатой кнопки. Создание и освобождение вроде происходит правильно, кстати, если в коде, что-то покажется не оптимальным или не красивым пишите, исправлю, с удовольствием воспользуюсь вашим советом. Основная суть вопроса заключается в описании процедуры нажатия на кнопку, созданную динамически, вернее, как прилепить эту процедуру к событию кнопки OnClick. Если есть более разумные решения этого вопроса, пишите пожалуйста. Требуется, чтобы процедура возращала номер нажатой кнопки.
Собственно код: Код:
From Stilet: Собственно код у нас оформляется тегом [code] по кнопке (#). Прошу запомнить. Последний раз редактировалось Stilet; 23.07.2008 в 16:03. |
23.07.2008, 16:05 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну как как?
Код:
I'm learning to live...
|
23.07.2008, 16:37 | #3 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Спасибо, постараюсь запомнить, а так я пробовал, не получалось... сейчас нашёл ошибку, нужно было:
Код:
|
24.07.2008, 10:33 | #4 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Вынужден вернуться к вопросу.
На данный момент всё создается, событие к кнопкам привязано, вопрос вот в чём, имеем процедуру, которая собственно и создает форму, компоненты и их свойства. Имеем процедуру представляющую собой метод обработки события OnClick всех кнопок формы. Код: Тип создаваемой динамически формы: Код:
Код:
Код:
1. Освобождение памяти: в GetButtons, в конце, происходит освобождение формы и динамического массива, при этом форма с экрана не исчезает пока ее не закроешь и все mButton[i] правильно реагируют на OnClick, объясните пожалуйста почему так происходит и правильно ли высвобождается память таким образом. Проблема заключалась в том, что процедура выполняется полность и если сразу высвободить память и закрыть форму пользователь просто не успеет нажать на Button, потом убрал Close, оказалось, что форма остается функционировать до закрытия. Это на руку, просто не могу понять почему происходит так. P.s. после закрытия формы, повторные попытки сделать ее видимой выдают ошибку - получается всё правильно высвобождается? Вопрос почему не сразу. 2. В GetButton_Click ShowMessage выдает номер нажатой кнопки после чего закрывает форму. Необходимо этот номер передать переменной в процедуре, которая вызывает GetButtons, единственное что приходит на ум это выделить под это дело глобальную переменную, но что-т мне это не очень нравится. Хотелось бы что-то вроде MessageBox сделать, чтобы выдавал нормально номер нажатой кнопки, проблема опять же в том что GetButtons выполняется и закрывается по идее сразу (если я правильно понимаю), можно ее описать как функцию но как Result-у передать номер нажатой кнопки из GetButton_Click? Посоветуйте пожалуйста. 3. + ко всему вышеперечисленному, думаю добавить название кнопок, в голову опять таки лезит только массив названий размером в количество кнопок, или можно строку с символами-разделителями, но тоже не уверен что не найдется более оптимального решения, всё кажется грубоватым, посоветуйте пожалуйста если есть идеи. Обобщенно хочется более человечески организовать эту идею, если есть надумки. как реализовать это более корректно, проще, буду только рад, не поленюсь переделать... Спасибо Последний раз редактировалось Dogmat; 24.07.2008 в 10:57. |
24.07.2008, 11:17 | #5 | ||||
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
Код:
Код:
Цитата:
Код:
Цитата:
Цитата:
Код:
|
||||
24.07.2008, 11:34 | #6 | |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Цитата:
GetButtons вызывается по нажатию на кнопку находящейся на главной форме и создает GetForm с кнопками, нужно чтобы возвращался номер нажатой кнопки, в этом вся задумка. А в остальном большое спасибо, так и сделаю. |
|
24.07.2008, 11:43 | #7 | |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Цитата:
- ShowModal чтобы в GetButtons дождаться закрытия формы или - глобальная переменная, как Вы и писали выше или - можно установить для GetForm событие, которое будет вызываться по нажатию кнопки. А само событие будет методом вызывающей формы. Последний раз редактировалось alexBlack; 24.07.2008 в 11:46. |
|
24.07.2008, 12:15 | #8 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Можно поподробней о варианте с ShowModal, в справке почитал не совсем понятно, как он мне поможет, можно маленький примерчик?
|
24.07.2008, 12:44 | #9 |
Пользователь
Регистрация: 12.06.2008
Сообщений: 76
|
Всё, понял, проверил на простом примере, а у меня ошибку выдает, может быть GetForm не нравится, дальше сам разберусь
Большое вам спасибо |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
button | blackstersl | Общие вопросы Delphi | 7 | 29.08.2008 15:31 |
Button... | Черничный | Общие вопросы Delphi | 4 | 10.06.2008 01:34 |
Рисование на форме созданной на WinApi | N!ckeL | Win Api | 3 | 30.04.2008 19:02 |
События, выполняемые во время работы созданной компоненты | Denager | Общие вопросы Delphi | 13 | 22.04.2008 16:48 |
Как выпонить действия по двойному слику на созданной таблице | Tiolic | Общие вопросы Delphi | 2 | 21.06.2007 09:53 |