:: Visual Foxpro, Foxpro for DOS
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 прекрасно работает.
Как вычислить, что же происходит?
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
возможные причины
1- недоступно или отсутствует пункт меню
2-в Default.key - назначен другой макрос на это сочетание
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
1.Поскольку в командном окне вставка работает, пункт меню присутствует
2. Проверил в дебагере ON('key','ctrl+v') , не переопределено.
К тому же текст в окошке появляется на долю секунды.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Hel!Riser

Сообщений: 10452
Откуда: Нижний Новгород
Дата регистрации: 11.03.2001
тогда смотри InteractiveChange() или типа того. где-то идет затирка данных




------------------
Осторожно - глисты!
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Нет у этого текстбокса ни одного метода, кроме KeyPress и RightClick.
Может, какое форматирование его обрезает. Хотя вставляю я в начало, и на соответствующее кол-во пробелов указатель перемещается.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
Попробуй перед вставкой
_CLIPTEXT=AllTrim(_ClipText)
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Тоже не помогло, _CLIPTEXT и так обрезанный.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Владимир Максимов

Сообщений: 14095
Откуда: Москва
Дата регистрации: 02.09.2000
Проверь настройки

TextBox.Format
TextBox.InputMask
TextBox.MaxLength

Если в качестве TextBox.ControlSource указано поле таблицы, то надо проверить еще те же свойства у собственно поля таблицы и посмотреть нет ли RULE как для поля, так и для записи таблицы.

Вообще, проверь все настройки, которые отличаются от настроек по умолчанию. Если TextBox (или форма) созданы на основе пользовательского класса - проверить класс.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Все проверил. Format и InputMask пустые, MaxLength=0. ControlSource тоже пустой. Работаю в девятке, так что методы родительского класса видны, то есть их нет, кроме KeyPress и RightClick.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
KeyPress - на бочку - в смысле тект егонный давай
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Сергей!

Объясни мне ЗАЧЕМ тебе ON KEY нужен вообще? Если у тебя есть меню с BAR-ом
_MED_paste (а оно есть как ты утверждаешь!) - то просто ему назначь Shortcut
Ctrl+V и забудь вообще про ON KEY как про страшный сон.




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Ну, помещать здесь метод KeyPress нет смысла, я уже проверял, да таки должно быть, мы в него не заходим.
А насчет Shortcut - объясните, что это такое.
У меня активно собственное меню, поэтому я вызываю пункты системного меню по Key Label при помощи SYS(1500).
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Поставил SUSPEND в InterActiveChange. После этого вставленный текст не исчезает. Если же вставляю в InterActiveChange:
WAIT '' TIMEOUT 5
вставляемый текст появляется на 5 секунд и исчезает.
Ratings: 0 negative/0 positive
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, вставка работает.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
po2

Сообщений: 2864
Откуда: Иркутск
Дата регистрации: 22.12.2001
Проверь, исчезнет ли проблема, если в GotFocus поместить Return.t.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Как теперь можешь убедиться, не помогает.
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Сергей!

Цитата:
У меня активно собственное меню
Замечательно! но там где-то есть системные бары? Иначе бы SYS(1500) не
работало!
Т.е. нечто типа
DEFINE BAR _med_cut OF _medit PROMPT "\<Вырезать" ;
KEY CTRL+X, "Ctrl+X" ;
MESSAGE "Удалить выделенный фрагмент и поместить его в буфер обмена"




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Бураков Сергей
Автор

Сообщений: 280
Откуда: Calgary
Дата регистрации: 07.02.2005
Извини, Игорь, так я и не понял механики процесса.
Когда я даю команду DEFINE MENU MainMenu BAR, системное меню прекращает быть активным, и его назначения клавиш пропадают. Но ведь меню не удаляется, а находится в памяти, и его бары тоже находятся в памяти, раз я могу вызвать их по SYS(1500).
Так какой смысл тогда имеет команда
Цитата:
DEFINE BAR _med_cut OF _medit PROMPT "\<Вырезать" ;
KEY CTRL+X, "Ctrl+X" ;
MESSAGE "Удалить выделенный фрагмент и поместить его в буфер обмена"
Ведь она просто еще раз переопределяет существующий бар пассивного системного меню.




------------------
Ratings: 0 negative/0 positive
Re: CTRL+V не работает
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi Сергей!

Я всегда использую в качестве базы _MSYSMENU. Это ничему не мешает и ни к
чему не обязывает. Зато корректно работают все системные функции (которые
конечно я оставляю в меню). И вообще генератор меню именно на базе
системного и делает - если конечно это не меню для AsTopLevel - но в
принципе и там никто не запрещает использовать системные бары.




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 29 (Гостей: 29)

© 2000-2024 Fox Club 
Яндекс.Метрика