質問

私には、レガシー VB6を利用したアプリケーショDHTML編集管理としてドキュメントを編集するには、編集者。Microsoft DHTML編集を制御するk.a.DHTMLEd、しょうも、ありとあらIE制御用の家独自のネイティブの編集機能内蔵しています。

思修正のアプリをスマートクォートのような言葉です。具体的には、 " に置き換え または ' に置き換え または として適切な入力;る場合はユーザCtrl+Z直後の交換に適していぐにお見積させていただきます。

いてコードする。

いないコードDHTML/VB6、なJavaScriptコードを作ることは、ブラウザcontentEditableの地域で使うことがでることも

役に立ちましたか?

解決

このVB6バージョン:

Private Sub DHTMLEdit1_onkeypress()
    Dim e As Object
    Set e = DHTMLEdit1.DOM.parentWindow.event
    'Perform smart-quote replacement'
    Select Case e.keyCode
    Case 34: 'Double-Quote'
        e.keyCode = 0
        If IsAtWordEnd Then
            InsertDoubleUndo ChrW$(8221), ChrW$(34)
        Else
            InsertDoubleUndo ChrW$(8220), ChrW$(34)
        End If
    Case 39: 'Single-Quote'
        e.keyCode = 0
        If IsAtWordEnd Then
            InsertDoubleUndo ChrW$(8217), ChrW$(39)
        Else
            InsertDoubleUndo ChrW$(8216), ChrW$(39)
        End If
    End Select
End Sub

Private Function IsLetter(ByVal character As String) As Boolean
    IsLetter = UCase$(character) <> LCase$(character)
End Function

Private Sub InsertDoubleUndo(VisibleText As String, HiddenText As String)
    Dim selection As Object
    Set selection = DHTMLEdit1.DOM.selection.createRange()
    selection.Text = HiddenText
    selection.moveStart "character", -Len(HiddenText)
    selection.Text = VisibleText
End Sub

Private Function IsAtWordEnd() As Boolean

    Dim ch As String
    ch = PreviousChar
    IsAtWordEnd = (ch <> " ") And (ch <> "")

End Function

Private Function PreviousChar() As String

    Dim selection As Object
    Set selection = m_dom.selection.createRange()
    selection.moveStart "character", -1
    PreviousChar = selection.Text

End Function

注意:このソリューションに挿入します追加のレベルの取り消します。例えば、タイピングするか、あるいはサーバーで"でチェーンのにするか、あるいはサーバーで"->"これはテスト"-> "この試験 ->"->"(エレベルを大胆に).このススを除去するために余分なレベルにするため何らかの PostMessage+subclassing こんな消ネイティブの打鍵

編集:忘れずに DHTML編集制御で再頒布可能 を対象としている場合Windows Vista.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top