Registriert seit: 4. Feb 2015
Ort: Hamburg
84 Beiträge
Delphi 10 Seattle Professional
|
Maptitude über OLE/COM steuern
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;
|
|
Zitat
|