Поиск значений из формы управления Внешние формы

68
10

Мне было интересно, можно ли получить значения из моих элементов управления формой. Через x++ код из моего класса или моего метода таблицы?

Я повторяю свою форму, и я хочу получить все имена и значения. Я получил имена, но не ценности, спасибо за помощь.

if (_formControlId)
{
formGroupControl = _formRun.design().control(_formControlId);
}
else
{
formGroupControl = _formRun.design();
}
// Finding children
controlCount = formGroupControl.controlCount();
for (i = 1; i <= controlCount; i++)
{
formControl = formGroupControl.controlNum(i);
// Fill MainTable
if(formControl is formTabPageControl)
{
if(formControl.HierarchyParent() == formControl.HierarchyParent("TabHeader"))
{
mainTopicId++;
GloDataMainTopics.Topic = formControl.labeltext();
GloDataMainTopics.TopicId = int2str(mainTopicId);
GloDataMainTopics.insert();

newParentTopicId = GloDataMainTopics.TopicId;
}
}
// Fill SubTable
if(formControl is formGroupControl)
{
newParentTopicId = this.fillGroupControls(formControl, _parentTopicId);
}
if (!newParentTopicId)
newParentTopicId = _parentTopicId;
//Fill Lines
if (formControl is FormStringControl || formControl is FormReferenceGroupControl ||
formControl is FormCheckBoxControl || formControl is FormComboBoxControl ||
formControl is FormWindowControl || formControl is FormDateControl ||
formControl is FormRealControl || formControl is FormIntControl)
{
this.fillLineFields(formControl, newParentTopicId, j);

/*
this.fillTabPagePurchase(formControl, newParentTopicId);
this.fillTabPageGeneral(formControl, newParentRecId);
*/
//info(strFmt("MainTopics '%1', %2", formControl.name(), j ));
}

if (formControl.isContainer())
{
this.findNodes(_formRun, formControl.id(), newParentTopicId);
}
}

спросил(а) 2015-12-07T11:57:00+03:00 4 года назад
1
Решение
46

Да, ты можешь. Имейте в виду, что некоторые контрольные значения хранятся в .text(), valueStr() и т.д., А не в .value() но вы поймете это.

Object      control;
control = formControl; // I'm assuming this is your control you're using

if (SysTest::hasMethod(control, identifierStr(text)))
{
text = control.text();
info(strFmt("Text found is '%1'", text));
}

if (SysTest::hasMethod(control, identifierStr(value)))
{
value = control.value();
info(strFmt("Value found is '%1'", value));
}

Вот сообщение в блоге, которое я сделал, которое показывает, как рекурсивно проверять все элементы управления формой. Вы можете взять внутренний метод и поместить его в метод формы, затем вызвать его во время выполнения и просто добавить дополнительные блоки SysTest:: и он должен дать вам быстрое доказательство работы каждого элемента управления по форме и значению/текст/др.

http://www.alexondax.com/2014/05/how-to-use-recursion-to-loop-over-form.html

ответил(а) 2015-12-07T21:51:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема