Переменные используются для хранения данных. Переменные в программе представляются
с помощью идентификатооров. Идентификатор должен состоять из символов, допустимых
для язака, на котором создается программа. Тип переменной определяется типом
хранимых в ней данных и может автоматически изменеяться во время присвоения нового значения.
Особым типом переменных является объектный тип, хранящий ссылку на объект,
через которую можно обращаться к свойствам (данным) и методам (функциям) объекта.
В среде CityMap из кода программы постоянно доступны ряд объектов, дающих
доступ к открытой карте и окну программы. Эти объекты всегда доступны из любого
места программы, их нельзя удалить и переприсвоить им новое значение. К таким
объектам относятся:
window - предоставляет доступ к окну программы.
Document - предоставляет доступ к открытой карте.
Описание дочерних объектов, свойств и методов можно посмотреть в среде разработки
ScriptEdit в инспекторе свойств, когда в редакторе активна вкладка Код.
Переменные, объявленные внутри функции являются локальными, т.е. они видны
только из кода функции, в которой были объявлены. Среда CityMap предоставляет
возможность создавать глобальные переменные (видимые из любой функции программы).
Для создания глобальной переменной служит метод AddVariable объекта
window. Например код:
window.AddVariable("var1");
var1=5;
добавляет глобальную переменную с именем var1 и присваивает ей значение 5. После
выполнения этого кода, значение переменной var1 в любой функции программы будет равно 5
до тех пор, пока ей не будет присвоено новое значение.
Таймеры служат для периодического вызова определенной функции. Для управления
таймерами служит объект Timers, который можно получить через одноименное
свойство объекта window.
Метод Add этого объекта добавляет новый таймер и возвращает его
идентификатор. В качестве параметров в метод Add передается имя функции,
которая будет периодически вызываться и периодичность вызова этой функции
в миллисекундах. После вызова метода Add, переданная в качестве параметра
функция будет выполняться периодически пока существует таймер. Остановить
таймер невозможно, можно только его полностью удалить методом Delete с параметром
равным идентификатору нужного таймера.
Для хранения данных произвольного формата в среде CityMap используется объект
Blob. Blob -это набор данных произвольного формата. В каждый набор можно
добавлять блок новых данных из файла (методом AddFromFile) из поля базы данных
(метод FieldByName объекта IBDataBase), а
также из карты (методом AddFromMap). Удалить данные из блоба можно только все
сразу методом Clear.
Все функции добавления данных в блоб возвращают строку, содержащую адрес
добавленных данных. Если этот адрес задать в качестве значения параметра src
тега HTML формы, то при отображении такой формы в соответствующий тег
будут загружены данные из блоба.
Небольшой пример:
//Добавляет новый блоб в коллекцию блобовЕсли далее отобразить форму Test, то на ней будет показан картографический объект mapobj.
i=window.Blobs.Add();
//Добавляет в блоб изображение
//картографического объекта mapobj
//с белым фоном
addres=window.Blobs.Items(i).AddFromMap(mapobj,0xffffff);
//В HTML форму с именем Test
//добавляется тэг изображения
window.Forms.Form("Test").Code="<img src=\""+addres+"\">"
Для доступа к базам данных FireBird (InterBase) в среде CityMap служит объект
IBDataBase доступный через одноименное свойство объекта window.
При каждом обращении к этому свойству создается новый объект IBDataBase, поэтому
для использования, его нужно присвоить локальной или глобальной переменной. Например:
ib=window.IBDataBase;После вызова метода SQL объекта IBDataBase формируется таблица, доступ к полям текущей записи которой осуществляется методом FieldByName, который возвращает символьное представление поля с заданным именем. Если содержимое поля является двоичными данными и задан существующий блоб, то данные помещаются в этот блоб, и возвращается адрес этих данных.
//Подключение к базе данных
if ( ib.Connect("server:d:\\data.gdb","user=sysdba\r\npass=dbpassword") )
{
//При успешном подключении можно выполнять запрос
ib.SQL("Текст sql запроса");
} else
{window.alert("Ошибка подключения к базе!");}