发信人: aaaaaaaaa()
整理人: cobe(2000-02-13 00:08:26), 站内信件
|
编者的话
====================================================================
大家好!
欢迎大家回答问题和提出问题,同时也欢迎大家
提供有关VB、VBA和ASP的好作品。
版主 冯德平
[email protected]
=============================================
VB邮件(6.22)
a ActiveX控件在Excel97中的运用
Excel97在工作表或图表上可使用ActiveX控件,根据我使用的体会,在工作 上处理控件时,必须注意和了解如下事项:
(一)用Excel5.0/95工作簿文件格式保存Excel97工作簿时,将选择ActiveX控 件信息。当用户通过双击鼠标来编辑内嵌在其它应用程序文档中的Excel97工作簿 时,该工作簿上的控件将不会正常工作。如果用户是通过用右键单击工作簿,然 后选中快捷菜单上的“打开”命令来编辑工作簿的话,工作簿上的控件就能正常 工作了。
(二)当ActiveX控件处于激活状态时,将禁用某些MicrosoftExcelVisualBas ic方法和属性。例如,当某一控件激活时,就不能使用Sort方法,故下述按钮单 击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态) 。
PrivateSubCommandButton1Click
Range(″a1:a10″)SortKey1:=Range(″a1″)
EndSub
解决办法是通过选激活工作表上其它元素的方法来绕过这种问题。例如,可 用下列代码对单元格区域排序:
PrivateSubCommandButton1Click
Range(″a1″)Activate
Range(″a1:a10″)SortKey1:=Range(″a1″)
CommandButton1Activate
End Sub
(三)在MicrosoftExcel中,用OLEObjects集合中的OLEObject对象代表Active X控件。如果要用编程的方式向工作表添加ActiveX控件,可用OLEObjects集合的 Add方法。例如向第一张工作表添加命令按钮。
Worksheets(1)OLEObjectsAdd″FormsCommandButton1″,_
Left:=10,Top:=10,Height:=20,Width:=100
因为ActiveX控件也可用OLEObjects集合中的OLEObject对象代表,所以也可 用该集合中的对象来设置控件的属性。例如要设置控件“CommandBotton1”的“ 左边位置”属性。
Worksheets(1)OLEObjects(″CommandButton1″)Left=10
那些不属于OLEObject对象属性的控件属性,可通过由Object属性返回的实际 控件对象来设置。例如要设置控件“CommandButton1”的标题。
Worksheets(1)OLEObjects(″CommandButton1″)
ObjectCaption=″runme″
因为所有的OLE对象也是Shapes集合的成员,所以也可用该集合设置若干控件 的属性。例如要对齐第一张工作表上所有控件的左边框。
ForEachsInWorksheets(1)Shapes
IfsType=msoOLEControlObjectThensLeft=10
Next
请注意,当在控件所在工作表的类模块之外使用控件的名称时,必须用工作 表的名称限定该控件的名称。在工作表上ActiveX控件的事件处理过程中,Me关键 字所指向的是工作表,而非控件。(江苏 周奎)
OneceTet 推荐
b Visual Basic 窗 体 背 景 花 纹 的 实 现
在 开 发 软 件 过 程 中, 为 提 高 软 件 的 商 品 化 程 度,界 面 的 美 观 程 度 是 一 个 软 件 能 否 获 得 成 功 的 一 个 重 要 因 素 , 经 过 仔 细 研 究 一 些 成 功 的 商 品 化 软 件, 从 这 些 软 件 上 可 以 看 到, 程 序 窗 口 背 景 能 显 示 出 非 常 美 丽 的、 富 有 立 体 感 的 花 纹。 而 采 用Visual Basic 3.0 或4.0 进 行 窗 体 设 计, 若 只 按 照 系 统 提 供 的 功 能, 只 能 从 有 限 的 几 种 颜 色 中 选 择 一 种 颜 色 或 采 用 程 序 绘 制 一 些 简 单 的 线 条。 而 想 实 现 立 体 感 很 强 的 纹 理 图 案, 一 般 只 能 采 用 窗 体 的PICTURE 属 性 调 用 位 图 文 件, 使 用 这 种 方 法 实 现 有 许 多 缺 点 , 其 一 是 窗 体 大 小 受 位 图 大 小 的 限 制, 调 整 起 来 麻 烦, 不 具 有 通 用 性 和 灵 活 性; 其 二 是 浪 费 资 源, 因 为 花 纹 图 案 基 本 上 是 重 复 图 案, 采 用 与 窗 体 同 样 大 小 的 位 图 是 一 种 浪 费。
下 面 介 绍 一 种 窗 体 背 景 花 纹 实 现 的 方 法。 在 窗 体 上 建 立 一 个 网 格 控 件, 设 定 网 格 行 不 可 见, 去 掉 固 定 行 和 固 定 列, 用 程 序 实 现 网 格 控 件 与 窗 体 同 样 大 小, 并 随 窗 体 大 小 的 改 变 而 改 变。 然 后 设 计 一 个 花 纹 图 案, 形 成BMP 位 图 文 件( 本 文 程 序 使 用 文 件Pict1.bmp), 或 者 从 其 它 图 象 中 截 取 一 段 图 案, 也 可 以 利 用Windows 系 统 提 供 的 图 案( 如 c:\windows\Tiles.bmp), 将 其 调 入Picture 控 件。 设 定 网 格 的 每 个 单 元 与 该 图 案 大 小 相 同, 使 单 元 的 数 量 正 好 覆 盖 整 个 窗 体 背 景, 再 将 所 有 单 元 均 显 示 该 图 案。 通 过 子 程 序Backpi ct() 实 现 以 上 过 程, 不 论 图 案 大 小、 窗 体 大 小, 程 序 都 能 自 动 调 整 网 格 控 件 大 小 和 网 格 单 元 大 小 及 单 元 数 量。 该 程 序 在Visual Basic 4.0 上 调 试 成 功。
1. 新 建 窗 体Form1, 属 性 如 下:
Caption = “ 背 景 花 纹 的 实 现”
Borderstyle=3( 无 最 大、 最 小 化 按 钮)
2. 建 网 格 控 件Grid1, 它 的 位 置 和 大 小 将 在 程 序 中 设 置( 与Form1 同 样 大), 属 性 为:
Enabled = False( 焦 点 不 会 落 在 网 格 控 件Grid1 上)
Fillstyle=1( 改 变 所 有 单 元Text 特 性)
Fixedcols=0( 无 固 定 行)
Fixedrows=0( 无 固 定 列)
Gridlines = False( 网 格 行 不 可 见),
Visible = True
3. 建 立 图 象 控 件Picture1, 程 序 运 行 时 将 背 景 花 纹 基 本 图 案 放 入 其 中, 属 性 为
Visible = False( 不 可 见)
Autosize = True( 自 动 调 整 大 小)
4. 控 件 中 加 入Sheridan 3D Controls, 选 取 其 中 的 三 维 命 令 按 钮SSCommand, 建 立 两 个 按 钮
SSCommand1.Caption=“ 退 出”
SSCommand2.Caption=“ 更 换 背 景”( 演 示 不 同 的 背 景 图 案 )
它 们 的 属 性Picture 可 调 用 与 背 景 相 同 或 不 同 的 图 案 , 如 果 使 用 普 通 的 命 令 按 钮 控 件Command 也 可, 只 是 命 令 按 钮 无 背 景 图 案。
5. 建 立 背 景 图 案 形 成 子 程 序:
Dim pictfile As String '位图文件名
Dim FILEPATH As String ' 文件路径
Sub Backpict(pictfile)
picture1.ScaleMode = 3
Form1.ScaleMode = 3
picture1.Picture = LoadPicture(pictfile)
'网格控件覆盖整个窗体背景
grid1.Top = -1
grid1.Left = -1
grid1.Width = Width
grid1.Height = Height
grid1.Cols=Int(Form1.ScaleWidth/picture1.ScaleWidth) + 1
grid1.Rows=Int(Form1.ScaleHeight/picture1.ScaleHeight) + 1
'所有单元大小等于基本图案大小
For i = 0 To grid1.Cols - 1
For j = 0 To grid1.Rows - 1
grid1.ColWidth(i) = picture1.ScaleWidth * 15
grid1.RowHeight(j) = picture1.ScaleHeight * 15
Next j
Next I
'选定所有单元
grid1.SelStartCol = 0
grid1.SelStartRow = 0
grid1.SelEndCol = grid1.Cols - 1
grid1.SelEndRow = grid1.Rows - 1
grid1.Picture = Picture1.Picture
End Sub
6. 窗 体 主 程 序
Private Sub Form_Load()
Private Sub Form_Load()
'得到运行程序路径名,路径名后带反斜杠
If Right(App.Path, 1) <> "\" Then
filePath = App.Path & "\"
Else
filePath = App.Path
End If
'窗体初始显示由Tiles.bmp基本图案组成的背景
pictfile = "c:\windows\Tiles.bmp"
backpict (pictfile)
End Sub
7. 退出程序命令按钮
Private Sub SSCommand1_Click()
End
End Sub
8. 演示不同的底纹图案
Private Sub SSCommand2_Click()
'两种背景图案交替演示
If pictfile = filePath & "Pict1.bmp" Then
pictfile = "c:\windows\Tiles.bmp"
Else
pictfile = filePath & "Pict1.bmp"
End If
Backpict (pictfile)
End Sub
=============================================
VB问答()
=============================================
我这里有一个问题征答和对一个问题征答的回答。
我的问题是如何将窗体最小化成任务栏上的图标,是不是用Shell_NotifyIco n函数,
这个函数具体怎么用?
有人问“如何使用mp3播放器控件?及如何注册”,下面介绍一下我的用法。
我是用的Mp3play.ocx这个控件,很多地方都有下载。选择”工程/部件“,再 单击
”浏览“,选择Mp3play.ocx。该控件的图标就会出现在工具箱中。
播放按钮的代码如下:
Private Sub Command1_Click()
Dim err As Long
err = Mp3Play1.Open("c:\demo.mp3", "")
Mp3Play1.Play
End Sub
其中 "c:\demo.mp3"是MP3文件的路径
停止按纽的代码如下:
Private Sub Command2_Click()
Mp3Play1.Stop
End Sub
用如下代码注册:
Dim err1 As Integer
err1 = Mp3Play1.Authorize("LightBringer", "1441658209")
返回值为0则注册成功。
该控件其他常用方法如下:
AboutBox ( ): 显示 about 框
Open ( Inputfile, Outputfile ): 打开声音文件
如果通过声卡播放,则outputfile =“”
如果写到wave文件,则outputfile = wavefile name
返回0表示成功
ReturnValue = Mp3Play1.Open(``C:\Song.mp3", "")或
ReturnValue = Mp3Play1.Open(``C:\Song.mp3", "C:\Song.wav")
Close: 关闭MP3文件
GetDevName (Device): 返回设备名
GetDevParam (Device):返回设备支持的格式,其值如下:
0x00000000 = 0 无效的格式
0x00000001 = 1 11.025 kHz, Mono, 8-bit
0x00000002 = 2 11.025 kHz, Stereo, 8-bit
0x00000004 = 4 11.025 kHz, Mono, 16-bit
0x00000008 = 8 11.025 kHz, Stereo, 16-bit
0x00000010 = 16 22.05 kHz, Mono, 8-bit
0x00000020 = 32 22.05 kHz, Stereo, 8-bit
0x00000040 = 64 22.05 kHz, Mono, 16-bit
0x00000080 = 128 22.05 kHz, Stereo, 16-bit
0x00000100 = 256 44.1 kHz, Mono, 8-bit
0x00000200 = 512 44.1 kHz, Stereo, 8-bit
0x00000400 = 1024 44.1 kHz, Mono, 16-bit
0x00000800 = 2048 44.1 kHz, Stereo, 16-bit
GetOutDevice: 返回所选择的输出设备
GetVolumeLeft,GetVolumeRight: 用long ( 0 - 65536 )型数返回音量大小
GetVolumeLeftP,GetVolumeRightP: 用百分比 ( 0 - 100 )返回音量大小
GetWaveLengthSecs:以秒为单位返回文件播放时间
SetVolume: 用long ( 0 - 65536 )型数设置系统音量 ( left channel, right channel )
声音文件必须首先打开.
ReturnValue = Mp3Play1.SetVolume(32768,32768)
SetVolumeP: 用integer ( 0 - 100 )型数设置系统音量( left channel, right channel )
声音文件必须首先打开.
ReturnValue = Mp3Play1.SetVolumeP(50, 50)
Pause ( ): 暂停
SetSpeed (short Percent): 用百分比调节速度, 100%表示正常,
50%表示一半的时间,也就是速度加倍. 取值在50%到1000%之间 .
长沙 莫林浩
=============================================
其它
====================================================================
欢迎订阅VB免费邮件:
订阅地址 http://server.com/WebApps/mail-list-subscribe.cgi?id=16852
====================================================================
如果您觉得这个邮件列表好的话,请告诉您的朋友。
====================================================================
欢迎投稿 [email protected]
====================================================================
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa
本网站主页镜像地址:goodvbhome.yeah.net
====================================================================
-- 欢迎访问主页:goodvbhonme.yeah.net
或:http://www4.netease.com/~aaaaaaaaa
http://personal.gz168.gnet.gd.cn/vbok/
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.45.137]
|
|