搜档网
当前位置:搜档网 › vblistview控件用法

vblistview控件用法

vblistview控件用法
vblistview控件用法

VB ListView控件适用方法

ListView控件

在工具箱上击鼠标右键,选择快捷菜单的Components(部件)项,在控件列表中选择Microsoft Windows Common Controls 5.0控件(Comctl32.ocx),这个控件中包括ListView、TreeView等几个Windows 95特有的控件。

如果使用的是Visual Basic 6.0,则应该选择Microsoft Windows Common Controls 6.0控件。

将ColumnHeader 对象添加到ListView 控件的ColumnHeaders 集合中。

语法

ListView1.ColumnHeaders.Add(index, key, text, width, alignment, icon)

Add 方法的语法包含下面部分:

部分描述

object 必需的。对象表达式,其值是ColumnHeaders 集合。

index 可选的。唯一标识对象集合成员的整数。

key 可选的。唯一的字符串表达式,可以用来访问集合的成员。

text 可选的。出现在ColumnHeader 对象中的字符串。

width 可选的。数值表达式,它使用控件容器的度量单位指定对象的宽度。

alignment 可选的。决定ColumnHeader 对象中文本对齐方式的整数。关于设置信息,请参阅“请参阅列表中Alignment 属性的信息。

icon 可选的。Smallicons 图象列表中图象的关键字或索引。

说明Add 方法返回新插入的ColumnHeader 对象的引用。

使用index 参数在ColumnHeaders 集合的特定位置插入列标头。

当ColumnHeaders 集合成员可能动态变更时,应使用Key 属性引用它们,因为任何ColumnHeader 对象的Index 属性都可以改变。

示例:

ListView1.ListItems.Clear '清空列表

ListView1.ColumnHeaders.Clear '清空列表头

ListView1.View = lvwReport '设置列表显示方式

ListView1.GridLines = True '显示网络线

ListView1.FullRowSelect = True '选择整行

ListView1.ColumnHeaders.Add , , "ID", 500 '给列表中添加列名

ListView1.ColumnHeaders.Add , , "本地IP", 1500

ListView1.ColumnHeaders.Add , , "本地端口", 900

ListView1.ColumnHeaders.Add , , "协议", 550

ListView1.ColumnHeaders.Add , , "远程IP", 1500

ListView1.ColumnHeaders.Add , , "远程端口", 900

ListView1.ColumnHeaders.Add , , "当前状态", 900

ListView1.ColumnHeaders.Add , , "连接时间", 900

-------------------------------------------------------

Dim X

X = ListView1.ListItems.Count + 1

ListView1.ListItems.Add , , X

ListView1.ListItems(X).SubItems(1) = "00:00:00"

ListView1.ListItems(X).SubItems(2) = "2008-01-01"

ListView1.ListItems(X).SubItems(3) = "(无)"

-------------------------------------------------------

ListView1.ListItems.Clear '清空列表

ListView1.ListItems.Add , , "1"

ListView1.ListItems(1).SubItems(1) = "00:00:00"

ListView1.ListItems(1).SubItems(2) = "2008-01-01"

ListView1.ListItems(1).SubItems(3) = "(无)"

ListView1.ListItems.Add , , "2"

ListView1.ListItems(2).SubItems(1) = "00:00:01"

ListView1.ListItems(2).SubItems(2) = "2008-01-01"

ListView1.ListItems(2).SubItems(3) = "(无)"

-------------------------------------------------------

ListView1.View = lvwReport '设置显示方式为列表

ListView1.AllowColumnReorder = True '对行进行程序排列,用鼠标进行排列ListView1.Arrange = lvwAutoLeft '图标横排列

ListView1.Arrange = lvwAutoTop '图标竖排列

ListView1.FlatScrollBar = False '显示滚动条

ListView1.FlatScrollBar = True '隐藏滚动条

ListView1.FullRowSelect = True '选择整行

ListView1.GridLines = True '显示网络线

https://www.sodocs.net/doc/e29906858.html,belWrap = True '图标可以换行

ListView1.MultiSelect = True '可以选择多个项目

ListView1.PictureAlignment = lvwTopLeft '图片对齐方式是左顶部,其他有右顶部(1)、左底部(2)、右底部(3)、居中(4)、平铺(5)

ListView1.Checkboxes = True '显示复选框

ListView1.DropHighlight = ListView1: ListItems.Item (2) '显示系统颜色

获取当前行数和列数:

MsgBox "行数:" & ListView1.ListItems.Count & "列数:" & ListView1.ColumnHeaders.Count

Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single) ListView1.ToolTipText = "行数:" & ListView1.ListItems.Count & "列数:" &

ListView1.ColumnHeaders.Count

End Sub

设置宽度:

ListView1.ColumnHeaders.Add , , "备注" ,1500

当前选中行:

msgbox ListView1.SelectedItem.index

获取复选框的值:

msgbox ListView1.ListItems(1).Checked

删除指定行:

ListView1.ListItems.Remove 1

去掉鼠标左键点击标签编辑:

labeledit属性改为1

读取某行第一列内容:

ListView1.ListItems(i).Text

读取某行第几列内容(不包括第一列):

ListView1.ListItems(Num).SubItems(4)

读取当前选中行第一列内容:

ListView1.ListItems(ListView1.SelectedItem.Index).Text

循环查找读取项目:

Dim i As Integer

For i = 1 To ListView1.ListItems.Count

If ListView1.ListItems(i).Text = 4 Then MsgBox ListView1.ListItems(i).Text '第一列

If ListView1.ListItems(i).SubItems(1) = 4 Then MsgBox ListView1.ListItems(i).SubItems(1) '第二列Next i

清空列表头:

ListView1.ColumnHeaders.Clear

清空列表:

ListView1.ListItems.Clear

右键菜单:

Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

If Button = vbRightButton Then PopupMenu CommandLst '按下鼠标右键显示菜单

End Sub

当前选中判断:

Dim N

If ListView1.ListItems.Count <> 0 Then N = ListView1.SelectedItem.Index Else MsgBox "当前没有任何主机在线!", vbInformation, "警告:": Exit Sub

If N < 1 Then MsgBox "你没有选中任何主机!", vbInformation, "警告:": Exit Sub

VB设置某行为选中/非选中状态:

ListView.ListItems(i).Selected = True '选中第i行

ListView.ListItems(i).Selected = False '选中第i行

一、View 属性

ListView 控件作为一个可以显示图标或者子项的列表控件,它最重要的属性就是View属性,该属性决定了以哪种视图模式显示控件的项,这四种视图模式分别如下:

