0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176

Как задизаблить ЭдитБоксы?

22.06.2007, 12:30. Показов 1502. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Enabled = False - это и я знаю!!
А как сделать так, чтобы в контролы ничего ввести нельзя было, а вот выделить и скопировать из них можно было. Locked = true? Но тут другая проблема
никакие клавиши воще не работают. А как это еще можно сделать? Кроме как перехватыванием KeyPress OnChange и т.п. это не подходит - контролов слишком много. И они не в массиве!!!

Подскажите плз ... Очень надо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2007, 12:30
Ответы с готовыми решениями:

Как задизаблить Х в строке заголовка
Сабж.

Задизаблить кнопку по сигналу
Никак не могу понять, зачем нужны аж две функции, setEnabled и setDisabled, с булевыми параметрами, причем ни одна из них не является...

Задизаблить инбокс скриптом?
Как задизаблить поле инбокса? Чтобы оно стало такое серое и мертвое? Но управлять его состоянием нужно кнопкой или чекбоксом.

15
VladK
22.06.2007, 15:40
Указанный код позволяет использовать Cntrl^C для копирования содержимого всех текстовых окон на форме в Clipboard.

Все текстовые окна имеют Locked = False, Enabled = True и в тоже время не редактируемы.

Я не проверял все клавиши. Если какие-то и пробивают, то их коды надо просто добавить в оператор If.

Option Explicit

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyDelete Then
KeyCode = vbKeyEscape
End If
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii <> 3 Then
KeyAscii = 0
End If
End Sub

Private Sub Form_Load()
Me.KeyPreview = True
End Sub
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
24.06.2007, 19:18  [ТС]
Да .... Как я сразу не догадался ...

Но тут есть другая проблема !
По POPUP меню можно в (так называемый) Реад онли контрол вставить всякую дребедень

А можно ли еще и это как-то отключить ?

Best Regards Nick
0
VladK
25.06.2007, 07:53
Я не знаю, что такое так называемый реад онли контрол в терминах ВБ. Если можно, дайте код или укажите объект, его свойства и их значения.
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
25.06.2007, 15:17  [ТС]
Блин!!!

Так называемым ReadOnly контрол становится когда я в него твой код прибавляю.


А проблема вот в чем:
Я прибавил к EditBox твой код - да почти все классно. Клава не работает. Но работает МЫШЬ!!!
Нажимаешь правую клавишу - выскакивает POPUP меню и там опция - Paste (((

А как эще и это отключить????
0
VladK
25.06.2007, 21:16
Ya dumayu, nado vpisat' dopolnitel'ni'y kod v sobi'tie MouseUp.
U menua seychas net vremeni. Esli nikto vam do menya ne podskaghet, to ya vecherom podumayu.
VladK
26.06.2007, 06:07
Красивого решения у меня нет.

Вот мой самый простой и жестокий вариант:
В событие MouseDown каждого текстового окна вставить:

Clipboard.Clear.

Существует и другой способ:
В событие MouseUp каждого текстового окна вставить:

Form1.PopupMenu mnuMyPopUp

Где mnuMyPopUp это меню, определенное вами на форме, такое что:
mnuMyPopUp.Visible = False.

Вы сами определяете все его подменю на этапе дизайна. В вашем случае все подменю делаете как в стандартном PopupMenu, а подменю Paste вообще не создаете. Здесь есть одно 'но': все остальные подменю вы должны закодировать самостоятельно используя тотже Clipboard, SelText и так далее.

Дерзайте.
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
26.06.2007, 12:12  [ТС]
)))))
Продерзал!
Класс!!!! один раз нажал - VB&EditBox меню - второй раз нажал - мое меню!

Вопросик про отключение стандартного попап меню едитбокса остается актуальным и по сей день. К нему ответ так никто и не нашел. Ничего лучшего чем 'Пиши собственный ActiveX' я ни откого так и не услышал. В следующий раз так и поступлю - буду писать свой.

Но не в том состоял МОЙ вопрос ... мне нужно было 'все и сразу', то бишь одним обработчиком на форме обработать все! А если каждому контролу присобачить обработчик, то это понятно будет работать.
Так как мне всетаки надо работать - обработчики для каждого я налепил.(Каждому прибавил OnCange и организовал что-то типа Undo) Одно радует, что протрах... не зря. Но это не значит что я не хочу получить ответ.(Если таковой существует)

С уважением Nick

