CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
У меня задано:
ON KEY LABEL ctrl+v SYS(1500, '_MED_paste', '_MEDIT') т.е. вызывается пункт копирования из системного меню. Вожусь с большой чужой формой. Почему-то в ней, в текстбоксе, при нажатии CTRL+V изображение содержимого буфера обмена мелькает и исчезает, а указатель перемещается в то место, где должен быть конец текста. Пробовал SET DOHISTORY ON, SET DOHISTORY TO TMP.TXT... Ни одной команды в файл не поместило. У класса текстбокса есть метод KeyPress, но он, естественно, не срабатывает. В командном окне Ctrl+V прекрасно работает. Как вычислить, что же происходит? |
Re: CTRL+V не работает | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
возможные причины
1- недоступно или отсутствует пункт меню 2-в Default.key - назначен другой макрос на это сочетание |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
1.Поскольку в командном окне вставка работает, пункт меню присутствует
2. Проверил в дебагере ON('key','ctrl+v') , не переопределено. К тому же текст в окошке появляется на долю секунды. |
Re: CTRL+V не работает | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
тогда смотри InteractiveChange() или типа того. где-то идет затирка данных
------------------ Осторожно - глисты! |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Нет у этого текстбокса ни одного метода, кроме KeyPress и RightClick.
Может, какое форматирование его обрезает. Хотя вставляю я в начало, и на соответствующее кол-во пробелов указатель перемещается. |
Re: CTRL+V не работает | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
Попробуй перед вставкой
_CLIPTEXT=AllTrim(_ClipText) |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Тоже не помогло, _CLIPTEXT и так обрезанный.
|
Re: CTRL+V не работает | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Проверь настройки
TextBox.Format TextBox.InputMask TextBox.MaxLength Если в качестве TextBox.ControlSource указано поле таблицы, то надо проверить еще те же свойства у собственно поля таблицы и посмотреть нет ли RULE как для поля, так и для записи таблицы. Вообще, проверь все настройки, которые отличаются от настроек по умолчанию. Если TextBox (или форма) созданы на основе пользовательского класса - проверить класс. |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Все проверил. Format и InputMask пустые, MaxLength=0. ControlSource тоже пустой. Работаю в девятке, так что методы родительского класса видны, то есть их нет, кроме KeyPress и RightClick.
|
Re: CTRL+V не работает | |
---|---|
Mitchman Сообщений: 9978 Откуда: Николаев Дата регистрации: 24.05.2002 |
KeyPress - на бочку - в смысле тект егонный давай
|
Re: CTRL+V не работает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Сергей!
Объясни мне ЗАЧЕМ тебе ON KEY нужен вообще? Если у тебя есть меню с BAR-ом _MED_paste (а оно есть как ты утверждаешь!) - то просто ему назначь Shortcut Ctrl+V и забудь вообще про ON KEY как про страшный сон. ------------------ WBR, Igor |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Ну, помещать здесь метод KeyPress нет смысла, я уже проверял, да таки должно быть, мы в него не заходим.
А насчет Shortcut - объясните, что это такое. У меня активно собственное меню, поэтому я вызываю пункты системного меню по Key Label при помощи SYS(1500). |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Поставил SUSPEND в InterActiveChange. После этого вставленный текст не исчезает. Если же вставляю в InterActiveChange:
WAIT '' TIMEOUT 5 вставляемый текст появляется на 5 секунд и исчезает. |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Наконец-то удалось вычленить кусок кода, воспроизводящий ошибку, чтобы послать текст.
form1=CREATEOBJECT('form1') form1.SHOW(1) DEFINE CLASS form1 AS form DoCreate = .T. Caption = "Form1" Name = "Form1" ADD OBJECT i_text1 AS i_text WITH ; Height = 36, ; Left = 60, ; Top = 12, ; Width = 156, ; Name = "I_text1" ADD OBJECT i_text2 AS i_text WITH ; Height = 36, ; Left = 60, ; Top = 60, ; Width = 156, ; Name = "I_text2" PROCEDURE i_text2.Init DEFINE MENU MainMenu BAR ON KEY LABEL ctrl+c SYS(1500, '_MED_COPY', '_MEDIT') ON KEY LABEL ctrl+v SYS(1500, '_MED_paste', '_MEDIT') ON KEY LABEL ctrl+r SYS(1500, '_MED_redo', '_MEDIT') ON KEY LABEL ctrl+x SYS(1500, '_MED_cut', '_MEDIT') ON KEY LABEL ctrl+z SYS(1500, '_MED_undo', '_MEDIT') ENDPROC ENDDEFINE DEFINE CLASS i_text AS textbox FontName = "RS Sans Serif" Height = 23 Width = 100 Name = "i_text" * PROCEDURE InteractiveChange * s=This.Value * ENDPROC ENDDEFINE Извиняюсь, у меня почему-то тэги не работают. Если в первом Textbox набрать что-либо и скопировать CTRL+C, то во второй не получится вставить при помощи CTRL+V. Если раскомментировать InterActiveChange, вставка работает. |
Re: CTRL+V не работает | |
---|---|
po2 Сообщений: 2864 Откуда: Иркутск Дата регистрации: 22.12.2001 |
Проверь, исчезнет ли проблема, если в GotFocus поместить Return.t.
|
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Как теперь можешь убедиться, не помогает.
|
Re: CTRL+V не работает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Сергей!
Цитата:Замечательно! но там где-то есть системные бары? Иначе бы SYS(1500) не работало! Т.е. нечто типа
------------------ WBR, Igor |
Re: CTRL+V не работает | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Извини, Игорь, так я и не понял механики процесса.
Когда я даю команду DEFINE MENU MainMenu BAR, системное меню прекращает быть активным, и его назначения клавиш пропадают. Но ведь меню не удаляется, а находится в памяти, и его бары тоже находятся в памяти, раз я могу вызвать их по SYS(1500). Так какой смысл тогда имеет команда Цитата:Ведь она просто еще раз переопределяет существующий бар пассивного системного меню. ------------------ |
Re: CTRL+V не работает | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Сергей!
Я всегда использую в качестве базы _MSYSMENU. Это ничему не мешает и ни к чему не обязывает. Зато корректно работают все системные функции (которые конечно я оставляю в меню). И вообще генератор меню именно на базе системного и делает - если конечно это не меню для AsTopLevel - но в принципе и там никто не запрещает использовать системные бары. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |