Страница 1 из 2
PickButton
Добавлено: 01 дек 2014, 11:05
Marisha_P
Подскажите, пожалуйста, как сделать, чтоб по нажатию на pickbutton для выбора был доступен список определенных значений?
Например, содержащий данные:
"Накладные на внутреннее перемещение
Акт на оказание услуг
Накладная на отпуск в производство.. "
А далее, уже после выбора, будет открываться конкретный интерфейс, содержащий данные накладные для выбора
Re: PickButton
Добавлено: 01 дек 2014, 11:23
RAJAH
По-моему, для выбора документов есть PickDoc.vih.
Re: PickButton
Добавлено: 01 дек 2014, 13:06
Алексей
Сделать диалог, а уже от выбранного параметра в диалоге вызывать нужный Вам интерфейс.
Re: PickButton
Добавлено: 01 дек 2014, 13:07
edward_K
в событии cmPick прописываете вызов диалога или окна(я за окно) в модальном режиме со своим переключателем, а потом уже вызов соотв. документов.
Код: Выделить всё
cmPick:
{ case curfield of
#им_поля:
{ RunWindowModal(wnTypeDoc)
case TypeDoc of
...
end;
}
end;
}
ну можно и чаго готового поискать - тот же PickDoc - там вроде по маске можно задавать какие документы выбирать.
Re: PickButton
Добавлено: 01 дек 2014, 13:31
Irina_
Здравствуйте. Возможно Вам можно использовать следующее, попроще:
Ch_ ('выбор из вариантов', ,) : [LIST 1
'Вариант1',
'Вариант2',
'Вариант3'
] Protect;
Case Ch_ of
1: {…}
2: {…}
3: {…}
End
При анализе выбора делаете присвоение типа документа. А потом при вызове интерфейса выбора документов определенного типа в качестве параметра передавать полученный тип документа.
Re: PickButton
Добавлено: 01 дек 2014, 15:20
Ольга
Я для таких целей тользуюсь объектом F_KATDOC::ObjPickDoc. Этим:
RAJAH писал(а):По-моему, для выбора документов есть PickDoc.vih.
Удобно, и ничего не нужно выдумывать...
Сначала (в cmInit, например) нужно "накидать" нужных типов документов для выбора с помощью метода AddDoc (Procedure AddDoc ( TiDk : Word); Tidk - тип документа). Получится нужный набор.
Потом в cmPick - вызов методов: PickSingle для одиночного выбора, или PickMulti - для множественного.
Re: PickButton
Добавлено: 09 дек 2014, 09:32
Marisha_P
Не получается вызвать процедуру - AddDoc в интерфейсе VipInterface td Implements ObjPickDoc;
пишу td.adddoc(506) например.. пишет, что нет такой функции или неверный контекст использования:(
Re: PickButton
Добавлено: 09 дек 2014, 10:17
RAJAH
Marisha_P
В таких случаях старожилы форума обычно говорят
Код в студию!
Хотя, подозреваю, что должно быть примерно так:
Код: Выделить всё
...
VipInterface VipPickDoc implements ObjPickDoc
...
var
td: VipPickDoc;
...
Re: PickButton
Добавлено: 09 дек 2014, 10:26
Marisha_P
Код: Выделить всё
VipInterface VipPickDoc Implements ObjPickDoc;
Interface td;
show at (,,200,10);
var td: VipPickDoc ;
Handleevent
cmInit:{
td.AddDoc(506);
td.AddDoc(501);
td.AddDoc(508);
}
end;
end.
а вызвать хочу этот интерфейс из другого с помощью
И теперь пишет - нет описания логической таблицы:( Никогда не сталкивалась с vih. Не понимаю как правильно, что вызывать:(
Re: PickButton
Добавлено: 09 дек 2014, 10:37
RAJAH
тогда уж вместо
Код: Выделить всё
VipInterface VipPickDoc Implements ObjPickDoc;
Переименуйте Interface.
Похоже, и
#define ComponentVersion понадобится.
Код: Выделить всё
cmInit :
{
LoadVipInterface(td);
td.Clear;
td.AddDoc(506);
td.AddDoc(501);
td.AddDoc(508);
...
Re: PickButton
Добавлено: 09 дек 2014, 10:39
Marisha_P
это всё помещать в одном vip файле? или в разных?
Re: PickButton
Добавлено: 09 дек 2014, 10:51
edward_K
1. Нехорошо юзать имена переменных равные имени интерфейса . Любого!. понятнее например добавить p слева к имени объекта типа pVipPickDoc:VipPickDoc;
2. LoadVipInterface во первых мало, а не совсем понятно как вы собираетесь дальше юзать.
А чего RunInterface не устраивает? Это слегка проще - не нужно объявлять objectinterface или public функции.
3.Если вам не нужно подгружать разные фейсы на одном описании гораздо проще объявить переменную с типом не ObjectInterface а Interface как вы сами это делаете - var td: VipPickDoc ;.
4. VipInterface VipPickDoc Implements ObjPickDoc; - не стоит так делать - только #include ??????.vih - вы думаете остальные 100 строк кода там зря написаны?
5. По стандарту описание объекта в vih, сам объект в vip - иначе вы не сможете его задействовать в нескольких #include в разных фейсах(и может быть не в этом проекте). Хотя конечно можно его включить в проект отдельной строкой, но все таки обычно там включают vih. Посмотрите как сделаны стандартные vih - там куча define - это нужно для уменьшения предупреждений компиляции при повторном использовании в другом фейсе.
6. И все таки RunInterface вам будет проще.
Re: PickButton
Добавлено: 09 дек 2014, 10:59
Marisha_P
я совсем запуталась. смотрите.. у меня есть код
Код: Выделить всё
.....
#define ComponentVersion
#include PickDoc.vih
.....
create view vMain
var
objdocv : iObjDoc;
objinfov : iObjInfo;
typedoc : word;
podr : string;
......
pVipPickDoc: VipPickDoc;
select
.....
Cmpick:{
//Выбор типа документов
Case Curfield Of
#typedoc:
{ RunInterface(pVipPickDoc);
pVipPickDoc.Clear;
pVipPickDoc.AddDoc(506);
pVipPickDoc.AddDoc(501);
pVipPickDoc.AddDoc(508);
}
...
что я делаю неправильно?
Re: PickButton
Добавлено: 09 дек 2014, 11:05
edward_K
Угу. у меня каша полная. Толи вы сделать свой фейс и его вызывать из разных мест, толи юзать PickDoc напрямую.
Использование объекта и RunInterface разные вещи - либо вы делаете так, либо так, но не вместе.
почитайте vipprogr.chm - разберитесь что такое объект в галактике.
Код: Выделить всё
Cmpick:{
//Выбор типа документов
Case Curfield Of
#typedoc:
{ // RunInterface(pVipPickDoc); уж тогда RunInterface(VipPickDoc);
pVipPickDoc.Clear;
pVipPickDoc.AddDoc(506);
pVipPickDoc.AddDoc(501);
pVipPickDoc.AddDoc(508);
var wTiDk:word;
pVipPickDoc.PickSingle('Выберите документ',wTiDk)
message(string(wTiDk)
}
Re: PickButton
Добавлено: 09 дек 2014, 11:11
RAJAH
Для начала я бы перенёс объявление pVipPickDoc: VipPickDoc; в переменные интерфейса. RunInterface(pVipPickDoc); - это что вообще? что хотите вызвать? переменную?!