FreeBasic
Главная
Вход
Регистрация
Суббота, 21.12.2024, 18:46Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
FbEdit и TabStrip (закладки) - как сделать?
salexeiyДата: Среда, 29.11.2017, 22:13 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 72
Репутация: 2
Статус: Offline
Подскажите, как добавить закладки в редакторе ресурсов FbEdit? Создаю диалог, создаю TabStrip, появляется одно окно без возможности правки содержимого вкладок. Пример, который идёт в проектах, тоже не понял, т.е. каким образом были сделаны две вкладки.
 
haavДата: Четверг, 30.11.2017, 10:14 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 1373
Репутация: 50
Статус: Offline
Без стакана не разберешься , да? smile

В общем дело обстоит так. Контрол TAB по сути контейнер (дочернее окно) с кучкой кнопок , называемых вкладками. Ты можешь создать несколько дочерних окон (вроде IDD_TAB1 , IDD_TAB2), прикрепить их контролу TAB и показывать то дочернее окно, которое тебе нужно в данный момент. То есть нажал на 1 кнопку, показать 1 дочернее окно, а остальные спрятать. Нажал на 2 кнопку, показать 2 дочернее окно, а остальные спрятать и т. д. В реальном приложении , при нажатии кнопок , система шлет сообщение WM_NOTIFY с различными кодами:

TCN_SELCHANGING - перед сменой вкладки
TCN_SELCHANGE - после смены вкладки

В итоге , пришел код TCN_SELCHANGING , можно спрятать ненужное окно. Пришел код TCN_SELCHANGE , можно показать нужное.

Создание с нуля сводится к тому, что:

1) Создать главный диалог в визуальном редакторе (в примере IDD_DLG0)
2) Создать контрол TAB в визуальном редакторе. Сбоку в дереве он не отображается, только визуально на диалоге.
3) Создать нужное кол-во диалогов в визуальном редакторе (в примере IDD_TAB1 , IDD_TAB2, но можно создать сколько требуется). Создаются они так же как главный диалог, только стили указываются другие.
3.1) Указать нужные стили для IDD_TAB1 , IDD_TAB2 , IDD_TAB3 .... child -> TRUE , ну и другие посмотри как это сделано в IDD_TAB1 , IDD_TAB2 . Единственно так же правильно будет , если указать стиль Visible в TRUE только для одного дочернего диалога, а остальным дочерним поставить FALSE
4) Создать у каждого дочернего диалога (IDD_TAB1 , IDD_TAB2 , IDD_TAB3 ....) свои дочерние окна (кнопки, тексты и пр.)
5) Перемещаемся в код. Пишем код обработки и создания TAB , либо копируем из FBTabStrip.bas. В функции DlgProc в событии WM_INITDIALOG создается сам контрол TAB и дальше нужное кол-во вкладок (в примере 2 вкладки). Так же придется добавить нужные макроопределения из файла ресурсов вроде:

Код
#define IDD_DLG0 1000
#define IDC_TAB1 1001
#define IDC_BTN1 1002

#define IDD_TAB1 1100
#define IDD_TAB2 1200


Иерархия окна выглядит так:

Код
Главное окно IDD_DLG0
          ----TAB
                   ----------IDD_TAB1
                    ----кнопки, скроллбары и пр.
                   ----------IDD_TAB2
                    ----кнопки, скроллбары и пр.
                   ----------IDD_TAB3
                    ----------кнопки, скроллбары и пр.
                   ----------IDD_TAB...N
                    ----кнопки, скроллбары и пр.


Вот как то так.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
salexeiyДата: Четверг, 30.11.2017, 14:27 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 72
Репутация: 2
Статус: Offline
Тут и одного стакана мало будет smile

Про то, как закладки устроены, я знаю, мне было главное понять, как это делается именно в FbEdit. В делфи как оно: кидаешь на окно виджет закладок и можно визуально каждую закладку редактировать в ихнем мини-редакторе. В FbEdit посложнее будет, оказывается.

Спасибо!
 
  • Страница 1 из 1
  • 1
Поиск: