PickButton

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

PickButton

Сообщение Marisha_P »

Подскажите, пожалуйста, как сделать, чтоб по нажатию на pickbutton для выбора был доступен список определенных значений?
Например, содержащий данные:
"Накладные на внутреннее перемещение
Акт на оказание услуг
Накладная на отпуск в производство.. "
А далее, уже после выбора, будет открываться конкретный интерфейс, содержащий данные накладные для выбора
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: PickButton

Сообщение RAJAH »

По-моему, для выбора документов есть PickDoc.vih.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: PickButton

Сообщение Алексей »

Сделать диалог, а уже от выбранного параметра в диалоге вызывать нужный Вам интерфейс.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: PickButton

Сообщение edward_K »

в событии cmPick прописываете вызов диалога или окна(я за окно) в модальном режиме со своим переключателем, а потом уже вызов соотв. документов.

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

cmPick:
{ case curfield of 
  #им_поля:
  { RunWindowModal(wnTypeDoc)
    case TypeDoc of
    ... 
    end;
  }
 end;
}
ну можно и чаго готового поискать - тот же PickDoc - там вроде по маске можно задавать какие документы выбирать.
Irina_
Местный житель
Сообщения: 551
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: PickButton

Сообщение Irina_ »

Здравствуйте. Возможно Вам можно использовать следующее, попроще:
Ch_ ('выбор из вариантов', ,) : [LIST 1
'Вариант1',
'Вариант2',
'Вариант3'
] Protect;
Case Ch_ of
1: {…}
2: {…}
3: {…}
End
При анализе выбора делаете присвоение типа документа. А потом при вызове интерфейса выбора документов определенного типа в качестве параметра передавать полученный тип документа.
Ольга
Постоянный обитатель
Сообщения: 135
Зарегистрирован: 29 мар 2005, 17:49

Re: PickButton

Сообщение Ольга »

Я для таких целей тользуюсь объектом F_KATDOC::ObjPickDoc. Этим:
RAJAH писал(а):По-моему, для выбора документов есть PickDoc.vih.
Удобно, и ничего не нужно выдумывать...
Сначала (в cmInit, например) нужно "накидать" нужных типов документов для выбора с помощью метода AddDoc (Procedure AddDoc ( TiDk : Word); Tidk - тип документа). Получится нужный набор.
Потом в cmPick - вызов методов: PickSingle для одиночного выбора, или PickMulti - для множественного.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: PickButton

Сообщение Marisha_P »

Не получается вызвать процедуру - AddDoc в интерфейсе VipInterface td Implements ObjPickDoc;
пишу td.adddoc(506) например.. пишет, что нет такой функции или неверный контекст использования:(
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: PickButton

Сообщение RAJAH »

Marisha_P
В таких случаях старожилы форума обычно говорят
Код в студию!
Хотя, подозреваю, что должно быть примерно так:

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

...
VipInterface VipPickDoc implements ObjPickDoc
...
var
  td: VipPickDoc;
...
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: PickButton

Сообщение 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. Не понимаю как правильно, что вызывать:(
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: PickButton

Сообщение 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);
...
Последний раз редактировалось RAJAH 09 дек 2014, 10:40, всего редактировалось 1 раз.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: PickButton

Сообщение Marisha_P »

это всё помещать в одном vip файле? или в разных?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: PickButton

Сообщение 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 вам будет проще.
Marisha_P
Местный житель
Сообщения: 232
Зарегистрирован: 10 ноя 2010, 13:49

Re: PickButton

Сообщение 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);

        } 
...       
что я делаю неправильно?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: PickButton

Сообщение 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)
        } 
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: PickButton

Сообщение RAJAH »

Для начала я бы перенёс объявление pVipPickDoc: VipPickDoc; в переменные интерфейса. RunInterface(pVipPickDoc); - это что вообще? что хотите вызвать? переменную?!
Ответить