Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

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

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

При работе с созданием закладок в PageControl возникли сложности.

Суть проблемы. По нажатию кнопки должна создаваться новая закладка в PageControl.
Затем на эту закладку помещается фрейм.
В PageControl, свойство CloseBottonMode стоит cbmActiveTab.

При нажатии крестика на закладке необходимо уничтожать созданный ранее TabSheet.
Каким образом я могу отследить событие уничтожение TabSheet.

тут код:

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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  
Старый 20.08.2014, 15:21
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию

По сути меня интересует, как отследить нажатие на крестик в закладке(TabSheet). Например, как при уничтожении закладки выдать диалоговое окно "Вы уверены: да, нет?"
Ответить с цитированием
  #3  
Старый 20.08.2014, 20:01
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от Smallboy
По сути меня интересует, как отследить нажатие на крестик в закладке(TabSheet). Например, как при уничтожении закладки выдать диалоговое окно "Вы уверены: да, нет?"

Уважаемый начнем с того, что вы пользуетесь DevExpress компонентами а это уже не просто pagecontrol, а cxPageControl, что сильно меняет дело.

Далее, у каждой из страниц есть событие OnHide - его и обрабатываем.
Ответить с цитированием
  #4  
Старый 21.08.2014, 09:53
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Uniq!
Уважаемый начнем с того, что вы пользуетесь DevExpress компонентами а это уже не просто pagecontrol, а cxPageControl, что сильно меняет дело.

Далее, у каждой из страниц есть событие OnHide - его и обрабатываем.

cxPageControl дает лишь дополнительные возможности, но не убирает всего, что есть у PageControl.

OnHide -- не прокатит. Он срабатывает при переключении с одного TabSheet на другой, а вовсе не при уничтожении.

За уничтожение страниц отвечает PageControl, а именно процедура CloseTab. Не знаю как использовать эту информацию(
Ответить с цитированием
  #5  
Старый 21.08.2014, 15:28
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Цитата:
Сообщение от Smallboy
cxPageControl дает лишь дополнительные возможности

Коим уже стало свойство "CloseBottonMode", которого нет в стандартном PC.
Ответить с цитированием
Этот пользователь сказал Спасибо Uniq! за это полезное сообщение:
Smallboy (21.08.2014)
  #6  
Старый 21.08.2014, 15:55
Smallboy Smallboy вне форума
Прохожий
 
Регистрация: 16.07.2013
Сообщения: 18
Версия Delphi: Delphi XE4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Uniq!
Коим уже стало свойство "CloseBottonMode", которого нет в стандартном PC.
Был не прав. Это действительно важно.

Но в любом случае, оба они уничтожают Табы и очень надо отследить это.
Ответить с цитированием
  #7  
Старый 22.08.2014, 09:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну а что если переопределить Destroy для TcxTabCheet?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025