菜鸟的问题 如何在程序中使窗口中的某个控件,比如说textbox可以拖动也可以用鼠标改变大小呢?请说的详细一些,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第 一 种 方 法 需 要Win32 API 函 数。 所 用 到 的API 函 数 有: Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As- POINTAPI) As Long---- 获 得 鼠 标 的 屏 幕 坐 标 放 在lpPoint 中。 Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long---- 将 屏 幕 坐 标 转 化 成 客 户 区 坐 标 系 统 的 坐 标, 转 换 后 的 坐 标 仍 在lpPoint 中。 ---- 新 开 一 个 工 程, 在Form1 上 放 一 个TextBox 控 件, 命 名 为Text1。 在Form 的MouseMove 事 件 中 捕 获 鼠 标 坐 标, 如 果 鼠 标 的 位 置 与Text1 的 边 界 相 距 很 近( 比 如 说50 Twips,150 效 果 比 较 好), 根 据 需 要 将 Form1 的MousePointer 属 性 值 为vbSizeNS( 垂- 直 尺 寸 线), 或vbSizeWE( 水- 平 尺 寸 线), 或vbSizeNESW( 右 上- 左 下 尺 寸 线), 或vbSizeNWSE( 左 上- 右 下 尺 寸 线)。 用 户 一 看 就 知 道 可 以 改 变 该 控 件 的 尺 寸。 而 在 其 余 区 域 则 将Form1 的MousePointer 属 性 设 成 缺 省 值(vbDefault)。 当 用 户 按 下 鼠 标 键 并 拖 动 鼠 标 时 根 据 当 前 的MousePointer 进 行 判 断 该 如 何 改 变 控 件 的 大 小。 具 体 操 作 可 参 看 附 带 的 例 程。 ---- 第 二 中 方 法 不 需 要 调 用API 函 数, 但 需 要 额 外 的 控 件。 同 样 新 开 一 个 工 程, 在Form1 上 放 一 个TextBox 控 件, 命 名 为Text1。 然 后 紧 靠Text1 的 右 侧 放 一 个 高 度 与Text1 相 同 但 宽 度 尽 量 小 的PictureBox 控 件, 命 名 为Picture1。 宽 度 要 小 到 看 不 见 立 体 效 果。 将Picture1 的MousePointer 属 性 设 置 成9 (vbSizeWE) 。 ---- Picture1 的MouseMove 事 件 如 下: Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As Single, y-As Single)If Button< >1 Then Exit SubPicture1.Left=Picture1.Left+X‘Move Picture Text1.Width=Picture1.Left-Text1.Left注释:Change TextBox注释:s sizeEnd Sub---- 运 行 程 序, 将 鼠 标 移 到Text1 的 右 边 缘, 这 时 鼠 标 变 成 水- 平 尺 寸 线 的 样 式, 按 住 鼠 标 左 键 左 右 移 动 鼠 标, 你 会 看 到Text1 的 大 小 可 以 自 由 改 变。 ---- 以 上 只 是 举 一 些 简 单 的 例 子 说 明 定 制 控 件 尺 寸 的 基 本 方 法, 起 到 抛 砖 引 玉 的 作 用, 读 者 可 以 根 据 需 要 增 强 相 应 的 功 能, 但 要 注 意 建 立 错 误 陷 阱 捕 获 错 误。 ---- 附: ---- 第 一 种 方 法 的 源 程 序: '注释:API Function declareprivate Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint _As POINTAPI) As Longprivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongType POINTAPIx As Longy As LongEnd TypePrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, - y As Single)Dim Pnt As POINTAPIDim CurX As LongDim CurY As LongDim DistX As LongDim DistY As LongConst mDist = 150 '注释:150 twipsGetCursorPos Pnt'注释:Get mouse positionScreenToClient Me.hwnd, Pnt注释:Convert to client coordinateCurX = Pnt.x * Screen.TwipsPerPixelX'注释:Pixels to TwipsCurY = Pnt.y * Screen.TwipsPerPixelYDistX = Abs(CurX - (Text1.Left + Text1.Width))'注释:distance to text1注释:sDistY = Abs(CurY - (Text1.Top + Text1.Height))If DistX < = mDist And DistY < = mDist Then'注释:set mouse pointer'注释:according to distance Form1.MousePointer = vbSizeNWSEElseIf DistX < = mDist And DistY > mDist ThenForm1.MousePointer = vbSizeWEElseIf DistX > mDist And DistY < = mDist ThenForm1.MousePointer = vbSizeNSElseForm1.MousePointer = vbDefaultEnd IfIf Button < > 1 Then Exit Sub If Form1.MousePointer = vbSizeNWSE Then'注释:change text1注释: sizeText1.Width = CurX - Text1.LeftText1.Height = CurY - Text1.TopEnd IfIf Form1.MousePointer = vbSizeWE ThenText1.Width = CurX - Text1.LeftEnd IfIf Form1.MousePointer = vbSizeNS ThenText1.Height = CurY - Text1.TopEnd IfEnd SubPrivate Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As -Single, y As Single)Form1.MousePointer = vbDefault'注释:set default mouse pointerEnd Sub 点击sheet1某单元格自动跳转至sheet2相应数值所在行 得到客户端Ip地址是哪个Api或者用什么方法可以得到 求教 谢谢 诸位大哥,帮帮我吧,领导的手机问题,与编程无关 高分悬赏,软件集成问题 不知如何在VB中删除一个dbf数据库表中所有数据?在线!!!!! ADO的问题,急死了!!谢谢大家! 怎样把数据从一个库中转移到另一个库中呢?有没有好的方法? VB开发一个简单的表格 为什么从access 2000 中调不出数据 快进来看看啊 送分的来了!!!!!!!!!! 窗口的问题! 高分寻进销存系统得需求分析!!!!救名
Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long---- 将 屏 幕 坐 标 转 化 成 客 户 区 坐 标 系 统 的 坐 标, 转 换 后 的 坐 标 仍 在lpPoint 中。
---- 新 开 一 个 工 程, 在Form1 上 放 一 个TextBox 控 件, 命 名 为Text1。 在Form 的MouseMove 事 件 中 捕 获 鼠 标 坐 标, 如 果 鼠 标 的 位 置 与Text1 的 边 界 相 距 很 近( 比 如 说50 Twips,150 效 果 比 较 好), 根 据 需 要 将 Form1 的MousePointer 属 性 值 为vbSizeNS( 垂- 直 尺 寸 线), 或vbSizeWE( 水- 平 尺 寸 线), 或vbSizeNESW( 右 上- 左 下 尺 寸 线), 或vbSizeNWSE( 左 上- 右 下 尺 寸 线)。 用 户 一 看 就 知 道 可 以 改 变 该 控 件 的 尺 寸。 而 在 其 余 区 域 则 将Form1 的MousePointer 属 性 设 成 缺 省 值(vbDefault)。 当 用 户 按 下 鼠 标 键 并 拖 动 鼠 标 时 根 据 当 前 的MousePointer 进 行 判 断 该 如 何 改 变 控 件 的 大 小。 具 体 操 作 可 参 看 附 带 的 例 程。 ---- 第 二 中 方 法 不 需 要 调 用API 函 数, 但 需 要 额 外 的 控 件。 同 样 新 开 一 个 工 程, 在Form1 上 放 一 个TextBox 控 件, 命 名 为Text1。 然 后 紧 靠Text1 的 右 侧 放 一 个 高 度 与Text1 相 同 但 宽 度 尽 量 小 的PictureBox 控 件, 命 名 为Picture1。 宽 度 要 小 到 看 不 见 立 体 效 果。 将Picture1 的MousePointer 属 性 设 置 成9 (vbSizeWE) 。 ---- Picture1 的MouseMove 事 件 如 下: Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As Single, y-As Single)
If Button< >1 Then Exit Sub
Picture1.Left=Picture1.Left+X
‘Move Picture
Text1.Width=Picture1.Left-Text1.Left
注释:Change TextBox注释:s size
End Sub---- 运 行 程 序, 将 鼠 标 移 到Text1 的 右 边 缘, 这 时 鼠 标 变 成 水- 平 尺 寸 线 的 样 式, 按 住 鼠 标 左 键 左 右 移 动 鼠 标, 你 会 看 到Text1 的 大 小 可 以 自 由 改 变。
---- 以 上 只 是 举 一 些 简 单 的 例 子 说 明 定 制 控 件 尺 寸 的 基 本 方 法, 起 到 抛 砖 引 玉 的 作 用, 读 者 可 以 根 据 需 要 增 强 相 应 的 功 能, 但 要 注 意 建 立 错 误 陷 阱 捕 获 错 误。 ---- 附: ---- 第 一 种 方 法 的 源 程 序: '注释:API Function declareprivate Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint _As POINTAPI) As Long
private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongType POINTAPI
x As Long
y As Long
End TypePrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, - y As Single)
Dim Pnt As POINTAPI
Dim CurX As Long
Dim CurY As Long
Dim DistX As Long
Dim DistY As LongConst mDist = 150 '注释:150 twipsGetCursorPos Pnt
'注释:Get mouse position
ScreenToClient Me.hwnd, Pnt
注释:Convert to client coordinate
CurX = Pnt.x * Screen.TwipsPerPixelX
'注释:Pixels to Twips
CurY = Pnt.y * Screen.TwipsPerPixelY
DistX = Abs(CurX - (Text1.Left + Text1.Width))
'注释:distance to text1注释:s
DistY = Abs(CurY - (Text1.Top + Text1.Height))If DistX < = mDist And DistY < = mDist Then
'注释:set mouse pointer
'注释:according to distance
Form1.MousePointer = vbSizeNWSE
ElseIf DistX < = mDist And DistY > mDist Then
Form1.MousePointer = vbSizeWE
ElseIf DistX > mDist And DistY < = mDist Then
Form1.MousePointer = vbSizeNS
Else
Form1.MousePointer = vbDefault
End IfIf Button < > 1 Then Exit Sub
If Form1.MousePointer = vbSizeNWSE Then
'注释:change text1注释: size
Text1.Width = CurX - Text1.Left
Text1.Height = CurY - Text1.Top
End If
If Form1.MousePointer = vbSizeWE Then
Text1.Width = CurX - Text1.Left
End If
If Form1.MousePointer = vbSizeNS Then
Text1.Height = CurY - Text1.Top
End If
End SubPrivate Sub Text1_MouseMove(Button As Integer, Shift As Integer, x As -Single, y As Single)
Form1.MousePointer = vbDefault
'注释:set default mouse pointer
End Sub