Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.06.2007
Сообщений: 176

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

22.06.2007, 12:30. Показов 1491. Ответов 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 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru