Страница: 1 | 2 | 3 |
Вопрос: TextBox Locked
Добавлено: 17.09.04 21:25
Автор вопроса: Lister | ICQ: 298621256
Ответы
Всего ответов: 44
Номер ответа: 31
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #31
Добавлено: 06.10.04 06:40
люди! а почему бы не использовать не переменную, а Tag(!) сколько смотрю на некоторые коды, всё никак понять не могу - зачем об'являть лишнюю переменную, если для информации есть уже место.
2. при блокеровке Text'a, записывать его значение в Tag
Номер ответа: 32
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #32
Добавлено: 06.10.04 10:10
А я так и делаю именно Tag
Номер ответа: 33
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #33
Добавлено: 06.10.04 10:45
2Lister:
ты мой код попробовал? а то он вроде как решает твою задачу ) по крайней мере, мне изменить содержимое текстбокса не удалось никаким макаром...
Номер ответа: 34
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #34
Добавлено: 06.10.04 10:52
Comanche, твой код я не пробовал, но взял на заметку, т.к. вопрос этот был решен недели три назад
Номер ответа: 35
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #35
Добавлено: 06.10.04 10:58
Это, кстати, вообще не работает
Номер ответа: 36
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #36
Добавлено: 06.10.04 11:01
Не знаю, у меня всё работает )
Номер ответа: 37
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #37
Добавлено: 06.10.04 12:10
Ну а зачем же тогда весь остальной код, если EM_SETREADONLY работает?
Между прочим, в текстбоксе, созданном через АПИ, этот код будет лишним. Посмотри сам:
hEdit = CreateWindowEx( _
0, _
"edit", _
"test", _
WS_CHILD Or WS_VISIBLE Or ES_READONLY, _
35, _
25, _
200, _
200, _
Me.hwnd, _
0, _
App.hInstance, _
ByVal 0& _
 
Номер ответа: 38
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #38
Добавлено: 06.10.04 13:19
А ты этот "весь остальной код" (Text1_MouseDown и Text1_KeyDown) заремаркируй и посмотри, что будет. А будет возможным вставка из буфера обмена - и через Shift+Insert, и через контекстное меню.
EM_SETREADONLY блокирует только "прямой" ввод в текстбокс (без использования буфера обмена).
Номер ответа: 39
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #39
Добавлено: 06.10.04 13:57
А не проще ли тогда Text1.Locked=True поставить?
То же самое получается.
Я имел ввиду, говоря
"Ну а зачем же тогда весь остальной код, если EM_SETREADONLY работает", вот что:
если устанавливаешь EM_SETREADONLY с wParam=1, то никакие дополнительные действия по слежению за клавишами не нужны. А этого не получается, как получалось бы в текстбоксе, созданном вручную, через CreateWindowEx(). Что-то мелкософтовцы опять тут намудрили и недоделали VB
И я сейчас вижу только один простой выход - создать класс или ЮзверьКонтрол "ReadonlyTextBox" используя API. А поскольку он Readonly, то создать его будет еще проще - не нужен субклассинг и модуль.
И нужны-то ему всего два свойства Text и Enabled
К тому же такие текстбоксы используются не часто...
А вообще, как я уже сообщал, я решил эту проблему довольно давно и самостоятельно, еще до того, как открывал эту дискуссию. Просто мне стало любопытно: а вдруг знатоки знают, как проще решить эту проблему, без Text1_MouseDown и Text1_KeyDown, вдруг есть или стиль какой-то никому не известный, или АПИ функция, реализующая весь этот код. Но sne мне сразу сказал - проще написать свой текстбокс...
А дискуссию я стал продолжать, потому что стало интересно, а почему EM_SETREADONLY в VB блокирует только ввод с клавиатуры, если EM_SETREADONLY в АПИ блокирует любой ввод в текстбокс. И почему всойства (стили) Locked и ES_READONLY по-разному меняют ткстбокс.
После этого всего могу сделать вывод: про ES_READONLY в VB все-таки забыли, Locked <> ES_READONLY. И это отчетливо видно, т.к. появляется почти 30 строк дополнительного кода )
Вот и все пироги
Номер ответа: 40
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #40
Добавлено: 06.10.04 14:55
Вот теперь твои пироги и мне стали до конца понятны )
Номер ответа: 41
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #41
Добавлено: 06.10.04 15:10
Вот так вот всегда: пока войну и мир здесь не напишешь, никто не понимает )
Но почему же все-таки эти мелкосовтовцы такие тугодумы Неужели трудно было сделать нормальное свойство locked, чтобы люди велосипеды не изобретали (Это крик души)
Номер ответа: 42
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #42
Добавлено: 06.10.04 15:39
Проще самому написать. Будет круто.
EROS, я на компе нашел у себя вирус EROS.EXE, КАК ТЫ ЭТО ОБЪЯСНИШЬ?!?
Номер ответа: 43
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #43
Добавлено: 08.10.04 00:31
To Noviks:
Старик,веришь! Делов не знаю.. Не моя работа!
А что он хоть делает? (я про него впервые слышу)
Номер ответа: 44
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #44
Добавлено: 08.10.04 00:38
Уууу..... Он такое делает... Недаром EROS называется