精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>● VB和Basic(1)>>文章连载>>VB邮件>>VB邮件(6.22)

主题:VB邮件(6.22)
发信人: 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方法,故下述按钮单
击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态)

    PrivateSubCommandButton1Click
    Range(″a1:a10″)SortKey1:=Range(″a1″)
    EndSub
    解决办法是通过选激活工作表上其它元素的方法来绕过这种问题。例如,可
用下列代码对单元格区域排序:   
    PrivateSubCommandButton1Click
    Range(″a1″)Activate
    Range(″a1:a10″)SortKey1:=Range(″a1″)
    CommandButton1Activate
    End Sub
   (三)在MicrosoftExcel中,用OLEObjects集合中的OLEObject对象代表Active
X控件。如果要用编程的方式向工作表添加ActiveX控件,可用OLEObjects集合的
Add方法。例如向第一张工作表添加命令按钮。
    Worksheets(1)OLEObjectsAdd″FormsCommandButton1″,_
    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″)
    ObjectCaption=″runme″
    因为所有的OLE对象也是Shapes集合的成员,所以也可用该集合设置若干控件
的属性。例如要对齐第一张工作表上所有控件的左边框。
    ForEachsInWorksheets(1)Shapes
    IfsType=msoOLEControlObjectThensLeft=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]

[关闭][返回]