delphi中集成mapinfo的问题。只要来访,便有30分!提供线索,50分。帮助解决,150分!(300分)

张问

Unregistered / Unconfirmed
GUEST, unregistred user!

在delphi中集成mapinfo。先获取一个form或panel的句柄,然后用集成的mapinfo打开一个
mapinfo的*.tab表,将图形放在form或panel上显示。这很好理解。(以panel1为例,panel
放在mainform上,align的方式为alClient, mainform的windowstate状态是wsNormal.)
代码如下:(mapin为ole 类 variant 型)
procedure open;
var command,sWinhandle:string;
begin
Str(panel1.Handle,sWinHandle);
Command:='Set Nextdo
cument Parent '+sWinHandle+' Style 1';
mapin.do(Command);
Command:='Map From "'+tablename+'"';
//tablename是已获取的mapinfo表名,可直接打开。
mapin.do(Command);
Str(mainform.Handle,sWinHandle);
//mainform是主form
mapin.do('Set Application Window ' + sWinHandle);
end;

这样做的问题是当我将mainform最大化或缩小时,panel随之最大化(或缩小),但是
mapinfo的图的范围却仍然局限于刚打开的范围。请问我如何将图和panel一起放大呢?
或者是我从mainform调用另外一个form,把图放在上面显示,出现了同样的问题。我如何
解决这种问题,使得mapinfo的*.tab表在其载体上的位置随载体的大小保持原来的比例和
位置呢 ?(如同在mapinfo中一样的效果)
 
从概念上讲,你每变化一次视图大小,就要重新计算新视图下地图的显示比例和位置。
你去查一下有没有这方面的函数。(我机器上没有MapInfo,没办法帮你试)
 
一个笨方法,最大化时,关闭*.tab 再打开
没用过MapInfo,所以只能出这个馊主意 :p
 
同意张一健
 
需要刷新map窗口
 
我来访了,请勿食言.
谢谢!
 
看来只能得30分了。
 
我也来凑热闹!
 
PB中有实现窗口上的对象随窗口大小变化的这样的用户对象,需要自己编程。
delphi中应该有这样的控件吧。
 
来者有份,真是个扩大点击量的好办法。
 
兄弟,你的分不够发了!呵呵
 
没什么难度,象其他ActiveX控件一样用。
 
MapInfo在哪有Down?
 
俺只要30分,多了不要。
 
hehe look!
 
直接给孙以义老师发email不就得了。gislab是做什么的,你不明白吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
585
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
724
import
I
顶部