Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как программно убрать горизонтальную прокрутку? В TextBox 
:(
    Опции темы
korob2001
Дата 11.12.2004, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Привет!
Возникла такая проблема:
Есть многострочное текстовое поле txtField. Пераметр ScrollBars = Both.
После пользователь должен иметь возможность изменить его на Vertical.
Пытаюсь сделать так:
Код

Private Sub mnuRepl_Click()
       If mnuRepl.Checked Then
          txtField.ScrollBars = vbVertical
          mnuRepl.Checked = False
       Else
          txtField.ScrollBars = vbBoth
          mnuRepl.Checked = True
       End If
End Sub

Получаю ошибку. Что данный параметр доступен только для чтения. smile((
Как быть?

Это сообщение отредактировал(а) korob2001 - 11.12.2004, 21:37


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Naghual
Дата 12.12.2004, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Точно. При выполнении программы это свойство доступно только для чтения. Его можно изменять только в режиме разработки.
Но можно это ограничение обойти - при помощи АПИ.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
korob2001
Дата 12.12.2004, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

Точно. При выполнении программы это свойство доступно только для чтения. Его можно изменять только в режиме разработки.
Но можно это ограничение обойти - при помощи АПИ.

Если можно, поточнее.

Вобщем посмотреть, то чего хочу я добиться, можно запустив Блокнот, затем нужно выбрать команду "Перенос по словам", меню "Формат".


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Naghual
Дата 12.12.2004, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Извольте. (Авторство сохранено)
Код
'example by Matthew Gates ([email protected])
Private Declare Function ShowScrollBar Lib "user32" (ByVal hwnd As Long, ByVal wBar As Long, ByVal bShow As Long) As Long
Private Const SB_HORZ = 0
Private Const SB_VERT = 1
Private Const SB_BOTH = 3
Private Sub Form_Load()
   'preset the textbox to multiline
   'and since the ScrollBars property is
   'read-only during runtime, you can use this
   'API function to set the Scrollbars
   'This examples shows how to show both horizontal and
   'vertical scrollbars on a textbox during runtime
   ShowScrollBar Text1.hwnd, SB_BOTH, True
End Sub


Тебе необходимо только установить необходимую константу при вызове функции.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
korob2001
Дата 12.12.2004, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Naghual - большое спасибо.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Naghual
Дата 12.12.2004, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Всегда пожалуйста. smile


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
korob2001
Дата 14.12.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Всё работает, только вот переноса по словам так и нет. smile((((


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Akina
Дата 14.12.2004, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(korob2001 @ 14.12.2004, 12:29)
Всё работает, только вот переноса по словам так и нет.

Попробуй Repaint/Refresh... должОн быть...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Naghual
Дата 14.12.2004, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Есть такое решение:
1. При разработке формы, установи ScrollBars в Horizontal.
2. В Form_Load, через АПИ, установи ScrollBars в Both.
Ну а потом уже по программе.




--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
korob2001
Дата 15.12.2004, 04:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

Попробуй Repaint/Refresh... должОн быть...

Не понял, где должен быть? Если не трудно, поясни.
Цитата

Есть такое решение:
1. При разработке формы, установи ScrollBars в Horizontal.
2. В Form_Load, через АПИ, установи ScrollBars в Both.
Ну а потом уже по программе.

ОК.
При разработке устанавливаю ScrollBars в Horizontal.
Затем в процедуре Form_Load устанавливаю ScrollBars в Both. Всё нормально проходит и в конечном итоге TextBox с двумя полосами прокрутки. Пробую напечатать текст в текстовом поле, текст как положено работает, т.е. не переносится на следующую строку когда достигает правого края текстового поля. Пока всё нормально, но когда я жму кнопку "Перенос по словам",
то горизонтальная полоса прокрутки исчезает, но переноса по словам так и нет, тоесть строка как была длинной, так и осталась.

Вот процедура обработчика события Click кнопки "Перенос по словам
Код

Private Sub mnuRepl_Click()
       If mnuRepl.Checked Then
          ShowScrollBar txtField.hwnd, myHz, True
          mnuRepl.Checked = False
       Else
          ShowScrollBar txtField.hwnd, myHz, False
          mnuRepl.Checked = True
       End If
End Sub

Где:
myHz - константа для горизонтальной полосы прокрутки.
Просто все контанты, которые не начинаются с vb, я делаю с начальными символами my.

Может я делаю что-то не так в обработчике Click?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Akina
Дата 15.12.2004, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Хочешь идиотское решение? Делаешь ДВА контрола - один с горизонтальной полосой прокрутки и переносом, второй - без. По мере необходимости копируешь контент, устанавливаешь куда надо курсор и переключаешь визибилити.

Это сообщение отредактировал(а) Akina - 15.12.2004, 11:08


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
korob2001
Дата 15.12.2004, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

Хочешь идиотское решение?

smile
Да, решение не самое лучшее, но всё же.
На чём написан блокнот, не на VB?


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Naghual
Дата 15.12.2004, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Код
Private Sub mnuRepl_Click()
   Dim strText as String
   
   strText = txtField.Text
   txtField.Text = ""
   If mnuRepl.Checked Then
       ShowScrollBar txtField.hwnd, myHz, True
       mnuRepl.Checked = False
   Else
       ShowScrollBar txtField.hwnd, myHz, False
       mnuRepl.Checked = True
   End If
   txtField.Text = strText
End Sub


Как тебе такой код?

ЗЫ: А у Akina отличное решение.

Это сообщение отредактировал(а) Naghual - 15.12.2004, 15:39


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Naghual
Дата 16.12.2004, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



korob2001 Ну как успехи?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
korob2001
Дата 16.12.2004, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Результат тот же. smile(((


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.