Помогите, не шарю.
Мне нужно подменять обработчик события клика кнопки при нажатии на эту кнопку.
Обработчики будут содержаться в отдельном классе, и должны при нажатии на кнопку подменяться.
Что бы было яснее, я делаю Визард, и у меня при нажатии на кнопку Next меняется страница,
так вот я хочу что бы обработчик собятия прорисовал всё что нужно и потом подменился на следющий обработчик.
Есть клас обработчиков
class TWizardInst
{
void Page1_Next();
void Page2_Prev();
void Page2_Next();
void Page3_Prev();
void Page3_Next();
...
}
и есть событие
Здравствуйте, Imtent, Вы писали:
I>Что бы было яснее, я делаю Визард, и у меня при нажатии на кнопку Next меняется страница, I>так вот я хочу что бы обработчик собятия прорисовал всё что нужно и потом подменился на следющий обработчик.
"Настоящий профессионал на любом языке напишет бейсик-программу" (c)
То, что Вы говорите — антиООП. Нормально это делается примерно так: делаются несколько фреймов-страниц визарда, при необходимости у них (у базового класса) делаются несколько виртуальных методов, собираются в тот или иной контейнер, обработчики Prev/Next постоянны и занимаются тем, что меняют на форме визарда активный фрейм и при необходимости дергают виртуальные методы типа "пришли с предыдущего", "вернулись со следующего".
Re[2]: Объявление и подмена обработчика события C++Builder
Здравствуйте, Softwarer, Вы писали:
S>Здравствуйте, Imtent, Вы писали:
I>>Что бы было яснее, я делаю Визард, и у меня при нажатии на кнопку Next меняется страница, I>>так вот я хочу что бы обработчик собятия прорисовал всё что нужно и потом подменился на следющий обработчик.
S>"Настоящий профессионал на любом языке напишет бейсик-программу" (c)
S>То, что Вы говорите — антиООП. Нормально это делается примерно так: делаются несколько фреймов-страниц визарда, при необходимости у них (у базового класса) делаются несколько виртуальных методов, собираются в тот или иной контейнер, обработчики Prev/Next постоянны и занимаются тем, что меняют на форме визарда активный фрейм и при необходимости дергают виртуальные методы типа "пришли с предыдущего", "вернулись со следующего".
Сейчас у меня так и сделано, фрэймы полжены на PageControl, но проблема в том что специфика визарда такая, что во время его работы могут деактивица контролы, и кнопка из Next может означать начало поиска устройств и других действий, Next может поменять своё предназначение на "Start", а после нажатия на старт, начнётся erasing CD/DVD, после завершения процесса кнопка "Start" будет уже с кепшеном "Finish" т.д, может быть что переход со страницы №2 по кнопке Next на страницу №3 не то же самое что переход на страницу №3 по кнопке Prev со страницы №4. И поэтому я подумал что нужно сделать так, как задавал вопрос.
Re[3]: Объявление и подмена обработчика события C++Builder
Здравствуйте, Imtent, Вы писали:
I>Сейчас у меня так и сделано, фрэймы полжены на PageControl, но проблема в том что специфика визарда такая, что во время его работы могут деактивица контролы, и кнопка из Next может означать начало поиска устройств и других действий,
Наздоровье. Если это делается в рамках перехода на следующую страницу — нормально; соответствующий виртуальный метод, реализованный на фрейме. Если же "начало поиска устройств" заполняет список на той же странице — нефиг (с точки зрения вменяемого интерфейса) сажать его на Next, для этого должна быть соответствующая кнопка внутри фрейма.
I>Next может поменять своё предназначение на "Start", а после нажатия на старт, начнётся erasing CD/DVD, после завершения процесса кнопка "Start" будет уже с кепшеном "Finish"
Вообще говоря переименованием кнопок лучше особо не увлекаться — часто лучше сделать лишнюю кнопку. Тем не менее, указанное Вами делается иначе — назначением кнопке разных Action-ов.
I>т.д, может быть что переход со страницы №2 по кнопке Next на страницу №3 не то же самое что переход на страницу №3 по кнопке Prev со страницы №4.
Если помните, я указал методы "перешли на фрейм с предыдущей страницы" и "вернулись со следующей страницы". Разные.
I>И поэтому я подумал что нужно сделать так, как задавал вопрос.
Не вижу связи. Вообще, динамика — хорошая вещь для своих задач, но крайне не рекомендую вырабатывать привычку затыкать ей все дыры без размышления "как бы это сделать попроще".