Страница 1 из 2

Создание нового интерфейса

Добавлено: 24 окт 2019, 16:19
Espada
Доброго дня. учусь работать с интерфейсами( создание, подключение), и интерфейсами выбора периода дат или вызов каталога МЦ( RunInterface('GetMC', mc01)), я вроде разобрался как работать, а вот как создать свой, не могу понять где его создавать? я так понимаю, вместо 'GetMC' мне нужно свой интерфейс вызвать? в справке, вроде бы ничего такого не нашел...

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 12:30
Buddy
Напишите поподробнее, что вам нужно?

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 14:58
Espada
Buddy писал(а):Напишите поподробнее, что вам нужно?
Делаю отчёт один, нужно что бы появилось окно в которое вносится стоимость тары, и дальше это введенное число используется в расчетах. как я себе это представляю: при формировании отчёта появляется интерфейс, на котором будет поле ввода, кнопка ок, ну и всё в общем. после нажатия на ок, введенное число записывается в переменную, и дальше уже используется. не знаю как сделать часть с появлением окна и записью числа в переменную :???:

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 15:19
spark
Espada писал(а):
Buddy писал(а):Напишите поподробнее, что вам нужно?
Делаю отчёт один, нужно что бы появилось окно в которое вносится стоимость тары, и дальше это введенное число используется в расчетах. как я себе это представляю: при формировании отчёта появляется интерфейс, на котором будет поле ввода, кнопка ок, ну и всё в общем. после нажатия на ок, введенное число записывается в переменную, и дальше уже используется. не знаю как сделать часть с появлением окна и записью числа в переменную :???:
Нужно описать свое окно диалога:

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

pricetara dialog
  fields
   price :double;
  buttons
    cmOk,default,,'OK';