P.S.
Ну NickSun ... Хотел бы я знать кто зарегистрился под Nick
0
Lana
28.06.2007, 22:49
Try this exemple from Micrisoft:
http://support.microsoft.com/support/kb/articles/Q191/6/70.ASP?LN=EN-US&SD=gn&FR=0&qry=default%20menu&rnk=64& src=DHCS_MSPSS_gn_SRCH&SPR=VBB
Karamba
28.06.2007, 23:00
Слушай, а зачем тебе в таком случае илпользовать EditBox'ы? используй Label'ы. как я понял тебе надо тока отображать информацию?
Karamba
28.06.2007, 23:22
сорри, пургу гнал... тебе наде еще копировать оттуда...
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 1
01.07.2007, 20:46
Sorry I don't have Russian fonts on this PC.
If you want to have one handler for all controls and you have VB6 use something like this:

Dim WithEvents ctrlExt as VBControlExtender

sub Form1_Load
set ctrlExt=Form1.ActiveControl
end sub

sub ctrlExt_LostFocus
set ctrlExt=Form1.ActiveControl
end sub

'Here is handler for all controls
sub ctrlExt_KeyPress
KeyAscii=0
end sub

I dont have VB6 here, so I can't send you exact code, but above should help. I did something like this about a year ago and it worked.
0
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
11.07.2007, 22:19  [ТС]
Вот я и на работе!!!
Спасибо за ответ!
Плохо конечно, господин хороший, что у Вас Басика не было, но не беда! Я тут покрутил и всетаки получил один хандл для всех .... ТекстБоксов.
С VBControlExtender не выходит - ActiveControl не сетится. Да мне в принсипе это и не надо (так, чтобы для всех контролов). Но идея ГеНиАлЬнАя. За нее огромное спасиба.
Вощем после небольших проб вышло вот это:

Dim WithEvents ctrlExt As TextBox

Private Sub ctrlExt_KeyPress(KeyAscii As Integer)
KeyAscii = 0
End Sub

Sub ctrlExt_LostFocus()
If TypeOf Form1.ActiveControl Is TextBox Then
Set ctrlExt = Form1.ActiveControl
End If
End Sub

Private Sub Form_Resize()
If TypeOf Form1.ActiveControl Is TextBox Then
Set ctrlExt = Form1.ActiveControl
End If
End Sub

Тут конечно глюк с LostFocus - ну если там не только ТекстБоксы то эта штука сбои давать будет, но ...
Кстате если кто придумает как это дело красиво сделать или сделать через VBControlExtender - заранее благодарен. А если этот кто-то свою идею еще и опубликует! То вввхвала ему и памятник на каждом сайте!

А на счет Микрософтовских самплов щас туда иду ... пожее отвечу и поблагодарю!

С уважением и благодарностью, Nick
0
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
11.07.2007, 22:54  [ТС]
А вот был я на Микрософте .....

Посмотрел, попробовал - работает. Спасиба ...
Огромное Спасиба!!!
Вопрос со стандартной меню ТекстБокса закрыт!
0
0 / 0 / 0
Регистрация: 17.03.2015
Сообщений: 1
11.07.2007, 23:21
It would be nice to be able to declare variable like this:

dim WithEvents Ctrl as Control

In this case all you problems with LostFocus event would be gone. BUT!

**** Disclaimer, hehe. I have only VB5 and VB7 here so you have to try it in VB6 by yourself. ***

In VB5 Control object doesn't have any events, so you can't declare it as WithEvents.
In VB7 Control object is much better and allows you to do things like this:

dim WithEvents Ctrl as Control

public sub Ctrl_Leave(...)
ctrl.text='Lost focus'
ctrl=Form1.ActiveControl
ctrl.Text='Got focus'
End Sub

And Control object here has all kinds of Events, Properties and Methods, so you can do whatever you want with it.

So try it in VB6. If it doesn't work, at least you'll know that your life is going to be much easier when VB7 is out, because this kind of things are handled here just great.
0
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176
12.07.2007, 11:51  [ТС]
Я тоже думал над этим (VB7), но .... оно всегда но. Может обратно ... на пятый )

Я тоже сразу пробовал это (Control), ну нету в VB6 такой фичи. (Может конечно у меня нету, ... или у всех?)

В любом случае, спасибо за ответ!

Best regards, Nick
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2007, 11:51
Помогаю со студенческими работами здесь

задизаблить чекбоксы - checkbox.setAttribute("disabled", true);
есть форма, в которой несколько вопросов при условии, что человек ответил утвердительно на первый вопрос (зачекал чекбокс) он уже может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru