Bonjour André,
You could have a look at the way by which this problem is handled in
the IDE (searching in a script): the answer is there :-)
For your convenience:
function FindNext pDoSelect -- returns a boolean according to a
successful next find
local
tTerminators,tCaseSensitive,tFirstSkip,tOcs,tOffset,tNotFound,tOChar
-----
put false into lDidFind
set the hScroll of fld "Result" to 0
put quote & ",. <>:;$&[]\|()[EMAIL PROTECTED]" & cr into tTerminators
put the caseSensitive into tCaseSensitive
set the caseSensitive to false
put true into tNotFound
if word 1 of fld "Result" <> "Index" then put 0 into tFirstSkip
else put the number of chars of line 1 to lineOffset
(" ",fld "result") of fld "Result" into tFirstSkip
if lStartChar = empty then put 0 into lStartChar
repeat while tNotFound
put offset(field "Find", field "Result", lStartChar) into tOffset
if tOffset is 0 and lStartChar is not 0 then
put offset(field "Find", field "Result") into tOffset
if tOffset >= lStartChar then put 0 into tOffset
put 0 into lStartChar
beep
end if
add tOffset to lStartChar
if tOffset is 0 or lStartChar is tOChar then return false
if tOChar is empty then put lStartChar into tOChar
if the uHilite of button "WholeWord" then
if char (lStartChar - 1) of field "result" is in tTerminators
and char (lStartChar + the length of field "find") of field "Result"
is in tTerminators then
put false into tNotFound
end if
else
put false into tNotFound
end if
end repeat
if pDoSelect then
if lStartChar < tFirstSkip then
set the caseSensitive to tCaseSensitive
get FindNext(true)
else select char lStartChar to (lStartChar + the length of field
"find" - 1) of field "Result"
end if
put true into lDidFind
set the caseSensitive to tCaseSensitive
return true
end FindNext
Best Regards from Paris,
Eric Chatonet
Le 4 févr. 06 à 15:29, André.Bisseret a écrit :
I have a background field that displays different texts on the
different cards of the background.
I need to find all the occurrences of one word (or string) on one
card only, in order to highlight each occurrence (set the
backgroundColor).
So, when there is no more occurrence of a word on the current card,
I must prevent the find to proceed on following cards.
Here is my current solution :
----------------
on highlightString thisCard
Global myWords -- several words or strings separated by commas
put the name of this cd into currentCard
repeat for each item i in myWords
repeat
find whole i
if the name of this cd is currentCard then
set the backgroundColor of the foundText to "Burlywood1"
else
go to currentCard
exit repeat
end if
end repeat
end repeat
end highlightString
------------------
Seems to work but not very nice ! because each time the "find"
proceeds to another card I must « lead it back » to the right card
(« go to currentCard »).
It seems to me that using « offset » would lead to a rather heavy
handler :-((
------------------------------------------------------------------------
----------------------
http://www.sosmartsoftware.com/ [EMAIL PROTECTED]/
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution