Показать сообщение отдельно
  #1  
Старый 19.08.2014, 19:06
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию Удаление TabSheet

Добрый вечер!

При работе с созданием закладок в 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;
Ответить с цитированием