Установка property let Multiline TextBox в OCX контроле

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

Установка property let Multiline TextBox в OCX контроле

Сообщение ФАНТОМНЫЙ ЮЗЕР » 19.09.2004 (Вс) 23:17

Подскажите, пожалуйста, как при помощи API-функций установить режим многострочного/однострочного текста, а также ScrollBar.

Спасибо.

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

Сообщение tyomitch » 20.09.2004 (Пн) 0:07

Афаик невозможно - это возможно задать только при создании окна.
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 10:27

Ну почему же нельзя - можно, конечно:
Код: Выделить всё
EM_MULTILINE

И вообще, все, что можно выставить через CreateWindowEx, впоследствии прекрасно меняется через SetWindowLong :)

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

Сообщение tyomitch » 20.09.2004 (Пн) 16:17

Ennor, во-первых, ES_MULTILINE
Во-вторых, так написал Аппельман; правда, я уже и не знаю, верить ему или нет.
А в третьих, ты сам-то пробовал? Вот этот код -
Код: Выделить всё
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const ES_MULTILINE = &H4&
Private Const GWL_STYLE = (-16)

Private Sub Form_DblClick()
SetWindowLong Text1.hWnd, GWL_STYLE, GetWindowLong(Text1.hWnd, GWL_STYLE) Or ES_MULTILINE
End Sub

- не работает. Так ты уверен, что тип текстбокса можно менять на ходу, или просто так подумал?
Изображение

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 20.09.2004 (Пн) 16:23

Если не жалко текстбоксов, сделай два (один - multiline, другой - нет) и указатель на активный. Неактивный - unvisible.

Я так делал, и по-моему в notepad.exe та же история с .ScrolBar
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 16:28

Насчет ES_... - это да, маханул. Почему-то взбрело, что это должно быть оконное сообщение :).

Я сталкивался со случаями, когда однократный вызов SetWindowLong() не отрабатывал как надо. Либо помогал повторный вызов тут же, по месту употребления, либо приходилось внимательнее ковырять флаги, либо сделать рефреш, либо Hide/Show, либо еще какую-нить чушь в этом духе. Как правило, помогало :) Конкретно этот пример я конечно не пробовал, но скорее всего это сделать можно. Попробую на досуге...

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

Сообщение tyomitch » 20.09.2004 (Пн) 16:42

SHURUP писал(а):Если не жалко текстбоксов, сделай два (один - multiline, другой - нет) и указатель на активный. Неактивный - unvisible.

Я так делал, и по-моему в notepad.exe та же история с .ScrolBar

Именно так - в notepad.exe два текстбокса. Авторитетно подтверждаю :-)
Изображение

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 16:44

tyomitch писал(а):Именно так - в notepad.exe два текстбокса. Авторитетно подтверждаю :-)

Сам писал? :)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.09.2004 (Пн) 16:49

Скорее всего проверял шпионом :)
Но честно говоря, усомнюсь. Всего делов-то, удалить окно и создать новое -- это проще, чем создавать два текстбокса.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.09.2004 (Пн) 16:52

Только что проверил - именно так там и делается. Старое грохается, новое создается... По крайней мере в ХР.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 20.09.2004 (Пн) 17:00

Ennor писал(а):Только что проверил - именно так там и делается. Старое грохается, новое создается... По крайней мере в ХР.


Вот так она и решается (проблема oal), выбрал те свойства, какие надо, рухнул старое, создал новое.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

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

Сообщение tyomitch » 20.09.2004 (Пн) 17:20

Ennor писал(а):Только что проверил - именно так там и делается. Старое грохается, новое создается... По крайней мере в ХР.

Упс, точно :oops:
А я шпионом посмотрел - хэндл меняется при клике на "Word Wrap", и подумал - видать, два окна...
Изображение

ФАНТОМНЫЙ ЮЗЕР
Обычный пользователь
Обычный пользователь
 
Сообщения: 50
Зарегистрирован: 27.12.2007 (Чт) 20:08
Откуда: phpbb_users

Сообщение ФАНТОМНЫЙ ЮЗЕР » 24.10.2004 (Вс) 19:52

Спасибо всем, я нашел исходник текстового контроля на сайте vbAccelerator.

Всем огромное спасибо, Андрей.
Вложения
vbAccelerator vb6 Enhanced TextBox Test.rar
Исходник расширенного TextBox
(135.83 Кб) Скачиваний: 39


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

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

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

    TopList