[art_myurl]

1、LartIcon:大图标视图模式,在项的文本旁显示大的图标,在控件宽度足够的情况下,项是如图一中的盘符一样优先以平行排列的,排列不完的则自动换行显示在新行中。

2、SmallIcon:小图标视图模式,与大图标模式一样,但是显示的是小的图标。

3、List:列表视图模式,显示小图标,但是项是垂直排列的,只显示单列。

4、Details:详细资料视图模式,是最丰富的选项,它不但允许您查看项,还允许您查看为各项指定的任何子项。各项在网格中显示,它们垂直排列且其子项会显示在列中(带有列标头)。对应地,只有在Details视图模式中起作用的控件属性为:GridLines和FullRowSelect,GridLines属性指示在包含控件中项及其子项的行和列之间是否显示网格线。FullRowSelect属性指示单击某项是否选择其所有子项(即整行选中),如下图三所示便是GridLines和FullRowSelect 属性都设置为True的情况:

图三:显示网格线与整行选中

延伸阅读:https://www.sodocs.net/doc/e29906858.html,使用ListView 控件显示系统驱动器

上一篇文章我们了解了 ListView 控件的使用(相关文章:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用),这里我们就来用ListView 控件模仿制作一个Windows操作系统中“我的电脑”中显示的磁盘驱动器信息列表,以加深对 ListView 控件的印象。需要了解 ListView 控件的基本使用。

ListView控件中还有一个HeaderStyle属性也是在Details视图模式下才起作用,HeaderStyle 属性指示列标头样式,它有下面三种显示样式:

1、Clickable:列标头的作用类似于按钮,单击时可以执行操作(例如排序)。

2、Nonclickable:列标头不响应鼠标单击。

3、None:列标头在报表视图中不显示。

二、Items 属性

此外,ListView控件最重要的属性是Items属性,它包含了控件所有的存在的项。SelectedItems属性是控件当前选定项的集合,同时和它关联的SelectedIndices属性是控件中选定项的索引集合,如下示例所示,我们分别在SelectedItems属性和SelectedIndices属性中获取所选项索引,窗体上拖放了ListView控件和一个Button 控件,且已经往ListView控件中添加了若干列和行,代码如下:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim i As Integer = 0

Dim str As String = ""

For i = 0 To ListView1.SelectedItems.Count - 1

str = str & "选中项索引=" &

ListView1.SelectedItems.Item(i).Index.ToString & ";"

str = str & "在控件中的索引=" &

ListView1.SelectedIndices.Item(i).ToString & vbCr

Next

MessageBox.Show(str)

End Sub

[art_myurl]

运行后显示效果如下图四所示:

图四

两个属性都能获得所选项在控件中的索引,我们在实际应用的时候可以灵活选择使用它们中的一个,以达到简化代码的目的。

延伸阅读:https://www.sodocs.net/doc/e29906858.html,使用ListView 控件显示系统驱动器

上一篇文章我们了解了 ListView 控件的使用(相关文章:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用),这里我们就来用ListView 控件模仿制作一个Windows操作系统中“我的电脑”中显示的磁盘驱动器信息列表,以加深对 ListView 控件的印象。需要了解 ListView 控件的基本使用。

三、ListView 的其他重要属性

ListView控件还有一些比较常用的重要属性

1、Activation 属性

Activation属性指定用户激活ListView控件中的项的方式,它包括三个可选值:

OneClick:用户必须单击以激活项。光标更改为手形指针光标,项文本在用户将鼠标指针移动到项上时更改颜色。

Standard:用户必须双击以激活项。在用户将鼠标指针移动到项上时没有提供任何反馈。

TwoClick:用户必须双击以激活项,项文本在用户将鼠标指针移动到项上时更改颜色。

激活ListView中的项与只选择项是不同的。当激活某个项时,通常会在ItemActivate事件的事件处理程序中执行一个操作。例如,当激活某个项时,您可能会打开一个文件或显示一个允许用户对项进行编辑的对话框。通常,项的激活是通过用户对它进

行双击来实现的。如果Activation属性设置为OneClick,那么单击该项一次即可将其激活。将Activation属性设置为TwoClick与标准的双击不同,这是因为两次单击之间的时间间隔可以是任意的。

注意如果将Activation属性设置为ItemActivation.OneClick或ItemActivation.TwoClick,则不管LabelEdit属性的值是什么,都不允许进行标签编辑。

设置Activation属性实际上就是决定以何种方式来触发ItemActivate事件,如果我们需要在激活项的时候进行额外的操作,例如弹出一个关联的对话框来,则可以

在ItemActivate事件中编写合适代码来完成,如下代码所示:

Private Sub ListView1_ItemActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.ItemActivate

MessageBox.Show("你想做什么")'可以在这里添加我们需要的操作

End Sub

[art_myurl]

代码运行后,我们激活选项,如下图五所示:

2、LabelEdit 属性

LabelEdit属性指示用户是否可以编辑控件中项的标签。

当LabelEdit属性设置为true时,用户可以单击项文本,将其选中,然后再次单击项文本,将标签文本置于编辑模式,然后,用户可以修改或替换项的文本标签。在用户编辑项文本之前和之后,您可以使用BeforeLabelEdit和AfterLabelEdit事件来执行任务。如果该属性设置为true,则无法修改子项的文本。要更改子项的文本,您可以在用户双击控件中的子项时为其显示对话框。

3、LabelWrap 属性

LabelWrap 属性指示当项作为图标在控件中显示时,项标签是否换行。

当LabelWrap属性设置为true时,如果需要,项文本会换至文本的下一行。如果文本长于两行,则文本将缩短。如果用户选择了该项,则显示所有项文本。如果LabelWrap属性设置为false,则所有项文本都将显示在单独一行中。整个项文本在LabelWrap设置为false时显示。只有在View属性设置为LargeIcon或SmallIcon时才使用该属性。

4、MultiSelect 属性

MultiSelect 属性指示是否可以选择多个项。当MultiSelect属性设置为true时,可在ListView控件中选择多个项。

5、Scrollable 属性

Scrollable属性指示在没有足够空间来显示所有项时,是否显示滚动条。

6、Sorting 属性

Sorting属性指示控件中项的排序顺序。

Sorting属性允许指定项在ListView控件中是否排序。默认情况下,不执行排序。当Sorting属性设置为Ascending或Descending时,ListView中的项自动按照升序字母顺序(当属性设置为Ascending时)或降序字母顺序(当属性设置为Descending时)进行排序。您可以使用该属性对ListView控件中显示的项进行自动排序,使用户在大量项可用时更容易查找到项。如果您要自己执行对项的排序,而不使用Sorting属性,可与Sort 方法一起使用ListViewItemSorter属性。

