精华区 [关闭][返回]

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

主题:VB邮件(5.25)
发信人: msnet()
整理人: cobe(1999-12-17 12:55:45), 站内信件
                      编者的话
====================================================================
大家好!
    这是关于VB和ASP的免费邮件列表。
    如果您有问题或想回答别人的问题,请给我写信。
    如果您有好的作品或您发现了好的作品,不要忘
了让大家共享。
    热情欢迎您的参与!!!
                                版主   冯德平
                                [email protected]
=============================================
            VB邮件(5.25)
a Office或IE4风格的ToolBar

    用API 可以轻松改变 ToolBar 的风格。需要 4.70 或其以上版本的 comctl
32.dll 支持。

    声明:

Private Declare Function SendMessage Lib "user32" Alias _

"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _

ByVal wParam As Integer, ByVal lParam As Any) As Long

Private Declare Function FindWindowEx Lib "user32" Alias _

"FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 _

As Long, ByVal lpsz1 As String, ByVal lpsz2 As _

String) As Long

Private Const WM_USER = &H400

Private Const TB_SETSTYLE = WM_USER + 56

Private Const TB_GETSTYLE = WM_USER + 57

Private Const TBSTYLE_FLAT = &H800

Private Const TBSTYLE_LIST = &H1000

    函数:

' tlbToolbarStyle :

'1 为 Office97 风格

'2 为 IE4 风格

Public Sub ToolbarStyle(tlb As Toolbar, _

tlbToolbarStyle As Long)

Dim lngStyle As Long

Dim lngResult As Long

Dim lngHWND As Long

 

' Find child window and get style bits

lngHWND = FindWindowEx(tlb.hwnd, 0&, _

"ToolbarWindow32", vbNullString)

lngStyle = SendMessage(lngHWND, _

TB_GETSTYLE, 0&, 0&)

 

' Use a case statement to get the effect

Select Case tlbToolbarStyle

Case 1:

' Creates an Office 97 like toolbar

lngStyle = lngStyle Or TBSTYLE_FLAT

Case 2:

' Creates an Explorer 4.0 like toolbar, 

' with text to the right

' of the picture. You must provide text 

' in order to get the effect.

lngStyle = lngStyle Or TBSTYLE_FLAT _

Or TBSTYLE_LIST

Case Else

lngStyle = lngStyle Or TBSTYLE_FLAT

End Select

 

' Use the API call to change the toolbar

lngResult = SendMessage(lngHWND, _

TB_SETSTYLE, 0, lngStyle)

 

' Show the effects

tlb.Refresh

End Sub

在 Form 装入时调用:

Private Sub Form_Load()

Call ToolbarStyle(Me.Toolbar1, 2)

' …

End Sub

    关于ToolBar 风格的说明:

    Office 风格的 Toolbar 是指在鼠标移动到 ICON 后,会出现边框。如我们
在 VB5 中用的一样。而comctl的ToolBar是没有该效果的。

    IE4 风格的 Toolbar 可以在ICON 下面出现文字,如同 IE4 中的Toolbar 一
样。(可能是反一下……  )


b Text 转换为 Access MDB

   Text 文件类型在很多软件中都为一般应用程序与数据库之间架起一座桥梁。
你可以使用 Text ISAM 驱动程序和 SQL 来把 Text 文件转换成 Access MDB 数
据库文件,首先,为文本文件创建一个 SCHEMA.INI 文件。然后,你可以使用下
面的代码来实现转换:

 

Dim db As Database, tbl as TableDef 

Set db = DBEngine.CreateDatabase(App.Path & "\mymdb.mdb", dbLangGenera
l, dbVersion_0) 

Set tbl = db.CreateTableDef("Temp") 

tbl.Connect = "Text;database=c:\vbpj\data" 

tbl.SourceTableName = "Customer#txt" 

db.TableDefs.Append tbl 

db.Execute "Select Temp.* into NewTable from Temp" 

db.TableDefs.Delete tbl.Name 

db.Close 

Set tbl = Nothing 

Set db = Nothing 


c VB 5.0下工具条的制作

西安   况正谦

    工具条(Toolbar)是Windows环境下应用程序常用的界面元素。把菜单中常用
