Ну почему?..

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

Ну почему?..

Сообщение xqz_me » 06.06.2006 (Вт) 19:51

Обяснините, Бога ради, мне глупому, почему при включённом таймере каретка в richtextbox (имя - tmp) перескакивает в конец текста! Я хочу что бы
1. если пользователь начал выделять текст, то каретка не перескакивала ни при каком условии,
2. если пользователь установил каретку в любом месте и в контрол не поступило новых данных (mscomm1.input=""), то она там и осталась
3. если пользователь не выделяет, а текст изменился (len(mscomm.input)>0) то каретка перескачила в конец текста.

Собственно, все условия есть в моём коде, но он почему-то не работает... Плдскажите, в чём я не прав.
Вложения
terminal.rar
!!!
(10.09 Кб) Скачиваний: 144

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

Сообщение tyomitch » 06.06.2006 (Вт) 21:16

Слишком много буков!
Нельзя ли урезать пример до минимально глючного варианта?
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.06.2006 (Вт) 21:47

Смотри событие таймера. Если выключить таймер проблемы нет.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.06.2006 (Ср) 12:47

Кно-нибудь подскажет?

JumpingJack
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 61
Зарегистрирован: 25.01.2006 (Ср) 12:54

Сообщение JumpingJack » 07.06.2006 (Ср) 13:03

Замени на:

Код: Выделить всё
Private Sub Timer1_Timer()
On Error GoTo error
If MSComm1.PortOpen = True Then val = CStr(MSComm1.Input)

If val <> "" And MSComm1.PortOpen = True Then
   tmp.Text = tmp.Text + val

   If Len(tmp.SelText) = 0 Then
   'tmp.SelStart = Len(tmp.Text)
   End If
End If
val = ""
Exit Sub 'Этого небыло
error: geterror

End Sub


У тебя обработчик ошибок даже без ошибок выполнялся. А в нем курсор в конец ставился

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.06.2006 (Ср) 13:18

Понял. спасибо. :)

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

Сообщение GSerg » 07.06.2006 (Ср) 13:25

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

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.06.2006 (Ср) 14:44

Два раза xqz_me делал топик-ап, и два раза я его удалял. Видимо, намёков товарищ не понимает, раз сделал это в третий.


Если честно, я думал, что форум глючит. :oops:


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 13

    TopList