[art_myurl]

7、LargeImageList 属性

LargeImageList属性设置当项以大图标在控件中显示时使用的 ImageList。

8、SmallImageList 属性

SmallImageList属性设置当项以小图标在控件中显示时使用的 ImageList。

面我们了解了ListView的一些主要属性,下面我们来看如何使用它。

四、向ListView 控件添加项

1、我们可以使用ListViewItem集合编辑器来为控件添加项

方法是在ListView控件的属性窗口中选择Items属性。

2、还可以使用ListView控件的Items.Add()方法来为它添加新的项,Add()方法的格式如下:

Add(text,imageIndex)

text 为要添加项所显示的文本

imageIndex 为可选参数,指示所对应ImageList中的图标索引

示例:

为窗体添加一个ListView 控件,一个ImageList 控件,一个Button控件,然后在代码编辑器中添加如下代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim mItem As ListViewItem

Dim i As Integer = 0

https://www.sodocs.net/doc/e29906858.html,rgeImageList = Me.ImageList1

ListView1.View = https://www.sodocs.net/doc/e29906858.html,rgeIcon

For i = 0 To 3

ListView1.Items.Add("Item " & i, i)

Next

End Sub

运行后,单击按钮,效果如下图六所示:

图六:添加Item

也可以使用如下代码来添加Item,其运行效果是一样的:

[art_myurl]

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

https://www.sodocs.net/doc/e29906858.html,rgeImageList = Me.ImageList1

ListView1.View = https://www.sodocs.net/doc/e29906858.html,rgeIcon

Dim item0 As New ListViewItem("item 0", 0)

Dim item1 As New ListViewItem("item 1", 1)

Dim item2 As New ListViewItem("item 2", 2)

Dim item3 As New ListViewItem("item 3", 3)

https://www.sodocs.net/doc/e29906858.html,rgeImageList = Me.ImageList1

ListView1.Items.AddRange(New ListViewItem() {item0, item1, item2, item3})

End Sub

五、为ListView 控件添加列标题

当我们使用ListView 控件的Details 视图模式的时候,就必须为控件添加对应的列标题,才能显示出它所有的项。

1、视图模式下添加列标题

一般我们显示一个列表的时候,其列标题都应该是固定的,所以我们可以在视图模式中预先设置好列标题,这样比较直观。

先选中ListView 控件,然后在它的属性窗口中找到Columns属性,单击后面的省略符号,如下图七所示:

图七:Columns 属性

然后在弹出的集合编辑器中添加和删除列标题即可,我们可以在编辑器的右边中编辑对应的列显示的文本、宽度以及文字对齐方式,如下图八所示:

图八:编辑列的显示属性

添加完列标题之后记得把ListView 控件的View 属性设置为 Details,才能显示出列标题来。

[art_myurl]

、使用代码来添加列标题

我们可以使用Columns.Add方法来动态添加列标头,使用Columns.Clear()方法来清除所有的列标头,如下代码所示,动态添加四个列标题,其中每个列头的宽为50,

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

ListView1.View = View.Details

ListView1.GridLines = True

ListView1.Columns.Clear()

ListView1.Columns.Add("列 1", 50, HorizontalAlignment.Left)

ListView1.Columns.Add("列 2", 50, HorizontalAlignment.Left)

ListView1.Columns.Add("列 3", 50, HorizontalAlignment.Left)

ListView1.Columns.Add("列 4", 50, HorizontalAlignment.Center)

ListView1.Refresh()

End Sub

运行后,单击按钮,效果如下图九所示:

图九:动态添加列标题效果

上一篇文章我们了解了ListView控件的使用(相关文章:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用),这里我们就来用ListView控件模仿制作一个Windows操作系统中“我的电脑”中显示的磁盘驱动器信息列表,以加深对ListView控件的印象。

一、技术准备

1、获取驱动器列表

在以前vb6中,有一个DriveListBox 控件可以获取系统驱动器列表,但是在https://www.sodocs.net/doc/e29906858.html, 中不存在了这个控件,我们可以使用Director类来获得驱动器列表,该类在System.IO 命名空间下。

2、获取驱动器相关信息

Director类只能获取驱动器的列表,我们还需要获得驱动器中的卷标,文件类型,磁盘大小,可用空间等详细信息,这些信息可以通过FSO(文件系统对象模型)实现。

FSO对象模型包含在SCRIPTING类型库(SCRRUN.DLL)中。调用方法如下:

在项目菜单中选择引用,在COM中选择Microsoft Scripting Runtime,如下图所示:

图一:引用SCRIPTING空间

然后在代码最顶端添加

Imports Scripting

3、了解ListVIew 控件

需要了解ListView控件的基本使用,相关文章可以参看:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用,本文需要涉及到ListView控件的View属性的四个枚举值切换,以及列标题的添加、项的添加。

拓展阅读:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用

下面我们就先来了解下ListView控件的基本应用,在https://www.sodocs.net/doc/e29906858.html,中的工具箱中,ListView 控件的图标如下图二所示。如下图一所示就是“我的电脑”中使用ListView 控件来显示本机

所有盘符。ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表。

二、布局窗体控件

首先我们创建一个空白的Windows项目,然后在Form1窗体上拖放如下控件:

1、拖放两个ImageList 控件:分别为这两个控件添加如下图二所示的图标(按文件顺序添加,图标文件单击这里下载):

图二:程序要用到的图标

ImageList1 组件的ImageSize属性(图标大小)设置为 32×32,ImageList2 组件的ImageSize属性设置为 16×16,如下图三所示:

图三:设置图标显示的大小

2、拖放一个ListView控件到窗体中,把ListView 控件的Dock 属性设置为 Fill。

3、拖放一个MainMenu组件到窗体中,然后为 MainMenu 组件添加如下图四所示的菜单项:

图四:添加菜单

4、拖放一个ToolTip控件到窗体上,该控件用于当选择一个盘符时以工具提示的方式显示驱动器的详细信息。

窗体布局完毕后,下面就进入代码编写的步骤了。

拓展阅读:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用

下面我们就先来了解下ListView控件的基本应用,在https://www.sodocs.net/doc/e29906858.html,中的工具箱中,ListView 控件的图标如下图二所示。如下图一所示就是“我的电脑”中使用ListView 控件来显示本机所有盘符。ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表。

三、代码编写

1、首先在Form1窗体代码中添加命名空间的引用:

