Einzelnen Beitrag anzeigen

DCoderHH

Registriert seit: 4. Feb 2015
Ort: Hamburg
84 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Maptitude über OLE/COM steuern

  Alt 19. Mär 2015, 16:03
Hallo,

steuert hier jemand Maptitude über OLE/COM? Ich möchte eine Karte öffnen (das klappt) und dort ein Zeichen in einer bestimmten Schriftart einfügen. Den Code dazu habe ich teilweise aus der Hilfedatei nach Delphi übersetzt (hoffentlich richtig). Es läßt sich compilieren. Beim Ausführen erscheint jedoch an der Stelle "Hier der Fehler" die folgende Meldung:

Code:
C:\Users\NAME\AppData\Roaming\Caliper\Maptitude 2015\caliper.mrk was not found.
Diese Datei existiert nach einer frischen Maptitude Installation auf der gesamten Festplatte nicht. Ich vermute daher, dass der Fehler ein anderer ist und die Meldung nicht ganz stimmt. Wer kann helfen? Oder hat für mich ein anderes Beispiel, wie ich eine Maptitude-Karte von Delphi aus bearbeiten kann? Danke!


Delphi-Quellcode:
procedure TForm1.Test;
var
  spec, specSub, MapScope, Location, Color: OleVariant;
  MapName: string;
  Gisdk: OleVariant;
begin

  Gisdk := CreateOleObject('Maptitude.AutomationServer');
  Gisdk.RunMacro('OpenMap', 'D:\test.map', null);
  Gisdk.RunMacro('SetWindowSizePixels', null, 340, 270);
  Gisdk.RunMacro('SetLayer', 'Cities & Towns');

  MapName := Gisdk.RunMacro('GetMap');

    spec := VarArrayCreate([1, 4], varVariant);

    Location := Gisdk.RunMacro('Coord', -75000000, 43000000);
    spec[1] := VarArrayCreate([1, 2], varVariant);
    specSub := spec[1];
    specSub[1] := 'Location';
    specSub[2] := Location;

    spec[2] := VarArrayCreate([1, 2], varVariant);
    specSub := spec[2];
    specSub[1] := 'Font';
    specSub[2] := 'Caliper Cartographic|14';

    spec[3] := VarArrayCreate([1, 2], varVariant);
    specSub := spec[3];
    specSub[1] := 'Index';
    specSub[2] := '53';

    Color := Gisdk.RunMacro('ColorRGB', 0, 0, 65535);
    spec[4] := VarArrayCreate([1, 2], varVariant);
    specSub := spec[4];
    specSub[1] := 'Color';
    specSub[2] := Color;

    try
      Gisdk.RunMacro('AddAnnotation', 'Map|'+MapName, 'Font Character', spec); //<-- Hier der Fehler
    except
      MessageDlg(Gisdk.RunMacro('GetLastError', null), mtError, [mbOK], 0);
    end;
end;
  Mit Zitat antworten Zitat