SelStart и SelLength

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

SelStart и SelLength

Сообщение Sun07 » 12.09.2006 (Вт) 13:29

Написал я однажды:
text1.SelLength=3
text1.SelStart=1
длина текста была достаточной (есть где разгуляться), но выделения я не увидел.

Помучавшись, порывшись в книге, решил написать:
text1.SelStart=1
text1.SelLength=3
появилось выделение. Почему так? Ведь в первом варианте SelLength не обнуляется после установки SelStart?

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

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

Потому что здравый смысл.

Потому что не начертить циркулем круг если
сначала провернуть его, а только потом поставить иглой в центр окружности.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: SelStart и SelLength

Сообщение Viper » 12.09.2006 (Вт) 14:22

В цитаты!!!! :D
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение Sun07 » 12.09.2006 (Вт) 14:48

я так понимаю, после установки SelStart ожидается новая установка SelLength, не взирая на ранее установленную эту величину. По моему, это странно.

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 12.09.2006 (Вт) 14:50

Ничего странного. Сначала старт, потом финишь. Но не наоборот.
Выделение идет слева направо.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.09.2006 (Вт) 15:08

Для осмысления можно попробовать поэкспериментировать с таким вот кодом:

Код: Выделить всё
Text1.SelStart = 5
Text1.SelLength = 5
Text1.SelLength = 10


устанавливая комменты на разные строки. Естественно длина текста должна быть достаточной
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение Sun07 » 12.09.2006 (Вт) 16:21

lister писал(а):Ничего странного. Сначала старт, потом финишь. Но не наоборот.
Выделение идет слева направо.
Почему ты решил, что не было старта перед SelLength? Ведь SelStart был установлен в некую величину перед моей установкой SelLength. Т.е. выделение должно по идее появиться сперва, а потом должно просто переопределиться с установкой нового SelStart :)

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

Сообщение Sun07 » 12.09.2006 (Вт) 16:28

а почему так происходит - выделение просто снимается перед установкой нового SelStart, т.к. при этом происходит перемещение курсора, а при простом перемещении курсора выделение снимается. Вот что я рад был бы от вас услышать, но пришлось самому догадаться. :)

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 12.09.2006 (Вт) 17:03

Sun07 писал(а):Почему ты решил, что не было старта перед SelLength? Ведь SelStart был установлен в некую величину перед моей установкой SelLength.

Изначально SelStart=0 и SelLength=0. Устанавливая SelLength = 3, ты выделяешь первые 3 символа. Затем ты ставишь SelStart=1 и тут же отменяешь выделение.
Sun07 писал(а):Т.е. выделение должно по идее появиться сперва, а потом должно просто переопределиться с установкой нового SelStart :)


У тебя получилось старт, финишь, снова старт, которым ты отменил выделение. Опять же повторюсь, выделение идет слева направо.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 12.09.2006 (Вт) 22:56

Код: Выделить всё
Private Sub Text1_Click()
    Text1.SelStart = 1
    Text1.SelLength = 5
    Text1.SelStart = 1
    Debug.Print Text1.SelLength
End Sub
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!


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

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

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

    TopList