Модална форма в Aveva
modalForm.pmlfrm | 1 Kb |
modalStartForm.pmlfrm | 0,7 Kb |
showModalTestForm.pmlfnc | 0,2 Kb |
waitonTestFnc.pmlfnc | 0,3 Kb |
waitonTestForm.pmlfrm | 1 Kb |
waitonTestMacros.txt | 0,4 Kb |
waitonTestStartForm.pmlfrm | 0,6 Kb |
Модалната форма е форма, която спира изпълнението на кода на процедурата, която я е извикала, и блокира превключването на фокус към други форми, докато не бъде затворена. Това е незаменима част от потребителския интерфейс и понякога единственият начин за взаимодействие с потребителя.
В Aveva всички възможности за модална форма са представени от обектаalert, който ви позволява да извиквате няколко типа форми:
!!alert.confirm('текст') | |
!!alert.error('текст') | |
!!alert.input( 'текст', 'стойност_по подразбиране' ) | ![]() |
!!alert.message( 'текст') | |
!!alert.question( 'текст' ) | |
!!alert.warning( 'текст') |
Често тези възможности не са достатъчни.
Нека да видим как можем да разрешим този проблем:
В макросите е възможно да се използва функциятаwaiton
Нека направим малък пример:
waitonTestForm.pmlfrm
waitonTestFnc.pmlfnc
Тест макрос:
Когато изпълняваме макроса и избираме стойност, получаваме следния резултат:

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

Тоест наКогато се стартира функциятаwaitonTestFnc, изпълнението на програмата не се прекъсва, на променливатаresult не се присвоява стойност и възниква грешка.
Как да постигнем желания резултат? Можете да използвате обратно извикване, което ще бъде извикано след избиране на стойност. Помислете за пример:
modalForm.pmlfrm
showModalTestForm.pmlfnc
modalStartForm.pmlfrm
Ако изпълнимmodalStartForm получаваме очаквания резултат

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