Закладки
Модераторы: m0p3e, edward_K, Модераторы
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
поищите <лист> - найдете. Можно указать таблу которая будет по умолчанию для всех закладок.
panel не катит - а жаль, так что тока встраиваемые фейсы.
но можно сделать эмуляцию - каталог МЦ посмотрите.
но там фокус в том, что наверху при переходе между закладками переключается формат, а нижняя часть объявленна так
TabbedSheet TOP tshMain
show at (,6,,);
перехватить переход между закладками можно в событии
cmChangeTabbedSheetFormat - в доке пример есть.
panel не катит - а жаль, так что тока встраиваемые фейсы.
но можно сделать эмуляцию - каталог МЦ посмотрите.
но там фокус в том, что наверху при переходе между закладками переключается формат, а нижняя часть объявленна так
TabbedSheet TOP tshMain
show at (,6,,);
перехватить переход между закладками можно в событии
cmChangeTabbedSheetFormat - в доке пример есть.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Есть три закладки, в каждой кнопка "печать". При обработке события cmPrintDoc в общем HandleEvent к Tabbedsheet - надо знать, какая из закладок активная - есть какой-нибудь оператор? Типа ActiveTab ?
Не хочется заводить переменную и обновлять её при перемещении между закладками запомнить номер закладки....
Не хочется заводить переменную и обновлять её при перемещении между закладками запомнить номер закладки....
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
edward_K - то что надо, но ...
В галактике есть префиксы, напирме tn - для таблиц, tb - для bounds ов, а какой префикс для .... скринов/браузеров, что бы использовать case?
А то функция GetCurrentFormat возращает longint... или так и сравнивать
if GetCurrentFormat = longint(scr1) ?
Вообще, искал документацию по работе с tabbedsheet - почти ничего не нашел, где можно почитать про них? Может у меня asdk.chm устарел?
В галактике есть префиксы, напирме tn - для таблиц, tb - для bounds ов, а какой префикс для .... скринов/браузеров, что бы использовать case?
А то функция GetCurrentFormat возращает longint... или так и сравнивать
if GetCurrentFormat = longint(scr1) ?
Вообще, искал документацию по работе с tabbedsheet - почти ничего не нашел, где можно почитать про них? Может у меня asdk.chm устарел?
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
А со встраиванием и двумя браузами в разных вкладках можно так извернуться:
Будет интерфейс встроен сам в себя))
Код: Выделить всё
Interface NameInterface
Window NameWindow
browse br1
browse br2
end;
tabbedSheet tb
Screen scName 'Вкладка 1'
embeded embName 'Вкладка 2' interface
end;
HandleEvent
cmInit : {
<инициализация>
BindEmbeddedInterface ( embName, 'NameInterface', 'NameWindow');
}
end;
end.
А можно пример кода отправки сообщений родителю или как передавать ссылку на родительский интерфейс. Пожалуйста.galover писал(а):ex3em
Например, посылом сообщений. Потому как embedded вообще не знает о родителе ничего. Ну или как вариант, передавать ссылку на родительский фейс в embedded, но это увеличит связность системы
ex3em
Не компилил, но идея, думаю, будет понятна
1) Посылка сообщения
2) Передача ссылки на родительский интерфейс
Не компилил, но идея, думаю, будет понятна
1) Посылка сообщения
Код: Выделить всё
#component "Test"
//------------------ Child (embedded) ------------------------
objInterface IChild;
public event procedure OnSomeActionEvent; // Объявляем событие
end;
vipInterface Child implements IChild;
interface Child;
handleEvent
// Где-то инициируем событие
cmSomeCommand: OnSomeActionEvent();
end;
end.
//------------------ Parent ------------------------
interface Parent
var _child : Test::Child new;
// Описание embedded области
embedded embName interface _child;
end;
// Описываем обработчик события
private procedure OnSomeActionEventHandler;
{
Message('Пришло событие из встроенного интерфейса!');
}
handleEvent
cmInit:
{
// Подписываемся на событие embedded интерфейса
BindEvent(OnSomeActionEventHandler, _child.OnSomeActionEvent);
}
end;
end.
Код: Выделить всё
#component "Test"
//------------------ Parent ------------------------
objInterface IParent;
public procedure CallParent;
end;
vipInterface Parent implements IParent;
//------------------ Child (embedded) ------------------------
vipInterface Child;
public:
constructor Init;
constructor InitWithParent(IParent parent);
end;
interface Child
var _parent : Test::IParent;
constructor Init;
{
result := true;
}
constructor InitWithParent(IParent parent);
{
_parent := parent;
result := (_parent <> nullRef);
}
handleEvent:
// Где-то вызываем родительскую процедуру
cmSomeCommand: _parent.CallParent();
end;
end.
interface Parent
var _child : Test::Child noauto;
// Описание embedded области
embedded embName interface _child;
end;
public procedure IParent.CallParent;
{
Message('Вызвали родительский интерфейс!');
}
handleEvent
cmInit:
{
/* Вот тут х.з. нужно ли делать приведение типа, в нормальных языках наследование работает без приведения, в общем нужно проверять */
_child := new(Test::Child, InitWithParent(Test::IParent(self)));
}
end;
end.
-
- Местный житель
- Сообщения: 2896
- Зарегистрирован: 24 июн 2005, 12:12
- Откуда: Иркутская область
Re: Закладки
Есть 5 закладок в tabbedsheet, в каждой что-то нарисовано, но единовременно должна активной быть одна! Выбрать активную я смогу а можно как то скрыть остальные, чтобы пользователи даже зайти туда не смогли?
Ну или подкиньте идею как сделать так, чтобы на одном и том же месте в интерфейсе могли открываться разные встроенные интерфейсы... по нужному мне условию.
Ну или подкиньте идею как сделать так, чтобы на одном и том же месте в интерфейсе могли открываться разные встроенные интерфейсы... по нужному мне условию.