Как определить длинну строки незав. от введенных символов?

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

Как определить длинну строки незав. от введенных символов?

Сообщение GreenT » 14.10.2003 (Вт) 18:14

Господа программисты, возникла такая проблемма.

Есть текстовое поле Text1.
Есть лейбл Lable1.
При наборе в текстбоксе, через событие change, текст в лейбле меняется и принимает значение текста введенного в текстбоксе.

Требуется: проконтролировать длинну введенной строки. Она не должна вылазить за пределый лейбла.

Просто ограничить количество введенных символов неполучается, поскольку 10 точек по длинне намного короче чем, например, 10 букв "X".

Что делать????

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 14.10.2003 (Вт) 19:24

А что нельзя ограничить "По максинуму" влазит допустим 10 букв Ж вот и ограничить 10ю символами (10 точек по любому влезет)? Можно при введении каждой буквы сканировать критическую область на наличие черного цвета, и если есть то больше писать не давать. Это дубово, но первое что в башку пришло.

GreenT
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 17.08.2003 (Вс) 13:42

Сообщение GreenT » 14.10.2003 (Вт) 19:36

А что нельзя ограничить "По максинуму" влазит допустим 10 букв Ж вот и ограничить 10ю символами (10 точек по любому влезет)?


Можно... но что получается... он введет 10 точек, строка еще не дойдет до конца, а уже будет запрет на ввод.

А нужно именно определить что больше символов в строку не входит.

GAGArin
Неистовый флудер
Неистовый флудер
 
Сообщения: 1777
Зарегистрирован: 23.12.2002 (Пн) 12:46
Откуда: я тут взялся, не знаю...

Сообщение GAGArin » 14.10.2003 (Вт) 19:42

Тогда вариант 2 , шучу лучше такую муру не делать. Работать то будет, но как :wink: Может есть какие нить свойства у текстбокса, но это не ко мне я VB запускал последний раз месяц назад и то на 2 дня.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 14.10.2003 (Вт) 19:58

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

Private Sub Form_Load()
    Set Me.Font = Label1.Font
End Sub

Private Sub Text1_Change()
    Label1.Caption = Text1.Text
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
   
    Dim txt As String
   
    If (KeyAscii <> 8) Then 'BackSpace
       
        With Text1
            txt = Mid$(.Text, 1, .SelStart) & Chr$(KeyAscii) & Mid$(.Text, .SelStart + .SelLength + 1)
        End With
       
        If (TextWidth(txt) > Label1.Width) Then KeyAscii = 0
       
    End If
   
End Sub

GreenT
Новичок
Новичок
 
Сообщения: 39
Зарегистрирован: 17.08.2003 (Вс) 13:42

Сообщение GreenT » 15.10.2003 (Ср) 18:23

skiperski гениально =) спасибо. Все работает.


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

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

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

    TopList  
cron