Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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(!) сколько смотрю на некоторые коды, всё никак понять не могу - зачем об'являть лишнюю переменную, если для информации есть уже место.

ПРЕДЛАГАЮ:1. использовать свойство Change - однозначно
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
SendMessage Text1.hwnd, EM_SETREADONLY, 1, 0

Это, кстати, вообще не работает

Ответить

Номер ответа: 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
Ну а зачем же тогда весь остальной код, если EM_SETREADONLY работает?


А ты этот "весь остальной код" (Text1_MouseDown и Text1_KeyDown) заремаркируй и посмотри, что будет. А будет возможным вставка из буфера обмена - и через Shift+Insert, и через контекстное меню.

EM_SETREADONLY блокирует только "прямой" ввод в текстбокс (без использования буфера обмена).

Ответить

Номер ответа: 39
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #39 Добавлено: 06.10.04 13:57
EM_SETREADONLY блокирует только "прямой" ввод в текстбокс

А не проще ли тогда 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:
EROS, я на компе нашел у себя вирус EROS.EXE, КАК ТЫ ЭТО ОБЪЯСНИШЬ?!?


Старик,веришь! Делов не знаю.. Не моя работа! :-)
А что он хоть делает? (я про него впервые слышу)

Ответить

Номер ответа: 44
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #44 Добавлено: 08.10.04 00:38
А что он хоть делает?

Уууу..... Он такое делает... Недаром EROS называется :)

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам