Страница 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.       
а вызвать хочу этот интерфейс из другого с помощью

Код: Выделить всё

LoadVipInterface(td);
И теперь пишет - нет описания логической таблицы:( Никогда не сталкивалась с vih. Не понимаю как правильно, что вызывать:(

Re: PickButton

Добавлено: 09 дек 2014, 10:37
RAJAH

Код: Выделить всё

#include PickDoc.vih
тогда уж вместо

Код: Выделить всё

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); - это что вообще? что хотите вызвать? переменную?!