powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
18 сообщений из 18, страница 1 из 1
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37371954
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. на форме несколько текстовых полей, замаскированных под label-ы.
Когда я хожу табом (или мышкой) по этим полям, содержание (текст) выделяется целиком.
Код такой:
Код: plaintext
1.
2.
3.
Private Sub Edit1_GotFocus()
    Edit1.SelStart =  0 
    Edit1.SelLength = Len(Edit1.Text)
End Sub
Но при этом есть частный случай: когда текст длиннее поля.
Приведенный код скидывает "курсор" влево и соотв. правая часть текста не читается.
Желательно (из здравого смысла) чтобы отображалась таки начало текста, а не конец.
Мышкой так выделить можно (справа налево).
Вообще-то у Microsoft-овских окон (откуда идея и содрана), курсор таки в этой фичи оказывается в конце.
Но тем не менее, м.б. есть легкий путь подправить?
Долго объяснять, проще глянуть, тест во вложении.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37371970
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ерунда какая-то,
даже если вместо
Код: plaintext
1.
2.
3.
Private Sub Edit5_GotFocus()
    Call SendMessage(Edit5.hwnd, _
                     EM_SETSEL, ByVal  0 , ByVal Len(Edit5.Text))
End Sub
делать (типа от большего к меньшему, справа налево)
Код: plaintext
1.
2.
3.
Private Sub Edit5_GotFocus()
    Call SendMessage(Edit5.hwnd, _
                     EM_SETSEL, ByVal Len(Edit5.Text), ByVal  0 )
End Sub
то не лечится.
http://msdn.microsoft.com/en-us/library/bb761661(v=vs.85).aspx
Edit controls: The control displays a flashing caret at the end position
regardless of the relative values of start and end.
Вот и думай шо они под концом розумиют.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37372933
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Приведенный код скидывает "курсор" влево и соотв. правая часть текста не читается.
Хотел сказать -курсор справа от текста (в конце выделения); а левая часть (начало текста) оказывается скрыта
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373217
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

может, поставить число, определяющее максимальное количество видимых символов. например, А = 10. если число символов в text1.text больше А, то text1.text = Mid(text1.text , 1, 10). затем, когда таб ушёл дальше, вернуть исходный текст в текстбокс
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373485
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

То что вы предлагаете, того не стоит и приведет к куче глюков.
Например, команда "Copy" скопирует текст не целиком.
Проще оставить как есть (это не очень значащее окно типа Property),
тем более выхода за границы поля обычно таки не происходит.
Вставлять туда другие элементы типа multiline textbox я не хочу, ибо "каноничность" вида окна будет нарушена (хотя конечно список едитов, где это таки может случиться известен).
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373498
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77форме несколько текстовых полей, замаскированных под label-ы.Дмитрий77частный случай: когда текст длиннее поля.
Я может гундю не по делу
Но если текстовые поля изображают метки, то ситуация, когда текст в них не влазит разве допустима в принципе?
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373504
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZero,

Как я упомянул, для того чтобы "ручками" сделать желаемое состояние, надо.
1) Стать мышкой в конец текста
2) Нажать левую кнопку, протянуть мышь в начало текста и
3) отпустить
Тогда flashing caret будет стоять в начале текста, весь!!! текст выделен, и начало текста видимо.
Т.е. данное желаемое состояние вполне законно.
Вы же предлагаете подменить желаемое сомнительной манипуляцией с текстом.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373505
Фотография BelowZero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77То что вы предлагаете, того не стоит. Проще оставить как есть
тогда зачем создавать топик, если усложнение кода вы ставите выше решения задачи?
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373515
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

В Microsoft-овсих прогах это часто используется.
Откройте свойства любого файла скажем Рабочий стол+ еще вхоженные папки.
Поле Размещение: там текстбокс как у меня.
Насчет выделения по TAB пример не удачен, Хороший пример: напр. в "свойствах" факсов в Microsoft Fax
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373519
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дим, как тебе такой вариант?
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Edit1_GotFocus()

Edit1.SelStart = Len(Edit1.Text)
SendKeys "+{HOME}"

End Sub
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373529
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelowZeroтогда зачем создавать топик, если усложнение кода вы ставите выше решения задачи?
BelowZero, я не против усложнения кода, но я против извращений, а именно это вы и предложили.

