В состав Geozem входит разборщик выражений (парсер). Разборщик выражений используется:
- при создании отчетов;
- при формировании строки обозначения названий, стилей, цвета точек, линий, полигонов, текстов;
- при импорте и экспорте в формат MIF/MID;
- при создании списка смежников;
Его цель – вычислить значение типа "1 + 2 * (3 + 4)", переданное в виде строки. Он обрабатывает математические и логические выражения, операции сложения строк, внешние переменные и функции.
В выражении можно использовать строковые константы. Правила их использования такие же, как и в Pascal: строка - это последовательность символов, заключенная в одинарные кавычки, например: "Hello, World!". Если строка содержит одинарную кавычку внутри, то ее необходимо дублировать: "What""s new".
Также в выражении можно использовать переменные, например: "[Total amount] / 2".
Типы данных
Название | Диапазон значений | Описание |
---|---|---|
Boolean | True / False | Логический (0-false, 1-true) |
Byte |
0 ... 255 |
Короткое целое без знака |
Word |
0 ... 65535 |
Короткое целое без знака |
Integer |
-2147483648 … +2147483647 |
Длинное целое со знаком |
Double |
-5.0*10-324… +1.7*10308 |
Вещественное число с плавающей запятой |
String |
До 255 символов |
Строка символов |
Variant |
В зависимости от типа |
Произвольный тип данных |
Более полную инструкцию по использованию разборщика выражений при формировании отчетов можно найти в справке генератора отчетов FastReport.
Название функции, типы параметров | Назначение |
---|---|
Функции Geozem |
|
TosCalc(n: Integer; s: String): String |
Вычисляет название точки с номером (n), согласно строке для парсера (s) |
LinCalc(n: Integer; s: String): String |
Вычисляет название линии с номером (n), согласно строке для парсера (s) |
PolCalc(n: Integer; s: String): String |
Вычисляет название полигона с номером (n), согласно строке для парсера (s) |
OldTosCalc(n: Integer; s: String): String |
Вычисляет старое название точки с номером (n), согласно строке для парсера (s) |
OldLinCalc(n: Integer; s: String): String |
Вычисляет старое название линии с номером (n), согласно строке для парсера (s) |
OldPolCalc(n: Integer; s: String): String |
Вычисляет старое название полигона с номером (n), согласно строке для парсера (s) |
GeoCalc(s: String) |
Устанавливает, как надо вычислять названия точек при формировании ведомости координат, согласно строке для парсера (s) |
GetGeodan:string; |
Формирует ведомость геоданных |
ExtractFileName(s: String): String |
Возвращает имя файла (s). Путь к файлу отсутствует. |
TosValue(n: Integer; s: String): Variant |
Возвращает значение свойства точки с номером (n), имя свойства (s) |
LinValue(n: Integer; s: String): Variant |
Возвращает значение свойства линии с номером (n), имя свойства (s) |
PolValue(n: Integer; s: String): Variant |
Возвращает значение свойства полигона с номером (n), имя свойства (s) |
PolTosValue(n1, n2: Integer; s: String): Variant |
Возвращает значение свойства стороны полигона (n1) под номером (n2), имя свойства (s) |
TxtValue(n: Integer; s: String): Variant |
Возвращает значение свойства текста с номером (n), имя свойства (s) |
SetTosValue(n: Integer; s: String; v: Variant) |
Установка для точки с номером (n), свойства с именем (s), значение (v) |
SetLinValue(n: Integer; s: String; v: Variant) |
Установка для линии с номером (n), свойства с именем (s), значение (v) |
SetPolValue(n: Integer; s: String; v: Variant) |
Установка для полигона с номером (n), свойства с именем (s), значение (v) |
SetPolTosValue(n1, n2: Integer; s: String; v: Variant) |
Установка для полигона (n1) стороны (n2), свойства с именем (s), значение (v) |
SetTxtValue(n: Integer; s: String; v: Variant) |
Установка для текста с номером (n), свойства с именем (s), значение (v) |
ListTosValue(s: String): Variant |
Возвращает значение свойства списка точек с именем (s) |
ListLinValue(s: String): Variant |
Возвращает значение свойства списка линий с именем (s) |
ListPolValue(s: String): Variant |
Возвращает значение свойства списка полигонов с именем (s) |
ListTxtValue(s: String): Variant |
Возвращает значение свойства списка текстов с именем (s) |
DataValue(s: String): Variant |
Возвращает значение свойства списка всех типов объектов с именем (s) |
ListSmej(name:string):variant |
Возвращает значение свойства списка смежников с именем (name) |
LocateLine(n1: Integer; n2: Integer) : Integer |
Поиск номера линии по номерам точек (n1 и n2), если линия не найдена, возвращает 0 |
Reload() |
Загрузка данных заново (если производились изменения свойств объектов) |
procedure CloseReport | Закрывает окно отчёта |
GetValue(name:string; default:variant = ''): Variant |
Прочитать значение переменной с именем (name) из списка переменных, если не нашло, возвращает значение по умолчанию (default) |
SetValue(name:string; value:variant) |
Записать значение (value) переменной с именем (name) из списка переменных |
SELECT(name: String; s: String): String |
Возвращает результат SQL-запроса (s) к базе данных (name – имя базы данных). Подробнее… |
SQL(name: String; s: String) |
Выполняет произвольный SQL-запрос (s) к базе данных (name – имя базы данных). Подробнее… |
RisPlan(View: TFrxPictureView; wir: string=""; ms:double=-1) |
Рисование плана. Ссылка на объект-рисунок (View), выражение для рисования (wir), масштаб (ms). Значения масштаба: -1 – выбор из списка, 0 – подогнать под окно, >0 – значение масштаба (500, 1000, 2000) |
RisPlanCXY(View:TFrxPictureView; CX,CY:double; wir:string=""; ms:double=-1) |
Рисование плана с указанием центра рисунка. Ссылка на объект-рисунок (View), координаты центра плана (CX, CY); выражение для рисования (wir), масштаб (ms). Значения масштаба: -1 – выбор из списка, 0 – подогнать под окно, >0 – значение масштаба (500, 1000, 2000) |
GetXYM(View:TFrxPictureView; var x,y, mas:double):boolean |
Найти параметры плана – возвращает успешность операции. Ссылка на объект- рисунок (View), возврат координат центра (x, y), возврат минимального масштаба (mas). |
CalcMinMas(View:TFrxPictureView; rx,ry:double):double |
Найти минимальный масштаб для объекта с размерами (rx, ry). Ссылка на объект- рисунок (View) |
RisCell(View:TFrxPictureView; hag:double; tos_style:integer=-1; lin_style:integer=-1; tos_color:TColor=0; lin_color:TColor=0) |
Нарисовать координатную сетку (центр в точке 0,0). Ссылка на объект-рисунок (View), шаг сетки (hag), стиль точки для обозначения узла (tos_style), стиль линии для обозначения сетки (lin_style), цвет точки (tos_color), цвет линии (lin_color) |
RisCellXY(View:TFrxPictureView; nx, ny:double; hag:double; tos_style:integer=-1; lin_style:integer=-1; tos_color:TColor=0; lin_color:TColor=0) |
Нарисовать координатную сетку с указанием координат одного узла сетки. Ссылка на объект-рисунок (View), координата x узла (nx), координата y узла (ny), шаг сетки (hag), стиль точки для обозначения узла (tos_style), стиль линии для обозначения сетки (lin_style), цвет точки (tos_color), цвет линии (lin_color) |
GetCellXY(nX, nY:double; hag:double; iX, iY:integer; var eX, eY, X, Y):boolean; |
Вычислить координаты узла сетки. Координаты начала сетки (nX, nY), шаг сетки (hag), номера узла сетки (iX, iY). Возвращаются экранные координаты узла (eX, eY) и реальные координаты (X,Y). Функция возращает True, если узел сетки находится в области рисунка. |
CalcHeight(rz:double; mas:double):double |
Вычислить реальный размер (высоту) по размеру (rz) на рисунке с масштабом (mas) |
CalcWidth(rz:double; mas:double):double |
Вычислить реальный размер (ширину) по размеру (rz) на рисунке с масштабом (mas) |
SetFileName(fn:string) |
Установка имени файла экпорта. |
GetOMS_ID(x,y:double):integer |
Найти номер пункта ОМС из списка опорных пунктов по координатам (x,y). Если не найдено, возвращает -1. |
GetOMS_Value(n:integer; name:string):Variant |
Вернуть значение свойства пункта ОМС под номером (n) с названием (name): "nazw" - Название; "x" - Координата Х; "y" - Координата Y; "opis" – Описание; "klass" - Класс сети; "typs" - Тип знака; "sk" - Система координат; |
GetSpisok(idstr:string):string |
Вернуть список в виде длинной строки по идентификатору (idstr). Если не найдено, возвращает пустую строку. |
GetSpisokID(idstr:string):integer |
Вернуть номер списка по идентификатору (idstr). Если не найдено, возвращает -1. |
SpisokAdd(idstr:string; str:string):boolean |
Добавление в список по идентификатором (idstr) строки (str). Возвращает результат добавления: true – успешно добавлено, false- не добавилось. |
function GetLayer:TGZM_Layer | Возвращает ссылку на объект текущего слоя |
function GetLayerBack:TGZM_Layer | Возвращает ссылку на объект слоя подложки |
function GetPoint:TGZM_PointC | Возвращает ссылку на объект текущей точки |
function GetPolygonPoint:TGZM_PointC | Возвращает ссылку на объект текущей точки полигона |
function GetPolygon:TGZM_PolygonC | Возвращает ссылку на объект текущего полигона |
function GetPolygonSegment:TGZM_PolygonPoints | Возвращает ссылку на объект текущего сегмента полигона |
function GetLine:TGZM_LineC | Возвращает ссылку на объект текущей линии |
function UglStr(ug:double):string | Возвращает угол в виде строки ГГГ°ММ"CC", параметр n-десятичное значение угла. |
function UglRumb(ug:double):string | Возвращает угол в виде румба, параметр n-десятичное значение угла. |
function LeftUgl(ug:double):double | Преобразование десятичного угла (n) из правого в левый и наоборот. |
function UglUrw(ug:double):double | Уравнивание угла, т.е. при 270+180=90 вместо 450 |
function DlinLin(x1,y1,x2,y2:double):double | Возвращает длину линии от 1 точки (x1,y2) до 2 точки (x2,y2) |
function GetUgLins(x1,y1,x2,y2,x3,y3:double):double | Возвращает угол между линиями (x1,y1)-(x2, y2) и (x1,y1)-(x3, y3) |
function DirUgol(x1,y1,x2,y2:double):double | Возвращает дирекционный угол линии (x1,y1)-(x2, y2) |
function EOLN:string | Возвращает символы перехода на новую строку : chr(13)+chr(10) |
function StringToText(st:string):string | Возвращает строку, заключенную в апостофы |
function DoubleVal(st:string):double | Преобразует из строки (s) число. Строка может содержать пробелы снаружи и внутри, разделитель дробной части точка или запятая. |
function PropisValue(Value: extended; style_rub:integer=0; style_kop:integer=0):string | Возвращает число (Value) прописью (по русски в рублях), параметры рублей (style_rub), параметры копеек (style_kop): -1 –не отображать, 0-название с валютой (рубли или копейки), 1-цифрой с валютой, 2-название без валюты, 3 цифрой без валюты. |
function PolarNotch(var X,Y:double;const x1,y1,x2,y2:double;const ug,dl:double):boolean | Вычисляет полярную засечку. Стоим на точке (x1,y1), ориентир на точку (x2,y2), угол (ug), длина линии (dl). Возвращает результат (X,Y). Результат true - результат вычислен. |
function LinearNotch(var X,Y:extended; x1,y1,x2,y2:double;const dl1,dl2:double; other:boolean=false):boolean | Вычисляет линейную засечку. От 1 точки (x1,y1) длина (dl1), 2 точка (x2,y2) длина (dl2). Возвращает точку пересечения (X,Y). Для нахождения другой точки (others). Результат true - результат вычислен. |
function CrossingLines(var X,Y:extended;const x1,y1,x2,y2,x3,y3,x4,y4:extended):boolean; | Вычисляет пересечение двух линий (x1,y1)-(x2,y2) и (x3,y3)-(x4,y4). Возвращает точку пересечения (X,Y). Результат true - результат вычислен. |
function ExecuteFile(FileName:string; Params:string='';
DefaultDir:string=''; ShowCmd:Integer=1):boolean |
Открывает файл внешней программой (папка, URL) |
fucntion ExecuteEmail(EMail:string):boolean |
Отрывает указанный e-mail |
procedure LoadFromFile(FileName:string; window_id:string='';
type_add:integer=0) |
Загружает файл в окно. FileName - путь к файлу, Window_id - идентификатор окна, type_add - тип добавления: 0 - по умолчанию, 1-перед загрузкой очистить, 2-слить с существующим. |
procedure SaveToFile(FileName:string; window_id:string='') |
Сохранение файла. FileName - путь к файлу, Window_id - идентификатор окна из которого будет сохраняться. |
function PointInLine(t1, t2:TGZM_PointC; kx,ky:double;
delta:double):integer |
Определение попадания точки с координатами (kx, ky) на линию (t1 - t2), результат: 0-попадает, 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной |
function PointInPolygon(p:TGZM_PolygonPoints; kx,ky:double):integer |
Определение попадания точки с координатами (kx, ky) в полигон (p), результат: 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной |
function PolygonInPolygon(p1,p2:TGZM_PolygonPoints):integer |
Определение наложения полигонов (p1, p2), результат: 1-снаружи, 2-внутри, 3-соприкасается, 4-пересекает, 5-совпадение с вершиной |
function PolygonMerge(p1,p2:TGZM_PolygonPoints; TypMerge:byte=4;
mdel:byte=3; TypCopy:byte=3):boolean |
Пересечение полигонов (p1, p2), |
function ShortFileName(const Dir, FileName:string):string |
Возвращает короткое имя файла относительно каталога |
function FullFileName(const Dir, FileName:string):string |
Возвращает полное имя файла из короткого относительно каталога |
function FileExists(const FileName:String): Boolean |
Проверка на существование файла |
function ChangeFileExt(const FileName, Extension:
string ):string |
Изменить расширение у файла |
function ExtractFileExt(const FileName:string ):string | Возвращает расширение файла |
function ExtractFileName(const FileName:string ):string | Возвращает имя файла без имени диска и каталогов, извлекая его из полного имени файла |
function ExtractFileDrive(const FileName:string ):string | Возвращает имя диска, извлеченное из полного имени файла FileName |
function ExtractFileDir(const FileName:string ):string | Извлекает из полного имени файла FileName полное имя каталога, в котором находится указанный файл |
function ExtractFilePath(const FileName: string ):string | Возвращает путь к файлу, извлекая его из полного имени файла FileName |
function CreateTransform(const id:string):TGZM_Transform_Coordinate | Создает метод трансформации системы координат, задается идентификатор |
function CreateTransformSC(const sc_from, sc_to:string):TGZM_Transform_Coordinate | Создает метод трансформации для преобразования из одной системы коодинат в другую |
function GetTransformID(const sc_from, sc_to:string):string | Возвращает идентификатор трансформации системы коодинат |
procedure SetListTransform(kb:TfrxComboBoxControl; sc_type_from:integer=-1; sc_type_to:integer=-1; id:string = '') | Сформировать список пребразований координат и заполнить ниспадающий список |
function GetIdTransformList(kb:TfrxComboBoxControl):string | Возвращает идентификатор выбранного преобразования координат из ниспадающего списка |
function CallFunction(func_name:string; params:variant='varEmpty'):variant |
Выполнить функцию. func_name - имя функции; params - список параметров. |
procedure SetColorPrint(lay:TGZM_Layer; type:byte=0;
bright:integer=0) |
Установка цветов печати для объектов, lay - ссылка на слой, type-тип преобразования цвета (0-цветной, 1-монохромный, 2-черно-белый), bright - яркость (0-без изменений, -100 белый, 100 черный) |
procedure SetColorPrintRastr(lay:TGZM_Layer; type:byte=0;
bright:integer=0) |
Установка цветов печати для растра, lay - ссылка на слой, type-тип преобразования цвета (0-цветной, 1-монохромный, 2-черно-белый), bright - яркость (0-без изменений, -100 белый, 100 черный) |
Некоторые функции FastReport |
|
STR(n: Integer): String | Преобразует число (n) в строку |
COPY(s: String; n1,n2: Integer):String | Возвращает подстроку из строки (s) начиная с номера (n1), длиной (n2) |
LENGTH(s: String): Integer | Возвращает длину строки (s) |
UPPER(s: String): String | Возвращает строку (s), где все буквы заглавные |
IF(b: Boolean; v1,v2:Variant): Variant | Возвращает значение v1, если условие (b) истинно; иначе возвращает значение v2 |
FORMATFLOAT(format: String; n: Double): String | Преобразует числовое значение (n) в строку, используя форматирование (format). Описание спецификаторов форматирования format: 0: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет – выводится 0. #: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, ели нет – ничего не выводится .: Поле для разделителя целой и дробной частей числа |
INT(n: Double): Integer | Возвращает целую часть числа (n) |
FRAC(n: Double): Double | Возвращает дробную часть числа (n) |
ROUND(n: Double): Double |
Возвращает округленное значение (n) |
(n1: DoubleMODn2:Double): Integer |
Возвращает остаток от деления n1 на n2 |
POS(s1: String; s2: String): Integer |
Возвращает начало вхождения строки s1 в строке s2. |
SQRT(x: Double):Double |
Возвращает квадратный корень из числа x |
ABS(x: Double):Double |
Возвращает абсолютное число x |
Десятичное значение угла означает, что в целой части числа находится значение угла, в дробной – значения минут, секунд как десятичная часть одного угла. Т.е. значение 1.5 равно 1 градус, 30 минут, 0 секунд.
Нахождение значений градуса (g), минут (m), секунд (s):
//находим градус
g=Int(ug)
//минуты
m=Int(Frac(ug)*60));
//секунды
s=Int(Frac((ug-g-m/60)*60)*60));
Нахождение десятичного значения угла (ug) по известным значениям градуса (g), минут (m), секунд (s):
ug=g+(m+s/60)/60;
Пример:
Пусть в имени файла закодирован кадастровый номер в формате: <код блока>_<номер квартала>-<номер участка>.<расширение файла>. Нужно найти полный кадастровый номер.
имяф=ExtractFileName([файл]) kn1=pos("_",[имяф]) kn2=pos("-",[имяф]) kn3=pos(".",[имяф]) kod3n=copy([имяф],1,[kn1]-1) kod31=copy([имяф],[kn1]+1,[kn2]-[kn1]-1) kod0=copy([имяф],[kn2]+1,[kn3]-[kn2]-1) ;Находим кадастровый номер кадастровый_номер="00:00:"+formatfloat("000",[kod3n])+" 00 "+formatfloat("00",[kod31])+":"+formatfloat("0000",[kod0])
Можно установить выполнение скрипта при наступлении события в отчете. Установка производится в Редакторе переменных. Пишется название события, знак =, и выражение.
; запустить скрипт по названию перед выполнением отчета ; процедура скрипта должна иметь вид: procedure before_report(obj:TGZM_Layer), входной параметр ссылка на слой OnBeginDoc='report.before_report' ; выполнить функцию перед выполнением отчета, передается параметр на текущий слой OnBeginDoc=CallFunction('report.before_report', GetLayer() ) ; выполнить функцию после окончания формирования отчета - перегрузить данные OnEndDoc=Reload()
Событие | Назначение |
---|---|
OnBeginDoc |
Запускается перед началом выполнения отчета |
OnEndDoc |
Запускается после окончания выполнения отчета |
Название свойства | Тип | Назначение | Примечание |
---|---|---|---|
Общие для всех объектов |
|||
ot |
boolean |
Признак выделения |
Только чтение |
nz |
boolean |
Признак показа подписи |
Только чтение |
nztxt |
string |
Строка подписи |
Только чтение |
vid |
boolean |
Признак видимости объекта |
|
style |
word |
Стиль объекта через вычисление в парсере |
|
oldstyle |
word |
Стиль объекта без вычисления в парсере |
Только чтение |
color |
integer |
Цвет объекта через вычисление в парсере |
|
oldcolor |
integer |
Цвет объекта без вычисления в парсере |
Только чтение |
colorA | integer | Степень прозрачности цвета (число от 0 до 255) | |
width |
double |
Толщина (размер) объекта через вычисление в парсере |
|
oldwidth |
double |
Толщина (размер) объекта без вычисления в парсере |
Только чтение |
name |
string |
Подпись через вычисление в парсере |
|
oldname |
string |
Подпись без вычисления в парсере |
Только чтение |
number |
integer |
Порядковый номер объекта |
Только чтение |
uobz |
integer |
Номер условного обозначения для данного типа объекта |
|
tab. |
Ссылка |
Доступ к данным таблицы (пример: [tab.id]). |
|
MinX |
double |
Минимальная координата объекта по X |
Только чтение |
MinY |
Double |
Минимальная координата объекта по Y |
Только чтение |
MaxX |
Double |
Максимальная координата объекта по X |
Только чтение |
MaxY |
Double |
Максимальная координата объекта по Y |
Только чтение |
CenX |
Double |
Координата X центра объекта |
Только чтение |
CenY |
Double |
Координата Y центра объекта |
Только чтение |
RazX |
Double |
Размер объекта по X |
Только чтение |
RazY |
Double |
Размер объекта по Y |
Только чтение |
this_obj | TGZM_BasEl | Ссылка на текущий объект | Только чтение |
Точки |
|||
X |
Double |
Координата X |
Только чтение |
Y |
Double |
Координата Y |
Только чтение |
Линии |
|||
dln |
double |
Длина линии |
Только чтение |
ugl |
String |
Дирекционный угол линии (строка) |
Только чтение |
dirug |
Double |
Дирекционный угол линии (десятичное значение угла) |
Только чтение |
t1. |
Ссылка на объект |
Доступ к свойствам 1 точки линии (пример: [t1.style]). |
|
t2. |
Ссылка на объект |
Доступ к свойствам 2 точки линии (пример: [t2.style]). |
|
Полигоны |
|||
CadastralNumber |
string |
Кадастровый номер |
Только чтение |
Area |
Double |
Площадь |
Только чтение |
Perimeter |
Double |
Периметр |
Только чтение |
StyleFill |
Word |
Стиль заливки через вычисление в парсере |
|
OldStyleFill |
Word |
Стиль заливки без вычисления в парсере |
Только чтение |
ColorFill |
Integer |
Цвет заливки через вычисление в парсере |
|
OldColorFill |
Integer |
Цвет заливки без вычисления в парсере |
Только чтение |
Count |
Integer |
Количество точек в полигоне |
Только чтение |
Order |
Boolean |
Порядок обхода точек, True-по часовой, False- против часовой стрелки |
Только чтение |
[n]. |
Ссылка на объект |
Доступ к свойствам точки полигона (n-порядковый номер точки) |
|
NameAngle |
string |
Подпись угла через вычисление в парсере. В выражении применяются свойства точек в полигонах. |
|
Точки в полигонах |
|||
Nt |
Integer |
Номер точки |
|
Angle |
Double |
Значение внутреннего угла полигона в точке (десятичное значение) |
Только чтение |
Length |
Double |
Длина стороны полигона |
Только чтение |
Тексты |
|||
x |
Double |
Координата X начала текста (левый верхний угол) |
Только чтение |
y |
Double |
Координата Y начала текста (левый верхний угол) |
Только чтение |
sltxt |
String |
Строка текста (дублируется свойством Nztxt) |
Только чтение |
height |
Double |
Высота символа в метрах через вычисление в парсере |
|
oldheight |
Double |
Высота символа в метрах без вычисления в парсере |
Только чтение |
angle |
Double |
Угол поворота текста |
Только чтение |
spacing |
Byte |
Межстрочное расстояние строк в тексте |
Только чтение |
justify |
Byte |
Выравнивание текста |
Только чтение |
colorf |
Integer |
Цвет фона |
|
typf |
Byte |
Тип фона (0-прозрачный, 1-цветной) |
|
fnt.name |
String |
Имя шрифта |
Только чтение |
fnt.color |
Integer |
Цвет шрифта (дублируется свойством Color) |
Только чтение |
fnt.size |
Byte |
Размер шрифта в пунктах |
Только чтение |
fnt.style |
Byte |
Стиль шрифта |
Только чтение |
fnt.charset |
Byte |
Набор символов шрифта (1-по умолчанию, 204- русский) |
Только чтение |
Общие для всех списков объектов |
|||
Count |
Integer |
Количество объектов в списке |
Только чтение |
MinX |
double |
Минимальная координата объектов списка по X |
Только чтение |
MinY |
Double |
Минимальная координата объектов списка по Y |
Только чтение |
MaxX |
Double |
Максимальная координата объектов списка по X |
Только чтение |
MaxY |
Double |
Максимальная координата объектов списка по Y |
Только чтение |
CenX |
Double |
Координата X центра объектов |
Только чтение |
CenY |
Double |
Координата Y центра объектов |
Только чтение |
RazX |
Double |
Размер объектов по X |
Только чтение |
RazY |
Double |
Размер объектов по Y |
Только чтение |
Свойства списка смежников |
|||
Nomer |
Integer |
Порядковый номер смежника (для выбранного полигона) |
Только чтение |
Nt1 |
String |
Название начальной точки границы смежника |
Только чтение |
Nt2 |
String |
Название конечной точки границы смежника |
Только чтение |
Np |
String |
Название смежного полигона |
Только чтение |
Obj.nt1 |
Integer |
Номер начальной точки границы смежника |
Только чтение |
Obj.nt2 |
Integer |
Номер конечной точки границы смежника |
Только чтение |
Obj.np |
Integer |
Номер смежного полигона |
Только чтение |
First_np |
Integer |
Порядковый номер полигона, для которого создан список смежников. |
Только чтение |
Kadnom |
String |
Строка кадастрового номера, который введен на первой закладке. |
Только чтение |
Count |
Integer |
Количество смежников для выбранного полигона. |
Только чтение |
List |
String |
Возвращает список смежников (многострочная строка). |
Только чтение |
[<номер>].<имя> |
Ссылка |
Доступ к свойству смежника из списка по номеру. |
Только чтение |
Для объектов можно изменять свойства через выражения.
Для установки подписи объекта следует писать: "name="+выражение. Используется только для оформления.
Для установки цвета следует писать: "color="+выражение.
Для установки толщины линий следует писать: "width="+выражение.
Для установки стиля следует писать: "style="+выражение.
Для установки видимости объекта следует писать: "vid="+выражение. Используется только для оформления.
Для установки типа условного обозначения следует писать: "uobz="+выражение.
Для установки стиля типа фона полигона следует писать: "typf="+выражение.
Для установки цвета фона полигона следует писать: "colorf="+выражение.
Для установки стиля заливки полигона следует писать: "stylez="+выражение.
Для установки цвета заливки полигона следует писать: "colorz="+выражение.
Для установки подписи угла полигона следует писать: "nameug="+выражение. Используется только для оформления.
Для установки подписи стороны полигона следует писать: "nameln="+выражение. Используется только для оформления.
Для установки размера высоты текста следует писать: "height="+выражение.
Для установки поля таблицы следует писать: "tab.название поля="+выражение
Для установки геолинка следует писать: "on_link="+выражение
on_link=CallFunction('geolinks.geolink_text',[this_obj])
Также допустимо использовать установку своих переменных, значение которых используются в выражениях
Есть возможность задать функцию скрипта, которая будет выполняться для вычисления свойства:
Формат установки: name=CallFunction('Func_name',[this_obj])
Формат функции: function Func_name(obj:TGZM_BasEl):string; - функция возвращает строку, в параметр поступает ссылка на одиночный графический объект.
Для обозначения цвета используются значения:
Цвет | Значение |
---|---|
Черный |
0 |
Темно-красный |
128 |
Темно-зеленый |
32768 |
Коричневый |
32896 |
Темно-синий |
8388608 |
Пурпурный |
8388736 |
Голубой |
8421376 |
Темно-серый |
8421504 |
Светло-серый |
12632256 |
Красный |
255 |
Зеленый |
65280 |
Желтый |
65535 |
Синий |
16711680 |
Малиновый |
16711935 |
Светло-голубой |
16776960 |
Белый |
16777215 |
Также значение цвета можно вычислить по формуле: [кол-во синего]*65536+[кол-во зеленого]*256+[кол-во красного],
где [кол-во синего], [кол-во зеленого], [кол-во красного] – числа от 0 до 255, отвечают за яркость соответствующего цвета.
Таким образом можно задать до 16777215 цветов.
Для обозначения стиля используются значения, которое вычисляемся по формуле: "номер_группы"*256+"номер_стиля_в_ группе".
Группа номер 0 отведена под стандартные стили и не могут переопределяться:
-для точек – код 0.
-для линий – коды от 0 до 4.
-для полигонов – коды от 0 до 7.
Пример:
файл с пользовательским стилем называется "lin_1_1.bmp" – номер группы=1, номер стиля в группе=1, значение кода стиля равно: 1*256+1=257.
Здесь тоже самое, как и в предыдущем описании.
Для доступа к полям таблицы MIF, применяется названия переменных (перед знаком "="):
Для точечных объектов:
TABTOS.<название поля>
Для линий:
TABLIN.<название поля>
Для полигонов:
TABPOL.<название поля>
Для текстов:
TABTXT.<название поля>
Для доступа к данным Geozem применяется названия переменных:
Для точек:
tos.<имя свойства>
Для линий:
lin.<имя свойства>
Для полигонов:
pol.<имя свойства>
Для тектов:
txt.<имя свойства>
Для доступа к таблицам Geozem:
Tos.tab.<имя поля>
Lin.tab.<имя поля>
Pol.tab.<имя поля>
Txt.<имя поля>
Доступны все свойства данных объектов, которые описаны ранее.
После знака "=" писать следует просто <имя свойства> или <название поля>
Пример:
Для полного копирования данных Geozem (копирование стилей, названий, признака отметки, разрешения написания названия), можно создать такую привязку.
Описание таблицы:
KW INTEGER KN INTEGER NZ LOGICAL OT LOGICAL NZTXT CHAR(25) UOBZ INTEGER
Выражения:
TABPOL.NZ=[nz] TABPOL.NZTXT=[nztxt] TABPOL.UOBZ=[uobz] pol.kadkwart=[KW] pol.kadnomer=[KN] pol.nz=[NZ] pol.nztxt=[NZTXT] pol.uobz=[UOBZ] TABTOS.NZ=[nz] TABLIN.NZ=[nz] TABTOS.OT=[ot] TABTOS.NZTXT=[nztxt] TABTOS.UOBZ=[uobz] TABLIN.NZTXT=[nztxt] TABLIN.UOBZ=[uobz] TABTOS.KW=0 TABLIN.KW=0 TABTOS.KN=0 TABLIN.KN=0 tos.ot=[OT] tos.nz=[NZ] tos.nztxt=[NZTXT] tos.uobz=[UOBZ] lin.nz=[NZ] lin.nztxt=[NZTXT] lin.uobz=[UOBZ] TABLIN.OT=0 TABPOL.OT=0 TABPOL.KW=[kadkwart] TABPOL.KN=[kadnomer]
Название функции, типы параметров | Назначение |
---|---|
SQRT(x: Double):Double |
Возвращает квадратный корень из числа x |
ABS(x: Double):Double |
Возвращает абсолютное число x |
UGLSTR(n: Double): String |
Возвращает угол в виде строки ГГГ°ММ"CC", параметр n-десятичное значение угла. |
UGLRUMB(n: Double): String |
Возвращает угол в виде румба, параметр n-десятичное значение угла. |
LEFTUGL(n: Double): Double |
Преобразование десятичного угла (n) из правого в левый и наоборот. |
STR(n: Integer): String |
Преобразует число (n) в строку |
COPY(s: String; n1,n2: Integer):String |
Возвращает подстроку из строки (s) начиная с номера (n1), длиной (n2) |
LENGTH(s: String): Integer |
Возвращает длину строки (s) |
POS(s1: String; s2: String): Integer |
Возвращает начало вхождения строки s1 в строке s2. |
UPPER(s: String): String |
Возвращает строку (s), где все буквы заглавные |
IF(b: Boolean; v1,v2:Variant): Variant |
Возвращает значение v1, если условие (b) истинно; иначе возвращает значение v2 |
FORMATFLOAT(format: String; n: Double): String |
Преобразует числовое значение (n) в строку, используя форматирование (format). Описание спецификаторов форматирования format: 0: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, если нет – выводится 0. #: Определяет поле для цифры. Если в данной позиции форматируемое число имеет значащую цифру, она выводится, ели нет – ничего не выводится .: Поле для разделителя целой и дробной частей числа |
INT(n: Double): Integer |
Возвращает целую часть числа (n) |
FRAC(n: Double): Double |
Возвращает целую часть числа (n) |
ROUND(n: Double): Double |
Возвращает округленное значение (n) |
(n1: DoubleMODn2:Double): Integer |
Возвращает остаток от деления n1 на n2 |
SELECT(name: String; s: String): String |
Возвращает результат SQL-запроса (s) к базе данных (name – имя базы данных). Подробнее… |
SQL(name: String; s: String) |
Выполняет произвольный SQL-запрос (s) к базе данных (name – имя базы данных). Подробнее… |
ConnectionString(name: String; login: Boolean) |
Возвращает строку подключения из настроенных баз данных (name – имя базы данных). Подробнее… |
GetSpisokID(idstr:string):integer |
Вернуть номер списка по идентификатору (idstr). Если не найдено, возвращает -1. |
При написании выражения нельзя ставить пробел между именем функции и открывающей скобкой.
При использовании вещественных чисел следует применять при написании разделитель целой и дробной частей, тот, который установлен в windows (запятая или точка).
Примеры написания выражений:
Точки |
||
Name="н"+STR([number]) |
н100 |
Добавляется буква "н" к порядковому номеру точки |
Name=STR([number]+10) |
110 |
К порядковому номеру точки прибавляется число 10 |
style=IF([n],IF([nz]<0,256,0),257) n=([nztxt]="") |
Установка точки стиля |
|
tab.name="Имя" |
Установка полю NAME в таблице значение "Имя" | |
Линии |
||
name=FormatFloat('0.##',[Length])+' / '+[AngleName] | 10.2 / 196°04" | Пишется значение длины и дирекционный угол |
n=(([t1.style]=257)and([t2.style]=257)) or(([t1.style]=0)or([t2.style]=0)) style=IF([n],0,2) |
Установка стиля линии | |
tab.name="Имя" |
Установка полю NAME в таблице значение "Имя" | |
Полигоны |
||
name=IF(([CadastralNumber]=''),'#'+str([number]), [CadastralNumber]) |
#1 |
Если нет кадастрового номера то пишется знак "#" и порядковый номер полигона |
01:005 |
Если есть кадастровый номер |
|
name=IF(([CadastralNumber]=''), [S1], [CadastralNumber]) |
#1 01:005 |
Если не заполнен кадастровы номер, то выводится подпись, если она отсутвует, выводится порядковый номер |
name=FormatFloat('0.0', [Area]) + ' м2' |
1000.0 м2 | Вывод площади в названии полигона |
Style=2 Stylez=2 |
Установка стиля |
|
tab.name="Имя" |
Установка полю NAME в таблице значение "Имя" | |
nameUG=UglStr([angle]) |
Установка подписи углов полигонов как значение строки внутреннего угла | |
nameLN=FormatFloat('0.##',[Length]) |
Установка стороны полигона как значение длины стороны |