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