<< 'Запрос'

 Введите стоимость тары

 `Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>> 
А потом его вызывать:

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

var taraprice:double  
if RunDialog(pricetara, taraprice) = 10
  {
   message(taraprice)
  } 

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 17:40
Espada
spark писал(а): Нужно описать свое окно диалога:

А потом его вызывать:

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

var taraprice:double  
if RunDialog(pricetara, taraprice) = 10
  {
   message(taraprice)
  } 
а в *.frm отчёте работает такая функция??? не получается чёт

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 17:45
Buddy
Espada писал(а): а в *.frm отчёте работает такая функция??? не получается чёт
Она везде работает. Что именно не получается? Пришлите текст ошибки или текст всего вашего отчета.

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 17:56
Espada
Buddy писал(а): Она везде работает. Что именно не получается? Пришлите текст ошибки или текст всего вашего отчета.

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

.function STXOGETEXTATTRIBUT(wtbl:word; attr_name:string; n_rec:comp):string;
begin
   ext_attr.wtbl:=wtbl;
   ext_attr.name_attr:=attr_name;
   ext_attr.n_rec:=n_rec;
if (ext_attr.getfirst attrnam = tsOK and
    ext_attr.getfirst attrval = tsOK
//     and ext_attr.getfirst spkau   = tsOk
)
//   sTXOGetExtAttribut:=ext_attr.spkau.name
   sTXOGetExtAttribut:=ext_attr.attrval.vstring
 else sTXOGetExtAttribut:='';
end.
.fields
price
.endfields
pricetara dialog
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>>
.begin
RunInterface('L_MCU::GetMC', Double_mc);
end.
.begin
if(Dmc.getfirst katmc = tsOk)
{
  DmcName := Dmc.katmc.name + ' (н/н ' + Dmc.katmc.barkod + ')';
};
end.                                                                                           
и в var объявлена переменная. Price:Double

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 18:21
Buddy
У вас блок с диалогом должен выглядеть так:

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

pricetara dialog
fields
  Price: double;
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>>  

Re: Создание нового интерфейса

Добавлено: 25 окт 2019, 18:39
spark
Вот на примере ard-отчета:

Создаем файл dlg.vip с диалогом:

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

pricetara dialog
fields
  Price: double;
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>>       
Создаем файл ard.frm с отчетом:

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

.autoform 'TARA'
.ard
.NameInList "TARA"
.Table blank
.var
price:double
.endvar

.begin
 if RunDialog(pricetara, price) = 10
  {
   message(price)
  }
end.
.endform 
В проекте для сборки указываем:

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

#make "dlg.vip"
#make "ard.frm" 


Должно работать. У меня работает.

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 10:46
Espada
spark писал(а): Должно работать. У меня работает.
Спасибо большое, всё заработало, не создал отдельный файлик с интерфейсом) сейчас, вроде схему понял, буду разбираться) спасибо ещё раз) :grin:

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 17:53
Espada
spark писал(а): Должно работать. У меня работает.
ещё один вопрос появился, при добавлении Create view ругается на ошибку: Ошибка: Ожидался идентификатор или ключевое слово

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

pricetara dialog

create view
var
NrecMC:Comp
from katmc
where
((
NrecMC == katmc.nrec
));

fields
  Price: double;
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>>  
Может подскажете, в чём может быть проблемка?)

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 17:57
Buddy
Потому что у вас перемешался код диалога и самого отчета.
Вы блок с диалогом лучше вообще в отдельный файл выделите.
В вашем случае - как-то так:
Файл pricetara.dlg

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

pricetara dialog
fields
  Price: double;
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>> 
Отчет:

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

#include pricetara.dlg
create view
var
NrecMC:Comp
from katmc
where
((
NrecMC == katmc.nrec
));
и т.д.

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 17:59
spark
Espada писал(а):
spark писал(а): Должно работать. У меня работает.
ещё один вопрос появился, при добавлении Create view ругается на ошибку: Ошибка: Ожидался идентификатор или ключевое слово

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

pricetara dialog

create view
var
NrecMC:Comp
from katmc
where
((
NrecMC == katmc.nrec
));

fields
  Price: double;
buttons
    cmOk,default,,'OK';
<< 'Запрос'

Введите стоимость тары

`Стоимость:`   .@@@@@@@@@@@@

               <. OK .>
>>  
Может подскажете, в чём может быть проблемка?)
Это уже попытка использовать магию вне Хогвартса. Я конечно не могу утверждать со 100% достоверностью, но в диалогах нельзя использовать вьюхи.
А зачем вам это надо? Диалоги нужны только для получения данных от пользователя. Всю логику дальнейшую нужно обрабатывать в самом интерфейсе или отчете, из которого вызывается диалог.
Если нужно что-то более сложное, то нужно использовать не диалог, а полноценный интерфейс.

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 18:06
Espada
Buddy писал(а):Потому что у вас перемешался код диалога и самого отчета.
Вы блок с диалогом лучше вообще в отдельный файл выделите.
В вашем случае - как-то так:
я просто хочу сделать, что бы в этом окне было ещё поле выбора МЦ из каталога. смотрел примеры пробовал делать по образцу по образцу:

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

pricetara dialog

create view
var
NrecMC:Comp
from katmc
where
((
NrecMC == katmc.nrec
));

fields
  Price: double;
  katmc.name : Protect, PickButton;
buttons
    cmOk,default,,'OK';
<< 'Ввод данных'

`Стоимость Тары:`.@@@@@@@@@@@@@@@@@@@@
 Выберите МЦ:    .@@@@@@@@@@@@@@@@@@@@

      <.       OK       .>
>>   
если я вытяну вьющку в файл с отчётом, я смогу подтянуть в код кнопки?

Re: Создание нового интерфейса

Добавлено: 28 окт 2019, 18:08
Espada
spark писал(а): Это уже попытка использовать магию вне Хогвартса. Я конечно не могу утверждать со 100% достоверностью, но в диалогах нельзя использовать вьюхи.
А зачем вам это надо? Диалоги нужны только для получения данных от пользователя. Всю логику дальнейшую нужно обрабатывать в самом интерфейсе или отчете, из которого вызывается диалог.
Если нужно что-то более сложное, то нужно использовать не диалог, а полноценный интерфейс.
я вот тоже начал думать об этом, полноценный интерфейс, это уже на подобии этого???

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

interface DialogTest 'Dialog Test';

  show at (0,3,50,10);

 

  create view

  var

    wGame : word;

    wSound: word;

    i     : longInt;

  ;

 

screen scrButtonTest;

  noTableNavigation;

  buttons

    cmRunDialog;

<<

 

 <.Run Dialog.>

 

>>

end;