的命令做成按钮安排在工具条中,配上适当的图标符号和文本提示,确实极大地
方便了用户。以Microsoft Word 7.0 for Windows95的工具条为例,其中的内容
和功能非常丰富。Word7.0工具条中不仅包含与文件操作等有关的常规图标按钮,
还有设置字体字号等等的组合框(Combobox)。按钮之间可以分组,例如设置段落
对齐方式的一组按钮,同组中的按钮每次只允许有一个被按下,按下一个按钮时
,同组中其它按钮自动弹起。另外,Word7.0的工具条还有用户裁剪(Customize)
功能。用户在工具条上双击鼠标时,工具条弹出一个裁剪对话框,用户可以隐藏
、显示以及重新排列工具条中的按钮。如果在我们自己开发的软件界面中加上这
样的工具条,我们的软件就可以与商业软件相媲美了。

    在诸多Windows应用程序开发平台中,Microsoft Visual BASIC以易学易用、
功能强大的优点特出独立,成为开发Windows应用程序的首选平台之一。在VB4.0
及以前的版本中,开发象Word7.0中的工具条还是颇费辛苦的。一般思路是在窗体
(Form)中安放一个图片框(PictureBox)作为容器(Container),再往其中加入图象
(Image)控件,用图象控件载入图标来模拟按钮。对多个按钮的控制要分别完成,
管理较为复杂。在VB5.0中,系统提供了一个专门的工具条控件Toolbar。用Tool
bar来实现类似Word7.0中的工具条非常方便。

 

工具条控件Toolbar简介

    1.在工具箱中加入Toolbar

    工具条控件Toolbar不在VB5.0工具箱(Toolbox)的常规标准控件之列,因此在
首次安装VB5.0后,工具箱中并没有Toolbar。在工具箱中加入Toolbar要通过Pro
ject菜单中的Components命令,该命令弹出一个选择安装组件的窗口。在Compon
ents窗口的Controls组中找到“Microsoft Windows Common Controls5.0”项,
单击标记该项,然后单击“确定”按钮,Toolbar和另外一些控件就加入工具箱了


    2.Toolbar的功能

    Toolbar中可以加入按钮,每个按钮都可以载入自己的图象、设置标题(Capt
ion)。还可以为每个按钮设置简短的提示字符串,程序运行时,当鼠标指针移到
按钮上时,在指针附近会自动浮出提示字符串。在程序运行时,可以随时增加或
删除按钮。Toolbar为其中的按钮提供了分组功能,用户只需简单地设置一个按钮
的Style属性就能实现按钮之间的分组。Toolbar同时还是一个容器类控件,可以
在其中加入组合框等其它控件。Toolbar的AllowCustomize属性允许用户在程序运
行时双击工具条对其中的内容进行裁剪。根据这些功能,用户就可以轻而易举地
在自己开发的应用程序中加入类似Word7.0风格的工具条了。

 

Toolbar的制作

    Toolbar的制作包括以下步骤:在窗体中加入Toolbar控件;在Toolbar中加入
按钮;为按钮载入图象并设置其它属性。

    1.在窗体中加入Toolbar控件

    双击工具箱中的Toolbar,Toolbar就自动加入窗体并放置在窗体客户区的顶
端。如果要把Toolbar放置在其它位置,可以在属性窗口中改变Toolbar的Align属
性。Toolbar的Align属性中可供选择的有5个值:

    0-vbAlignNone,不对齐

    1-vbAlignTop,对齐窗口客户区顶端

    2-vbAlignBottom,对齐窗口客户区底端

    3-vbAlignLeft,对齐窗口客户区左边

    4-vbAlignRight,对齐窗口客户区右边

    2.在Toolbar中加入按钮

    用鼠标右键单击Toolbar,会弹出Toolbar的属性菜单。单击菜单的最后一项
“Properties”,会弹出Toolbar的属性页(Property Pages)窗口。在属性页窗口
中可以设置控件的一些非常规属性。

    在Toolbar属性页中选Buttons组,其中的“InsertButton”和“RemoveButt
