kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:3817回复:19

指点 属性页

楼主#
更多 发布于:2004-06-01 09:26
<P>我看ao 中有个接口Ipropertypage,应该很好用,但是 我却看不明白怎么用!
    Dim p As IPropertyPage
    Set p = New LinePropertiesPropertyPage
    
    p.Show (SW_SHOWNORMAL)</P>
<P>SW_SHOWNORMAL参数是在msdn中查到的, 但是vb中说这个变量没定义,而ao帮助上说IPropertyPage是msdn的接口,呵呵  我也不知道该怎么用, 希望高手给予指点!!</P>
喜欢0 评分0
我门是害虫 我们是害虫 !!
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2004-10-26 15:55
ding  ding  
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2004-10-25 15:20
<P>定 顶  顶</P><img src="images/post/smile/dvbbs/em01.gif" />
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-10-24 16:42
<P>kissssy斑竹,俺再次提起这个属性页的问题 ,抱歉, 呵呵 这里我发现一个问题, 我现在想利用join和relat对话框, 但是 好像我的join按钮无法弹出对话框进行join操作, 而relat对却可以弹出进行Relate操作,我的代码如下:  
Private Sub Command1_Click()</P><P>Dim pLayer As ILayer
Set pLayer = MapControl1.Layer(0)
Dim p_map As IMap
Set p_map = MapControl1.Map
Dim pComPropSheet As IComPropertySheet
  Set pComPropSheet = New ComPropertySheet
  pComPropSheet.Title = "My Layer Properties"
  Dim pPPUID As New UID
  Dim pDrawPage As IPropertyPage
  Set pDrawPage = New JoinRelatePage   ' JoinRelatePage   'JoinRelate属性页
  
  pComPropSheet.AddCategoryID pPPUID
  pComPropSheet.AddPage pDrawPage
  
  '请在这里在添加其它属性页
'
  Dim pMySet As ISet
  Set pMySet = New esriCore.Set
  pMySet.Add pLayer
  pMySet.Reset
'
  pComPropSheet.EditProperties pMySet, 0
 MapControl1.ActiveView.Refresh</P><P>End Sub</P><P>为什么会这样啊??</P><P>谢谢了 !~~~</P>
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2004-06-04 12:31
<P>Agree</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-06-04 11:44
<P>我已经基本上明白了您的意思, </P><P> 1<FONT color=#f73809>  <FONT color=#000000>如果注释掉</FONT></P><P>       <FONT color=#f73809>p</FONT><FONT color=#000000>ComPropSheet.AddCategoryID pPPUID</FONT></P><P>           pComPropSheet.AddPage pDrawPage</P><P>     会自动用默认的属性页!~~</P><P></FONT>2  如果保留 <FONT color=#f73809>p</FONT><FONT color=#000000>ComPropSheet.AddCategoryID pPPUID  </FONT></P><P><FONT color=#000000>    注释掉 pComPropSheet.AddPage pDrawPage,那么会出现一个"没有编辑的属性"的错误</FONT></P><P>3  仅仅注释掉</P><P><FONT color=#f73809>         p</FONT><FONT color=#000000>ComPropSheet.AddCategoryID pPPUID  回在里面出现两个symbol,</FONT></P><P> 那么 可不可以这样理解,</P><P>    <FONT style="BACKGROUND-COLOR: #4db34d" color=#3809f7>pComPropSheet.AddCategoryID pPPUID  是加入一个属性page,<FONT color=#f73809>(1)</FONT>但是如果所用的UID是不存在的,那么它就自动的默认没有任何加入的page,<FONT color=#f73809>(2)<FONT color=#3809f7>而如果你用了pComPropSheet.AddCategoryID pPPUID ,但是却没有用 </FONT><FONT color=#0909f7>pComPropSheet.AddPage pDrawPage 来加入任何属性页,那么会出现没有可编辑属性的错误.</FONT></FONT><FONT color=#f73809>,(3)</FONT><FONT color=#3809f7>而如果你根本没有用这个语句, 那么系统会自动默认用一个缺省的模式,然后执行加入 pComPropSheet.AddPage pDrawPage语句,所以 就会出现两个symbol的情况.</FONT></FONT></P><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em07.gif" /><img src="images/post/smile/dvbbs/em08.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em04.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-06-04 10:05
<P>例子我没有,我只能回答你1和2:</P><P>其实我上面已经有原因了!</P><P>1,在没有向注册表注册ID之前,这两个ID其实是<FONT color=#f70909>没有任何用途</FONT>的,“不是一个UID对应一个组件类么?”,你说的很对,但是一开始,我就跟你说,我忘了注册他们了,所以这两个CLSID根本没有对应任何组建类!!</P><P>2,其实如果一开始那段代码运行,先注册了CLSID,正确的运行结果:pComPropSheet.AddCategoryID pPPUID 其实添加的是Source属性页,而另外一句Add才是添加Symbology,所以<FONT color=#ee3d11>应该有两个属性页</FONT>!!!</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-06-03 23:00
<P>1 为什么"{3B5AA17A-F67F-4A25-9B22-D1D23C0781A2}" 和:"{4B5AA17A-F67F-4A25-9B22-D1D23C0781A2}", 没有区别,不是一个UID对应一个组件类么? 那么如果UID不同 ,它怎么能对应同一个呢!</P><P> 另外 我试验过注释掉pPPUID.Value = "{3B5AA17A-F67F-4A25-9B22-D1D23C0781A2}"  其他不边, 也就是仅仅定义了  dim pPPUID as new  UID 而不给它值 , 也是出现同一个属性页! 为什么?</P><P> 2  而 如果没有 dim pPPUID as new  UID,和pComPropSheet.AddCategoryID pPPUID 语句,就回变成缺省的layer property页,  如果UID没有影响,为什么 一定要这两个语句呢?</P><P>3  正在研究如何用自己注册的属性页,呵呵, 这个如何注册呀, 是写一个实现了icomproperty的窗体么? 斑竹有没有例子,给俺传一个呀?  先谢谢您了!</P><P>  诶 真感谢<b><FONT color=#990000>kisssy哥哥 这么热心~~~~~  :) </FONT></b></P><P>   斑竹请赐教!!~~  谢谢

