Интеграция приложений и данных в MapInfo

Метод интегрированной картографии как способ разработки приложений. Запуск и пересылка команд. Запрос данных от программы MapInfo. Интеграция инструментальных панелей. Схема использования уведомлений в OLE. Обнаружение ошибок времени исполнения.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 28.10.2010
Размер файла 34,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

- // OLE сервер FServer : Variant;

- FHandle : THandle;

- FActive : Boolean;

- FPanel : TPanel;

- Connected : Boolean;

- MapperID : Cardinal;

- MapperNum : Cardinal;

- procedure SetActive(const Value: Boolean);

- procedure SetPanel(const Value: TPanel);

- procedure CreateMapInfoServer;

- procedure DestroyMapInfoServer;

- protected { Protected declarations } public { Public declarations } constructor Create(AOwner: TComponent); override;

- destructor Destroy; override;

- // Данная процедура выполняет метод сервера MapInfo - Do procedure ExecuteCommandMapBasic(Command: string; const Args: array of const);

- // Данная процедура выполеняет метод сервера MapInfo - Eval function Eval(Command: string; const Args: array of const): TEvalResult; virtual;

- procedure WindowMapDef;

- procedure OpenMap(Path : string);

- published { Published declarations } // Создает соединение с сервером MapInfo property Active: Boolean read FActive write SetActive;

- property PanelMap : TPanel read FPanel write SetPanel;

- end;

- procedure register;

- implementation procedure register;

- begin RegisterComponents('Kuzan', [TKDMapInfoServer]);

- end;

- { TKDMapInfoServer } constructor TKDMapInfoServer.Create(AOwner: TComponent);

- begin inherited Create(AOwner);

- FOwner := AOwner as TWinControl;

- FHandle := 0;

- FActive := False;

- Connected := False;

- end;

- destructor TKDMapInfoServer.Destroy;

- begin DestroyMapInfoServer;

- inherited Destroy;

- end;

- procedure TKDMapInfoServer.CreateMapInfoServer;

- begin try FServer := CreateOleObject('MapInfo.Application');

- except FServer := Unassigned;

- end;

- // Скрываем панели управления MapInfo;

- ExecuteCommandMapBasic('Alter ButtonPad ID 4 ToolbarPosition (0, 0) Show Fixed', []);

- ExecuteCommandMapBasic('Alter ButtonPad ID 3 ToolbarPosition (0, 2) Show Fixed', []);

- ExecuteCommandMapBasic('Alter ButtonPad ID 1 ToolbarPosition (1, 0) Show Fixed', []);

- ExecuteCommandMapBasic('Alter ButtonPad ID 2 ToolbarPosition (1, 1) Show Fixed', []);

- // Переопределяем окна:

- ExecuteCommandMapBasic('Close All', []);

- ExecuteCommandMapBasic('Set ProgressBars Off', []);

- ExecuteCommandMapBasic('Set Application Window %D', [FOwner.Handle]);

- ExecuteCommandMapBasic('Set Window Info Parent %D', [FOwner.Handle]);

- FServer.Application.Visible := True;

- if IsIconic(FOwner.Handle)then ShowWindow(FOwner.Handle, SW_Restore);

- BringWindowToTop(FOwner.Handle);

- end;

- procedure TKDMapInfoServer.DestroyMapInfoServer;

- begin ExecuteCommandMapBasic('End MapInfo', []);

- FServer := Unassigned;

- end;

- procedure TKDMapInfoServer.ExecuteCommandMapBasic(Command: string;

- const Args: array of const);

- begin if Connected then try FServer.do(Format(Command, Args));

