Form 类
Form 是一个顶级 Win32 窗口,承载单个 twinBASIC 用户界面的控件、菜单和绘图表面。在 IDE 中设计的每个窗体都成为派生自Form的自身类——其控件成为该类的成员,其事件处理程序成为其上的方法,文件名成为类名。窗体外的代码通常通过全局默认实例引用(MyForm.Show)隐式实例化它,或使用New MyForm显式实例化。默认属性为Controls,默认事件为Load。
' 在 Form1 的代码隐藏中:
Private Sub Form_Load()
Caption = "Welcome"
Me.MinWidth = 4000 ' 缇,≈ 2 英寸
Me.MinHeight = 3000
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If MsgBox("Quit?", vbYesNo) = vbNo Then Cancel = 1
End Sub
' 在启动模块中:
Sub Main()
Form1.Show vbModal
End Sub生命周期
窗体从创建到销毁经历六个不同事件:
| 事件 | 时机 |
|---|---|
| Initialize | 底层窗口存在之前。窗体的控件尚未创建。 |
| Load | 窗口和所有控件创建之后,窗体首次显示之前。 |
| Activate | 窗体成为应用程序中的活动窗口时。 |
| Deactivate | 另一个窗体(或另一个应用程序的窗口)夺取激活时。 |
| QueryUnload | 卸载之前。将Cancel设置为非零可保持窗体打开。 |
| Unload | QueryUnload通过之后。将Cancel设置为非零可保持窗体打开。 |
| Terminate | 窗口销毁且类实例释放之后。 |
关闭窗体经过QueryUnload和Unload两者,因此任一都可以否决。QueryUnload的UnloadMode参数(QueryUnloadConstants)报告用户是点击了关闭按钮、代码调用了Unload、Windows 正在关机、MDI 父窗体正在关闭等。
显示窗体
Show使窗体可见。它接受一个可选的FormShowConstants参数:vbModeless(默认——调用立即返回,用户可与其他窗体交互)或vbModal(调用阻塞直到窗体关闭,应用程序中的其他窗体变得不可响应)。MDI 子窗体不能以模态方式显示;尝试这样做会引发运行时错误 404。
dlgOptions.Show vbModal, Me ' 模态,由调用窗体拥有Hide和Close反转效果:Hide仅清除Visible;Close运行完整的卸载序列(QueryUnload然后Unload然后Terminate)。经典的Unload <FormName>语句在语言层面等同于Close。
StartUpPosition(StartUpPositionConstants)在首次Show时读取以决定窗体放置位置;之后由用户(或代码通过Move和WindowState)控制位置。
窗口外观
BorderStyle(FormBorderStyleConstants)在可调整大小、固定、对话框、工具和无边框框架之间选择。Caption是标题栏文本。ControlBox、MaxButton和MinButton切换系统菜单和调整大小按钮。Icon提供系统菜单、任务栏和 Alt-Tab 使用的小/大图标。WindowState(FormWindowStateConstants)在运行时读取或设置正常/最小化/最大化状态。
MinWidth、MinHeight、MaxWidth和MaxHeight在交互式调整大小期间以缇为单位约束客户区。Moveable决定用户是否可以通过标题栏拖动窗体;ShowInTaskbar决定窗体是否出现在任务栏和 Alt-Tab 列表中。
Opacity和TransparencyKey启用 Windows 的分层窗口功能,实现半透明窗体和镂空形状。
绘图表面
Form 本身是一个图形表面——代码可以直接在其上绘制线条、形状和文本。坐标系由ScaleMode(默认vbTwips——经典 VB6 行为)和ScaleLeft / ScaleTop / ScaleWidth / ScaleHeight属性控制,它们共同描述窗体的逻辑绘图矩形。将ScaleMode设置为vbUser允许四个**Scale***属性定义任意矩形;Scale方法在单次调用中完成此操作。
绘图原语为Cls、Circle、Line、PSet、PaintPicture和Print语句(Form1.Print "Hello")——均使用ForeColor、FillColor、FillStyle、DrawWidth、DrawMode和DrawStyle作为画笔和填充,并使用窗体的Font绘制文本。当前画笔位置由CurrentX和CurrentY跟踪;TextWidth和TextHeight以当前字体测量字符串。ScaleX和ScaleY在比例模式之间转换单个坐标。
AutoRedraw控制绘图输出是否在重绘时持久保留:当False(默认)时,Paint事件必须在每次失效时重绘;当True时,窗体保持一个在失效时存活的离屏缓冲区,Paint事件被抑制。设置Picture在绘图层后面放置位图;Image以StdPicture形式返回渲染的组合表面。
Private Sub Form_Paint()
Me.ScaleMode = vbPixels
Me.ForeColor = vbBlue
Me.DrawWidth = 3
Me.Line (10, 10)-(120, 80), , B ' 矩形
Me.CurrentX = 16 : Me.CurrentY = 16
Me.Print "Hello, twinBASIC"
End Sub控件和验证
Controls是窗体上每个控件的集合,可按名称或零基位置索引。Form 也可直接枚举——For Each ctrl In Form1产生与For Each ctrl In Form1.Controls相同的项。Count是Controls.Count的简写。ActiveControl返回当前获得焦点的子控件,或当此窗体上没有控件获得焦点时返回Nothing。
KeyPreview将击键路由到窗体的KeyDown、KeyUp和KeyPress事件,在焦点控件看到它们之前——适用于应用程序级热键处理。ValidateControls从代码显式触发活动控件的Validate事件;如果验证处理程序设置Cancel,则引发运行时错误 380。
菜单和弹出菜单
在窗体设计时设计的菜单结构自动出现在窗体的标题栏中。PopUpMenu将其中一个菜单作为上下文菜单弹出显示在指定位置,当用户选择项目时触发菜单的Click事件。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then PopUpMenu mnuContext
End Sub属性
ActiveControl
此窗体上当前获得输入焦点的控件,为Control对象,或当此窗体上没有控件获得焦点时为Nothing。只读。
AlwaysShowKeyboardCues
当True时,窗体始终显示Caption和菜单项中访问键字符的下划线,而不是仅在用户按Alt后显示。Boolean,运行时只读。在设计时设置。
Appearance
决定操作系统如何绘制控件边框。AppearanceConstants的成员:vbAppearFlat或vbAppear3d(默认)。
INFO
保留用于 VB6 兼容性;该属性在窗体上没有可观察效果。
AutoRedraw
在窗体上执行的绘图是否在失效时持久保留。Boolean,默认False。
当False时,绘图原语——Cls、Circle、Line、PSet、PaintPicture和Print——直接绘制到屏幕,窗体必须在Paint事件中在受影响区域失效时重绘它们。当True时,窗体保持一个离屏位图,绘图原语绘制到其中(并立即到屏幕),位图在失效时存活,Paint事件被抑制。读取Image返回此位图。
BackColor
窗体客户区的背景色,为OLE_COLOR。默认为系统 3D 面颜色。用作Cls的填充色和Picture后面的画布。
BorderStyle
窗口框架样式。FormBorderStyleConstants的成员:vbBSNone、vbFixedSingle、vbSizable(默认)、vbFixedDialog、vbFixedToolWindow、vbSizableToolWindow、vbSizableNoTitleBar(twinBASIC 新增)或vbSizableToolWindowNoTitleBar(twinBASIC 新增)。运行时更改被接受,但仅在窗口发生另一次更改后生效——通常是重新赋值Caption。
Caption
标题栏文本。String。
语法:object.Caption [ = string ]
设置Caption会立即更新标题栏并重新同步标题栏样式标志(因此它可以恢复因前一个Caption为空而隐藏的标题栏)。
ClipControls
在绘制期间子控件是否从窗体的绘图区域中裁剪出去。Boolean,默认True。运行时只读——在设计时设置。
ControlBox
窗体标题栏是否显示系统菜单(以及关闭按钮)。Boolean,默认True。在运行时设置会重新同步标题栏样式标志。
Controls
此窗体承载的每个控件的集合,可按控件名称或零基位置索引。**默认属性。**只读——控件由运行时添加到集合中,而非用户代码。
Dim ctrl As Control
For Each ctrl In Me.Controls
ctrl.Enabled = False
NextCount
Controls中的控件数量,为Long。只读。等效于Me.Controls.Count。
ControlType
标识此控件为窗体的只读ControlTypeConstants值。始终为vbForm。
CurrentX
水平画笔位置,以ScaleMode单位表示,由省略起始坐标的绘图原语使用(例如Print和Line的矩形形式)。Double。
CurrentY
垂直画笔位置,以ScaleMode单位表示,由省略起始坐标的绘图原语使用。Double。
DpiScaleFactorX
窗体当前所在显示器的水平 DPI 缩放因子,为Double。96 DPI 时为1.0,120 DPI 时为1.25,144 DPI 时为1.5,以此类推。只读。
DpiScaleFactorY
窗体当前所在显示器的垂直 DPI 缩放因子。当前始终等于DpiScaleFactorX。只读。
DrawMode
绘图原语在将画笔与目标组合时应用的光栅操作。DrawModeConstants的成员:vbCopyPen(默认)是正常不透明绘制;其他值产生 XOR、AND、NOT 和其他像素混合效果。
DrawStyle
绘图原语使用的画笔线型。DrawStyleConstants的成员:vbSolid(默认)、vbDash、vbDot、vbDashDot、vbDashDotDot、vbInvisible或vbInsideSolid。
DrawWidth
绘图原语的画笔宽度,以像素为单位。Long,默认1。宽度大于 1 会强制DrawStyle回到vbSolid(Win32 GDI 限制)。
Enabled
决定窗体是否接受用户输入。禁用的窗体忽略键盘和鼠标输入并使其控件变暗。Boolean,默认True。
FillColor
由Circle和Line矩形形式绘制的封闭形状的填充色。OLE_COLOR,默认0(黑色)。仅在FillStyle不为vbFSTransparent时使用。
FillStyle
封闭形状的填充图案。FillStyleConstants的成员:vbFSSolid、vbFSTransparent(默认)、vbHorizontalLine、vbVerticalLine、vbUpwardDiagonal、vbDownwardDiagonal、vbCross或vbDiagonalCross。
Font
本窗体上Print语句和其他文本绘制使用的StdFont。便利属性FontName、FontSize、FontBold、FontItalic、FontStrikethru和FontUnderline读取或写入此对象的相应成员。
FontTransparent
当True(默认)时,在窗体上绘制的文本具有透明背景,底层绘图在文本后面可见。当False时,文本绘制在以BackColor填充的不透明矩形上。Boolean。
ForeColor
由Circle、Line、PSet使用的画笔颜色和Print绘制的文本颜色。OLE_COLOR。
hDC
窗体的 Win32 设备上下文句柄,为LongPtr。只读。当底层窗口尚未创建时返回0。适用于传递给 GDI API 调用。
HasDC
窗体是否为其绘图表面保持专用设备上下文(CS_OWNDC)。Boolean,默认True。运行时只读——在设计时设置。
Height
窗体的外部高度,默认以缇为单位(或容器ScaleMode单位)。Double。设置它会调整窗口大小。运行时受MinHeight和MaxHeight约束(非零时)。
HelpContextID
标识应用程序帮助文件中主题的Long,当用户在窗体获得焦点时按F1时检索。
hWnd
窗体的 Win32 窗口句柄,为LongPtr。只读。适用于传递给 API 函数。
Icon
标题栏、任务栏和 Alt-Tab 中显示的图标。vbPicTypeIcon类型的StdPicture。赋值非图标图片会将图标清除为默认 Windows 应用程序图标。
Image
以StdPicture形式返回渲染的绘图表面。只读。当AutoRedraw为True时最有用——返回的图片是持久的离屏缓冲区。
KeyPreview
当True时,窗体的KeyDown、KeyUp和KeyPress事件在焦点控件接收相同击键之前触发。Boolean,默认False。适用于应用程序级热键;事件之后仍在焦点控件上触发。
Left
窗体外部矩形的水平位置,以缇为单位(或调用代码的ScaleMode单位),从屏幕左边缘测量——或对于 MDI 子窗体,从 MDI 父窗体客户区的左边缘测量。Double。
LinkMode
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前未实现。
LinkTopic
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前未实现。
MaxButton
标题栏是否显示最大化按钮。Boolean,默认True,运行时只读。在设计时设置。
MaxHeight
窗体客户区的最大高度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时生效。
MaxWidth
窗体客户区的最大宽度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时生效。
MDIChild
当True时,窗体作为子窗体承载在MDIForm中。Boolean,只读——在设计时设置。MDI 子窗体不能以模态方式显示。
MinButton
标题栏是否显示最小化按钮。Boolean,默认True,运行时只读。在设计时设置。
MinHeight
窗体客户区的最小高度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时生效。
MinWidth
窗体客户区的最小宽度,以缇为单位。Double,默认0(无限制)。在交互式调整大小时生效。
MouseIcon
当MousePointer为vbCustom且指针位于窗体上方(且不在有自身设置的子控件上)时用作鼠标光标的StdPicture。
MousePointer
当指针位于窗体上方(且不在有自身设置的子控件上)时显示的鼠标光标。MousePointerConstants的成员。
Moveable
用户是否可以通过标题栏拖动窗体。Boolean,默认True。
Name
窗体的唯一设计时名称。运行时只读。也是生成的窗体类的类名。
NegotiateMenus
INFO
保留用于 VB6 ActiveX 文档菜单协商功能兼容性;twinBASIC 中当前未实现。
OLEDropMode
窗体如何响应 OLE 放置。OLEDropConstants的受限成员:vbOLEDropNone或vbOLEDropManual。Form 不支持自动放置模式。
Opacity
窗体的不透明度百分比(0--100,默认 100)。超出范围的值在Initialize时被钳制。低于 100 的值会使窗体成为分层窗口。
Palette
INFO
保留用于 VB6 256 色调色板功能兼容性;twinBASIC 中当前未实现。
PaletteMode
INFO
保留用于 VB6 256 色调色板功能兼容性;twinBASIC 中当前未实现。
Picture
作为窗体背景绘制的StdPicture。在任何绘图原语或子控件之前绘制。赋值Nothing移除背景。
PictureDpiScaling
当True时,Picture在绘制前按当前 DPI 因子缩放。Boolean,默认False。
RightToLeft
INFO
保留用于 VB6 兼容性;twinBASIC 中当前未实现。
ScaleHeight
逻辑绘图矩形的高度,以ScaleMode单位表示。Double。设置它(或ScaleWidth、ScaleLeft或ScaleTop)会隐式将ScaleMode切换为vbUser。
ScaleLeft
窗体客户区左边缘的逻辑水平坐标,以ScaleMode单位表示。Double。默认0。
ScaleMode
由CurrentX、CurrentY、绘图原语、TextWidth和TextHeight使用的度量单位。ScaleModeConstants的成员:vbTwips(默认)、vbPoints、vbPixels、vbCharacters、vbInches、vbMillimeters、vbCentimeters或vbUser(四个**Scale***属性定义矩形)。
ScaleTop
窗体客户区顶边缘的逻辑垂直坐标,以ScaleMode单位表示。Double。默认0。
ScaleWidth
逻辑绘图矩形的宽度,以ScaleMode单位表示。Double。设置它会隐式将ScaleMode切换为vbUser。
ShowInTaskbar
窗体是否出现在 Windows 任务栏和 Alt-Tab 列表中。Boolean,默认True。运行时只读——在设计时设置。
StartUpPosition
窗体首次显示时如何确定初始位置。StartUpPositionConstants的成员:vbStartUpManual、vbStartUpOwner、vbStartUpScreen或vbStartUpWindowsDefault(默认)。运行时只读——在设计时设置。
TabFocusAutoSelect
当True时,此窗体上自身TabFocusAutoSelect也为True的TextBox在通过TAB键进入焦点时自动选中其内容。Boolean,默认False。
Tag
应用程序可用于将自定义数据与窗体关联的自由格式String。框架不使用此属性。
Top
窗体外部矩形的垂直位置,以缇为单位(或调用代码的ScaleMode单位),从屏幕顶边缘测量——或对于 MDI 子窗体,从 MDI 父窗体客户区的顶边缘测量。Double。
TopMost
窗体是否位于置顶层 z 顺序层。Boolean,运行时只读。在设计时设置。
TransparencyKey
一个OLE_COLOR,设置后在渲染的窗体中变为完全透明——点击穿透到下方内容,相应像素不绘制。默认-1禁用效果。
Visible
窗体是否可见。Boolean,默认True。在窗体隐藏时将Visible设置为True等效于调用Show vbModeless;设置为False等效于调用Hide。
WhatsThisButton
当True时,标题栏显示"?"帮助按钮——但仅当MinButton为False、MaxButton为False、ControlBox为True且BorderStyle不是工具窗口样式时。Boolean。
WhatsThisHelp
当True时,WhatsThisMode和标题栏帮助按钮进入 Windows 的"这是什么?"光标模式。Boolean,默认False。
Width
窗体的外部宽度,默认以缇为单位(或容器ScaleMode单位)。Double。设置它会调整窗口大小。运行时受MinWidth和MaxWidth约束(非零时)。
WindowState
窗口的正常/最小化/最大化状态。FormWindowStateConstants的成员:vbNormal(0,默认)、vbMinimized(1)或vbMaximized(2)。在运行时设置会立即更新窗口位置(如果窗体可见)。
方法
Circle
使用ForeColor绘制轮廓,使用FillColor/FillStyle填充内部,在窗体上绘制圆、椭圆或弧。
语法:object.Circle [ Step ] ( X, Y ), Radius [, [ Color ] [, [ Start ] [, [ End ] [, Aspect ] ] ] ]
- X, Y
- 必需 圆心,以ScaleMode单位表示。Step使圆心相对于(CurrentX,CurrentY)。
- Radius
- 必需 以ScaleMode单位给出半径的Single。
- Color
- 可选 轮廓的OLE_COLOR;默认为ForeColor。
- Start、End
- 可选 以弧度为单位的角,用于绘制弧而非完整圆。
- Aspect
- 可选 垂直与水平半径的比率。
1.0为圆形;偏离1.0的值产生椭圆。
Cls
清除由Circle、Line、PSet、PaintPicture和Print执行的任何绘图,以BackColor重绘,并将CurrentX / CurrentY重置为0。不影响Picture背景或子控件。
语法:object.Cls
Close
启动窗体的卸载序列——QueryUnload,然后Unload,然后Terminate。前两个事件中的任一都可以通过将Cancel设置为非零来取消关闭。等效于语言语句Unload Me。
语法:object.Close
Hide
隐藏窗体而不卸载它。类实例及其控件被保留;调用Show(或赋值Visible = True)可再次显示。等效于赋值Visible = False。
语法:object.Hide
Line
使用ForeColor(或显式颜色)和DrawWidth/DrawStyle在窗体上绘制直线或矩形。
语法:object.Line [ [ Step ] ( X1, Y1 ) ] -[ Step ] ( X2, Y2 ) [, [ Color ] [, B [ F ] ] ]
- X1, Y1
- 可选 起点,以ScaleMode单位表示。Step使点相对于(CurrentX,CurrentY)。省略时,从当前画笔位置开始绘制。
- X2, Y2
- 必需 终点,以ScaleMode单位表示。Step使点相对于(X1,Y1)。
- Color
- 可选 线条的OLE_COLOR;默认为ForeColor。
- B
- 可选 绘制以(X1,Y1)和(X2,Y2)为对角的矩形而非线条。
- F
- 可选 与B组合时,使用ForeColor而非FillColor/FillStyle填充矩形。
Move
在单次调用中重新定位并可选地调整窗体大小。
语法:object.Move Left [, Top [, Width [, Height ] ] ]
- Left
- 必需 给出新水平位置的Single。
- Top、Width、Height
- 可选 对应属性的新值。省略的值保持不变。
OLEDrag
从窗体启动 OLE 拖动操作,触发OLEStartDrag事件以便应用程序填充DataObject。
语法:object.OLEDrag
PaintPicture
将StdPicture绘制到窗体上,支持可选缩放和光栅操作。
语法:object.PaintPicture Picture, X1, Y1 [, Width1 [, Height1 [, X2 [, Y2 [, Width2 [, Height2 [, Opcode [, StretchQuality ] ] ] ] ] ] ] ]
- Picture
- 必需 要绘制的StdPicture。
- X1, Y1
- 必需 目标左上角,以ScaleMode单位表示。
- Width1, Height1
- 可选 目标尺寸;默认为图片的自然尺寸。
- X2, Y2, Width2, Height2
- 可选 图片内的源矩形;默认为整个图片。
- Opcode
- 可选 光栅操作代码(RasterOpConstants的成员)。默认为vbSrcCopy。
- StretchQuality
- 可选 缩放时的插值方法。默认为正常质量。
PopUpMenu
将Menu作为上下文菜单弹出显示在指定位置。
语法:object.PopUpMenu Menu [, Flags [, X [, Y [, DefaultMenu ] ] ] ]
- Menu
- 必需 要显示的Menu控件。菜单必须已存在于窗体上(或其 MDI 父窗体上)。
- Flags
- 可选 MenuControlConstants的组合,控制对齐方式和哪些鼠标按钮触发菜单项。
- X, Y
- 可选 锚定菜单的屏幕相对位置,以ScaleMode单位表示。默认为当前鼠标位置。
- DefaultMenu
- 可选 以粗体渲染为默认操作的Menu子项。
Point
INFO
保留用于 VB6 兼容性;twinBASIC 中当前未实现。在 VB6 中此方法返回绘图表面单个像素的OLE_COLOR。
语法:object.Point( X, Y )
Print
使用Font将文本写入窗体的绘图表面,从CurrentX / CurrentY开始并随着输出推进。通过 VB6 Print语句分派,因此多个表达式可以用;(无间距)或,(跳到下一个打印区)分隔。**Spc(n)**插入n个空格,Tab(n)移到打印列n。输出遵循Font、ForeColor和FontTransparent,当AutoRedraw为True时,记录到持久离屏位图中以在失效时存活。
语法:object.Print [ expressionlist ] [ ; | , ]
末尾的;或,抑制换行,使下一个Print调用继续在同一行;没有末尾分隔符时,画笔推进到下一行的开头。
Me.CurrentX = 10 : Me.CurrentY = 10
Me.Print "Name: "; sName, "Age: "; nAge ' 两个字段,制表符分隔
Me.Print ' 空行
Me.Print "Total: " & Format$(Total, "0.00")PrintForm
通过Printer对象将窗体当前视觉状态的屏幕截图发送到默认打印机。
语法:object.PrintForm [ ImplicitEndDoc [, OutputAtCurrentPosition ] ]
- ImplicitEndDoc
- 可选 当True(默认)时,打印作业在返回前完成;当False时,窗体作为页面发送但打印作业保持打开以供进一步输出。
- OutputAtCurrentPosition
- 可选 当True时,窗体在打印机当前画笔位置渲染而非页面原点。Boolean,默认False。
PSet
将窗体上的单个像素设置为指定颜色。
语法:object.PSet [ Step ] ( X, Y ) [, Color ]
Refresh
强制窗体立即重绘,当AutoRedraw为False时触发Paint。
语法:object.Refresh
Scale
通过分配ScaleLeft、ScaleTop、ScaleWidth和ScaleHeight在单次调用中设置窗体的逻辑绘图矩形。将ScaleMode切换为vbUser。不带参数调用Scale将矩形重置为与客户区以像素 1:1 映射。
语法:object.Scale [ ( X1, Y1 )-( X2, Y2 ) ]
- X1, Y1
- 可选 左上角的逻辑坐标。
- X2, Y2
- 可选 右下角的逻辑坐标。
ScaleX
将水平长度从一个ScaleMode转换为另一个。
语法:object.ScaleX( Width [, FromScale [, ToScale ] ] )
- Width
- 必需 给出源长度的Single。
- FromScale、ToScale
- 可选 ScaleModeConstants的成员。省略时默认为当前ScaleMode。
ScaleY
将垂直长度从一个ScaleMode转换为另一个。
语法:object.ScaleY( Height [, FromScale [, ToScale ] ] )
- Height
- 必需 给出源长度的Single。
- FromScale、ToScale
- 可选 ScaleModeConstants的成员。省略时默认为当前ScaleMode。
SetFocus
激活窗体并将输入焦点赋予TabIndex为0的控件(或此窗体上最后持有焦点的控件)。
语法:object.SetFocus
Show
使窗体可见。在首次调用时触发Load。
语法:object.Show [ Modal [, OwnerForm ] ]
- Modal
- 可选 FormShowConstants的成员:vbModeless(0,默认——调用立即返回)或vbModal(1——调用阻塞直到窗体关闭且用户无法与其他窗体交互)。
- OwnerForm
- 可选 对于模态显示,在此窗体打开期间被禁用的窗体;默认为当前活动窗体。
TextHeight
返回给定字符串使用窗体当前Font绘制时将占用的宽度,以ScaleMode单位表示。
语法:object.TextHeight( Str )
- Str
- 必需 要测量的String。
TextWidth
返回给定字符串使用窗体当前Font绘制时将占用的宽度,以ScaleMode单位表示。
语法:object.TextWidth( Str )
- Str
- 必需 要测量的String。
ValidateControls
触发此窗体上当前活动控件的Validate事件。如果处理程序将Cancel设置为True,ValidateControls引发运行时错误 380(Invalid property value);调用者可以用On Error包裹以检测失败的验证。适用于在保存或关闭之前检查待处理的输入。
语法:object.ValidateControls
WhatsThisMode
进入 Windows 的"这是什么?"光标模式——下次点击控件会触发该控件的帮助而非激活它。WhatsThisHelp必须为True。
语法:object.WhatsThisMode
ZOrder
将窗体置于顶级 z 顺序的前面或后面。
语法:object.ZOrder [ Position ]
- Position
- 可选 ZOrderConstants的成员:vbBringToFront(0,默认)或vbSendToBack(1)。
事件
Activate
当窗体成为应用程序中的活动窗口时触发——无论是Load后首次显示,还是从另一个窗口重新获得激活时。
语法:object_Activate( )
Click
当用户单击窗体客户区(即不在任何子控件上)时触发。
语法:object_Click( )
DblClick
当用户双击窗体客户区时触发。
语法:object_DblClick( )
Deactivate
当应用程序中的另一个窗口从此窗体夺取激活时触发。当激活移到不同应用程序的窗口时不触发。
语法:object_Deactivate( )
DPIChange
当窗体移动到具有不同 DPI 缩放的显示器时触发,但仅当应用程序是每显示器 DPI 感知的(PROCESS_PER_MONITOR_DPI_AWARE)。事件的NewDPI参数给出新的有效 DPI;子控件自动重新缩放。twinBASIC 新增。
语法:object_DPIChange( NewDPI As Long )
DragDrop
当手动拖动操作在目标控件上结束时在该控件上触发。
语法:object_DragDrop( Source As Control, X As Single, Y As Single )
DragOver
当手动拖动操作进行中时在光标下方的控件上触发。
语法:object_DragOver( Source As Control, X As Single, Y As Single, State As Integer )
GotFocus
当窗体获得输入焦点且没有启用的子控件可以代替它获得焦点时触发。没有可聚焦子控件的窗体直接获得焦点。
语法:object_GotFocus( )
Initialize
触发一次,在底层窗口创建之前和窗体的任何子控件存在之前。适用于设置窗体级字段的初始值。不能从此事件引用窗体的控件。
语法:object_Initialize( )
KeyDown
当用户按下任何键时触发。默认在焦点控件上触发;当KeyPreview为True时,先在窗体上触发。
语法:object_KeyDown( KeyCode As Integer, Shift As Integer )
KeyPress
当用户键入产生 ANSI 击键的字符时触发。默认在焦点控件上触发;当KeyPreview为True时,先在窗体上触发。
语法:object_KeyPress( KeyAscii As Integer )
KeyUp
当用户释放键时触发。默认在焦点控件上触发;当KeyPreview为True时,先在窗体上触发。
语法:object_KeyUp( KeyCode As Integer, Shift As Integer )
LinkClose
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前不触发。
LinkError
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前不触发。
LinkExecute
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前不触发。
LinkOpen
INFO
保留用于 VB6 DDE 功能兼容性;twinBASIC 中当前不触发。
Load
在窗体的窗口和所有控件创建之后,窗体首次显示在屏幕之前触发。经典的初始化位置——填充控件、附加数据源以及执行需要控件存在的任何初始化。默认事件。
语法:object_Load( )
LostFocus
当窗体失去输入焦点时触发。
语法:object_LostFocus( )
MouseDown
当用户在窗体客户区上方按下任何鼠标按钮时触发。
语法:object_MouseDown( Button As Integer, Shift As Integer, X As Single, Y As Single )
MouseMove
当光标在窗体客户区上方移动时触发。
语法:object_MouseMove( Button As Integer, Shift As Integer, X As Single, Y As Single )
MouseUp
当用户在窗体客户区上方释放鼠标按钮时触发。
语法:object_MouseUp( Button As Integer, Shift As Integer, X As Single, Y As Single )
MouseWheel
当鼠标滚轮在窗体上方转动时触发。twinBASIC 新增。
语法:object_MouseWheel( Delta As Integer, Horizontal As Boolean )
OLECompleteDrag
当 OLE 拖动操作完成时在源控件上触发,指示目标接受了哪种效果(复制、移动、无)。
语法:object_OLECompleteDrag( Effect As Long )
OLEDragDrop
当用户将数据放置在目标控件上时触发。
语法:object_OLEDragDrop( Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single )
OLEDragOver
当 OLE 拖动经过目标控件时在该控件上触发。
语法:object_OLEDragOver( Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single, State As Integer )
OLEGiveFeedback
在拖动期间在源控件上触发,以便应用程序可以调整光标或其他视觉反馈。
语法:object_OLEGiveFeedback( Effect As Long, DefaultCursors As Boolean )
OLESetData
当目标请求已注册但尚未提供的数据格式的数据时在源控件上触发。
语法:object_OLESetData( Data As DataObject, DataFormat As Integer )
OLEStartDrag
在 OLE 拖动开始时在源控件上触发,以便应用程序可以填充DataObject并选择允许的效果。
语法:object_OLEStartDrag( Data As DataObject, AllowedEffects As Long )
Paint
当窗体的失效部分需要重绘时触发。当AutoRedraw为True时被抑制——窗体的持久离屏缓冲区被位块传送到屏幕。
语法:object_Paint( )
QueryUnload
在窗体卸载之前触发,给应用程序确认或取消关闭的机会。将Cancel设置为非零可保持窗体打开。始终在Unload之前触发。
语法:object_QueryUnload( Cancel As Integer, UnloadMode As Integer )
- Cancel
- 设置为非零(任何非零值,约定为1)以取消关闭。
- UnloadMode
- QueryUnloadConstants的成员,标识触发关闭的原因——关闭按钮、代码、Windows 关机、MDI 父窗体或所有者窗体。
Resize
当窗体调整大小时触发——由用户、代码、操作系统在WindowState更改后或首次显示期间的初始布局触发。
语法:object_Resize( )
Terminate
在窗体的窗口已销毁且类实例即将释放后触发。此时控件不再可访问。
语法:object_Terminate( )
Unload
在QueryUnload通过之后和窗体窗口销毁之前触发。将Cancel设置为非零可保持窗体打开并阻止卸载。
语法:object_Unload( Cancel As Integer )
- Cancel
- 设置为非零(任何非零值,约定为1)以取消卸载。