19774279
路人甲
路人甲
  • 注册日期2006-03-27
  • 发帖数20
  • QQ
  • 铜币185枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2331回复:6

这里的MapControl大小可以改变吗?

楼主#
更多 发布于:2006-03-28 09:20
<P>如图所示,我希望PagelayoutControl和MapControl以及TOCControl交界的线可以任意拖动,改变大小,请问该怎么作?</P>
<P><BR></P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2006-03-28 12:19
使用控件,或者自己编写程序实现
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
kisssy
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-03-29 12:41
<P>一般可以在中间放一个Label来做</P>
个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
19774279
路人甲
路人甲
  • 注册日期2006-03-27
  • 发帖数20
  • QQ
  • 铜币185枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-03-29 15:50
<P>这是我自己研究的,调用了API,把代码粘贴过去应该可以直接使用(记得先创建两个text),不过有一个问题希望熟悉API的前辈们能帮忙解决一下,就是:</P>
<P>text1拖动的时候text2并没有跟着变,只有当mouse_Up以后,text2才会过来,我觉得和WM_NCLBUTTONDOWN 这个常量有关,但是我又找不到合适的"代替品",把代码放到Mouse_Move里也有些问题,希望大家可以帮忙解决一下</P>

<P>Private Declare Function ReleaseCapture Lib "user32" () As Long<BR>Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long<BR>Private Const HTLEFT = 10<BR>Private Const HTRIGHT = 11<BR>Private Const WM_NCLBUTTONDOWN = ;HA1</P>
<P>Private Sub Form_Load()<BR>    Text2.Left = Text1.Left + Text1.Width<BR>End Sub</P>
<P>Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)<BR>    Dim W1 As Long, W2 As Long<BR>    Dim nParam As Long<BR>    W1 = Text1.Width<BR>    With Text1<BR>        If X > .Width - 150 And X < .Width Then<BR>            nParam = HTRIGHT<BR>        End If<BR>        If nParam Then</P>
<P>            Text1.MousePointer = 9       '双向箭头<BR>            Call ReleaseCapture<BR>            Call SendMessage(.hwnd, WM_NCLBUTTONDOWN, nParam, 0)<BR>            <BR>            'Text2会随着Text1的变化而左右变动<BR>            Text2.Left = Text1.Left + Text1.Width<BR>            '确保2个text的总宽度不变<BR>            W2 = W1 - Text1.Width<BR>            Text2.Width = Text2.Width + W2<BR>        End If<BR>        End With</P>

<P>End Sub</P>
<P>Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)<BR>    '鼠标移到交界的地方就变成双向箭头<BR>    If (X > 0 And X < 0) Or (X > Text1.Width - 150 And X < Text1.Width) Then<BR>        Text1.MousePointer = 9<BR>    Else<BR>        Text1.MousePointer = 0<BR>    End If</P>
<P>End Sub</P>
<P>这里没有用AE的东西,纯粹就是VB的代码,控件是一个form上并排放了两个text,不过因为我不会在回帖中贴图,界面就没办法上传了,还希望谁能教我一下</P><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" /><img src="images/post/smile/dvbbs/em12.gif" />
举报 回复(0) 喜欢(0)     评分
19774279
路人甲
路人甲
  • 注册日期2006-03-27
  • 发帖数20
  • QQ
  • 铜币185枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-03-30 21:30
<P>如3楼所说的,没有必要像我上面写的这么麻烦,其实只要加一个label或是picture就可以了,只是边界的处理需要调整一下,代码不多,大家可以自己写一下,非常简单的</P>
举报 回复(0) 喜欢(0)     评分
wavvylia
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-04-05 09:15
最简单的办法就是使用第三方的控件!
举报 回复(0) 喜欢(0)     评分
egis
路人甲
路人甲
  • 注册日期2004-03-21
  • 发帖数73
  • QQ
  • 铜币427枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2006-04-09 10:20
<P>在.net 下最好了,用spliter控件,然后设置各个控件的docking属性就 行了</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部