- except on E: Exception do MessageBox(FOwner.Handle, PChar(Format('Ошибка выполнения () - %S', [E.message]));

- Warning', MB_ICONINFORMATION or MB_OK);

- end;

- end;

- function TKDMapInfoServer.Eval(Command: string;

- const Args: array of const): TEvalResult;

- function IsInt(Str : string): Boolean;

- var Pos : Integer;

- begin Result := True;

- for Pos := 1 to Length(Trim(Str)) do begin if (Str[Pos] <> '0') and (Str[Pos] <> '1') and (Str[Pos] <> '2') and (Str[Pos] <> '3') and (Str[Pos] <> '4') and (Str[Pos] <> '5') and (Str[Pos] <> '6') and (Str[Pos] <> '7') and (Str[Pos] <> '8') and (Str[Pos] <> '9') and (Str[Pos] <> '.') then begin Result := False;

- Exit;

- end;

- end;

- end;

- var ds_save: Char;

- begin if Connected then begin Result.AsVariant := FServer.Eval(Format(Command, Args));

- Result.AsString := Result.AsVariant;

- Result.AsBoolean := (Result.AsString = 'T') or (Result.AsString = 't');

- if IsInt(Result.AsVariant) then begin try ds_save := DecimalSeparator;

- try DecimalSeparator := '.';

- Result.AsFloat := StrToFloat(Result.AsString);//Result.AsVariant;

- finally DecimalSeparator := ds_save;

- end;

- except Result.AsFloat := 0.00;

- end;

- try Result.AsInteger := Trunc(Result.AsFloat);

- except Result.AsInteger := 0;

- end;

- end else begin Result.AsInteger := 0;

- Result.AsFloat := 0.00;

- end;

- end;

- end;

- procedure TKDMapInfoServer.SetActive(const Value: Boolean);

- begin FActive := Value;

- if FActive then begin CreateMapInfoServer;

- WindowMapDef;

- Connected := True;

- end else begin if Connected then begin DestroyMapInfoServer;

- Connected := False;

- end;

- end;

- end;

- procedure TKDMapInfoServer.SetPanel(const Value: TPanel);

- begin FPanel := Value;

- end;

- procedure TKDMapInfoServer.WindowMapDef;

- begin ExecuteCommandMapBasic('Set Next Document Parent %D Style 1', [FPanel.Handle]);

- end;

- procedure TKDMapInfoServer.OpenMap(Path: string);

- begin ExecuteCommandMapBasic('Run Application "%S"', [Path]);

- MapperID := Eval('WindowInfo(FrontWindow(),%D)',[12]).AsInteger;

- with PanelMap do MoveWindow(MapperID, 0, 0, FPanel.ClientWidth, FPanel.ClientHeight, True);

- end;

- end.

Мы установили связь с сервером MapInfo.

У сервера MapInfo есть метод Do - он предназначен для посылки команд MapBasic серверу точно также как если бы пользователь набирал их в окне MapBasic-а самой программы MapInfo.

У сервера MapInfo есть метод Eval- он предназначен для получения значение функций после посылки команд MapBasic серверу.

Дополнительная информация. Для ознакомления Интегрированной Картографии, предоставлены программы, поставляемые в комплекте со средой разработки MapBasic:

SAMPLES\VB\FINDZIP: программа на языке Visual Basic, используемая как примерный образец для разработки собственных приложений.

SAMPLES\VB\VMAPTOOL: Visual Basic-программы, демонстрирующие более сложные примеры интеграции с Visual Basic 4.0 Professional Edition.

SAMPLES\MFC\FINDZIP: Простое приложение, использующее MFC.

SAMPLES\PWRBLDR\CAPITALS: Простое приложение на языке PowerBuilder.

Внимание: это 16-битное приложение, и Вам нужно иметь runtime-версию PowerBuilder, чтобы увидеть, как оно работает.

SAMPLES\DELPHI\TABEDMAP: Простое приложение на языке Delphi.

В каталоге SAMPLES Можно найти другие приложения, в том числе и не указанные в данном Руководстве.


Подобные документы

  • Сущность картографии и обзор возможностей MapInfo Professional. Процедура установки и лицензирование программы. Использование внешних данных. Работа с инструментальными панелями, сохранение, закрытие и экспорт результатов. Внедрение Карт программы.

    учебное пособие [9,1 M], добавлен 24.03.2009

  • Изучение основных принципов разработки приложений баз данных в среде Delphi. Создание таблиц, псевдонима и вычисляемых полей базы данных. Особенности организации поиска и фильтрации. Сортировка данных в таблицах. Построение запросов. Генерация отчетов.

    курсовая работа [1,3 M], добавлен 05.02.2017

  • Администрирование баз данных. Проектирование баз данных, язык запросов к базе данных. Анализ средств разработки приложений. Планирование разработки программы "Электронный каталог" для библиотеки ОГАУ, предварительный проект и практическая реализация.

    дипломная работа [1,2 M], добавлен 02.06.2015

  • Общее понятие геоинформационных систем. Характеристика основных видов приложений, которые имеют отношение к веб-картографии. Стандарты в веб-картографии. Качество публикуемых данных. Авторские права и правовые аспекты распространения и публикации данных.

    реферат [31,1 K], добавлен 24.09.2014

  • Направления развития САПР. Технологии интеграции инструментальных приложений. Схемы взаимодействия КОМПАС-3D и MathCAD на основе механизмов интеграции. Разработка интерфейсных модулей и механизма связывания переменных, апробация программного решения.

    диссертация [6,3 M], добавлен 15.04.2013

  • Рассмотрение концептуального и логического проектирования базы данных, ER-модель. Фильтрация данных при проектирование приложений. Параметризованный запрос на выборку данных и его структура. Сложные формуляры и макеты отчетов, содержащие ФИО сотрудников.

    курсовая работа [826,2 K], добавлен 07.01.2011

  • Запуск из одного приложения других приложений. Технология связывания и внедрения объектов. Понятие межпроцессного взаимодействия. Сценарий использования разделяемой памяти. Библиотеки динамической компоновки. Именованные и анонимные каналы, сокеты.

    курсовая работа [46,5 K], добавлен 26.07.2014

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

  • Обзор программных средств разработки приложений и обоснование выбора языка программирования. Классификация приложений для работы с базами данных. Функциональная структура базы данных с указанием назначения программных модулей, руководство пользователя.

    дипломная работа [645,3 K], добавлен 21.11.2010

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

    лабораторная работа [1,1 M], добавлен 10.12.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.