如何画一个方框并取得方框内所有的控件?

fishmans 2002-11-04 07:59:15
就像浏览器中拖动选取多个文件夹一样的效果!
...全文
58 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fishmans 2002-11-12
  • 打赏
  • 举报
回复
为什么不能给分啊??
fishmans 2002-11-12
  • 打赏
  • 举报
回复
谢谢,这个问题我已经解决了~~~
junwhj 2002-11-10
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type POINTAPI
X As Long
Y As Long
End Type

Private pt As POINTAPI
Private rc As RECT
Private blnMouseDown As Boolean

Private Sub Form_Load()
Me.ScaleMode = 3
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
pt.X = X
pt.Y = Y
blnMouseDown = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If blnMouseDown Then
DrawFocusRect Me.hdc, rc
rc.Left = IIf(pt.X < X, pt.X, X)
rc.Top = IIf(pt.Y < Y, pt.Y, Y)
rc.Right = IIf(pt.X > X, pt.X, X)
rc.Bottom = IIf(pt.Y > Y, pt.Y, Y)
DrawFocusRect Me.hdc, rc
Me.Refresh
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ctrl As Control

On Error Resume Next '有些控件不支持Left,Top属性(如Line)

For Each ctrl In Me.Controls
If ctrl.Left + ctrl.Width < rc.Left Or _
ctrl.Left > rc.Right Or _
ctrl.Top + ctrl.Height < rc.Top Or _
ctrl.Top > rc.Bottom Then
Else
Debug.Print ctrl.Name
End If
Next

blnMouseDown = False
End Sub

junwhj 2002-11-10
  • 打赏
  • 举报
回复
Option Explicit

Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long

Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type POINTAPI
X As Long
Y As Long
End Type

Private pt As POINTAPI
Private rc As RECT
Private blnMouseDown As Boolean

Private Sub Form_Load()
Me.ScaleMode = 3
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
pt.X = X
pt.Y = Y
blnMouseDown = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If blnMouseDown Then
DrawFocusRect Me.hdc, rc
rc.Left = IIf(pt.X < X, pt.X, X)
rc.Top = IIf(pt.Y < Y, pt.Y, Y)
rc.Right = IIf(pt.X > X, pt.X, X)
rc.Bottom = IIf(pt.Y > Y, pt.Y, Y)
DrawFocusRect Me.hdc, rc
Me.Refresh
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
blnMouseDown = False
End Sub

fishmans 2002-11-10
  • 打赏
  • 举报
回复
难道要遍历所有的在这个范围的控件??会不会太慢了点?还有就是我问的重点是如何实现画框的效果!!!
maxiuhui 2002-11-04
  • 打赏
  • 举报
回复
判断方框四角和控件坐标
《人事信息管理系统》简 介   《人事信息管理》是一个协助各单位科学、全面、高效地进行人事管理的系统,它参考了哈佛人力资源管理理论,根植于国内人事管理的实际情况,实用而科学。   在内容上,它包括了人事变动(新进员工登记、员工离职登记和人事变更管理)、考勤(考勤、加班、出差管理等)、员工培训(培训管理和学历记录)、考核与奖惩、人事档案完整资料(基本资料、人事合同、生理状况、户籍、政治情况、投保管理、担保情况等)等内容。   在操作上,它集输入、维护、查询、筛选、统计和各种处理为一体,信息导入导出方便共享,灵活、专业的报表设计,形象、增强的数据处理,完美的信息图形分析,用户可自定义自开发这些功能! 可以概述为如下特点:功能强大,易学易会,信息共享,随心设计,SQL语句处理信息,无代码开发。 一、《人事管理》能够做什么 1、 科学管理员工档案,优化分类,全面反映员工情况 2、 管理人事变动信息,优化人员配置 3、 管理考勤信息,保证工作秩序 4、 纪律员工培训信息,保证员工量才使用 5、 管理员工奖惩信息,促进员工积极向上 二、《人事管理》的功能结构   信息内容(信息表)是核心,输入、处理、报表(输出)、分析是应用:系统围绕信息内容(信息表),来实现输入、处理、报表(输出)、分析等功能。 输入功能:含“设计录入格式”、“模式录入”、“表格界面”等三大界面。可利用“设计录入格式”界面根据自己的喜好设计录入界面;可任意选择“模式录入”和“表格界面”两大输入界面进行输入工作。   输出功能:含“报表显示”、“报表修改”、“新建报表”三大界面。可利用“报表显示”界面对所需输出的报表进行模拟显示和打印;可在“报表修改”界面中对报表格式进行修改设计;可在“新建报表”界面中导入自己制作的报表图形,来自行设计报表。   处理功能:其中包括“横向筛选”、“纵向筛选”、“计算操作”、“信息增强处理”四种功能。可在“横向筛选”和“纵向筛选”中进行信息筛选,在“计算操作”中进行字段计算处理,在“信息增强处理”中对数据进行处理。   分析功能:即图形分析,可在“信息分析”界面对所需分析的数据进行图形分析。系统具有强大的图形分析设计功能,单击“图形编辑”按钮,可在“图形编辑”窗口中设计各种精美的图形。   三、使用和增加你所需的基础管理内容 1、 对需要增加的内容从应用的角度分析,确定需要管理的基础信息。 2、 增加管理内容要从信息表开始。 3、 设置计算字段和建立运算树。 4、 设计输出报表和分析图表。 5、 根据结果与目的的对比,优化信息表设计。 四、处理信息 为了适应信息处理的各种需求,系统设计开发了“运算树”,采用SQL语句处理信息。所有的处理过程均对用户透明,同时用户也可以自己设计处理过程。 五、信息表的作用 1、 维护和存储基础信息,作为应用的原始数据。 2、 用于查询、筛选和统计。 3、 作为运算处理的中间和最终数据,用于报表和分析图形数据源。 六、制作报表 1、 报表的两种形式 报表有单记录表和多记录表两种形式。 2、 报表的分区(只适用于多记录表) 一般一张多记录表分标题区、表头区、细节区、汇总区、报表区、页头区、页脚区等七个区域。 3、 报表设计技巧 1)增加报表设计区域:单击系统工具栏上的“隐藏文档管理树”按钮,然后单击“报表设计”区工具栏上的“属性检查框”前面的小方框,使小方框中的“√”消失,即可使“报表设计”区增加到最大。 2)使所需控件到达最上层:选择所需控件,单击“报表设计”区工具栏上的“前面检查框”的小方框,使小方框内出现“√”,即可使所需控件到达最上层。 3)复制控件:选择所需复制的控件,单击“报表设计”区工具栏上的“复制当前对象”按钮,然后将鼠标移动到所选控件的边框上,按下左键并拖动所复制的控件到所需位置即可。 4)选定控件:单击“报表设计”区工具栏上的“控件选择”组合框的下拉按钮,在该框中选择所需控件名,即可选定控件。 七、设计有意义的分析图表   本系统除可以打印输出报表外,还可以打印输出图形,可单击系统工具栏上的“信息分析”按钮,出现“图形分析”界面,单击该界面工具栏上的“图形编辑”按钮,出现“图形编辑”窗口,可在该窗口中对分析图表进行编辑(在“图形编辑”窗口中可对分析图表进行微调)。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