Страница 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
В проекте для сборки указываем:
Должно работать. У меня работает.
Re: Создание нового интерфейса
Добавлено: 28 окт 2019, 10:46
Espada
spark писал(а):
Должно работать. У меня работает.
Спасибо большое, всё заработало, не создал отдельный файлик с интерфейсом) сейчас, вроде схему понял, буду разбираться) спасибо ещё раз)
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;