Как выполнить некоторый код, когда пользователь переключается на вложенную таблицу вкладок?
У меня есть TPageCOntrol, который имеет 3 TTabSheet и некоторые из них имеют дополнительные TPageCOntrol, которые имеют TTabSheet
Вроде
Page Control 1
TabSheet 1
TabSheet 2
Page Control 2
TabSheet 2a
TabSheet 2b
TabSheet 3
Теперь, когда одна из этих таблиц становится видимой для пользователя, я хочу выполнить некоторый код,но я не уверен, какое событие зацепить.
Например, если пользователь смотрит на TabSheet 1 и переключается на TabSheet 2, где TabSheet 2a показывает, то я хочу выполнить код Tabsheet 2a, но я не могу подключить TabSheet 2a OnEnter или OnShow. И это это не Страница Control2 OnChange.
На самом деле, все, что я могу видеть, это поместить целую кучу switch/case в событие OnChange Page Control 1 ... разве это лучший способ?
3 ответов:
Каждый TabSheet имеет "OnShow" событие, которое срабатывает, когда пользователь нажимает на него и делает его видимым, это должно сделать трюк, однако имея в виде элемента pagecontrol внутри tabsheet, который имеет другой виде элемента pagecontrol как родитель и т. д. Это очень тяжело, очень, попробуйте, используя кадры, которые вы будете создавать на tabsheet в OnShow событие и уничтожить на tabsheet это событие OnHide.
Править: если вы решили использовать TFrames внутри таблицы вкладок, перейдите в раздел" public " фрейма, нажмите CTRL+пробел и введите "create", чтобы переопределить конструктор" Create", и повторите для" Destroy", чтобы переопределить его также
Я подключил OnChange() каждого PageControl и проверил ActivePage. Это работает для меня, без изменения дизайна, чтобы использовать фреймы.
Я строго использую событие onEnter в таблицах вкладок. но я их только увольняю, когда фокус попадает "в" табель. поэтому я вручную установил фокус в таблисте, когда pagecontrol изменяется.
procedure TForm1.PageControl1Change(Sender: TObject); begin pagecontrol1.ActivePage.SetFocus; end
Comments