on”两个按钮分别用于在Toolbar中加入和删除按钮。Toolbar控件的所有按钮构
成一个按钮集合(Collection),名为Buttons。在Toolbar中加入和删除按钮实际
上是对Toolbar的Buttons集合进行加入和删除元素操作。对于Toolbar中各个按钮
的访问,也是通过Buttons集合进行的。用“InsertButton”加入按钮后,可以在
Toolbar属性页Buttons中设置新加入的按钮的属性。这些属性包括:索引(Index
)、标题(Caption)、描述信息(Description)、关键字(Key)、初态(Value)、模式
(Style)、宽度(Width)、提示信息(ToolTipText)等。

    (1)Index和Key

    Toolbar中的按钮是通过集合Buttons来访问的。集合中每个按钮都有唯一与
之对应的标识,Index和Key就是与按钮一一对应的标识。Index是整数类型的,类
似于数组的下标。Key是字符串类型的类似于对象的名字,但它与名字不同的是引
用时必须加双引号,并且它中间可以包含任意的字符。按钮的Key属性是可选的,
可以为空。访问按钮时可以引用Index和Key二者之一。例如,在名为Toolbar1的
Toolbar中加入按钮,其Index为1,Key设置为“1stbutton”。在程序中可以通过
以下两种方式之一访问该按钮:

Toolbar1.Buttons(1)



Toolbar1.Buttons("1st button")

    (2)Caption

    Caption属性对应按钮上显示的文本,与普通按钮的Caption属性相同。

    (3)ToolTipText和Description

    ToolTipText和Description都是字符串类型,用于设置按钮的提示文本和描
述信息。设置了ToolTipText后,程序启动运行后,当用户把鼠标指针移到按钮上
时,ToolTipText对应的文本字符串自动浮出。该属性用于在程序运行时提示用户
按钮的功能。程序启动运行后,用户双击工具条对其中的内容进行裁剪时,对话
窗中每个按钮旁边显示的是按钮的Description属性。

    (4)Style

    Style属性设置按钮的模式,不同模式的按钮具有不同的风格和作用。可供选
择的Style属性有以下5种:

    0-tbrDefault,一般按钮

    1-tbrCheck,开关按钮

    2-tbrButtonGroup,编组按钮

    3-tbrSeparator,分隔按钮

    4-tbrPlaceholder,占位按钮

    一般按钮与普通的按钮控件在操作风格上基本相同。开关按钮具有二值状态
:按下和放开。编组按钮用于实现按钮之间的分组,相邻的编组按钮都属于同一
组。编组按钮同时也是开关按钮,同组内至多只允许一个按钮处于按下状态。分
隔按钮在Toolbar中并不显示,而是把它左右的按钮分隔开来。Toolbar中的按钮
本来是紧挨着排列的,使用分隔按钮可以让同类或同组的按钮并列排放而与邻近
的组分开。占位按钮在Toolbar中也不显示,它仅仅起到占位的作用。在占位按钮
处可以安放其它控件诸如组合框之类。占位按钮是唯一可以设置宽度(Width)属性
的按钮。

    (5)Value

    Value属性设置按钮的按下和放开状态。该属性一般用于设置开关按钮和编组
按钮的初态。

    (6)Width

    在属性页的Buttons组中可以看到,Width属性后有一个Placeholder的附加说
明。只有当按钮的Style设置为Placeholder时,该属性才能被设置,其它情况下
该属性被禁止。

    3.为按钮载入图象

    工具条按钮的一个突出特点是包含形象的图象,用以提示按钮的功能。在To
olbar中加入所需的按钮后,就可以为每个按钮载入图象了。Toolbar按钮与普通
的Image和PictureBox不同,它们没有Picture属性。要给Toolbar按钮载入图象需
要借助于另一个控件ImageList。

    ImageList是在“Microsoft Windows Common Controls5.0”中与Toolbar一
并提供的控件。该控件不单独使用,而是专门为其它控件提供图象库。Toolbar中
按钮的图象就要从ImageList的图象库中提取。

    为Toolbar按钮载入图象的方法是:首先在Toolbar所在的窗体中加入ImageL
ist控件,其次在ImageList中加入图象,然后建立Toolbar和ImageList的关联关
系,最后从ImageList的图象库中选择图象载入Toolbar的按钮。

    (1)在ImageList中加入图象

    与Toolbar控件类似,鼠标右键单击窗体中的ImageList控件时,会弹出其属
