Вообщем-то часто скрипты пишут для того, чтобы сделать с объектом какие-то действия, которые надо повторять часто и лениво это делать. Так вот нам надо проверить есть ли выделенный объект. Вот так это можно сделать:
WITHOBJECT "CorelDraw.Automation.8" ON ERROR RESUME NEXT DIM ObjType AS LONG ObjType& = .GetObjectType() IF (ObjType& <= 0) OR (ERRNUM > 0) THEN retval%=MESSAGEBOX("Not Select Object","Info",1) END IF END WITHOBJECT
Здесь ON ERROR RESUME NEXT важен в том плане, что если мы захотим получить тип объекта, а он не выделен, то результатом работы будет ошибка. Программа остановится, а чтобы этого не было мы и написали двигаться всегда вперед. Идея проверки, что объект выделен заключается в том, что мы используем функцию .GetObjectType:
GetObjectType (DRAW) ReturnValue& = .GetObjectType()
Она вернет тип объекта и если его нет, то значение меньше нуля. Вот это мы и проверяем. Но в таком виде работать не удобно, может быть нам придется проверять сотни объектов. Поэтому лучше организовать все это в виде функции вот так:
DECLARE FUNCTION CheckForSelection() AS BOOLEAN WITHOBJECT "CorelDraw.Automation.8" IF NOT CheckForSelection() THEN retval%=MESSAGEBOX("Not Select Object","Info",1) END IF FUNCTION CheckForSelection AS BOOLEAN DIM ObjType AS LONG ON ERROR RESUME NEXT ObjType& = .GetObjectType() IF (ObjType& <= 0) OR (ERRNUM > 0) THEN ERRNUM = 0 CheckForSelection = FALSE ELSE CheckForSelection = TRUE ENDIF END FUNCTION END WITHOBJECT
Сначала функцию с использованием DECLARE нужно объявить и написать код используя FUNCTION и END FUNCTION.