Imports System.IO

Imports Scripting

然后定义一个全局变量

Public StrDrive() As String'驱动器数组

2、为菜单的四个子菜单编写代码,代码如下:

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click

ListView1.View = https://www.sodocs.net/doc/e29906858.html,rgeIcon

End Sub

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click

ListView1.View = View.SmallIcon

End Sub

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click

ListView1.View = View.List

End Sub

Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click

If ListView1.Items.Count > 0 Then

ListView1.View = View.Details

If ListView1.Columns.Count = 0 Then

'如果不在这里添加列标头,则View=List的时候无法显示

'为控件添加列标头

ListView1.Columns.Add("名称", -1, HorizontalAlignment.Center)

ListView1.Columns.Add("类型", -1, HorizontalAlignment.Center)

ListView1.Columns.Add("大小", -1, HorizontalAlignment.Center)

ListView1.Columns.Add("可用空间", -1,

HorizontalAlignment.Center)

'下面代码为自动调整ListView1列的宽度

Dim i As Integer

For i = 0 To 3

ListView1.Columns(i).Width = -1

Next

End If

End If

End Sub

拓展阅读:https://www.sodocs.net/doc/e29906858.html,入门——ListView 控件的使用

下面我们就先来了解下ListView控件的基本应用,在https://www.sodocs.net/doc/e29906858.html,中的工具箱中,ListView 控件的图标如下图二所示。如下图一所示就是“我的电脑”中使用ListView 控件来显示本机所有盘符。ListView 控件可以用来显示各项带图标的列表,也可以用来显示带有子项的列表。

、创建一个载入驱动器信息的过程,代码如下所示:

Sub LoadDriveInfo()

ListView1.Items.Clear()

ListView1.Columns.Clear()

ListView1.View = https://www.sodocs.net/doc/e29906858.html,rgeIcon

https://www.sodocs.net/doc/e29906858.html,rgeImageList = Me.ImageList1

ListView1.SmallImageList = Me.ImageList2

ListView1.FullRowSelect = False

ListView1.GridLines = False

Dim drvDisk As Drive

Dim i As Integer

'创建FileSystemObject对象

Dim fso As New Scripting.FileSystemObject

'DriveLetter返回某个物理本地驱动器或网络共享的驱动器字母。'VolumeName返回某个启动器的卷标

Dim iDriveType As Integer'驱动器类型

Dim strVolumeName As String'驱动器卷标

Dim strDriveLetter As String'驱动器字母

Dim iDriveSpace As Double'驱动器空间

Dim iDriveFreeSpace As Double'驱动器可用空间

'取得驱动器数组

StrDrive = System.IO.Directory.GetLogicalDrives()

For i = 0 To StrDrive.Length - 1

'取得驱动器

drvDisk = fso.GetDrive(StrDrive(i))

'取得驱动器类型,判断驱动器类型,决定所所以用的图标

iDriveType = drvDisk.DriveType

'取得驱动器的卷标

strVolumeName = drvDisk.VolumeName

Dim intImage As Integer = 0 '所显示的图标索引

Select Case iDriveType

Case 0 '"Unknown",未知

intImage = 0

If strVolumeName = "" Then

strVolumeName = "未知磁盘"

End If

Case 1 '"Removable",可移动存储,包括软盘驱动器和其他多种存储设备

intImage = 1

If strVolumeName = "" Then

strVolumeName = "可移动磁盘"

End If

Case 2 '"Fixed",固定(不可移动)媒体驱动器,包括所有硬盘驱动器(包括可移动的硬盘驱动器)。

intImage = 0

If strVolumeName = "" Then

strVolumeName = "本地磁盘"

End If

Case 3 '"Network",网络硬盘

intImage = 0

If strVolumeName = "" Then

strVolumeName = "网络磁盘"

End If

Case 4 '"CD-ROM",光驱

intImage = 2

If strVolumeName = "" Then

strVolumeName = "光驱"

End If

mscomm控件的使用和安装

一、引言 目前,在用计算机进行数据传输时,常用的是串行通信方式。用C++Builder来编写串行通信程序时,可以调用Windows API函数,也可以利用VB中的MSComm控件。利用API函数编写实际应用程序时,往往要考虑多线程的问题,这样编出来的程序不但十分庞大,而且结构比较复杂,继承性差,维护困难。但是使用串行通信控件就相对简单一些,而且功能强大,性能安全可靠。本文就简单的介绍一下在C++ Builder中利用MSComm 控件进行编程。 二、MSComm控件的常用属性和事件 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 事件驱动方式 在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件将解发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高。 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。 1.MSComm 控件的常用属性 CommPort属性:设置或返回通讯端口号,可以设置为1到16之间的任何值,本系统采用缺省值2; Settings属性:以字符串形式设置或返回波特率、奇偶校验、数据位和停止位,本系统采用缺省值"9600,n,8,1"; PortOpen属性:设置或返回通讯口的状态以及打开和关闭端口,可通过把该属性设置为true或者false来打开或者关闭端口; InBufferSize和OutBufferSize属性:分别设置接收和发送缓冲区分配的内存数量,单位为字节,缺省值分别为1024byte和512byte; InputLen属性:确定希望从接收缓冲区移出的字符数量,当InputLen=0时,一次把接收缓冲区的字符全部移出;

C_中的ListView控件实例教程

C#中的ListView控件实例教程 ListView可以通过四种不同的方式显示条目。 1.只能给ListV iew控件添加基于ListViewItem类的对象; 2.ListViewItems属性:设置用于显示的属性;3.SubItems()方法:包含详细视图中显示的文本; 4.V iew属性:设置以下 ListView可以通过四种不同的方式显示条目。 1.只能给ListView控件添加基于ListViewItem类的对象; 2.ListV iewItems属性:设置用于显示的属性; 3.SubItems()方法:包含详细视图中显示的文本; 4.View属性:设置以下四种显示方式: Details:详细信息; List:列表; LargeIcon:大图标; SmallIcon:小图标。 5.Details视图需要为Columns属性使用Add()方法添加列。 例一: namespace ListViewExercise { public partial class Form1 : Form { public Form1() { InitializeComponent(); ListViewSet(); CreateViewItemMethodOne(); //CreateViewItemMethodTow(); } ///

/// ListView 设置 ///