Пример подобного извращения здесь:
/topic/736404&hl=slider
А достаточно было манифеста. Я потом кучу времени потратил, чтоб эту ересь убрать из кода.

Так что если не знаете (я тоже не знаю) как программно хотя бы
Код: plaintext
 1 ) Стать мышкой в конец текста\n 2 ) Нажать левую кнопку, протянуть мышь в начало текста и\n 3 ) отпустить
лучше не советуйте.

Shoker.Pro, спасибо, идею с SendKey понял, хотя и не люблю я его "As is..". Посмотрю в вскр., сейчас уже времени нет.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37373531
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эти два вопроса
1) Стать мышкой в конец текста
2) Нажать левую кнопку, протянуть мышь в начало текста и
Они сложны именно в тестбоксе???
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374097
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДим, как тебе такой вариант?
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Edit1_GotFocus()

Edit1.SelStart = Len(Edit1.Text)
SendKeys "+{HOME}"

End Sub

Если по TAB, то эффект типа достигается, но если ткнуться мышкой, то нет.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374111
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Если по TAB, то эффект типа достигается, но если ткнуться мышкой, то нет. ха.
ну я хочу обратить твое внимание, что изначальный твой код:
Код: plaintext
1.
2.
3.
Private Sub Edit1_GotFocus()
    Edit1.SelStart =  0 
    Edit1.SelLength = Len(Edit1.Text)
End Sub
с мышкой тоже криво себя ведет.

Так что тут тебя спасет только мой код по таймеру... ой какое извращение

Или сабклассить, убивать мышиные клики.... ой... ну это тебе уже виднее
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374349
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proну я хочу обратить твое внимание, что изначальный твой код:
Код: plaintext
1.
2.
3.
Private Sub Edit1_GotFocus()
    Edit1.SelStart =  0 
    Edit1.SelLength = Len(Edit1.Text)
End Sub
с мышкой тоже криво себя ведет.
При переходе из другого поля мышкой он криво себя не ведет.
Текст выделяется и может быть скопирован целиком .
Отличий от таба нет.

Shocker.ProТак что тут тебя спасет только мой код по таймеру... ой какое извращение
Или сабклассить, убивать мышиные клики.... ой... ну это тебе уже виднее
Это да, извращения все.
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374353
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77При переходе из другого поля мышкой он криво себя не ведет.
Текст выделяется и может быть скопирован целиком .
Отличий от таба нет.у меня получается при клике мышкой вот так.
Причем видно, что сначала текст выделяется целиком, а потом частично
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374384
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Если по TAB, то эффект типа достигается, но если ткнуться мышкой, то нет.можно задублировать спецом для мыши
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Edit1_Click()

Edit1.SelStart = Len(Edit1.Text)
SendKeys "+{HOME}"

End Sub
Private Sub Edit1_GotFocus()

Edit1.SelStart = Len(Edit1.Text)
SendKeys "+{HOME}"

End Sub
...
Рейтинг: 0 / 0
TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
    #37374469
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proу меня получается при клике мышкой вот так.
Причем видно, что сначала текст выделяется целиком, а потом частично
Не могу это подтвердить.
Как своим примером (в начале),
так и элементарным примером с одной кнопкой и одним default-textbox-ом, как на вашей картинке.
Может какую-то роль играют настройки/драйвера мыши (вспомните, была темка),
я использую default -настроенный стандартный драйвер.
Shocker.Proможно задублировать спецом для мыши
Можно, но "непрофессиональный стиль" налицо. То что вы делаете визуально заметно. Плюс у вас нет возможности мышью выделить "кусок" текста (для напр. копирования), даже не получится нормально прочесть правую часть.

Ну если честно, я уже для себя принял решение оставить код как он есть в моем примере(я не 2 дня назад его придумал).
Нравится-не нравится, но это "по стандарту" Microsoft.
Элементарный еще один пример: адресная строка сверху в IE.
Уменьшите ширину окна IE и ткнитесь (мышкой или табом) в строку, где адрес этой страницы. Адрес будет выделен целиком и правый край с курсором будет видимым.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / TextBox. Выделить весь текст(не вмещается),но при этом чтоб видеть правую часть
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]