|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Передача события на Frame
Как передать событие обработчику описанному во фрейме?
Постараюсь пояснить вопрос: - Есть Form1 и Frame1 У Frame1 есть кнопки (количество не важно, но оно больше двух) Обработчик события во фрейме описан так: Код:
procedure TFrame1.Button5Click(Sender: TObject); begin ... end; - После внедрения фрейма на форму он стал называться Frame11 (!) Но описанный ранее обработчик события не отрабатывал Как выяснилось, чтобы его активировать, надо писать обработчик события фрейма на форме: Код:
procedure TForm1.Frame11Button5Click(Sender: TObject); begin Frame11.Button5Click(Sender); end; Можно ли сделать это автоматически без повторного описания событий и по возможности избегая такой вложенности, чтобы код стал более оптимальным и логичным? |
#2
|
|||
|
|||
1. Делать обработчики на фрейме, а не в форме.
2. Не внедрять фрейм статически, а делать это динамически. Ну и код присваивания обработчиков соответсвенно. Вообще, не вижу смысла внедрять фрейм статически во время дизайна. Ведь теряется гибкость. А если ты делаешь это динамически, да и еще грамотно рахитектурно, то минимум кода, максимум удобства. |
#3
|
|||
|
|||
Цитата:
Нельзя ли поподробнее. Я к сожалению не знаю, как фрейм динамически внедрять. |
#4
|
|||
|
|||
Код:
var AFrame : TFrame1; begin AFrame := TFrame1.Create(Self); AFrame.Parent := Self; end; |
#5
|
|||
|
|||
Спасибо! Все супер работает!!!
Сказать по правде, я знал, что можно компоненты размножать во время работы программы, но то, что со фреймами можно так делать, и не подозревал. |
#6
|
|||
|
|||
На почве размышлений, возник вопрос:
- Почему проблема решается при динамическом создании фрейма, а при статическом, приходится заново все события описывать? |
#7
|
|||
|
|||
потому как они не тому классу принадлежат, насколько я понял.
|