Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2013, 16:18   #1
timao
 
Регистрация: 22.11.2013
Сообщений: 8
По умолчанию Refresh() формы, или собственный MessageBox

Виват, форумчане!

Понадобилось написать свой MessageBox RadioButton кнопками (требование заказчика). Создал новую vcl форму, на ней:
Код:
TRadioButton *RadioYes;
TRadioButton *RadioNo;
TRadioButton *RadioClose;
В ".dfm" файле у этих компонентов "Checked" не выставляю.

И всего одна функция в ".cpp" файле формы:
Код:
int RadioMessageBox() {
	MessageForm->RadioClose->Checked = true;
	MessageForm->ShowModal();
	return 0;
}
Код упростил (на самом деле не всегда возвращается 0), но тестировал именно в таком виде.

Что происходит:
Вызываю ф-ю RadioMessageBox() - открывается модальное окно с выбранным RadioClose элементом (всё в порядке). Кликаю мышью по RadioYes. Закрываю окно.
Вызываю ещё раз - открывается модальное окно с выбранным RadioYes элементом!
Попробовал после присваивания ...->Checked = true разные методы типа
MessageForm->Update() или MessageForm->Refresh(), не помогает. В обработчик OnShow() у формы тоже ...->Checked = true вставлял.

Проблема, думаю, понятна. Как сделать, чтобы при отображении формы выбирался какой-то RadioButton по умолчанию.
P.S. RAD XE3
timao вне форума Ответить с цитированием
Старый 29.11.2013, 16:41   #2
timao
 
Регистрация: 22.11.2013
Сообщений: 8
По умолчанию

Много что перепробовал, присваивания не происходит. В итоге решил велосипедно, через Timer.

Последний раз редактировалось timao; 29.11.2013 в 17:22.
timao вне форума Ответить с цитированием
Старый 29.11.2013, 17:56   #3
timao
 
Регистрация: 22.11.2013
Сообщений: 8
По умолчанию

Итак, решение:

Project->Options->Forms, MessageForm перетаскиваем в правый столбик

Код:
int RadioMessageBox(TComponent* Owner) {
	MessageForm = new TMessageForm(Owner);
	//тут меняем свойства компонентов как хотим
	MessageForm->ShowModal();
	MessageForm->Free();
	return 0;
}

Последний раз редактировалось timao; 29.11.2013 в 18:06.
timao вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрет показа messagebox (или dlg) Toxa Общие вопросы Delphi 2 07.04.2012 10:59
Как заставить собственный класс работать с канвой формы restarterx Общие вопросы Delphi 4 25.11.2010 11:09
MessageBox или как возвратить назад форму при отмене? Deface87 Общие вопросы Delphi 4 18.05.2010 21:43
REfresh beemoto Работа с сетью в Delphi 1 20.04.2009 11:02
Что означает HWND_DESKTOP или Handle в функции MessageBox prikolist Общие вопросы C/C++ 5 18.03.2009 20:47