[Gambas-user] ERRATUM: Problem to use a TextArea
linus
linuxos at ...1896...
Wed Apr 28 01:09:31 CEST 2010
Hi all,
I'm using a TextArea in a little project like a Text Editor.
When I add the part of code to search in the text of this TextArea, I
have a problem during search text whith the command 'instr'.
In fact, when this command find accented characters, it count 2
characters instead of 1 and the position of the search at the end it
false.
Does any body have an explication about this problem please ?
Joined the code to search in the TextArea
---------------------------------------------------------------------
Public SAVMARKER as Interger
Public Button1_Click()
SearchTextInEditor(1)
End
PUBLIC SUB SearchTextInEditor(MODE AS Integer)
' MODE: 0 => From the beginning of the text
' MODE: 1 => After the last search
DIM IndexCarac AS Integer
DIM CaracTexte AS String
DIM IndexRecherche AS Integer
DIM LongueurRecherche AS Integer
TextBox39.Text = Replace(TextBox39.Text, "\"", "")
TextBox40.text = Replace(TextBox40.text, "\"", "")
IF TextArea1.Length > 0 THEN
IF TextBox39.text = "" THEN
Message.Warning(("Please entrer text to search !"), ("Close"))
RETURN
END IF
Application.Busy = 1
SELECT CASE MODE
CASE 0
' search from the beginning of the text
SAVMARKER = 0
IF ToggleButton5.Value = TRUE THEN
' Use the case sensitive
IndexRecherche = InStr(TextArea1.Text, TextBox39.Text,
SAVMARKER, gb.Text)
ELSE
' No case sensitive
IndexRecherche = InStr(Lower$(TextArea1.Text), Lower
$(TextBox39.Text), SAVMARKER, gb.Text)
END IF
IF IndexRecherche > 0 THEN
TextArea1.Select(IndexRecherche - 1, Len(TextBox39.Text))
TextArea1.EnsureVisible()
SAVMARKER = IndexRecherche + Len(TextBox39.Text)
PRINT "IndexRecherche=" & IndexRecherche
IF SAVMARKER > TextArea1.Length THEN
SAVMARKER = TextArea1.Length
END IF
LongueurRecherche = Len(TextBox39.Text)
ELSE
Application.Busy = 0
Message.Info(("Search finished. End of list attained."),
("Close"))
RETURN
END IF
CASE 1
' Search following ...
IF ToggleButton5.Value = TRUE THEN
' Use the case sensitive
IndexRecherche = InStr(TextArea1.Text, TextBox39.Text,
SAVMARKER, gb.Text)
ELSE
' Ne pas tenir compte de la casse
IndexRecherche = InStr(Lower$(TextArea1.Text), Lower
$(TextBox39.Text), SAVMARKER, gb.Text)
END IF
IF IndexRecherche > 0 THEN
TextArea1.Select((IndexRecherche - 1), Len(TextBox39.Text))
SAVMARKER = IndexRecherche + Len(TextBox39.Text)
IF SAVMARKER > TextArea1.Length THEN
SAVMARKER = TextArea1.Length
END IF
ELSE
Application.Busy = 0
Message.Info(("Search finished. End of list attained."),
("Close"))
RETURN
END IF
END SELECT
END IF
Application.Busy = 0
END
-----------------------------------------------------------------------------
Thank you in advance.
--
Olivier CRUILLES
Email: linuxos at ...1896...
More information about the User
mailing list