文字検索でドラッグした状態にするには?

解決


まさ  2005-03-15 20:42:19  No: 120261

初めまして。
文字を検索して、その文字が見つかれば文字をドラッグした状態にしたいのですが、どのようにすれば良いのでしょうか?
検索は↓のようにしています。

Private Sub search_Click()

    Dim Text As String
    Dim FindText As String
    Dim Found As Long
    
    '検索する文字
    FindText = Text1.Text
    
    'ファイルの読み取りと検索
    Text = Form1.txtbox.Text
    Found = InStr(sText, sFindText)
    '結果
    If Found = 0 Then
        MsgBox "見つかりません。"
    Else
        MsgBox "見つかりました。"
    End If

End Sub


  2005-03-15 20:51:22  No: 120262

>Found = InStr(sText, sFindText)
・・・って、変数は宣言されてませんよね?

TextBoxには、SelStartとSelLengthっていうものがあります。
それを使用して、期待する場所の開始位置と長さを指定して、SetFocusで当ててあげて下さい。
実際には
・Foundで算出した文字位置(1引いてやる必要があると思います)が開始位置
・検索する文字の文字列長が長さ
として、指定してやります。


まさ  2005-03-15 21:02:28  No: 120263

影さん。早速のレスありがとうございます。

>>Found = InStr(sText, sFindText)
>・・・って、変数は宣言されてませんよね?
書き忘れです。すみませんm(__)m
↓を書いてます。

Public Function TextFile_ReadAll(ByVal FileName As String) As String
    Dim h As Long
    Dim sBuffer As String
    On Error GoTo ErrHandle
    
    h = FreeFile
    Open FileName For Binary Access Read Lock Write As #h
    sBuffer = Space(LOF(h))
    Get #h, , sBuffer
    Close #h
    
    TextFile_ReadAll = sBuffer
    Exit Function
    
ErrHandle:
    Close #h
    TextFile_ReadAll = ""
    Exit Function
End Function

この場合でも方法は変わりませんよね?

それと、どのようなコードを書けばいいのかよく分からないので、
よろしければ、簡単なコードを書いていただきたいです。
おねがいしますm(__)m


  2005-03-15 21:17:47  No: 120264

あ、失礼しました。見事に中途半端ですね。

まささんお使いの環境は、恐らくVB.NETじゃないですか?
当方の現環境はVB6.0なので、確認できませんが。
とりあえず、参考までにVB6.0で反転させる方法を記載しておきます。
11時42分のコードから抜粋しますね。

>If Found = 0 Then
>    MsgBox "見つかりません。"
>Else

'以下に、反転させる処理を追加します。

     txtbox.SelStart=Found-1
       'これが、反転させる開始位置です。

     txtbox.SelLength=Len(sFindText)
       'これが、反転させる長さです。

     txtbox.SetFocus
       'そして、反転させるためにフォーカスを当てます。

>    MsgBox "見つかりました。"
>End If

それから、FoundはLong型で無くても宜しいかと思います。
Integerでも大丈夫でしょう(多分)。


  2005-03-15 21:24:19  No: 120265

連続レスごめんなさい。
InStrの使い方間違ってました。

>>If Found = 0 Then
>>    MsgBox "見つかりません。"
>>Else

これじゃ、開始位置が文字列先頭の場合は見つけてもらえませんね。
正しくはこちらです。

If Found < 0 then
    MsgBox "見つかりません。"
Else

でした。ごめんなさい m(_ _)m


じゃんぬねっと  URL  2005-03-15 21:35:43  No: 120266

ふーむ、参考リンクと。

  テキストの選択開始点を取得または設定する
  http://jeanne.wankuma.com/tips/textbox/01-selstart.html

  テキストの選択文字数を取得または設定する
  http://jeanne.wankuma.com/tips/textbox/02-sellength.html

これでは、面倒なので、

  テキストの任意の場所を選択状態に設定する
  http://jeanne.wankuma.com/tips/textbox/04-select.html

を通常使用します。


  2005-03-15 21:44:27  No: 120267

あ、良いんだ。先にInStrで1引いてないから。

今試しに作ったサンプルでは、InStr使った時に引いてたんだ。
Found = InStr(sText, sFindText) - 1
っていう状態。

>Found = InStr(sText, sFindText)
今回は、これだったんですよね。0で良いのでした。
重ねてごめんなさい。

# じゃんぬねっとさん
# リンク戴きながら触れませんでした。ごめんなさい。


まさ  2005-03-15 23:04:50  No: 120268

影さん、じゃんぬねっとさん、ありがとうございました。
無事、検索できるようになりました。

#VBのバージョンを先に言っておくのを忘れていましたm(__)m
#VB6.0 でした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加