Интеграция приложений и данных в 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