VB中根据文本行数显示滚动条(动态显示滚动条)的方法
很多时候,我们不想一开始就显示滚动条,当文本到达指定行数文本框无法完全显示的时候再显示它,由于Scrollbar属性是只读的,无法在运行时的代码中改变这个属性,只能使用下面的API实现这个功能:
Public Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) As Long
Public Const SB_HORZ = 0 '水平
Public Const SB_VERT = 1 '垂直
Public Const SB_BOTH = 3 '两者都有
在Change事件中,调用就可以了:
Private bShow As Boolean '是否已经改变Scrollbars属性,你也可以省略这个控制
Private Sub txtText_Change()
txtText.SelStart = Len(txtText.Text)
If bShow = True Then Exit Sub '读取一个变量的速度要比读取一个属性快,看下C++
If TextHeight(txtText.Text) > txtText.Height Then
ShowScrollBar txtText.hwnd, SB_VERT, True
bShow = True '下次不用再判断
End If
End Sub
相关文档:
通过调用CreateDataSetfromXml取得XML数据
Imports System.Xml
Public Const FILE_CONFIG = "MZZ.xml"
Public Const PATH_CONFIG = "\XML\"
Dim dstXML As DataSet
Dim tblXML_DB As DataTable
Dim dtCod As New DataTable
Dim strSQL As String = ""
clsPublic ......
Option Explicit
Private rsMain As ADODB.Recordset
Private rsTerm As ADODB.Recordset
Private strSql As String
Private Sub cmdAbout_Click()
frmAbout.Show
End Sub
Private Sub cmdAddObject_Click() '程序段
......
添加2个text,一个command,一个 WebBrowser
Dim vDoc, vTag
Dim i As Integer
Private Sub Command1_Click()
Set vDoc = WebBrowser1.Document
For i = 0 To vDoc.All.length - 1
If UCase(vDoc.All(i).tagName) = "INPUT" Then
Set vTag = vDoc.All(i)
If vTag.Type = "text" Then
Select Case vTag.Nam ......
Option Explicit
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias ......
就这么一个函数就解决了那位仁兄3天多的工作
唉~!真被一个函数玩死了
这里顺便帖出来吧
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Microsoft.VisualBasic.Shell( ......