![]() |
|
#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. |