private void ListViewSet() { //ListView显示方式 listViewControl.View = V iew.Details; } ///

/// //手动填加ListV iew方法1 /// private void CreateViewItemMethodOne() { listViewControl.BeginUpdate(); #region 增加Item的标题,共有三个列 //1、创建标题 listViewControl.Columns.Add("文件名"); listViewControl.Columns.Add("大小"); listViewControl.Columns.Add("创建日期"); #endregion #region 手动填加ListView方法 //2、增加第一个Item,在V iew.Details模式下,有点像第一列中一个值listViewControl.Items.Add("folder1","文件夹1",0); //3、增加第一个Item的第一个SubItem,在V iew.Details模式下,有点像第一列中一个值 listViewControl.Items["folder1"].SubItems.Add("11"); //增加第一个Item的第二个SubItem,在V iew.Details模式下,有点像第一列中一个值 listViewControl.Items["folder1"].SubItems.Add("20080114"); listViewControl.Items.Add("folder2","文件夹2",0); listViewControl.Items["folder2"].SubItems.Add("21"); listViewControl.Items["folder2"].SubItems.Add("20080115"); listViewControl.Items.Add("文件夹3"); listViewControl.Items.Add("文件夹4"); #endregion listViewControl.EndUpdate(); } /// /// 手动填加ListView方法2 /// private void CreateViewItemMethodTow() { #region 增加Item的标题,共有三个列 //1、创建标题,共三列 listViewControl.Columns.Add("文件名"); listViewControl.Columns.Add("大小"); listViewControl.Columns.Add("创建日期");

C#中ListView控件应用实例

C#中 ListView 控件应用实例
ListView 控件 1. 功能 ListView 控件可以显示带图标的项列表,用户可使用该控件创建类似 Windows 资源管理器的用户界面。ListView 控件具有 4 种视图模式: (1)仅文本,这是默认视图,此视图下,只显示列表项的文本; (2)带有小图标的文本,此视图下,小图标随列表项的文本同时显示; (3)带有大图标的文本,此视图下,大图标随列表项的文本同时显示; (4)报表视图,此视图下,列表项显示在多个列中。 图 1 为 List View 控件。
图1
ListView 控件
2.属性 ListView 控件常用属性及说明如表 1 所示。
表1
ListView 控件常用属性及说明
下面对比较重要的属性进行详细介绍。 (1)View 属性。用于获取或设置项在控件中的显示方式。 语法: public View View { get; set; } 属性值:View 值之一。默认为 LargeIcon。 View 的属性值及说明如表 2 所示。

表2
View 的属性值及说明
(2)FullrowSelect 属性。用于指定是只选择某一项,还是选择某一项所在的 整行。 语法: public bool FullRowSelect { get; set; } 属性值:如果单击某项会选择该项及其所有子项,则为 True;如果单击某 项仅选择项本身,则为 False。默认为 False。 说 明 : 除 非 将 ListView 控 件 的 View 属 性 设 置 为 Details , 否 则 FullRowSelect 属性无效。在 ListView 显示带有许多子项的项时,通常使用 FullrowSelect 属性,并且,在由于控件内容的水平滚动而无法看到项文本时, 能够查看选定项是非常重要的。 (3)GridLines 属性。指定在包含控件中项及其子项的行和列之间是否显示网 格线。 语法: public bool GridLines { get; set; } 属性值:如果在项及其子项的周围绘制网格线,则为 True;否则为 False。 默认为 False。 说明:除非将 ListView 控件的 View 属性设置为 Details,否则 GridLines 属性无效。 示例 FullrowSelect 属性 本示例主要介绍 View 属性和 FullrowSelect 属性的使用方法,示例运行结 果如图 2 所示。

使用VB中的MSComm控件实现串口通信

使用VB中的MSComm控件实现RS-232串口通信 实验准备:需要准备一些与串口通信有关的设备,如(外置式)调制解调器、计算机串口与调制解调器的连接线、一根DTE到DTE的无调制解调器连接线(接法见本章有关习题的参考答案),在实验前检查计算机的两个串口是否能够正常工作。 实验环境:Windows 95/98操作系统,Microsoft VB 5.0以上程序设计环境。对例题中涉及调制解调器的内容,采用计算机与调制解调器连接的方式;对在例题中 VB (1 (CD) (2 来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“OK”响应。 每个使用的MSComm控件都对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。可以在Windows“控制面板”中改变端口地址和 中断地址。

下面这个简单的例子采用了轮询方法演示了用调制解调器进行基本的串行通讯: Private Sub Form_Load() Dim Instring As String '保存输入子串的缓冲区 https://www.sodocs.net/doc/e29906858.html,mPort=3 '使用COM3。 MSComm1.Settings="2400,N,8,1" '2400波特率,无奇偶校验,8位数据位,一位停止位 下面我们将讲述一下MSComm控件的所有属性,其中前5个是最基本的,必须首先 掌握。 ⑴MsComm控件属性 1)CommPort,设置并返回通讯端口号。语法为: https://www.sodocs.net/doc/e29906858.html,mPort[=value]

VB中ListView控件属性、方法、事件

VB ListView控件属性、方法、事件 常用属性: View设置或返回控件的视图类型 值说明 1-LvwIcon 图标类型 2-LvwSmallIcon 小图标类型 3-LvwList 列表类型 4-LvwReport 报表类型 Arrange 设置后返回控件的图标排列方式(在图标视图下有效) 值说明 1-LvwNone 不排列 2-LvwAutoLeft 自动靠右排列 3-LvwAutoTop 自动靠左排列 Icons、SmallIcons、ColumnHeaderIcons属性 Icons指定图标视图时的图标与ImageList的绑定 SmallIcons、ColumnHeaderIcons指定列表视图时的图标与ImageList 的绑定 PICTURE、PictureAlignment属性 分别指定ListView控件的背景图片和布局方式 ListItems(Index) 属性 ListItems 属性是ListView控件中列表项的集合。Index用于指定列表项集合中的一个对象, 我们可以把这个对象看作对一行的引用 ListItems集合的属性 1. Text 设置或返回显示文本 2. key 关键字 3. index 索引编号 4. icon , smallicon 不同视图时显示单元格的图标 5. checked 给checkboxes 打√ 6. selected 使处于选定状态 7. ListSubitems(index)集合我们可以把这个集合看作对这行中单元格的引用 Text 设置或返回单元格显示的内容 Reporticon 设置单元格的图标 8.Subitems(index) 设置或返回单元格文本== ListSubitems (index).text ColumnHeaders(index) 属性

C#串口通信:MSComm控件使用详解

C#串口通信:MSComm控件使用详解 目次 MSComm 控件两种处理通讯的方式 CommPort 属性 RThreshold 属性 CTSHolding 属性 SThreshold 属性 CDHolding 属性 DSRHolding 属性 Settings 属性 InputLen 属性 EOFEnable 属性 Handshake 常数 OnComm 常数 InputMode 常数 错误消息 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi 等语言中均可使用。Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 下面分别描述:

C#中ListView的用法

C# 中LISTVIEW用法 //增加项或列(字段) ListView1.Clear; ListView1.Columns.Clear; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Add; ListView1.Columns.Items[0].Caption:='id'; ListView1.Columns.Items[1].Caption:='type'; ListView1.Columns.Items[2].Caption:='title'; ListView1.Columns.Items[2].Width:=300; Listview1.ViewStyle:=vsreport; Listview1.GridLines:=true; //注:此处代码也可以直接在可视化编辑器中完成, 也可写成以下这样 begin with listview1 do begin Columns.Add; Columns.Add; Columns.Add; ViewStyle:=vsreport; GridLines:=true; columns.items[0].caption:='进程名'; columns.items[1].caption:='进程ID'; columns.items[2].caption:='进程文件路径'; Columns.Items[0].Width:=100; Columns.Items[1].Width:=100; Columns.Items[2].Width:=150; end end; //增加记录 with listview1.items.add do begin caption:='1212'; subitems.add('hh1'); subitems.add('hh2'); end; //删除 listview1.items.delete(0);

MSComm控件使用详解

MSComm控件使用详解 2008-04-06 19:15:39| 分类:Windows编程|举报|字号订阅 MSComm控件使用详解 MSComm控件的常用属性 1.MSComm1.Settings:=’9600,n,8,1’; //设置波特率,校验位,数据位,停止位 Settings属性: 设置串口的波特率,校验位,数据位,停止位, ’9600,n,8,1’表示波特率为9600,无奇偶校验,数据位为8为,1位停止位 MSComm1.InBufferSize:=1024; // 接受缓冲区大小 InBufferSize 属性:接收缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.InBufferSize:=2000,则接收缓冲区的大小为2000字节 MSComm1.OutBufferSize:=1024; // 发送缓冲区大小 OutBufferSize属性:发送缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.OutBufferSize:=2000,则发送缓冲区的大小为2000字节 MSComm1.InBufferCount:=0; //清空接受缓冲区 InBufferCount属性:当前接收缓冲区接收到的数据的长度, count:=MSComm1.InBufferCount, 则count值就是接收缓冲区接收到的数据的长度,对InBufferCount 赋值MSComm1.InBufferCount:=0,可以清空接受缓冲区 MSComm1.OutBufferCount:=0; //清空发送缓冲区 OutBufferCount属性:当前发送缓冲区中数据的长度,对OutBufferCount 赋值MSComm1. OutBufferCount:=0,可以清空发送缓冲区 MSComm1.InputMode:=comInputModeText;// 以文本方式取回数据 MSComm1.InputMode:=comInputModeBinary; //设置接收数据模式为二进制形式 InputMode属性:串口接收数据的模式, comInputModeText(0)表示以文本(ASCII)方式取回数据, comInputModeBinary(1)表示以二进制方式取回数据 comInputModeText, comInputModeBinary为预定义常量,分别表示0,1 RcvByte:=MSComm1.Input Input属性:通过Input属性可以读取串口中接收到的数据,RcvByte:=MSComm1.Input表示读取串口接收到的数据,其中RcvByte的数据类型为: array of Byte 或array of Variant.在读取之前先设置RcvByte的长度:SetLength(RcvByte,len),如果一次读取所有数据,则SetLength(RcvByte, MSComm1.InBufferCount) MSComm1.Output:= OutputDat Output属性:通过Output属性可以发送数据, MSComm1.Output:=OutputDat,则将OutputDat中

VB6控件LISTVIEW使用指南

功---- VB6无疑是当前最先进的编程工具之一,无论是它的代码编写还是与视窗98的完美结合, 都令人们特别是程序员们赞叹不已。在这里,我将自己在编程实践中对LISTVIEW控件的一些使用经验和心得体会与广大的同仁们作以探讨,希望大家批评指正,或者有所借鉴。 ---- 在VB6专业版或者企业版中,LISTVIEW控件并不是默认的工具箱的配置项目,你必须要手工添加---单击"工程"菜单项目,选择"部件",在部件对话框的"控件"栏目中选择"MICROSOFT WINDOWS COMMON CONTROLS 6.0",确认在它前面的复选框中有一个黑色的对号,单击"确认" 按钮,这时你的工具箱中便添加了几个控件,其中,有五个空心圆圈的便是LISTVIEW控件了, 当然怎么把它添加到窗体上就不用我多说了吧。 ---- 我个人认为,作为一个增强功能的列表框,它的本质是用来显示更多的信息的.因此, 在这篇文章中,我着重介绍它VIEW属性的LVWREPORT(报表)值的使用.至于它的外观怎样设计,诸位当然可以随心所欲了.为了直观一点,我举一个应用实例来说明。 ---- 设计完成后的主界面参见图一,它实际上是一个增强功能的文件浏览器。 ---- 首先新建一个标准EXE工程,主窗体名称为FRMMAIN,添加一个驱动器列表框DRIVE1,一个文件列表框FILE1(设置VISIBLE属性FALES,PATTERN属性(*.EXE;*.DLL)),一个目录列表框DIR1,一个增强列表框LISTVIEW1,一个IMAGE控件IMAGE1和一个IMAGELIST控件IMALIST1,在IMALIST1控件上单击右键,设计IMAGELIST控件,添加一个你最喜欢的图标(最好使用ICON图标),索引为一。在主窗体FRMMAIN的通用声明段输入以下代码: Dim clmX As ColumnHeader;标题栏 Dim itmX As ListItem;列表项目 Dim Counter As Long;计数器 Dim Fname As String;读取文件名 Dim dname As String;增强列表框完整路径名称 Public CurrentDir As String;完整的目录名称 在主窗体的LOAD事件中写入以下代码: Private Sub Form_Load() Me.Caption = App.Title;

MSComm控件实现串口通信的方法

MSComm控件实现串口通信的方法 碧峰晨曦 摘要:详细介绍了MSComm控件,并在VC++6.0中利用MSComm控件开发了基于对话框的串口通信实例。 关键词:串口通信,MSComm,VC++ 图书编号:TP311 0.引言 串口通信具有实现简单、价格低廉、通信稳定、数据传输可靠等优点,因而广泛应用于各种工业控制系统中。MSComm控件是微软公司开发的专门用于串口通信的控件。该控件为开发串口通信程序提供了更加快捷、容易的方法。在VC++中,对控件属性的操作都是通过特定的函数来实现的,这些函数都是CMSComm类的成员函数。当声明了一个CMSComm类对象后,就可以通过如下格式调用成员函数来访问控件属性了: <对象名>.<成员函数名>(<参数表>)或<对象名>-><成员函数名>(<参数表>) 1.MSComm控件属性及事件 1.1 MSComm控件属性 MSComm控件有许多属性,最主要的几个属性如下: 1)CommPort:设置该属性值可以获取当前程序使用的串口编号。 2)Setting:设置或者获取串行通信的通信参数(包括波特率、奇偶校验类型、数据位数及停止位数等)。 3)PortOpen:设置该属性可以打开或关闭串口。 4)Input:从接收缓冲区中返回并删除数据。 5)Output:向串口通信输出缓冲区写入数据。 6)CommEvent:当MSComm控件在运行时发生错误或产生各种事件时,向程序返回错误或事件类型。 1.2 MSComm控件的事件 该控件只有一个事件,即OnComm事件。当CommEvent属性值发生变化时就会触发OnComm事件。根据CommEvent属性值来分别执行各种情况下的处理程序。

