■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#33322-0
テキスト 又は リッチテキストでの複数選択方法
リッチテキスト、テキストボックスで、2箇所以上を反転選択状態にするにはどうすればよいでしょうか?
リッチテキストの場合、SelStart,SelLengthを弄ると選択状態が崩れてしまいます。そこでEM_SETSELを
使ってやってみたのですが、選択された状態でEM_SETSELを行うと無視されてしまいます。どなたか方法を
御存知の方がいらっしゃれば御教授ください。
#33333-0
RE#33322:テキスト 又は リッチテキストでの複数選択方法
> リッチテキスト、テキストボックスで、2箇所以上を反転選択状態にするにはどうすればよいでしょうか?
無理ではないでしょうか?
複数箇所を選択状態にしたアプリを、今まで見たことがありませんし…。

選択では無く、単なる反転であれば、HTMLヘルプなどで実現されていますよね。
あれと同じ状態でも良ければ、DHTMLエディットコントロール (DHTMLED.OCX)で
代用する事ができると思います。

以下は、Text1.Textに指定した文字列を検索し、それを反転させるサンプルです。

Option Explicit

Private Sub Form_Load()
    Text1.Text = "Windows"
    
    '編集を禁止するか、書き込み可能にするかの設定
    DHTMLEdit1.BrowseMode = True
    
    'Web上から LoadURL しても良いし、新たに NewDocument してから、
    'DOMプロパティを操作して、任意の内容を書き込んでも良し。
    '
    '今回は面倒なので、既存のHTMLファイルを LoadDocument しています。
    DHTMLEdit1.LoadDocument "C:\My Documents\SAMPLE.HTML"
End Sub

Private Sub Command1_Click()
    Dim Doc As Object       'MSHTML.HTMLDocument
    Dim Body As Object      'MSHTML.HTMLBody
    Dim objRange As Object  'MSHTML.IHTMLTxtRange
    Dim BMK As String
    'Dim L As Long          '←←検索回数の上限を定める場合
    
    
    '検索文字列を入れておいてください。
    If Len(Text1.Text) = 0 Then Exit Sub
    
    'ここの部分は、WebBrowser.documentや、InternetExplorer.document、
    'あるいは、DHTMLSafe.DOM などでもOKかと
    Set Doc = DHTMLEdit1.DOM
    
    
    Set Body = Doc.Body
    Set objRange = Body.createTextRange
    
    '≫≫≫≫≫ 検索開始
    'For L = 0 To 255
    '   If objRange.findText(Text1.Text) = False Then Exit For
    Do While objRange.findText(Text1.Text)
        '最初に見つかった位置を保存しておきます。
        If Len(BMK) = 0 Then BMK = objRange.getBookmark
        
        '検索した語句の背景色を反転させる。
        '"YELLOW"などの色指定の代わりに、"highlight"などを指定する事も出来ますし、
        '必要であれば、フォントや文字色などの変更もできます。
        objRange.ExecCommand "BackColor", False, "YELLOW"
        
        '論理カーソル位置を、検索した語句の末尾に移動させます。
        objRange.collapse False
    Loop
    'Next L
    '≪≪≪≪≪ 検索終了
    
    'ついでに、最初に見つけた語句の位置までスクロールさせています。
    If Len(BMK) Then
        objRange.moveToBookmark BMK
        objRange.scrollIntoView
    End If
    
    '最後は一応、後始末を。
    Set objRange = Nothing
    Set Body = Nothing
    Set Doc = Nothing
End Sub
#33335-0
RE#33333:テキスト 又は リッチテキストでの複数選択方法
>>リッチテキスト、テキストボックスで、2箇所以上を反転選択状態にするにはどうすればよいでしょうか?
>無理ではないでしょうか?
>複数箇所を選択状態にしたアプリを、今まで見たことがありませんし…。

一太郎は、複数箇所選択することが出来ます。

ちなみに、JustSystem社は殆どのコントロールを自社で開発しているようなので
したい場合には自分で全て作る必要があると思います。
このページと関連する記事:
#971-2再びwebBrowserにて2001-11-03(土) 19:31
#16638-0webbrowserコントロール内の文字列の検索の仕方2001-06-17(日) 13:54
#517-3RichTextBox.Find について2002-05-27(月) 02:10
#4338-2getElementsByName2002-01-27(日) 12:53
#17758-0なかなか上手く行かないのですが2001-01-13(土) 15:58
#44826-0WebBrowserを使って自動入力2001-07-09(月) 12:41
#3664-0再リッチテキストについて1999-08-23(月) 09:53
#2584-1リッチボックス の Find メソッドの使い方1999-08-04(水) 14:36
#1345-2WebBrowserコントロールについて2001-11-11(日) 03:56
#625-0文字列を選択状態にしたい2002-04-19(金) 15:36
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)