Проблемы в TextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Проблемы в TextBox

Сообщение Sun07 » 16.05.2006 (Вт) 0:52

В процедуре Change простого текстбокса пишу textbox1.text=UCASE(textbox1.text). При вводе букв курсор в текстбоксе всегда остаётся в начале строки, а надо чтобы был в конце. Как решить проблему?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.05.2006 (Вт) 1:01

textbox1.selstart=len(textbox1.text)
Изображение

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 16.05.2006 (Вт) 12:54

Спасибо. Странно, что установка курсора происходит через установку выделения текста...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.05.2006 (Вт) 13:15

Сделай так, чтобы курсор в текстбоксе не принадлежал выделенной области, и я признаю, что действительно, странно, что установка курсора происходит через установку выделения текста.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 16.05.2006 (Вт) 13:46

tyomitch, а что если человек вписывает символы в середину строки?

Надо так

Код: Выделить всё

Dim tempSelStart   As Long
Dim tempSelLength As Long

tempSelStart  = TextBox1.SelStart
tempSelLength = TextBox1.SelLength

Text1.Text = UCase(Text1.Text) ' Тут также может быть любой код для
                                                 'обработки строки

TextBox1.SelStart  = tempSelStart
TextBox1.SelLength = tempSelLength

'Unset tempSelStart
'Unset tempSelLength

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.05.2006 (Вт) 14:40

Sun07 писал(а):Спасибо. Странно, что установка курсора происходит через установку выделения текста...

Ну сэкономили немного на свойствах.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.05.2006 (Вт) 17:29

alibek писал(а):Ну сэкономили немного на свойствах.

Это не экономия, это нормализация. Иначе избыточность получается, а где избыточность, там неоднозначность.

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 17.05.2006 (Ср) 1:02

Спасибо Хакеру!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.05.2006 (Ср) 8:03

Ennor писал(а):Это не экономия, это нормализация.

Не согласен :)
Например, я хочу выделить фрагмент текста в текстовом поле, и при этом хочу, чтобы курсор был в начале фрагмента.
Вручную это сделать можно -- надо начинать выделение с конца (например, Shift+Left). Из кода этого не сделать.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 17.05.2006 (Ср) 9:27

Sun07 писал(а):Спасибо Хакеру!


И можешь это оформить в отдельной процедуре:
Код: Выделить всё

Private Sub Text1_Change()
'    TextBoxFormat Text1, "#,##0.00"
    TextBoxFormat Text1, ">"
End Sub

Private Sub TextBoxFormat(tx As TextBox, sFmt As String)
    Dim i As Integer, j As Integer, s As String
   
    s = Format$(tx.Text, sFmt)
    If s = tx.Text Then Exit Sub
    i = tx.SelStart
    j = tx.SelLength
    tx.Text = s
    tx.SelStart = i
    tx.SelLength = j
End Sub
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 139

    TopList