GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Ciao a tutti!
Per ricercare un testo all'interno della textbox io uso la funzione Instr() tipo:
if Instr(1, text1.text, "Ciao") > 0 then
msgbox "Ciao"
end if
solo che se trova ciao si ferma e se magari ce ne un altro dopo non lo rileva quindi al posto di venire 2 msgbox con scritto "Ciao" ne viene una e basta. Come posso fare che anche se trova la parola datagli continui a ricercare altre possibili parole?
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Devi usare sempre la Instr, in un ciclo, variando opportunamente il primo parametro.
All'inizio del ciclo il primo parametro della Instr sara' uguale a 1, la seconda volta sara' eguale al valore restituito dalla Instr+1 (se ha avuto successo) e cosi' via ...
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Grazie infinite!!!!!!!!!
Funziona!!
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Di nulla ... era cosi' sin dal Quick Basic ...
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Grazie ancora di tutto...Ma un'ultima cosa...
Come posso fare che quando finisce di trovare tutti gli elementi rinizi da capo?
cioè per esempio:
Codice sorgente - presumibilmente VB.NET |
Dim I As Integer Private Sub Command1_Click() If InStr(I, Text1.Text, "ciao") > 0 Then Text1.SetFocus Text1.SelStart = InStr(I, Text1.Text, "ciao") I = (InStr(I, Text1.Text, "ciao") + 1) End If End Sub Private Sub Form_Load() I = 1 End Sub
|
Se nella text1 ci metto:
ciao
asd
ciao
prova
ciao
Ogni volta che premo il pulsante mi mette il cursore del mouse sulla parola tipo:
(Prima volta che spingo il command)
c|iao
asd
ciao
prova
ciao
(seconda volta che premo il command)
ciao
asd
c|iao
prova
ciao
(3° volta)
ciao
asd
ciao
prova
c|iao
Però poi dopo va "oltre", invece come posso fare che riinizi dal primo?
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
AH no!
ASp
Risolto!
ecco qui x ki gli interessasse:
Codice sorgente - presumibilmente VB.NET |
Dim I As Integer Private Sub Command1_Click() If InStr(I, Text1.Text, "ciao") > 0 Then Text1.SetFocus Text1.SelStart = InStr(I, Text1.Text, "ciao") I = (InStr(I, Text1.Text, "ciao") + 1) Else I = 1 End If End Sub Private Sub Form_Load() I = 1 End Sub
|
|
|
antometal (Member)
Guru
Messaggi: 691
Iscritto: 12/09/2007
|
se ti interessa puoi anche selezionare la parola cercata
Codice sorgente - presumibilmente Plain Text |
Text1.SelStart = InStr(I, Text1.Text, parola) - 1
Text1.SetFocus
Text1.SelLength = len(parola)
|
al posto di
Codice sorgente - presumibilmente Plain Text |
Text1.SetFocus
Text1.SelStart = InStr(I, Text1.Text, "ciao")
|
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Oppure cosi'
Codice sorgente - presumibilmente VB.NET |
Private Sub Command1_Click() Dim p As Long Static i As Long p = InStr(i + 1, Text1.Text, "ciao") If p Then Text1.SelStart = p Text1.SetFocus i = p Else i = 0 End If End Sub
|
senza altro codice
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Lol è sorto un'altro problema (spero sia l'ultimo)...
Non riesco a selezionare il testo...
Esempio:
Codice sorgente - presumibilmente VB.NET |
Dim I As Integer Private Sub Command1_Click() If InStr(I, Text1.Text, "ciao") > 0 Then Text1.SetFocus Text1.SelStart = (InStr(I, Text1.Text, "ciao") - 1) Text1.SelLength = (InStr(I, Text1.Text, "-") - 1) I = (InStr(I, Text1.Text, "ciao") + 1) Else I = 1 End If End Sub Private Sub Form_Load() I = 1 End Sub
|
Se nella text1 metto:
ciao
------
asd
asd
ciao
-------
asdasd
ad
ciao
------
132
Premendo il command la prima e la seconda volta seleziona tutto come deve...Ma alla 3° volta ke premo il command seleziona non Ciao ma:
ciao
------
132
perchè?
Come posso rimediare?
Grazie a tutti
|
|