性菜单。选菜单的最后一项“Properties”会弹出ImageList的属性页窗口。在属
性页窗口中选Images组,在这里可以为ImageList的图象库中加入图象,并为每个
图象设置关键字属性。

    单击“InsertPicture”按钮可以在图象库中插入图片。系统弹出一个选择图
片(Selectpicture)的窗口,从该窗口中可以选定一个或多个图象文件。单击“打
开”按钮,选定的图片就插入图象库了。ImageList允许插入位图文件(.bmp)和图
标(.ico)文件。

    (2)建立Toolbar和ImageList的关联关系

    打开Toolbar的属性页窗口,在General组中有一个标题为ImageList的下拉式
列表框。单击打开该列表框,其中列出了本窗体中所有的ImageList控件。单击选
定一个ImageList控件,Toolbar就与该ImageList建立了关联关系。

    (3)为Toolbar按钮载入图象

    建立好Toolbar和ImageList的关联关系后,Toolbar属性页窗口的Buttons组
中Image项就从禁止状态变为有效了。在Image项的文本框中输入ImageList图象库
里某个图片的Index值,该图片就被载入该按钮了。

 

Toolbar的常用属性和方法

    设置好Toolbar之后,有必要对其常用的属性和方法作一了解,以便在程序中
对它进行控制。Toolbar与其它控件类似的常用属性在此不作赘述。

    1.常用属性

    (1)ImageList

c该属性设置与Toolbar相关联的ImageList对象。

    (2)AllowCustomize

    该属性设置是否允许用户在程序运行时对Toolbar的内容进行裁剪。该属性的
缺省值是True。

    (3)ShowTips

    该属性决定程序运行过程中,当鼠标指针移到Toolbar按钮上时,是否浮出该
按钮的ToolTipText文本提示。该属性的缺省值是True。

    (4)ToolTipText

    该属性设置Toolbar自己的文本提示字符串。Toolbar的每个按钮可以有自己
的ToolTipText,同时Toolbar本身也可以有自己的ToolTipText。程序运行过程中
,当鼠标指针移到Toolbar按钮上时,如果Toolbar和按钮都设置了ToolTipText,
则两个提示字符串都会浮出。

    2.常用方法

    对Toolbar的控制主要是针对其中的按钮,Toolbar中的按钮是作为一个名为
Buttons的集合对象供程序访问的。Buttons的常用方法包括增加一个按钮(Add)、
删除一个按钮(Remove)和删除所有按钮(Clear)。

    (1)Add

    Add方法的语法为:

    Toolbar控件名.Buttons.Add(index,key,caption,style,image)

    整型参数index指定新增按钮的索引值,该索引值也决定了按钮在Toolbar中
的位置。index参数可以省略(注意,省略index参数时其后的逗号要照写),缺省
情况下新增按钮加到Buttons集合的最后。

    字符串型参数key指定新增按钮的关键字,该参数可以省略。

    字符串型参数caption指定新增按钮的标题,该参数可以省略。

    整型参数style指定新增按钮的Style属性,其合法取值有5个,参见前面Sty
le属性的介绍。该参数可以省略,缺省时自动取0(tbrDefault)。

    参数image指定给新增按钮载入的图象,图象必须是与该Toolbar相关联的Im
ageList控件图象库中的一个。image参数可以是一个整数,对应ImageList图象库
中某个图片的Index值,也可以是一个字符串,对应图片的关键字Key。

    (2)Remove

    Remove方法的语法为:

    Toolbar控件名.Buttons.Remove按钮的Index值

    或

    Toolbar控件名.Buttons.Remove按钮的Key字符串

    (3)Clear

    Clear方法的语法为:

    Toolbar控件名.Buttons.Clear

    在程序中生成Toolbar

    以上从设计阶段(designtime)和程序角度介绍了Toolbar的生成和使用。下面
我们结合实例来看看如何为自己的应用程序添加功能强大、方便用户的工具条。


----下面的例子中,窗口工具条内有两个分别代表打开文件和文件存盘的按钮,
另外还有一个设置窗口客户区颜色的组合框。为免去烦琐地介绍工具条的设置过
程,在窗体制作时仅仅加入一个Toolbar控件和一个ImageList控件,另外在Tool
bar中加入一个组合框ComboBox。其它所有与Toolbar的设置和控制有关的操作都
在程序代码中实现,包括为ImageList1加入图片库、建立Toolbar1和ImageList1
的关联关系、在Toolbar1中加入按钮并为每个按钮设置属性、对Combo1进行初始
化等等。下面给出窗体Form1的程序代码。