MSComm控件使用详1

MSComm控件使用详解 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在V C、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSCo mm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Re quest To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSC omm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。 Output 向传输缓冲区写一个字符串。 下面分别描述: CommPort 属性 设置并返回通讯端口号。 语法 https://www.sodocs.net/doc/e29906858.html,mPort[ = value ] CommPort 属性语法包括下列部分: 部分描述 object 对象表达式,其值是“应用于”列表中的对象。

C#中ListView的用法详解

C# ListView用法详解 分类:C#2012-08-27 18:44 91268人阅读评论(31) 收藏举报 一、ListView类 1、常用的基本属性: (1)FullRowSelect:设置是否行选择模式。(默认为false) 提示:只有在Details视图该属性才有意义。 (2)GridLines:设置行和列之间是否显示网格线。(默认为false)提示:只有在Details视图该属性才有意义。 (3)AllowColumnReorder:设置是否可拖动列标头来对改变列的顺序。(默认为false)提示:只有在Details视图该属性才有意义。 (4)View:获取或设置项在控件中的显示方式,包括Details、LargeIcon、List、SmallIcon、Tile(默认为LargeIcon) (5)MultiSelect:设置是否可以选择多个项。(默认为false) (6)HeaderStyle:获取或设置列标头样式。 Clickable:列标头的作用类似于按钮,单击时可以执行操作(例如排序)。 NonClickable:列标头不响应鼠标单击。 None:不显示列标头。 (7)LabelEdit:设置用户是否可以编辑控件中项的标签,对于Detail视图,只能编辑行第一列的内容。(默认为false) (8)CheckBoxes:设置控件中各项的旁边是否显示复选框。(默认为false) (9)LargeImageList:大图标集。提示:只在LargeIcon视图使用。

