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

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

楼主#
更多 发布于:2006-03-28 09:20

如图所示,我希望PagelayoutControl和MapControl以及TOCControl交界的线可以任意拖动,改变大小,请问该怎么作?


喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2004-03-21
  • 发帖数73
  • QQ
  • 铜币427枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-04-09 10:20

在.net 下最好了,用spliter控件,然后设置各个控件的docking属性就 行了

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数384
  • QQ
  • 铜币555枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2006-04-05 09:15
最简单的办法就是使用第三方的控件!
举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-03-27
  • 发帖数20
  • QQ
  • 铜币185枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2006-03-30 21:30

如3楼所说的,没有必要像我上面写的这么麻烦,其实只要加一个label或是picture就可以了,只是边界的处理需要调整一下,代码不多,大家可以自己写一下,非常简单的

举报 回复(0) 喜欢(0)     评分
默认头像
路人甲
路人甲
  • 注册日期2006-03-27
  • 发帖数20
  • QQ
  • 铜币185枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-03-29 15:50

这是我自己研究的,调用了API,把代码粘贴过去应该可以直接使用(记得先创建两个text),不过有一个问题希望熟悉API的前辈们能帮忙解决一下,就是:

text1拖动的时候text2并没有跟着变,只有当mouse_Up以后,text2才会过来,我觉得和WM_NCLBUTTONDOWN 这个常量有关,但是我又找不到合适的"代替品",把代码放到Mouse_Move里也有些问题,希望大家可以帮忙解决一下

Private Declare Function ReleaseCapture Lib "user32" () As Long
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
Private Const HTLEFT = 10
Private Const HTRIGHT = 11
Private Const WM_NCLBUTTONDOWN = ;HA1

Private Sub Form_Load()
   Text2.Left = Text1.Left + Text1.Width
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim W1 As Long, W2 As Long
   Dim nParam As Long
   W1 = Text1.Width
   With Text1
       If X > .Width - 150 And X < .Width Then
           nParam = HTRIGHT
       End If
       If nParam Then

           Text1.MousePointer = 9       '双向箭头
           Call ReleaseCapture
           Call SendMessage(.hwnd, WM_NCLBUTTONDOWN, nParam, 0)
           
           'Text2会随着Text1的变化而左右变动
           Text2.Left = Text1.Left + Text1.Width
           '确保2个text的总宽度不变
           W2 = W1 - Text1.Width
           Text2.Width = Text2.Width + W2
       End If
       End With

End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   '鼠标移到交界的地方就变成双向箭头
   If (X > 0 And X < 0) Or (X > Text1.Width - 150 And X < Text1.Width) Then
       Text1.MousePointer = 9
   Else
       Text1.MousePointer = 0
   End If

End Sub

这里没有用AE的东西,纯粹就是VB的代码,控件是一个form上并排放了两个text,不过因为我不会在回帖中贴图,界面就没办法上传了,还希望谁能教我一下

举报 回复(0) 喜欢(0)     评分
默认头像
卧底
卧底
  • 注册日期2004-04-18
  • 发帖数235
  • QQ
  • 铜币614枚
  • 威望2点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2006-03-29 12:41

一般可以在中间放一个Label来做

个人专栏: https://zhuanlan.zhihu.com/c_165676639
举报 回复(0) 喜欢(0)     评分
默认头像
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
6楼#
发布于:2006-03-28 12:19
使用控件,或者自己编写程序实现
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部