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

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

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

Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

Доброго дня. учусь работать с интерфейсами( создание, подключение), и интерфейсами выбора периода дат или вызов каталога МЦ( RunInterface('GetMC', mc01)), я вроде разобрался как работать, а вот как создать свой, не могу понять где его создавать? я так понимаю, вместо 'GetMC' мне нужно свой интерфейс вызвать? в справке, вроде бы ничего такого не нашел...
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение Buddy »

Напишите поподробнее, что вам нужно?
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

Buddy писал(а):Напишите поподробнее, что вам нужно?
Делаю отчёт один, нужно что бы появилось окно в которое вносится стоимость тары, и дальше это введенное число используется в расчетах. как я себе это представляю: при формировании отчёта появляется интерфейс, на котором будет поле ввода, кнопка ок, ну и всё в общем. после нажатия на ок, введенное число записывается в переменную, и дальше уже используется. не знаю как сделать часть с появлением окна и записью числа в переменную :???:
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

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

Сообщение spark »

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

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

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

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

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

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

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

var taraprice:double  
if RunDialog(pricetara, taraprice) = 10
  {
   message(taraprice)
  } 
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

spark писал(а): Нужно описать свое окно диалога:

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

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

var taraprice:double  
if RunDialog(pricetara, taraprice) = 10
  {
   message(taraprice)
  } 
а в *.frm отчёте работает такая функция??? не получается чёт
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение Buddy »

Espada писал(а): а в *.frm отчёте работает такая функция??? не получается чёт
Она везде работает. Что именно не получается? Пришлите текст ошибки или текст всего вашего отчета.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение 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
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение Buddy »

У вас блок с диалогом должен выглядеть так:

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

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

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

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

               <. OK .>
>>  
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

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

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


Должно работать. У меня работает.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение Espada »

spark писал(а): Должно работать. У меня работает.
Спасибо большое, всё заработало, не создал отдельный файлик с интерфейсом) сейчас, вроде схему понял, буду разбираться) спасибо ещё раз) :grin:
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение 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 .>
>>  
Может подскажете, в чём может быть проблемка?)
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение 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
));
и т.д.
spark
Местный житель
Сообщения: 476
Зарегистрирован: 19 окт 2005, 13:38
Контактная информация:

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

Сообщение 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% достоверностью, но в диалогах нельзя использовать вьюхи.
А зачем вам это надо? Диалоги нужны только для получения данных от пользователя. Всю логику дальнейшую нужно обрабатывать в самом интерфейсе или отчете, из которого вызывается диалог.
Если нужно что-то более сложное, то нужно использовать не диалог, а полноценный интерфейс.
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение 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       .>
>>   
если я вытяну вьющку в файл с отчётом, я смогу подтянуть в код кнопки?
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Espada
Местный житель
Сообщения: 336
Зарегистрирован: 07 май 2013, 17:32
Откуда: РБ, Минск

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

Сообщение 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;
под каждым красивым павлиньим хвостом, скрывается самая обычная куриная жопа!!! так что меньше пафоса господа!!!
Ответить