Запрет редактирования TextBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Запрет редактирования TextBox

Сообщение $Yastrebov$ » 08.03.2007 (Чт) 18:22

Существует ли метод запрета на редактирование TextBox?
Необходимо, чтоб человек мог скопировать текст из поля, но никак его не изменить?

Label - не дает возможности выделения и копирования!
Text1.Locked=True - запрещает ввод с клавиатуры, но контекстное меню все еще позволяет деформировать текст путем (Вставки, Вырезания)
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

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

Сообщение alibek » 08.03.2007 (Чт) 18:27

Locked=True полностью блокирует возможность изменения текста через интерфейс.
Lasciate ogni speranza, voi ch'entrate.

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 08.03.2007 (Чт) 18:30

Нет не блокирует. Я попробовал - действительно можно вставить текст в TextBox с Locked=True. Может просто отключить меню для текстбокса через API или заменить его своим?

Код: Выделить всё
'Вывод своего меню:

Sub PopContextMenu(ControlName As Control, MenuName As Control)
ControlName.Enabled = False
PopupMenu MenuName
ControlName.Enabled = True
End Sub

'Пример:

Private Sub txtDocument_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then
  PopContextMenu txtDocument, mnuPopUp
End If
End Sub
Последний раз редактировалось J.MamaY 08.03.2007 (Чт) 18:40, всего редактировалось 2 раз(а).

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 08.03.2007 (Чт) 18:35

Locked=True полностью блокирует возможность изменения текста через интерфейс.


Не блокирует контекстное меню(((

Может просто отключить меню для текстбокса через API или заменить его своим?


Единственный вариант, который я нашел, это заменить через API на другое меню. Но мне не нужно в TextBox контекстное меню и вовсе!
И при нажатии правой клавиши при замене меню на свое - происходит не приятное мерцание старого меню!

Есть еще какие-либо варианты?
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 08.03.2007 (Чт) 18:41

Посмотрите предыдущий пост - я кое - что дописал. Должно помочь.

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 08.03.2007 (Чт) 18:43

А почему бы не заменить на свое меню с одним - единственным пунктом "Копировать"? Ведь вы же сказали, что копировать текст можно. Кстати мой код не использует API и никакого мерцания я не наблюдал.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 08.03.2007 (Чт) 18:54

Да, мерцания нет! Работает отлично! Спасибо за идею.

Вот только одно расстраивает, что нужно создавать PopUp. А у меня на этой форме, где TextBox уже есть один PopUp. Привязка к другой форме - это извращение? Без него никак?
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 08.03.2007 (Чт) 18:59

Хм... Это интересно. Наверное самый простой вариант - через 2 формы. А можно просто выводить свой PopUp (который у вас уже есть) на TextBox.

$Yastrebov$
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 154
Зарегистрирован: 24.01.2007 (Ср) 7:27
Откуда: Ukraine

Сообщение $Yastrebov$ » 08.03.2007 (Чт) 19:02

J.MamaY писал(а):А можно просто выводить свой PopUp (который у вас уже есть) на TextBox.


Там такие пункты меню, которые никакого отношения к TextBox не имеют! PopUp у меня связан с треем.
Жизнь, она как коробка конфет - никогда не знаешь, что вытянешь!

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 08.03.2007 (Чт) 19:04

Ну тогда через 2 формы.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.03.2007 (Чт) 21:17

J.MamaY, во-первых, делать несколько постингов подряд не приветствуется ввиду наличия кнопки Правка, и во-вторых, давать неверные советы не приветствуется также.

Locked плохо работает, если на VB не поставлен SP. У вас не поставлен; ставьте.

Popup'ов на одной форме может быть сколько угодно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.03.2007 (Чт) 23:20

GSerg писал(а):Locked плохо работает, если на VB не поставлен SP. У вас не поставлен; ставьте.


И ведь какое простое решение... :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

J.MamaY
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 13.02.2007 (Вт) 13:27

Сообщение J.MamaY » 09.03.2007 (Пт) 11:50

Извините за 2 поста и за 2 формы. Спасибо за совет про Service Pack.
P.S.: Заметьте, что я не только плохие советы даю.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Сообщение pronto » 10.03.2007 (Сб) 5:51

Можно и так:
Код: Выделить всё
Private Sub Text1_Change()
   Text1.Text = tmp$ ' = текст
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
   KeyAscii = 0
End Sub
O, sancta simplicitas!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 10.03.2007 (Сб) 7:12

pronto, а вот нужно ли? Ответ был дан полностью, и правильный.
Весь мир матрица, а мы в нем потоки байтов!


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

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

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 111

    TopList