一、 用 控 件 拖 放 表 单 ---- 怎 样 用 控 件 拖 放 表 单 呢 ? 很 简 单, 将 这 段 代 码 插 入 到Declare 部 分。 Declare Function ReleaseCapture Lib "user32" () As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 再 在 控 制 的Mousedown 事 件 中 插 入: Sub Command1_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Ret& ReleaseCapture Ret& = SendMessage(Me.hWnd, &H112, &HF012, 0) End Sub
二、 把 表 单 放 在 屏 幕 的 正 中 央 ---- 在 开 发VB 程 序 时, 一 般 希 望 将 表 单 放 在 屏 幕 可 利 用 区 域 的 正 中 央, 实 现 上 可 以 利 用Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 的 方 法 来 实 现。 但 是 当 用 户 使 用Windows 95 或 NT 操 作 系 统 时, 在 屏 幕 的 底 端 会 有 一 任 务 条, 上 述 的 实 现 方 法 并 未 考 虑 该 任 务 条 所 占 的 空 间, 表 单 实 际 并 未 处 于 屏 幕 可 利 用 区 域 的 正 中 央。 下 面 的 代 码 段 实 现 了 在 每 次 启 动 应 用 程 序 时, 无 论 屏 幕 是 否 有 任 务 条, 表 单 都 会 处 于 屏 幕 可 利 用 区 域 的 正 中 央。 在 工 程 中 增 添 一 模 块, 在 模 块 中 加 上 如 下 的 代 码: Option Explicit Private Const SPI_GETWORKAREA = 48 Private Declare Function SystemParametersInfo& Lib "User32" Alias "SystemParametersInfoA" (ByVal uAction As Long,ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Public Function CenterForm32 (frm As Form) Dim ScreenWidth&, ScreenHeight&, ScreenLeft&, ScreenTop& Dim DesktopArea As RECT Call SystemParametersInfo (SPI_GETWORKAREA, 0, DesktopArea, 0) ScreenHeight = (DesktopArea.Bottom - DesktopArea.Top) * Screen.TwipsPerPixelY ScreenWidth = (DesktopArea.Right - DesktopArea.Left) * Screen.TwipsPerPixelX ScreenLeft = DesktopArea.Left * Screen.TwipsPerPixelX ScreenTop = DesktopArea.Top * Screen.TwipsPerPixelY frm.Move (ScreenWidth - frm.Width)/ 2 + ScreenLeft, (ScreenHeight - frm.Height) / 2 + ScreenTop End Function
---- 要 调 用CenterForm32 函 数, 可 在 表 单 的Load 事 件 中 增 添 代 码CenterForm32 Me 即 可。 以 上 代 码 在VB4/32,VB5 中 实 现。
三、 在RichTextBox 控 件 中 实 现 上、 下 标 形 式 ---- VB 提 供 了 一 个 优 秀 的 控 件RichTextBox, 我 们 可 以 在 其 中 实 现 文 本 的 各 种 编 辑 方 式。 下 面 的 程 序 是 在RichTextBox 控 件 中 实 现 上 标 和 下 标 的 形 式, 主 要 是 使 作 为 上、 下 标 的 字 符 的 尺 寸 小 一 些, 位 置 在 基 线 上 下 浮 动。 程 序 利 用 属 性SelCharOffset, 由 它 确 定RichTextBox 控 件 中 的 文 本 是 出 现 在 基 线 上( 正 常 状 态), 当SelCharOffset >0 时, 文 本 出 现 在 基 线 之 上, 成 为 上 标 形 式; ---- 当SelCharOffset< 0 时, 文 本 出 现 在 基 线 之 下, 成 为 下 标 形 式。
---- 该 属 性 在 设 计 时 无 效。
---- 在 表 单 的Load 事 件 中 添 加 以 下 代 码:
Private Sub Form_Load() RichTextBox1.Font.Name = "Times New Roman" RichTextBox1.Font.Size = 10 RichTextBox1.Text = "H2SO4" ' Move the numbers down 2 points. OffsetRichText RichTextBox1, 1, 1, 2 OffsetRichText RichTextBox1, 4, 1, -2 End Sub
Private Sub OffsetRichText(box As RichTextBox, start As Integer, length As Integer, offset As Integer) 'box指RichTextBox控件;start指作为上下标的 '字符的起始位置;length指上下标字符的长度; 'offset指上标还是下标,大于0上标;小于0下标。 box.SelStart = start box.SelLength = length box.SelFontSize = box.Font.Size -abs(offset) box.SelCharOffset = ScaleY(offset,vbPoints, vbTwips) box.SelStart = 0 box.SelLength = 0 End Sub 该程序在VB4/32和VB5上调试通过。最后在RichTextBox 控件中字符串的形式为:H2SO4.  
|