Private Sub Form_Load()
' Create object variable for the ImageList.
Dim imgX As ListImage

' Load pictures into the ImageList control.
Set imgX = ImageList1.ListImages. _
Add(, "open", LoadPicture("Graphics\bitmaps\tlbr_w95\open.bmp"))
Set imgX = ImageList1.ListImages. _
Add(, "save", LoadPicture("Graphics\bitmaps\tlbr_w95\save.bmp"))
Toolbar1.ImageList = ImageList1

' Create object variable for the Toolbar.
Dim btnX As Button

' Add button objects to Buttons collection using the
' Add method. After creating each button, set both
' Description and ToolTipText properties.
Toolbar1.Buttons.Add , , , tbrSeparator
Set btnX = Toolbar1.Buttons.Add(, "open", , tbrDefault, "open")
btnX.ToolTipText = "Open File"
btnX.Description = btnX.ToolTipText
Set btnX = Toolbar1.Buttons.Add(, "save", , tbrDefault, "save")
btnX.ToolTipText = "Save File"

btnX.Description = btnX.ToolTipText
Set btnX = Toolbar1.Buttons.Add(, , , tbrSeparator)

' The next button has the Placeholder style. A
' ComboBox control will be placed on top of this button.
Set btnX = Toolbar1.Buttons.Add(, "combo1", , tbrPlaceholder)
btnX.Width = 1500 ' Placeholder width to accommodate a combobox.

Show ' Show form to continue configuring ComboBox.

' Configure ComboBox control to be at same location as the
' Button object with the PlaceHolder style (key = "combo1").
With Combo1
.Width = Toolbar1.Buttons("combo1").Width
.Top = Toolbar1.Buttons("combo1").Top
.Left = Toolbar1.Buttons("combo1").Left
.AddItem "Black" ' Add colors for text.
.AddItem "Blue"
.AddItem "Red"
.ListIndex = 0
End With
End Sub

Private Sub Form_Resize()
' Configure ComboBox control.

With Combo1
.Width = Toolbar1.Buttons("combo1").Width
.Top = Toolbar1.Buttons("combo1").Top
.Left = Toolbar1.Buttons("combo1").Left
End With
End Sub

Private Sub toolbar1_ButtonClick(ByVal Button As Button)
' Use the Key property with the SelectCase statement to specify
' an action.
Select Case Button.Key
Case Is = "open" ' Open file.
MsgBox "Add code to open file here!"

Case Is = "save" ' Save file.
MsgBox "Add code to save file here!"
End Select
End Sub

Private Sub Combo1_Click()
' Change backcolor of form using the ComboBox.
Select Case Combo1.ListIndex
Case 0
Form1.BackColor = vbBlack
Case 1
Form1.BackColor = vbBlue
Case 2
Form1.BackColor = vbRed
End Select
End Sub 

=============================================
              问题征答(5.25)
a 你好!我最近遇到一个关于API的问题.
不知你看了第十期<<电脑商情报-家用电脑>>了没有.里面介绍了VB的子类处理方
法,我在用SetWindowLong()这个函数时出错,现在吧程序发给你,请你多帮忙!
里面有一个api函数没有用是控制窗体标题兰闪烁的. 
 
还有一个概念上的问题:"窗口位于当前输入线程"是什么意思?
                                         一个vb菜鸟
=============================================
                其它
====================================================================
欢迎订阅VB免费邮件  
====================================================================  

订阅地址  http://server.com/WebApps/mail-list-subscribe.cgi?id=16852  

====================================================================  

如果您觉得这个邮件列表好的话,请告诉您的朋友。  
====================================================================
欢迎投稿  [email protected]  
====================================================================  

网站主页地址:http://home.hn.cninfo.net/home/msnet 
网易上的主页地址:http://www4.netease.com/~aaaaaaaaa 
本网站主页镜像地址:goodvbhome.yeah.net 
====================================================================

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.46.193]

[关闭][返回]