(10)SmallImageList:小图标集。提示:只有在SmallIcon视图使用。 (11)StateImageList:图像蒙板。这些图像蒙板可用作LargeImageList和SmallImageList图像的覆盖图,这些图像可用于指示项的应用程序定义的状态。(暂时不大懂) (12)SelectedItems:获取在控件中选定的项。 (13)CheckedItems:获取控件中当前复选框选中的项。 (14)Soritng:对列表视图的项进行排序。(默认为None) Ascending:项按递增顺序排序。 Descending:项按递减顺序排序。 None:项未排序。 (15)Scrollable:设置当没有足够空间来显示所有项时是否显示滚动条。(默认为true) (16)HoverSelection:设置当鼠标指针悬停于项上时是否自动选择项。(默认为false) (17)HotTracking:设置当鼠标指针经过项文本时,其外观是否变为超链接的形式。(默认为false) (18)HideSelection:设置选定项在控件没焦点时是否仍突出显示。(默认为false) (19)ShowGroups:设置是否以分组方式显示项。(默认为false); (20)Groups:设置分组的对象集合。 (21)TopItem:获取或设置控件中的第一个可见项,可用于定位。(效果类似于EnsureVisible方法) 2、常用方法: (1)BeginUpdate:避免在调用EndUpdate方法之前描述控件。当插入大量数据时,可以有效地避免控件闪烁,并能大大提高速度。

MSComm控件的用法和函数说明

MSComm控件进行串口编程步骤: 1. 在建立的程序工程中插入MSComm控件。 2. 添加MSComm控件ID 的控制变量(或者对象)。 3. 对串口进行初始化,设置MSComm控件的属性。 4. 添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码 5. 编写串口发送等其他代码。 6. 关闭串口。 +MSComm控件 常用属性: https://www.sodocs.net/doc/e29906858.html,mPort:设置并返回通信端口号 2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位 3.PortOpen:设置并返回通信端口的状态。也可以打开和关闭端口 4.Input:从接收缓冲区返回和删除字符 5.Output:向传输缓冲区写一个字符 6.InputLen:设置并返回Input属性从接收缓冲区读取的字符数。 7.InBufferSize:设置或返回输入缓冲区的大小。 8.OutBufferSize:设置或返回输入缓冲区的大小。 9.InBufferCount:设置或返回输入缓冲区内等待读取的字节个数。 10.OutBufferCount:设置或返回输入缓冲区内等待读取的字节个数。 对MSComm控件通过Get/Set函数对来获取或设置控件的属性,每个属性均有与之对应的Get/Set函数 对。 用法说明 https://www.sodocs.net/doc/e29906858.html,mPort:设置并返回通信端口号 Void CMSComm::SetCommPort(short n); 设置串口号

