![]() |
|
|
#1
|
|||
|
|||
![]() Добрый вечер!
При работе с созданием закладок в PageControl возникли сложности. Суть проблемы. По нажатию кнопки должна создаваться новая закладка в PageControl. Затем на эту закладку помещается фрейм. В PageControl, свойство CloseBottonMode стоит cbmActiveTab. При нажатии крестика на закладке необходимо уничтожать созданный ранее TabSheet. Каким образом я могу отследить событие уничтожение TabSheet. тут код: Код:
function CreateTabSheet(BottonName: string): TcxTabSheet; function CreateFrame(TabSheet: TcxTabSheet; BottonName: string): TdicEventType; procedure CreateGrid(dic_id: integer; Frame: TdicEventType); var Form5 : TForm5; FrameTE : TdicEventType; TabSheetTE : TcxTabSheet; uses dicEventTypes; //создание закладки function TForm5.CreateTabSheet(BottonName: string): TcxTabSheet; var TabSheet : TcxTabSheet; begin TabSheet := TcxTabSheet.Create(Form5); TabSheet.Caption := BottonName; TabSheet.PageControl := cxPageControl1; cxPageControl1.ActivePage :=TabSheet; TabSheet.ImageIndex :=2; CreateTabSheet := TabSheet; end; //создание фрейма function TForm5.CreateFrame(TabSheet: TcxTabSheet; BottonName: string): TdicEventType; var Frame : TdicEventType; begin Frame := TdicEventType.Create(TabSheet); Frame.Parent := TabSheet; Frame.Align:= alClient; BottonControl(true); GetDictId(BottonName); CreateGrid(dic_id,Frame); Frame.cxGrid1.Align:= alTop; CreateFrame := Frame; end; procedure TForm5.acEventTypesExecute(Sender: TObject); begin if TabSheetTE = nil then begin TabSheetTE:= CreateTabSheet(dxBarLargeButton6.Caption); FrameTE:= CreateFrame(TabSheetTE,dxBarLargeButton6.Caption); //тут надо задать обработчик события, где можно обработать данные при уничтожении закладки // TabSheetTE.OnExit := HideTabSheet; end end; procedure TForm5.CreateGrid(dic_id: integer; Frame: TdicEventType); begin Frame.OraQuery1.Active := false; Frame.OraQuery2.Active := false; Frame.OraQuery1.ParamByName('d_id').AsInteger:= dic_id; Frame.OraQuery2.ParamByName('d_id').AsInteger:= dic_id; Frame.OraQuery1.Active := true; Frame.OraQuery2.Active := true; end; Последний раз редактировалось Smallboy, 19.08.2014 в 19:18. |
#2
|
|||
|
|||
![]() По сути меня интересует, как отследить нажатие на крестик в закладке(TabSheet). Например, как при уничтожении закладки выдать диалоговое окно "Вы уверены: да, нет?"
|
#3
|
||||
|
||||
![]() Цитата:
Уважаемый ![]() ![]() Далее, у каждой из страниц есть событие OnHide - его и обрабатываем. |
#4
|
|||
|
|||
![]() Цитата:
cxPageControl дает лишь дополнительные возможности, но не убирает всего, что есть у PageControl. OnHide -- не прокатит. Он срабатывает при переключении с одного TabSheet на другой, а вовсе не при уничтожении. За уничтожение страниц отвечает PageControl, а именно процедура CloseTab. Не знаю как использовать эту информацию( |
#5
|
||||
|
||||
![]() Цитата:
Коим уже стало свойство "CloseBottonMode", которого нет в стандартном PC. |
Этот пользователь сказал Спасибо Uniq! за это полезное сообщение: | ||
Smallboy (21.08.2014)
|
#6
|
|||
|
|||
![]() Цитата:
Но в любом случае, оба они уничтожают Табы и очень надо отследить это. |