Поиск значений из формы управления Внешние формы
Мне было интересно, можно ли получить значения из моих элементов управления формой. Через 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);
}
}
Да, ты можешь. Имейте в виду, что некоторые контрольные значения хранятся в .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