dockfind.frm

来自「文档编程软件,类似WORD的一个编辑工具.」· FRM 代码 · 共 174 行

FRM
174
字号
VERSION 5.00
Begin VB.Form frmDockFind 
   BorderStyle     =   0  'None
   Caption         =   "Find"
   ClientHeight    =   645
   ClientLeft      =   0
   ClientTop       =   0
   ClientWidth     =   3225
   LinkTopic       =   "Form1"
   ScaleHeight     =   645
   ScaleWidth      =   3225
   ShowInTaskbar   =   0   'False
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton cmdFindNext 
      Caption         =   "查找"
      Height          =   255
      Left            =   2520
      TabIndex        =   4
      Top             =   0
      Width           =   615
   End
   Begin VB.TextBox txtFind 
      Height          =   285
      Left            =   840
      TabIndex        =   1
      Top             =   0
      Width           =   1680
   End
   Begin VB.ComboBox cboSearch 
      Height          =   315
      ItemData        =   "DockFind.frx":0000
      Left            =   840
      List            =   "DockFind.frx":000D
      Style           =   2  'Dropdown List
      TabIndex        =   0
      Top             =   315
      Width           =   2355
   End
   Begin VB.Label lbl3 
      Caption         =   "方向(&D):"
      Height          =   255
      Left            =   0
      TabIndex        =   3
      Top             =   345
      Width           =   780
   End
   Begin VB.Label lbl1 
      AutoSize        =   -1  'True
      Caption         =   "查找(&N):"
      Height          =   180
      Left            =   0
      TabIndex        =   2
      Top             =   15
      Width           =   720
   End
End
Attribute VB_Name = "frmDockFind"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

'*************************************************
' 目的:  如果需要查找一个字符窗并且替换它
' 作用:  调用窗体的文字可能会改变。
' 输入:  strFind:    要查找的文字
'        strReplace: 查找到的文字后要的替换文字
'        intStart:   开始的查找点
'        intEnd:     查找范围
' 返回:  True        文字已找到(并替换了)
'        Flase       文字未找到
'*************************************************
Function FindString(strFind As String, strReplace As String, lngStart As Long, lngEnd As Long) As Boolean
    Dim lngPos As Long '位置
    With frmDDWordPadMDI.ActiveForm.rtf
        '定位查找字符串
        If lngStart = 0 Then lngStart = 1
        lngPos = InStr(lngStart, .Text, strFind, vbTextCompare)
        If lngPos = 0 Then
            '未找到
            FindString = False
        Else
            '它被找到了,但是超过了结尾区域,我们将做
            If Not ((lngPos + Len(strFind)) > lngEnd) Then
                '在范围之内
                FindString = True
                .SelStart = lngPos - 1
                .SelLength = Len(strFind)
                '如果“替换”值为空,仅仅只查找
                If strReplace <> "" Then '替换它
                    .SelText = strReplace
                End If
            End If
        End If
    End With
End Function


'*************************************************
' 目的:  调用查找下一个。
'*************************************************
Private Sub cmdFindNext_Click()
    Dim lngLen As Long '结束位置
    Dim lngStart As Long '开始位置

    '设置框内的文字的结尾长度
    lngLen = Len(frmDDWordPadMDI.ActiveForm.rtf.Text)
    
    Select Case cboSearch.ListIndex
        Case 0 '搜索全部
            lngStart = 1
        Case 1 '向后搜索
            lngStart = 1
            '设置当前选择的结尾
            lngLen = frmDDWordPadMDI.ActiveForm.rtf.SelStart
            lngLen = lngLen + frmDDWordPadMDI.ActiveForm.rtf.SelLength
        Case 2 '向前搜索
            '设置当前选择的开头
            lngStart = frmDDWordPadMDI.ActiveForm.rtf.SelStart
            lngStart = lngStart + frmDDWordPadMDI.ActiveForm.rtf.SelLength
    End Select
    
    '调用函数来查找
    If Not FindString(txtFind.Text, "", lngStart, lngLen) Then
        MsgBox "未找到匹配字符串。", 0, "查找"
    Else
    '    Unload Me
    End If
End Sub

'*************************************************
' 目的:  初始化窗体
'*************************************************
Private Sub Form_Load()
    '设置默认值为“全部”
    cboSearch.ListIndex = 0
    Form_Resize
End Sub


Private Sub Form_Resize()
    On Error Resume Next
    
End Sub

'*************************************************
' 目的:  使按钮有效或无效
'*************************************************
Private Sub txtFind_Change()
    If Len(txtFind.Text) > 0 Then
        '查找文字存在,使“查找下一个”按钮有效
        cmdFindNext.Enabled = True
    Else
        '查找文字不存在,使“查找下一个”按钮无效
        cmdFindNext.Enabled = False
    End If
End Sub


'*************************************************
' 目的:  选择框中的所有内容
'*************************************************
Private Sub txtFind_GotFocus()
    Set frmDDWordPadMDI.currentCtl = txtFind
    txtFind.SelStart = 0
    txtFind.SelLength = Len(txtFind.Text)
End Sub


Private Sub txtFind_LostFocus()
    Set frmDDWordPadMDI.currentCtl = Nothing
End Sub

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?