Запрос идентификатора блока графического объекта

 

GETBLOCK P.i, <идентификатор блока>, <переменная результата>

 

где:

  • P.i – идентификатор точки положения курсора;
  • <идентификатор блока> – числовая переменная искомого идентификатора блока;
  • <переменная результата> – переменная результата поиска:
  • 0 – нет,
  • 1 – да.

 

Оператор обеспечивает поиск по координатам точки ближайшего объекта в текущем сегменте графической базы и возврат его идентификатора блока.

Установка идентификатора блока выполняется оператором DEFBLOCK при создании объекта, либо корректируется оператором EDBLOCK.

Идентификатор блока представляет собой числокоторое присваивается объекту графической базы.

С использованием идентификатора блока может быть организована связь графической и реляционной базы. Таблица реляционной базы должна иметь поле "номер блока". Программа, после запроса идентификатора блока графического объекта, может обратиться с запросом к реляционной базе для извлечения сведений, харектеризующих указанный объект. Таким образом, данные, хранящиеся в реляционной базе, ставятся в соответствие графическому объекту и каким-либо образом его характеризуют.

 

Пример:

 

system sgr                           ! установка подсистем

system gps

system dog

system sdb

oldbase "CITY"                       ! открытие существующей базы

grmode 1

grout 2

shelsegm p.1,p.2                     !  запрос оболочки сегмента

window x[p.1],y[p.1],x[p.2],y[p.2]   !  установка окна

view 0,0,1,1

clrview                              ! очистка окна

outsegm                              ! вывод содержимого сегмента

res = 0                              ! инициализация переменной результата

key = 0

BlockNum = 0                         ! инициализация переменной

Adres$ = ""

Result = 0

OpenBase "City"                      ! открытие реляционной базы

BaseRes Result                 

repeat

  getpos p.3,key                     ! запрос координат курсора

  if key = 13 then begin

    GETBLOCK p.3,BlockNum,res        ! запрос номера блока

    if res = 1 then begin

       Tabel "Adres",Where "Num" = BlockNum

       if Result > 0 then

          Get Adres$ = "Adres"       ! получение пара метров объекта

    end

  end

until key = 27

end

 

Примечание: данный оператор не поддерживается для графической базы СпрутКАД (sgb).

 

Подсистема DOG