精华内容
下载资源
问答
  • vb 遍历frame内的控件

    千次阅读 2014-07-04 14:20:17
    Dim objControl As Control  For Each objControl In Me.Controls  If objControl.Container.Name = \"Frame1\" Then  Debug.Print objControl.Name  End If Next
    Dim objControl As Control
      For Each objControl In Me.Controls
      If objControl.Container.Name = \"Frame1\" Then
      Debug.Print objControl.Name
      End If
    Next
    

    展开全文
  • 由之前修改的5个控件(xTab控件美化稳定版、美化仿XP按钮、仿360的Switch开关控件、属性页控件、xMenu弹出式菜单控件),增加 xFrame和xCheckBox而来 xFrame比网上其他源码增加背景透明,见TransParent属性 ...
  • 程序要求:设计一个运行界面如上图所示,当用户在“操作选项”框架选定操作后,文本框发生相应的变化,同时在“操作说明”框架的标签上显示有关的操作说明 现在开始: 1.设置属性值:  Private Sub Form_Load...

    程序要求:设计一个运行界面如上图所示,当用户在“操作选项”框架中选定操作后,文本框发生相应的变化,同时在“操作说明”框架中的标签上显示有关的操作说明
     
    现在开始:
     1.设置属性值:

      Private Sub Form_Load()
      Option1.ToolTipText = "光标在文本的开始"
      Option2.ToolTipText = "光标在文本的结尾"
      Option3.ToolTipText = "光标在第三行的开始"
      Option4.ToolTipText = "选定第三行"
      Option5.ToolTipText = "选定所有文本"
      End Sub
    ToolTipText只是个起着帮助或提醒一样的作用,就是鼠标停在控件上时会显示一段文字的功能。
    当点击Option控件时,激发Label控件显示相关的操作说明,代码如下(只列出一个,其他的类似):
      Private Sub Option1_Click() '光标在文本的开始
      Label1.Caption = "选定了光标在文本的开始"
      Label1.ToolTipText = "选定了光标在文本的开始"
      '此处还要写其他的代码,先空着
      End Sub
     2.根据程序的要求,可以利用 TextBox 的 SelStart和SelLength 属性,可以控制 TextBox 的插入点和选择行为(这些属性仅能在运行时使用)。首先,为了在 TextBox 控件中显示多行文本,要将 MultiLine 属性设置为 True。
    获得焦点,即显示光标在文本框中用Text1.SetFocus
    再选择光标位置,Text1.SelStart = 0,表示光标在文本框开头;Text1.SelStart = Len(Text1.Text),表示光标在文本框末尾。
    那么如何让光标跳到第三行呢?那就得知道一行能输入多少个字节,我找了好久不知道用什么函数或方法求出一行能输入的字节数,所以我就用了一个愚笨的方法求出来了,代码如下(如果你们知道有什么其他的方法请告诉我下哈,先谢谢啦!):
      Private Sub Option3_Click()
      Dim x As Integer
      x = Len(Text1.Text)
      Text1.Text = x’我求出来的是57
      End Sub
    然后就把代码修改好如下(把刚才多余的代码注释掉):
      Private Sub Option3_Click()
      'Dim x As Integer
      Label1.Caption = "选定了光标在第三行的开始"
      Label1.ToolTipText = "选定了光标在第三行的开始"
      Text1.SetFocus
      'x = Len(Text1.Text)
      'Text1.Text = x
      Text1.SelStart = 57 * 2
      End Sub
    算出了一行所能输入的字节数,下面的步骤也就好做了,代码如下:
      Private Sub Option4_Click()
      Label1.Caption = "选定了第三行的所有字符"
      Label1.ToolTipText = "选定了第三行的所有字符"
      Text1.SetFocus
      Text1.SelStart = 57 * 2
      Text1.SelLength = 57
      End Sub

      Private Sub Option5_Click()
      Label1.Caption = "选定了所有文本"
      Label1.ToolTipText = "选定了所有文本"
      Text1.SetFocus
      Text1.SelStart = 0
      Text1.SelLength = Len(Text1.Text)
      End Sub

      

    那个windows live write还没弄好,代码就没那么好加亮。好了,就这样吧。
    奇了怪了,下面没有vb这类编程语言。就放在‘面向对象’区吧!

    展开全文
  • VB 控件随窗体自动调整大小,像窗口的ListBox、Image、FileListBox、VB.Frame控件等,都可以随窗口的大小变化而变化,当用户拖动改变窗口大小时,这些控件的大小也会随之改变,这个功能的实现得益于自定义函数Form...
  • 内容索引:VB源码,界面编程,分栏控件 一个VB窗体分栏控件,附上了应用示例,类似Frame的效果。使用本控件你可以方便的将你的窗体分为不同的显示栏,各自一体,分栏效果如上,有的朋友以前询问过,希望能对大家有帮助...
  • VB多样式窗体Frame框架控件源码,支持9种风格,本控件自带示例,通过示例你可亲自预览一下这几款样式的框架效果,每一个示例都包括jcFrame所有的属性应用,并可对主要激活的属性、当前样式进行编辑,重新显示样式,...
  • vb6.0中文版界面上的frame控件里嵌套combo控件,每个选择和对应的列表怎么存入文件?怎么用file print语句保存frame控件的变量?
  • VB控件属性大全【珍藏版】

    热门讨论 2012-04-21 11:28:45
    VB控件属性大全【珍藏版】 1.01、窗体(FORM)的常用属性 2 1.02、标签控件(Lable)的常用属性 7 1.03、文本框控件(TextBox)的常用属性 9 1.04、框架控件(Frame)的常用属性 13 1.05、命令按钮控件(CommandButton)的...
  • VB中PictureBox控件使用教程

    千次阅读 2016-09-01 12:58:00
    它可以加载图片、显示文字、画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象的外观,PictureBox是VB基本控件里变化最多,功能最多,也是令人最想去...

    PictureBox对象可以说是任何对象的原始型态,它可以加载图片、显示文字、画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象的外观,PictureBox是VB基本控件里变化最多,功能最多,也是令人最想去征服它的一个物件。

     

    *在执行阶段,可以用VB的函数来帮PictureBox加载图片:

    Command1_Click()

    Picture1.Picture = LoadPicture("E:\MyGif\AniGif0562.gif")

    End Sub

     

    *在PictureBox里画图:

    PSet方法:PSet不只是用在PictureBox上,也可以用在窗体上,PSet最主要功用用就是在某一点位置上画一个点,用法是:

    Object.PSet(X,Y), Color: Private Sub Command1_Click()

    Picture1.PSet(500,260),RGB(128,0,255)          'RGB函数是以红色、绿色、蓝色来表示颜色,详情请到函数指令参考

    End Sub

    若颜色省略,则以PictureBox预设的颜色。

    范例:满天繁星:

    Private Sub Timer1()_Timer

    Randomize

    X = Int(Rnd * Picture1.ScaleWidth)

    Y = Int(Rnd * Picture1.ScaleHeight)

    R = Int(Rnd * 256)

    G = Int(Rnd * 256)

    B = Int(Rnd * 256)

    Picture1.PSet (X, Y), RGB(R, G, B)

    End Sub

    Line方法:Line方法专门用来画直线的工具,在窗体上也可以使用,用法:

    Object.Line(X1,Y2)-(X2,Y2), Color, BF

    Color在Line里与PSet一样是可以被省略的,在Color后方若是加入B则画出的不是线条,而是一个空心矩形,若是BF,则画出来的是实心矩形。

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750)

    End Sub

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750), ,B

    End Sub

    Private Sub Command1_Click()

    Picture1.Line(50,50)-(500,750), ,BF

    End Sub

    Circle方法:Circlr方法专门用来画圆,窗体上也是可以使用,用法:

    Object.Circle(X,Y), R, Color, 起始角度, 终止角度, 椭圆率

     

    Private Sub Command1_Click()

    Picture1.Circle(1000, 1000), 800

    End Sub

     

    Private Sub Command1_Click()

    Const PI = 3.1415926535

    Picture1.Circle (1000, 1000), 800, , PI / 4, 3 * PI / 4

    End Sub

    若是设定起始角度与终止角度,画出来的圆会变成弧,而角度单位使用的是弧度,也就是说,180。=3.1415926535...

    Private Sub Command1_Click()

    Const PI = 3.1415926535

    Picture1.Circle (1000, 1000), 800, , -PI / 4, -3 * PI / 4

    End Sub

    若是起始角或终止角使用负数,它们还由由圆心画直线到起始角或终止角,这样就可以画出扇形。

    Private Sub Command1_Click()

    Picture1.Circle (1000, 1000), 800, , , , 0.75

    End Sub

    椭圆率则是圆的Y轴与X轴的比值,也就是 Y/X ,可以画出椭圆形。

    范例:在PictureBox里,拖曳产生一个圆

    (一般)

    Dim Dx As Single, Dy As Single

    Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Dx = X

    Dy = Y

    End If

    End Sub Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Picture1.Cls

    Picture1.Line (Dx, Dy)-(X, Y)

    Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)

    End If

    End Sub Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    If Button = 1 Then

    Picture1.Cls

    Picture1.AutoRedraw = True

    Picture1.Circle (Dx, Dy), (((Dx - X) ^ 2 + (Dy - Y) ^ 2) ^ 0.5)

    Picture1.AutoRedraw = False

    End If

    End Sub

    Cls方法:Cls方法,就是清除屏幕上对象所在范围的内容,窗体也适用,若已存在内存里的内容,则无法消除,用法:Object.Cls,范例在上面的画圆范例里。

    Point方法:Point就是读取PictureBox某一点上的颜色数值,传回值是长整数型态,在窗体上也适用,用法:传回值 = Object.Point

    Private Sub Picture1 

    AutoRedraw属性:上面的PSet、Line、Circle是VB所提供的,画图在屏幕上的方法,因此只要对象移出屏幕外,或是对象被其它窗口或对象给盖着,刚才所画的图会不件,若在绘图时,把AutoRedraw设为True,则可把图绘入内存,即使用Cls方法也清除不掉,范例在上面的画圆范例里头。

    想要把用VB函数在PictureBox里所画的图给存起来时(把AutoRedraw设为True时所绘的图才能存盘),VB提供了SavePicture方法,用法是SavePicture Object.Picture, 存档名。

    Private Sub Command1_Click()

    SavePicture Picture1.Picture, "C:\Windows\Temp\Tmp.Bmp"

    End Sub

    SavePicture只能存BMP格式的,请别异想天开把扩展名改成JPG或GIF,存起来的图仍是BMP格式的图。

    PaintPicture方法:PaintPicture方法,可以把某个物计内的图转贴到另一个物件上,但要有一个前题,这个图是用Picture属性加载进来的图才可以,用法:

    Object.PaintPicture 来源对象.Picture, Object.X, Object.Y, 图在Object上的宽度, 图在Object上的高度, 来源对象X起始位置, 来源对象起始Y位置, 来源对象上的宽度, 来源对象上的高度, 贴图模式

    Private Sub Command1_Click()

    Picture1.PaintPicture Picture2.Picture, 0, 0         '原尺寸转印

    End Sub

    ●若是改变了图在Object上的宽与高,可以改变图形的缩放,Picture2内的图被放大转贴到Picture1里。

    Private Sub Command1_Click()

    Picture1.PaintPicture Picture2.Picture, 0, 0, 750, 600

    End Sub

    Print方法:Print可以在PictureBox上打印文字,窗体也适用,用法:Object.Print 资料。

    Private Sub Command1_Click()

    MyLng = 1234567

    Picture1.Print "今天天气真好"

    Picture1.Print "MyLng = " & MyLng

    End Sub

    CurrentX与CurrentY属性:设定或传回目前PictureBox上画笔所在的位置,窗体也适用。

    Private Sub Command1_Click()

    Picture1.CurrentX = 500

    Picture1.CurrentY = 350

    Picture1.Print "今天天气真好"

    End Sub

     

     

    摘录自:http://www.cnblogs.com/rosesmall/p/5048705.html

    转载于:https://www.cnblogs.com/tgds/p/5829394.html

    展开全文
  • vbframe控件中每一个combo作为一个变量,每个frame从文件读取一行怎么实现?怎么读取一行并且作为frame显示?
  • VB6控件自动适应窗体变化,所有控件跟随窗体拖动,或者最大化变化。
  • VB中 MSComm控件使用详解

    万次阅读 2015-06-16 11:24:48
    MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言均可使用。   Microsoft Communications   Control(以下简称MSComm)是Microsoft公司提供的简化...

     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    向传输缓冲区写一个字符串。 
          下面分别描述:

          CommPort 属性 
              设置并返回通讯端口号。 
          语法 
          object.CommPort[ = value ] 
          CommPort 属性语法包括下列部分: 
          部分 描述 
          object 对象表达式,其值是“应用于”列表中的对象。 
          value 一整型值,说明端口号。 
          说明 
          在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 
          控件会产生错误 68(设备无效)。 
          警告    必须在打开端口之前设置 CommPort 属性。 
          数据类型 
          Integer

          Settings 属性 
              设置并返回波特率、奇偶校验、数据位、停止位参数。 
          语法 
          object.Settings[ = value] 
          Settings 属性语法包括下列部分: 
          部分 描述 
          object 对象表达式,其值是“应用于”列表中的对象。 
          value 字符串表达式,说明通讯端口的设置值,如下所述。 
          说明 
          当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。 
          Value 由四个设置值组成,有如下的格式: 
          "BBBB,P,D,S" 
          BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。value 的缺省值是: 
          "9600,N,8,1" 
          下表列出合法的波特率: 
          设置值 
          110 
          300 
          600 
          1200 
          2400 
          9600(缺省) 
          14400 
          19200 
          28800 
          38400 
          56000 
          128000 
          256000

          下表说明合法的奇偶校验值。 
          设置值 描述 
          E 偶数 (Even) 
          M 标记 (Mark) 
          N 缺省 (Default) 
          None 
          O 奇数 (Odd) 
          S 空格 (Space)

          下表列出合法的数据位值。 
          设置值 
          4 
          5 
          6 
          7 
          8 (缺省)

          下表列出合法的停止位值。 
          设置值 
          1 (缺省) 
          1.5 
          2

          数据类型 
          String 
          Settings 示例 
          下面的例子设置控件端口通讯,波特率 9600,无奇偶校验检查,8 个数据位,1 个停止位: 
          MSComm1.Settings = "9600,N,8,1"

          PortOpen 属性 
          设置并返回通讯端口的状态(开或关)。在设计时无效。 
          语法 
          object.PortOpen[ = value] 
          PortOpen 属性语法包括下列部分:

          部分 描述 
          object 对象表达式,其值是“应用于”列表中的对象。 
          value 布尔表达式,说明通讯端口的状态。 
          设置值 
          value 设置值是: 
          设置值 描述 
          True 端口开 
          False 端口关

          说明 
          设置 PortOpen 属性为 True 打开端口。设置为 False 关闭端口并清除接收和传输缓冲区。当应用程序终止时,MSComm 
          控件自动关闭串行端口。 
          在打开端口之前,确定 CommPort 属性设置为一个合法的端口号。如果 CommPort 
          属性设置为一个非法的端口号,则当打开该端口时,MSComm 控件产生错误 68(设备无效)。 
          另外,串行端口设备必须支持 Settings 属性当前的设置值。如果 Settings 属性包含硬件不支持的通讯设置值,那么硬件可能不会正常工作。 
          如果在端口打开之前,DTREnable 或 RTSEnable 属性设置为 True,当关闭端口时,该属性设置为 False。否则,DTR 和 
          RTS 线保持其先前的状态。 
          数据类型 
          Boolean 
          PortOpen 属性示例 
          下例以波特率 9600 打开 1 号通讯端口,没有奇偶检查,8 个数据位,1 个停止位。 
          MSComm1.Settings = "9600,n,8,1" 
          MSComm1.CommPort = 1 
          MSComm1.PortOpen = True

          Input 属性 
              返回并删除接收缓冲区中的数据流。该属性在设计时无效,在运行时为只读。 
          语法 
          object.Input 
          Input 属性语法包括下列部分: 
          部分 描述 
          object 对象表达式,其值是“应用于”列表中的对象。 
          说明 
          InputLen 属性确定被 Input 属性读取的字符数。设置 InputLen 为 0,则 Input 属性读取缓冲区中全部的内容。 
          InputMode 属性确定用 Input 属性读取的数据类型。如果设置 InputMode 为 comInputModeText,Input 
          属性通过一个 Variant 返回文本数据。如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 
          Variant .返回一二进制数据的数组。 
          数据类型 
          Variant 
          Input 属性示例 
          该例子说明如何从接收缓冲区读取数据。 
          Private Sub Command1_Click() 
          Dim InString as String 
          ' 读取所有可用数据。 
          MSComm1.InputLen = 0

          ' 检查数据。 
          If MSComm1.InBufferCount Then 
              ' Read data. 
              InString = MSComm1.Input 
          End If 
          End Sub

          Output 属性 
              往传输缓冲区写数据流。该属性在设计时无效,在运行时为只读。 
          语法 
          object.Output [ = value ] 
          Output 属性语法包括下列部分: 
          部分 描述 
          object 对象表达式,其值是“应用于”列表中的对象。 
          value 要写到传输缓冲区中的一个字符串。

          说明 
          Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 
          Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。 
          正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null 
          字符等等的数据,要以二进制形式发送。 
          数据类型 
          Variant 
          Output 属性示例 
          下面的例子说明如何将用户键入的每一个字符送到串行端口: 
          Private Sub Form_KeyPress (KeyAscii As Integer) 
              Dim Buffer as Variant 
              ' 设置并打开窗口 
              MSComm1.CommPort = 1 
              MSComm1.PortOpen = True 
              Buffer = Chr$(KeyAscii) 
              MSComm1.Output = Buffer 
          End Sub

          OnComm 事件 
          无论何时当 CommEvent 属性的值变化时,就产生 OnComm 事件,标志发生了一个通讯事件或一个错误。 
          语法 
          Private Sub object_OnComm () 
                OnComm 事件语法包括下列部分: 
                部分 描述 
                object 对象表达式,其值是“应用于”列表中的对象。 
                说明 
                CommEvent 属性包含实际错误或产生 OnComm 事件的数码。注意,设置 Rthreshold 或 Sthreshold 属性为 
                0,分别使捕获 comEvReceive 和 comEvSend 事件无效。 
                OnComm 事件示例 
                下例说明如何处理通讯错误和事件。可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。 
                Private Sub MSComm_OnComm () 
                    Select Case MSComm1.CommEvent 
                    ' Handle each event or error by placing 
                    ' code below each case statement 
                ' 错误 
                       Case comEventBreak    ' 收到 Break。 
                       Case comEventCDTO    ' CD (RLSD) 超时。 
                       Case comEventCTSTO    ' CTS Timeout。 
                       Case comEventDSRTO    ' DSR Timeout。 
                       Case comEventFrame    ' Framing Error 
                       Case comEventOverrun    '数据丢失。 
                       Case comEventRxOver   '接收缓冲区溢出。 
                       Case comEventRxParity    ' Parity 错误。 
                       Case comEventTxFull     '传输缓冲区已满。 
                       Case comEventDCB     '获取 DCB 时意外错误 
                    ' 事件 
                       Case comEvCD    ' CD 线状态变化。 
                       Case comEvCTS    ' CTS 线状态变化。 
                       Case comEvDSR    ' DSR 线状态变化。 
                       Case comEvRing    ' Ring Indicator 变化。 
                       Case comEvReceive    ' 收到 RThreshold # ofchars. 
                       Case comEvSend    ' 传输缓冲区有 Sthreshold 个字符                     
                 ' 
                       Case comEvEof    ' 输入数据流中发现 EOF 字符 
                    End Select 
                End Sub 
                CommEvent 属性 
                返回最近的通讯事件或错误。该属性在设计时无效,在运行时为只读。 
                语法 
                object.CommEvent 
                CommEvent 属性语法包括下列部分: 
                部分 描述 
                object 对象表达式,其值是“应用于”列表中的对象。

                说明 
                只要有通讯错误或事件发生时都会产生 OnComm 事件,CommEvent 属性存有该错误或事件的数值代码。要确定引发 OnComm 
                事件的确切的错误或事件,请参阅 CommEvent 属性。 
                CommEvent 属性返回下列值之一来表示不同的通讯错误或事件。这些常数可以在该控件的对象库中找到。通讯错误包括下列设置值: 
                常数 值 描述 
                comEventBreak 1001 接收到一个中断信号。 
                comEventCTSTO 1002 Clear To Send 超时。在系统规定时间内传输一个字符时,Clear To Send 
                线为低电平。 
                comEventDSRTO 1003 Data Set Ready 超时。在系统规定时间内传输一个字符时,Data Set Ready 
                线为低电平。 
                comEventFrame 1004 帧错误。硬件检测到一帧错误。 
                comEventOverrun 1006 端口超速。没有在下一个字符到达之前从硬件读取字符,该字符丢失。 
                comEventCDTO 1007 载波检测超时。在系统规定时间内传输一个字符时,Carrier Detect 
                线为低电平。Carrier Detect 也称为 Receive Line Signal Detect (RLSD)。 
                comEventRxOver 1008 接受缓冲区溢出。接收缓冲区没有空间。 
                comEventRxParity 1009 奇偶校验。硬件检测到奇偶校验错误 
                comEventTxFull 1010 传输缓冲区已满。传输字符时传输缓冲区已满 
                comEventDCB 1011 检索端口的设备控制块 (DCB) 时的意外错误

                通讯事件包括下列设置值: 
                常数 值 描述 
                comEvSend 1 在传输缓冲区中有比 Sthreshold 数少的字符。 
                comEvReceive 2 收到 Rthreshold 个字符。该事件将持续产生直到用 Input 属性从接收缓冲区中删除数据。 
                comEvCTS 3 Clear To Send 线的状态发生变化。 
                comEvDSR 4 Data Set Ready 线的状态发生变化。该事件只在 DST 从 1 变到 0 时才发生。 
                comEvCD 5 Carrier Detect 线的状态发生变化。 
                comEvRing 6 检测到振铃信号。一些 UART(通用异步接收— 传输)可能不支持该事件。 
                comEvEOF 7 收到文件结束(ASCII 字符为 26)字符。 
                数据类型 
                Integer


                MSComm 控件示例 
                下面这个简单的例子演示了用调制解调器进行基本的串行通讯: 
                Private Sub Form_Load () 
                    ' 保存输入子串的缓冲区 
                    Dim Instring As String 
                    ' 使用 COM1。 
                    MSComm1.CommPort = 1 
                    ' 9600 波特,无奇偶校验,8 位数据,一个停止位。 
                    MSComm1.Settings = "9600,N,8,1" 
                    ' 当输入占用时, 
                    ' 告诉控件读入整个缓冲区。 
                    MSComm1.InputLen = 0 
                    ' 打开端口。 
                    MSComm1.PortOpen = True 
                    ' 将 attention 命令送到调制解调器。 
                ' Chr$函数:返回 String,其中包含有与指定的字符代码相关的字符 。 
                    MSComm1.Output = "ATV1Q0" & Chr$(13) ' 确保 
                    ' 调制解调器以"OK"响应。 
                    ' 等待数据返回到串行端口。 
                    Do 
                       DoEvents 
                    Buffer$ = Buffer$ & MSComm1.Input 
                    Loop Until InStr(Buffer$, "OK" & vbCRLF) 
                    ' 从串行端口读 "OK" 响应。 
                    ' 关闭串行端口。 
                    MSComm1.PortOpen = False 
                End Sub 
                注意    MSComm 控件可以采用轮询或事件驱动的方法从端口获取数据。这个简单的例子使用了轮询方法。

                实例1:计算机拨号 
                在一些实际应用中经常需要使用计算机拨号。下面这个例子利用MSComm控件操作Modem进行拨号,实现串口通信。 
                实现步骤: 
                1.建窗体 
                添加一个MSComm控件,用来建立与串口的连接; 
                添加一个Text控件,Name属性为Txttel,用来输入电话号码; 
                添加3个CommandButton控件,Name属性分别为DialButton、CancellButton、QuitButton,分别用来实现拨 
                号、中止拨号、中止程序; 
                添加一个Label控件,用来显示所有与拨号有关的信息。窗体见图1。 
                2.设置MSComm控件属性 
                InBufferSize=1024;   ’ InBufferSize 是指整个接收缓冲区的大小。缺省值是 1024 字节。 
                Inputlen=0;         ’ InputLen 属性的缺省值是 0。设置 InputLen 为 0 时,使用 Input 
                将使 MSComm 控件读取接收缓冲区中全部的内容。 
                InputMode=0;        ’0---(缺省)数据通过 Input 属性以文本形式取回。 
                                       1--数据通过 Input 属性以二进制形式取回 
                Rthreshold=2;       ’ 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 
                事件。 
                RTSEnable=True;     ’ 当 RTSEnable 设置为 True,端口打开时,Request To Send 
                线设置为高电平,端口关闭时,设置为低电平。 
                Settings=“9600,N,8,1”; 
                Sthreshold=0。    ’ 若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 
                事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。 
                因为每一台计算机的串口使用状态都不会一样。为使程序具有通用性,在窗体的Load方法中首先进行串口测试,找到第一个可用串口后再进行设置。 
                3.程序功能   
                程序根据输入的电话号码进行拨号,Modem正常拨号后,提示用户摘机,准备通话。 
                图1 电话拨号实例 
                4.主要方法与事件代码 
                '设置可用串口 
                Private Sub Form_Load() 
                On Error GoTo error_open 
                For i = 1 To 4 
                MSComm1.CommPort = 1 
                MSComm1.PortOpen = True 
                '设置可用的第一个串口 
                On Error GoTo 0 
                Exit Sub 
                error_resume: 
                Next 
                error_open: 
                Resume error_resume 
                End Sub 
                Private Sub DialButton_Click() 
                Dim Number$, Temp$ 
                Number$ = Trim$(Txttel.Text)     ’ 返回 Variant 
                (String),其中包含指定字符串的拷贝,没有前导空白 (LTrim)、尾随空白 (RTrim) 或前导和尾随空白 (Trim)。 
                If Number$ = “"   Then 
                MsgBox “请输入电话号码" 
                Txttel.SetFocus 
                Exit Sub 
                End If 
                DialButton.Enabled = False 
                QuitButton.Enabled = False 
                DialString$ =“ATDT”+ Number$ + “;” + vbCr
          '清除接收缓冲区 
          MSComm1.InBufferCount =0 
          '拨电话号码 
          MSComm1.Output = DialString$ 
          Lblmessage.Caption = “正在拨号码 -”+Number$ 
          DialButton.Enabled = True 
          QuitButton.Enabled = True 
          End Sub 
          Private Sub MSComm1_OnComm() 
          Select Case MSComm1.CommEvent 
          Case comEvReceive 
          '读取串口数据 
          COMBUF=COMBUF + MSComm1.Input 
          lc = InStr(1, COMBUF, “OK”) 
          If lc = 0 Then Exit Sub 
          'Modem已正常拨号,返回OK 
          Lblmessage.Caption = “请您摘下电话机, 准备通话” 
          Case comEvSend 
          End Select 
          End Sub 
          Private Sub CancelButton_Click() 
          '断开与调制解调器的连接 
          MSComm1.Output = “ATH” + vbCr 
          End Sub

          实例2:实现来电显示 
          在一些实际应用中,需要显示并保存来电号码,并根据电话号码显示相应资料,比如小区物业管理和110报警等系统。 
          实现步骤: 
          1.创建窗体 
          添加一个MSComm控件,用来建立与串口的连接; 
          添加4个Option控件,用来确定使用的串口号; 
          添加4个Label控件,用来显示来电号码及日期时间; 
          添加一个ProgressBar控件,用来显示电话振铃次数; 
          为方便调试程序,添加一个Text控件Text 5,用来显示Modem传来的所有信息。窗体见图2。 
          图2 来电显示窗体 
          2.设置MSComm控件属性 
          InBufferSize=1024; 
          Inputlen=0; 
          InputMode=0; 
          Rthreshold=1; 
          RTSEnable=True; 
          Settings=“9600,N,8,1"; 
          Sthreshold=0。 
          3.程序功能 
          程序首先初始化Modem,然后等待来电。当有来电时,MSComm产生OnComm事件。Modem送出的信息格式为“DATE = 月日回车换行TIME 
          = 时分回车换行NMBR = 
          电话号码回车换行”。在OnComm事件处理程序中对读入信息进行截取,截取电话号码后,以该电话号码为关键字,查询并显示数据库中有关信息。 
          4.主要方法与事件代码 
          '通用声明部分 
          Const DEBFLG = 1 
          Public COMX, BEEPNO, HANGUP,PNLOC As Integer 
          Public COMBUF, COMLIN As String 
          Private Sub Form_Load() 
          '检测串行口 
          Dim I, C As Integer 
          COMX = 0 
          COMBUF = “” 
          COMLIN = “” 
          BEEPNO = 0 
          HANGUP = 0 
          '正常运行程序,关闭右侧Text5 
          If DEBFLG= 0 Then 
          Form1.Width = Form1.Width - Text5.Width 
          Text5.Enabled = False 
          Text5.Visible = False 
          End If 
          On Error GoTo ERROR_FORM_LOAD 
          '检测可用串口 
          For C = 1 To 4 
          If MSComm1.PortOpen Then MSComm1.PortOpen = False 
          MSComm1.CommPort = C 
          If Not MSComm1.PortOpen Then 
          MSComm1.PortOpen = True 
          If MSComm1.PortOpen Then MSComm1.PortOpen = False 
          If COMX = 0 Then COMX = C 
          FORM_LOAD_1: 
          Next C 
          If COMX = 0 Then End 
          On Error GoTo 0 
          Option1(COMX - 1).Value = True 
          Exit Sub 
          ERROR_FORM_LOAD: 
          Option1(C - 1).Enabled = False 
          Resume FORM_LOAD_1 
          End Sub 
          '选择串行口 
          Private Sub Option1_Click(Index As Integer) 
          COMX = Index + 1 
          Call INIT_MODEM 
          End Sub 
          '初试化Modem 
          Private Sub INIT_MODEM() 
          If MSComm1.PortOpen Then MSComm1.PortOpen = False 
          MSComm1.CommPort = COMX 
          If Not MSComm1.PortOpen Then MSComm1. 
          PortOpen = True 
          MSComm1.Output = “AT#CID=1” + vbCr 
          '检查Modem命令是否完成 
          Call CHK_MODEM 
          MSComm1.Output = “ATS0=0” + vbCr 
          End Sub 
          '检查Modem命令是否完成 
          Private Sub CHK_MODEM() 
          Dim T As Single 
          Dim L As Integer 
          T = Timer 
          Do 
          COMBUF = COMBUF + MSComm1.Input 
          L = InStr(1, COMBUF,“OK”) 
          Loop Until L <> 0 Or Timer - T > 1 
          If L = 0 Then 
          Line1.Visible = True 
          Line2.Visible = True 
          Form1.Show 
          MsgBox “MODEM未联机”,vbOKOnly+vbCritical,“测试MODEM” 
          Else 
          Line1.Visible = False 
          Line2.Visible = False 
          End If 
          End Sub 
          '串行口接收事件处理 
          Private Sub MSComm1_OnComm() 
          Dim CH, ST As String 
          Dim LC As Integer 
          Select Case MSComm1.CommEvent 
          '接收到Rthreshold个字符 
          Case comEvReceive 
          COMBUF = COMBUF + MSComm1.Input 
          '读取串口数据 
          Do 
          LC = InStr(1, COMBUF, Chr(10)) 
          If LC = 0 Then Exit Do 
          COMLIN = Left(COMBUF, LC) 
          COMBUF = Mid(COMBUF, LC + 1) 
          CH = Left(COMLIN, 1) 
          If “ ” < CH And CH < Chr(127) And DEBFLG = 1 Then 
          Text5.Text = Text5.Text + COMLIN 
          Text5.SelStart = Len(Text5.Text) 
          End If 
          '截取来电号码,并显示 
          If InStr(1, COMLIN“NMBR=”)<> 0 Then 
          ST = Mid(COMLIN, 8) 
          Text2.Text=“ ”+Left$(ST,Len (ST) -2) + “ ” 
          Form1.WindowState = 0 
          Timer1.Enabled = True 
          Call BEEP_NO 
          '截取来电日期,并显示 
          ElseIf InStr(1, COMLIN, “DATE = ”) <> 0 Then 
          Text3.Text = Str(Year(DATE)) + “.”+ Mid(COMLIN, 8, 2) + “.” + Mid(COMLIN, 
          10, 2) + “ ” 
          '截取来电时间,并显示 
          ElseIf InStr(1, COMLIN, “TIME = ”) <> 0 Then 
          Text4.Text = “ ” + Mid(COMLIN, 8, 2) + “:” + Mid(COMLIN, 10, 2) 
          '检测振铃个数 
          ElseIf InStr(1, COMLIN, “RING”) <> 0 Then 
          Call BEEP_NO 
          If HANGUP = 1 Or BEEPNO = 15 Then Call HANG_UP 
          '检测是否停止振铃 
          ElseIf Left(COMLIN, 3) = “000” Then 
          BEEPNO = 0 
          Timer1.Enabled = False 
          Form1.WindowState = 1 
          ProgressBar1.Value = 0 
          Frame3.Caption = “振铃数” 
          End If 
          Loop 
          '其他事件处理 
          Case comEvCTS 
          Case comEvDSR 
          Case comEvCD 
          Case comEvRing 
          Case comEventBreak 
          Call INIT_MODEM 
          Case Else 
          MsgBox “串口接收事件号:” & MSComm1.CommEvent & “ ”, vbOKOnly + 
          vbCritical, “测试串行口” 
          End Select 
          End Sub 

     

    展开全文
  • vb.net控件

    千次阅读 2020-04-28 14:49:22
    vb.net 的 Label 控件 label(标签)控件用于显示文本,是设计应用程序界面时经常要用到的控件之一, 主要是用于显示其他控件名称,描述程序运行状态或标识程序运行的结果信息等 等,响应程序的事件或跟踪程序运行的...
  • vb控件的默认属性

    2021-09-27 09:20:09
    VB控件的默认属性指这个控件使用时只写出对象名,省略属性名时代表的某个属性。 即通常我们使用属性值时应使用如下格式:对象名.属性名=属性值, 如果使用某个对象的属性值时如下格式:对象=属性值 ,这个对象的该...
  • VB多个控件综合应用完整实例 能过运行 COMBOBIX 控件 checkbox 控件 frame控件 OptionButton控件 textbox控件
  • VB窗体控件元素自适应窗体大小变化的设置实例,也就是让VB窗体控件元素,比如TextBoX之类的,会随依附窗体的大小变化而变化 ,窗体被拖大,它会跟着大,窗体小则它也小,实现本功能,将更有利于控件实用性的发挥...
  • VB不能加载控件许可证未找到解决方案,修复了 Visual Basic 6.0 的许可证问题
  • VB控件属性大全

    万次阅读 多人点赞 2018-06-14 08:54:57
    1.01、窗体(FORM)的常用属性...... 91.04、框架控件(Frame)的常用属性... 131.05、命令按钮控件(CommandButton)的常用属性... 151.06、复选框控件(CheckBox)的常用属性... 171.07、单选钮控件(OptionButton)的常用...
  • vb6 控件未注册问题解决

    千次阅读 2016-01-22 15:51:00
    该OCX组件在VB6可以提供工具栏(Toolbar),状态栏(StatusBar),图像列表(ImageList),选项卡(TapStrip),进度条(ProgressBar),树形框(TreeView),滑动块(Slider),图像组合框(ImageCombo)等8个...
  • 使用VB重写日历控件
  • VB讲课笔记06:窗体与常用控件

    千次阅读 2018-03-10 17:24:29
    窗体是VB中最基本的对象,是应用程序的基本组成部分,是菜单栏、工具栏和控件等对象的容器,是应用程序与用户交互的窗口或对话框。窗体设计是整个VB应用程序设计的基础。一个窗体对应一个代码模块。 1、窗体设计...
  • 多样式frame框架控件多样式frame框架控件多样式frame框架控件多样式frame框架控件多样式frame框架控件多样式frame框架控件
  • 求问使用vb6.0中文版通过配置读取的方式怎么给frame控件中的combo设置初始选定和下拉选择?初始选定是一个变量,下拉选择数量不固定怎么实现?
  • VB 单选按钮、复选按钮和框架控件

    千次阅读 2020-12-11 12:32:37
    框架Frame控件可以用来对窗体上的控件进行分组。在同一框架下的单选按钮有且只能被选中一项,而复选按钮则可以选择多项,也可以一项都不选择。下面来介绍这3个控件的常用属性和基本用法。 单选按钮Option 单选按钮的...
  • 这只是在窗口上画个框框别的什么也没,这个是虚拟控件,就是直接画在窗口上的,并不是真实创建的。 设计时主要属性:文本、颜色等 常用事件:不需要什么事件。
  • Timer控件VB编程具有很重要的作用,通过Timer控件,可以实现一些动态效果,可以定时触发某些代码。 Timer控件的常用属性 Interval属性 Interval属性是Timer控件最为重要的属性,也是少有的几个属性之一。 作用:...
  • VB之TabStrip控件使用举例

    千次阅读 2016-06-16 15:38:38
    先创建若干个TabStrip的选项然后创建一个Frame控件数组,个数与TabStrip选项卡个数相等注意设置Frame控件数组的索引值(index属性)从1开始(默认为从0开始),以便和TabStrip选项的索引值对应然后编写以下代码:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,792
精华内容 1,116
关键字:

vb中frame控件