手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

VB开发技巧三则

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
一、 用 控 件 拖 放 表 单
---- 怎 样 用 控 件 拖 放 表 单 呢 ? 很 简 单, 将 这 段 代 码 插 入 到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.

上一篇: VB使用编程技巧三则
下一篇: 用VB开发CAI软件的小经验

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!