起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 582|回复: 13

如何将delphi代码改写成X3的?初学者

[复制链接]
发表于 2010-3-25 16:35:45 | 显示全部楼层 |阅读模式
初学X3中,导入mapx控件后成功,将delphi代码写入studio中出现了很多问题,很多属性和方法都Undeclared identifier ,如Undeclared identifier "miPositionTR"
,如何将delphi代码改写成X3的?
procedure TForm1.FormCreate(Sender: TObject);
var
fnewsymbol,fmapsymbol:cmapxfeature;
begin
      init;

      ffeature:=cofeature.Create;
      ffeature.Attach(form1.Map1.DefaultDispatch);
      ffeature.Type_   :=   miFeatureTypeSymbol;
      ffeature.Style   :=   carlayer.Style;
      ffeature.KeyValue:='H12234';
      ffeature.Point.Set_(-99.08,33.15);
      ffeature:=carlayer.AddFeature(ffeature,EmptyParam);
end;

procedure   TForm1.init;
var
  carlayer:cmapxlayer;
  begin
     carlayer:=Form1.Map1.Layers.CreateLayer('cars','',1,100,Form1.map1.NumericCoordSys);
      Form1.Map1.Layers.AnimationLayer   := carlayer;
      carlayer.LabelProperties.Position   :=   miPositionTR;
      carlayer.LabelProperties.Style.TextFontShadow   :=   True;
      carlayer.LabelProperties.Style.TextFontHalo   :=   True;

      carlayer.LabelProperties.Overlap   :=   True;
      carlayer.LabelProperties.Style.TextFontColor   :=   clred;
      carlayer.AutoLabel   :=   True;
      carlayer.Style.SymbolType :=1;
      carlayer.Style.SymbolBitmapSize:=40;
      carlayer.Style.SymbolBitmapName:='TAXI1-32.bmp';
      carlayer.Style.SymbolBitmapTransparent:=true;
  end;

procedure TForm1.Map1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
x1,y1:double;
x2,y2:single;
begin
   x2:=x;
   y2:=y;
   map1.ConvertCoord(x2,y2,x1,y1,miScreenToMap);
   label1.Caption:=FloatToStr(x1);
   label2.Caption:=FloatToStr(y1);
end;



procedure TForm1.Timer1Timer(Sender: TObject);
var
  fea:cmapxfeature;
  lyrLayer ayer;
begin
  ffeature.Point.Offset(0.05,0.05);
//移动图元  其中Offset(x,y)xy是两个经纬度之间的差距(改为两个经纬度的差)
  ffeature.Update(EmptyParam, EmptyParam);
end;

mapx.pas源文件也是在论坛中搜集到的,望有好心的人帮忙看看,不胜感激了!

mapxlib_tlb.rar

53.51 KB, 下载次数: 109

回复

使用道具 举报

发表于 2010-3-25 17:58:34 | 显示全部楼层
miPositionTR
miScreenToMap
应该是你的资源包中定义的枚举类型吧?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-26 08:38:03 | 显示全部楼层
应该是枚举类型,但不是资源包里定义的,我查过了。mapx控件安装之后在delphi下引入后就能用了,那我怎么才能找到这个miPositionTR的定义?
回复 支持 反对

使用道具 举报

发表于 2010-3-26 08:56:47 | 显示全部楼层
楼主,你用delphi帮助查一下miPositionTR 这个在哪里,在Studio中写上名空间,例如 ShellExecute方法,写成 Borland.Delphi.ShellAPI.ShellExecute

因为涉及版权,我们都不让安装delphi了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-28 10:37:53 | 显示全部楼层
为什么不能装delphi,能具体解释一下吗?我还在想X3里能不能让delphi的程序直接启动就好了?因为对x3实在很不熟悉,但gis这块功能又必须在x3平台上。希望好心的人帮我回答下!谢谢!
回复 支持 反对

使用道具 举报

发表于 2010-3-29 10:30:16 | 显示全部楼层
为什么不能装delphi,能具体解释一下吗?
呵呵,涉及Delphi的版权问题。简单的说要给borland公司交费才好用。

刚才我下了一下你1楼的附件看了一下, miPositionTR不是delphi的,是常量,你直接写值就可以了。
miPositionCC = $00000000;
  miPositionTL = $00000001;
  miPositionTC = $00000002;
  miPositionTR = $00000003;
  miPositionCL = $00000004;
  miPositionCR = $00000005;
  miPositionBL = $00000006;
  miPositionBC = $00000007;
  miPositionBR = $00000008;

或者 carlayer.LabelProperties.Position 看看这个是Position这个方法是啥,在 miPositionTR 前面加上这个类型就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-29 14:10:21 | 显示全部楼层
谢谢atiger的回答,那就是说X3不能支持delphi程序.exe的调用了?我想明确一下。
回复 支持 反对

使用道具 举报

发表于 2010-3-29 14:30:10 | 显示全部楼层
可以,用 Borland.Delphi.ShellAPI.ShellExecute 这个调用
回复 支持 反对

使用道具 举报

发表于 2010-3-29 15:09:28 | 显示全部楼层
补充下,windows API只要不传指针,不传接口就可以
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-15 13:27:26 | 显示全部楼层
miPositionTR的问题解决了,可是createlayer函数报错,在X3的平台上创建图层m_Layer:=Map2.Layers.CreateLayer('eye','',nil,nil,nil); 总是报错,报错图片如下

未命名.jpg

16.09 KB, 下载次数: 207

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 14:54 , Processed in 0.043302 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表