Модална форма в Aveva

Прикачени файлове:
modalForm.pmlfrm1 Kb
modalStartForm.pmlfrm0,7 Kb
showModalTestForm.pmlfnc0,2 Kb
waitonTestFnc.pmlfnc0,3 Kb
waitonTestForm.pmlfrm1 Kb
waitonTestMacros.txt0,4 Kb
waitonTestStartForm.pmlfrm0,6 Kb

Модалната форма е форма, която спира изпълнението на кода на процедурата, която я е извикала, и блокира превключването на фокус към други форми, докато не бъде затворена. Това е незаменима част от потребителския интерфейс и понякога единственият начин за взаимодействие с потребителя.

В Aveva всички възможности за модална форма са представени от обектаalert, който ви позволява да извиквате няколко типа форми:

!!alert.confirm('текст')
!!alert.error('текст')
!!alert.input( 'текст', 'стойност_по подразбиране' )
aveva
!!alert.message( 'текст')
!!alert.question( 'текст' )
!!alert.warning( 'текст')

Често тези възможности не са достатъчни.

Нека да видим как можем да разрешим този проблем:

В макросите е възможно да се използва функциятаwaiton

Нека направим малък пример:

waitonTestForm.pmlfrm

waitonTestFnc.pmlfnc

Тест макрос:

Когато изпълняваме макроса и избираме стойност, получаваме следния резултат:

форма

При функции и форми този начин за създаване на модален прозорец не работи. Ако създадем форма

waitonTestStartForm.pmlfrm

и го стартираме, получаваме следния резултат:

модална

Тоест наКогато се стартира функциятаwaitonTestFnc, изпълнението на програмата не се прекъсва, на променливатаresult не се присвоява стойност и възниква грешка.

Как да постигнем желания резултат? Можете да използвате обратно извикване, което ще бъде извикано след избиране на стойност. Помислете за пример:

modalForm.pmlfrm

showModalTestForm.pmlfnc

modalStartForm.pmlfrm

Ако изпълнимmodalStartForm получаваме очаквания резултат

модална

Тоест нашата форма, след като избере стойност, стартира метода, който й се предава.