</P><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em02.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em05.gif" /><img src="images/post/smile/dvbbs/em08.gif" />
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-06-03 10:12
<P>应该是会使用缺省的</P><P>好,我上次说过,让你在注册表里写两项,不知你有没有注意到有一项:</P><P>[HKEY_CLASSES_ROOT\CLSID\{A1A37857-D673-11D2-9F42-00C04F6BC78E}\Implemented Categories\</P><P>{A1A37857-D673-11D2-9F42-00C04F6BC78E}    你查看它,会发现它其实是esriCore.FeatureLayerSourcePropertyPage</P><P>所以我们一开始没写这两项到注册表时,就会发生"{3B5AA17A-F67F-4A25-9B22-D1D23C0781A2}"并没有太大关系,你可以改成:"{4B5AA17A-F67F-4A25-9B22-D1D23C0781A2}",甚至你把它注释掉,代码照样运行</P><P>因为你只是 Dim pPPUID As New UID  而没有在注册表中注册,其实这样它什么也没做。</P><P>现在注册后,你在运行代码后会发现除了Symbology标签外,还会多一个Source标签页,这样你就应该知道为什么要向注册表写两项了</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
kuanghu16
路人甲
路人甲
  • 注册日期2004-03-18
  • 发帖数73
  • QQ
  • 铜币227枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2004-06-03 09:19
<P>斑竹说的很对, 这个都经过我实验了,  但是我不明白, 为什么 如果我不写</P><P>1) <FONT color=#ee6911>这里pComPropSheet.AddCategoryID pPPUID   也可以注释掉,这样弹出的属性页就是默认的,也就是Arcmap中的Layer Properties ,  AddCategoryID方法是根据一个 id 增加一个com属性页,</FONT><FONT style="BACKGROUND-COLOR: #ffff00" color=#3809f7>是不是理解成没有UID,那么就采用缺省的</FONT></P><P><FONT color=#ee6911>2) </FONT><FONT color=#000000>"{3B5AA17A-F67F-4A25-9B22-D1D23C0781A2}"并没有太大关系,你可以改成:"{4B5AA17A-F67F-4A25-9B22-D1D23C0781A2}",甚至你把它注释掉,代码照样运行 ,这样如果没有uid的话,那么就是找不到一个com属性页,那么就不应该能运行<FONT color=#f70997>同一个属性页</FONT>呀? 这是为什么?</FONT></P><P>3) 我实验过,如果没有一个addpage, 那么即使用了<FONT color=#ee6911>AddCategoryID ,并且起uid 为</FONT> "{1476C785-6F57-11D2-A2C6-080009B6F22B}" ,也不能弹出来任何的属性页,为什么? </P><P>4) 如果代码中注释了 pPPUID.Value = "{3B5AA17A-F67F-4A25-9B22-D1D23C0781A2}", 也就是说,出现了Dim pPPUID As New UID ,而不设置其属性, 其他不变,同样的也可以用这个属性页,为什么?
</P><P> 主要是我觉得<FONT color=#3333cc>为什么不采用一个同一个UID 却可以弹出来同一个页面, 为什么如果不设置UID,就会出现Layer Properties默认属性页? 这个很怪,请斑竹赐教!~~~~~~</FONT></P>
我门是害虫 我们是害虫 !!
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部