Short CMSComm::GetCommPort(); 查询当前串口号 说明:n可以设置成1到16中的任何数(缺省值为1)。但是,如果用PortOpen属性打开一个并不存在的端口是,MSComm控件会产生错误68(设备无效); 必须在打开端口之前设置CommPort属性。 2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位 Void CMSComm::SetSettings(LPCTSTR lpszNewValue); CString CMSComm::GetSettings(); 说明:当端口打开时,如果设置值lpszNewValue非法,则MSComm控件产生错误380(非法属性值)。 Value 由四个设置值组成,有如下格式:“BBBB,P,D,S” BBBB:波特率P: 奇偶校验,D:数据位数,S:停止位数 Value的缺省值:“9600,N,8,1”。 3.PortOpen:用于打开或关闭串口,或者返回串口的开、关状态 Void CMSComm::SetPortOpen(BOOL bNewValue); BOOL CMSComm::GetPortOpen(); 说明:bNewValue值设置为TRUE,则打开串口;bNewValue值设置为FALSE,则关闭串口。编程时可以再程序中打开或关闭串口,当程序终止,MSComm控件自动关闭串口。 4.InPut:从接收缓冲区内读出数据 VARIANT CMSComm::GetInPut(); 说明:返回数据类型为VARIANT型变量,该属性在串口没有打开时不能用,在运行时是只读的。 InPutMode=0时(检取数据为文本方式),变量中含String型数据。 InPutMode=1时(检取数据位二进制方式),变量中含Byte型数据。 5.OutPut:向发送缓冲区写数据,或返回发送缓冲区当前的数据 Void CMSComm::SetOutPut(const VARIANT& newValue); VARIANT CMSComm::GetOutPort(); 说明:变量类型为VARIANT,该属性在串口未打开时不可用。OutPut可以发送文本或二进制数据,当发送文本类型数据时,将字符型数据放入VARIANT型变量中;发送二进制数据时(按字节发送),将字节型数据放入VARIANT型变量中。若数据中包含了内嵌控制字符。空字符等,必须将其作为二进制数据发送。

串口通信-MSComm控件使用详解

串口通信-MSComm控件使用详解 2012-11-13 09:35 6988人阅读评论(0) 收藏举报控件编程 Delphi编程(13) MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm控件的常用属性 ngs:=’9600,n,8,1’; //设置波特率 ,校验位,数据位,停止位 Settings属性:设置串口的波特率 ,校验位,数据位,停止位, ’9600,n,8,1’表示波特率为9600,无奇偶校验,数据位为8为,1位停止位 ferSize:=1024; // 接受缓冲区大小 InBufferSize 属性:接收缓冲区的大小,默认值为1024,也可以自己设定,比如, ferSize:=2000,则接收缓冲区的大小为2000字节 fferSize:=1024; // 发送缓冲区大小 OutBufferSize属性:发送缓冲区的大小,默认值为1024,也可以自己设定。 ferCount:=0; //清空接受缓冲区 InBufferCount属性:当前接收缓冲区接收到的数据的长度,count:=ferCount, 则count值就是接收缓冲区接收到的数据的长度,对InBufferCount 赋值ferCount:=0,可以清空接 受缓冲区 fferCount:=0; //清空发送缓冲区 OutBufferCount属性:当前发送缓冲区中数据的长度,对OutBufferCount 赋值 MSComm1. OutBufferCount:=0,可以清空发送缓冲区

VB ListView的使用

VB ListView的使用 ListView控件比前面几种控件要复杂一些,通过此控件,可将项目组成带有或不带有列标头的列,并显示伴随的图标和文本。ListView控件是由ColumnHeader和ListItem对象所组成的,其中ColumnHeader对象的个数决定了控件的列数,而ListItem对象的个数则决定了控件的行数。(图7) ColumnHeader对象是ListView控件中包含标头文字的项目。利用ColumnHeader对象,用户可以: ▲单击对象触发ColumnClick事件并根据数据项目将项目排序。 ▲拖动对象的右边框来调整列宽度。 ▲在报表视图中隐藏ColumnHeader对象。 ColumnHeader对象的数目决定每个ListItem对象可包含的子项目数目。删除ColumnHeader对象后所有与列关联的子项目也将被删除,并且每个ListItem对象的子项目数组将平移以更新ColumnHeader的索引,而这将导致剩余的列标头SubItemIndex属性的改变。 ColumnHeader对象的SubItemIndex属性 该属性返回与ListView控件中ColumnHeader对象关联的子项目的索引。子项目是字符串数组,代表显示在报表视图中的ListItem对象的数据。第一列的列标头SubItemIndex 属性设置为0,这是因为小图标和ListItem对象的文字总出现在第一列中,而且它们被当作ListItem对象而不是子项目。列标头数目取决于子项目数目。列标头数目总是比子项目数目多1。 在设计时可以利用属性页的“列首”选项卡将ColumnHeader对象添加到ListView控件中,在运行时则用Add方法添加。 ColumnHeader对象的Add方法 该方法的使用与前面那些控件基本相似,就不再介绍了。

MSComm控件的属性

MSComm控件的属性 (必须要熟悉的几个——CommPort:设置并返回通信端口号;Setting:以字符串的形式设置并返回数据传输速率、奇偶校验、数据比特、停止比特;PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口;Input:从接收缓冲区返回和删除字符;Output:向传输缓冲区定一个字符串) 1)CommPort属性 void SetCommPort(short nNewValue); short GetCommPort(); 这一属性设置并返回连接的串行端口号,Windows将会利用该串口和外界通信。在设计时,nNewValue可以设置成从1~16的任何数(默认值为1)。但是如果用PortOpen属性打开一个并不存在的端口时,MSComm控件会产生错误68(设备无效)。 注意:必须在打开端口之前设置CommPort属性。 2)Settings属性 void Settings(LPCTSTR lpszNewV alue); String GetSettings(); 该属性用于设置并返回数据传输速率、奇偶校验、数据比特、停止比特参数。当端口打开时,如果value非法,则MSComm控件产生错误380(非法属性值)。其中lpszNewValue用字符串表示,由四个设置值组成,有如下的组成格式: “BBBB,P,D,S” BBBB为数据传输速率,P为奇偶校验,D为数据比特,S为停止比特。Value的默认值是:“9600,N,8,1”,数据传输速率合法值可以是110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、56000、57600、115200、12800、25600。 奇偶校验值可以是设置为下表的任一值。 设定值描述 E 偶校验(EVEN) M 标号校验(MARK) N 无校验(NONE) O 奇校验(ODD) S 空格校验(SPACE) 数据比特数可以是4、5、6、7、8。 停止比特数可以是1、1.5、2。 注意:只有当通信的双方的Settings属性值都一样时,通信连接才能生效。 3)Handshaking属性 这一属性用于设置或者返回硬件握手协议,也就是PC和通信设备之间为了控制流速而设定的内部协议。属性值可以设置为下表中的任一个。 设定值值描述 ComNone 0 默认值,无握手协议 comXOnXOff 1 XON/XOFF握手 ComRTS 2 RTS/CTS握手 comRtsXOnXOff 3 RTS/CTS和XON/XOFF握手皆可 4)RThreshold属性 void SetRThreshold(short nNewValue); short GetRThreshold(); 在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,RThreshold 属性设置并返回的要接收的字符数。这里nNewValue是short型参数,说明在产生OnComm 事件之前要接收的字符数。 当接收字符后,若RThreshold属性设置为0(默认值)则不会产生OnComm事件。否则,该属

相关主题