Когда у Text1 возникает событие Change, содержимое поля копируется в Text2, после чего в нем(Text2) заменяются некоторые символы.
- Код: Выделить всё
[b]'Нужно было находить некоторые значения(их много) и заменять другими.
'Я не знал, как это сделать. И пошел напролом =)[/b]
Dim zz, reA, reB
'Если использовать просто For-Next, то цикл прогонялся один раз и заменялся только один символ.
'Тогда сделал так: в For-Next указал количество замен - zz(т.е. сколько раз прогоняется цикл), внутри которого ...
For zz = 1 To 2 Step 1:
'я вставил цикл Select-Case, где каждой заменяемой фразе - reA соответствовала заменяющая - reB
Select Case zz
Case 1
reA = "x"
reB = "<x>"
Case 2
reA = "y"
reB = "<y>"
End Select
'Получилось ну очень дуболомно...
'Таким образом, цикл For-Next прогонялся столько раз, сколько мне нужно произвести замен в тексте,
'при этом каждый раз перебирались значения переменной zz и соответсвующий текст заменялся...
Text2.SelStart = Text2.SelStart + 2
If InStr(Text2.SelStart, Text2.Text, reA) <> 0 Then
Text2.SelStart = InStr(Text2.SelStart, Text2.Text, reA) - 1
Text2.SelLength = Len(reA)
If Len(Text2.SelText) > 0 Then Text2.SelText = reB
End If
Next zz
'Собственно, весь алгоритм.
'Как оптимизировать, ума не приложу =)
Text1.text=Text2.text
'Затем измененный текст возвращается в Text1.
При этом возникает два вопроса:
1) Каким образом задать алгоритм, чтобы замена содержимого Text2 происходила с самого начала, а не с того места, где написан новый текст(т.е. где находится курсор)
2) Как реализовать замену по маске "mask1"TEXT"mask2".
Т.е. заменить mask1 и mask2, не трогая TEXT. В теории-то понятно, но на практике - когда слишком много переменных нужно заменить - возникает путанница.
Дабы не быть голословным - перевод кода ссылки из формата форумов(phpBB, YaBB) в обычный HTML
Вот, что есть:
- Код: Выделить всё
Private Sub URL_BUTTON_Change()
'Пользователь кликает на кнопочку
addr_url=InputBox("Address URL:", "http://")
'Вылетает окошко для ввода
addr_label=InputBox("Address title:", "Link")
'Вылетает еще одно окошко для ввода
Text1.Text = Text1.Text + "[url=" + addr_url + "]" + addr_label + "[/url]"
'Засовываем в текстбокс полученное...
Получится
- Код: Выделить всё
[url=addr_url]addr_label[/url]
Это нужно привести к виду <a href=addr_url>addr_label</a>
И как это сделать?
Можно, конечно, объявить переменные addr_label и addr_url как Public, но где гарантия, что пользователь не кликнет на эту кнопку еще раз? Или нужно создавать массив, куда записывать все эти переменные(а он разрастется до гигантских размеров)?
Подскажите...
PS: Прошу прощения, если все это уже было(наверняка было).
Просто хочется во всем детально разобраться, а без советов тут - никак.