Вверх ↑
Этот топик читают: Гость
Ответов: 3851
Рейтинг: 159
#1: 2006-08-11 11:25:38 ЛС | профиль | цитата
Задача специфическая, но, не вдаваясь в подробности: При каждом введённом символе идёт проверка, и если юзер нажал кнопку (пробел) более 2-х раз (или нажал и не отпускает), то это значит что он хотел инициировать передачу, но забыл, что это делается не в Memo.

p.s. пробел просто удобен для этого.
карма: 0
начавший
0
vip
#1.1контекстная реклама от партнеров
Ответов: 9906
Рейтинг: 351
#2: 2006-08-11 12:35:09 ЛС | профиль | цитата
Если нет требования блокировки второго пробела в контроллы ввода, то можно так: code_173

[size=-2]------ Добавлено в 12:35
А если надо блокировать автоповтор в Memo, то без KeyPreview-фичи даже и не пойму как можно....
В общем-то, у меня вот такое работает, и блокирует автоповторы: code_174
карма: 9

0
файлы: 2code_173.txt [1.1KB] [521], code_174.txt [1KB] [501]
Ответов: 3851
Рейтинг: 159
#3: 2006-08-11 13:02:02 ЛС | профиль | цитата
code_173 не подходит - продолжается ввод в то-же окно, а code_174 говорит, что точка входа doKeyBack не найдена в элементе MainForm.
А надо как раз прекратить дальнейший ввод.
карма: 0
начавший
0
Ответов: 3851
Рейтинг: 159
#4: 2006-08-11 13:30:17 ЛС | профиль | цитата
Вынул точку Enabled из Memo, завязал её с повтором пробела, вроде работает, так теперь другая проблема - автоповтор озвучивается виндой. Как избавиться от этой трескотни не знаю.
карма: 0
начавший
0
Ответов: 9906
Рейтинг: 351
#5: 2006-08-11 13:37:48 ЛС | профиль | цитата
Galkov писал(а):
А если надо блокировать автоповтор в Memo, то без KeyPreview-фичи даже и не пойму как можно....

Внедрение фичи в дистрибутив не моя прерогатива. Обращаться к Dilma

Технология внедрения расписана там, но если плохо ориентируешься в кодах HiAsm, то лучше не пробовать (скажем так - не для новичков).
карма: 9

0
Ответов: 3851
Рейтинг: 159
#6: 2006-08-11 14:22:00 ЛС | профиль | цитата
Тогда будем думать дальше.

Попробовал точку doVisible - озвучки нет, но пробелы засылаются даже в невидимый, а когда он опять становится видимым, то пропадает курсор (буквы печатаются).
карма: 0
начавший
0
Ответов: 3851
Рейтинг: 159
#7: 2006-08-12 02:33:06 ЛС | профиль | цитата
Всё, разобрался - в KeyEvent засылаем TAB (code=9), ну и Handle прицепляем к тому элементу, куда передаём фокус (типа TabOrder).
карма: 0
начавший
0
Ответов: 3851
Рейтинг: 159
#8: 2006-08-13 00:29:16 ЛС | профиль | цитата
Пардон, поторопился, не работает при кол-ве элементов больше 2. И вообще, использование элемента KeyEvent во время реально нажатой кнопы - издевательство.
Всё же как восстановить видимость курсора после восстановления видимости самого элемента. Прикольно - буквы печатаются, а курсора нет ...
карма: 0
начавший
0
Ответов: 9906
Рейтинг: 351
#9: 2006-08-13 00:47:28 ЛС | профиль | цитата
Андрей., уж извини, мне трудно понять твои проблемы
Банальная фраза, за которую подвергался не заслуженной критике коллегами, но соответствующая действительности: у меня это прекрасно работает
И этот путь, ИМХО, более правилен и дает и более "хитрые" возможности, кроме необходимых в данном случае.
карма: 9

0
Ответов: 9906
Рейтинг: 351
#10: 2006-08-13 11:11:39 ЛС | профиль | цитата
А вот взял и совершенно формально прочитал вопрос в заголовке темы
Ответ: он "отберется" сам, если его получит другой контрол.
Правда, не у всех элементов есть точка doSetFocus, но все визуальные элементы в HiAsm (по научному: наследники класса Win ) умеют это делать.
А чтобы появилась точка, например у элемента Button, необходимо сотворить следующий магический ритул:
1) выделить этот элемент (у меня это Button)
2) нажать Ctrl+G
3) в редакторе INI-файла добавить строку
*doSetFocus=Устанавливает фокус на элементе|1|
в секцию [Methods]
4) сохранить файл
5) перезапустить (увы) HiAsm

После этого, такая схема вроде "отбирает" фокус у Memo (впрочем, у кого хочешь) по двойному пробелу
карма: 9

0
файлы: 1code_179.txt [1014B] [431]
Ответов: 9906
Рейтинг: 351
#11: 2006-08-13 17:48:37 ЛС | профиль | цитата
Впрочем, есть "абсолютный" вариант, без своих кодовых "добавок". Связано с тем, что таки у одного элемента из дистрибутива имеется таки метод doSetFocus
карма: 9

0
файлы: 1code_181.txt [1.1KB] [523]
Ответов: 3851
Рейтинг: 159
#12: 2006-08-14 09:08:42 ЛС | профиль | цитата
УРА! Galkov, бальшущее спасиба.
И почему этой точки нет в остальных элементах? Ведь про этот
магический ритуал
знают не все, соответственно и проект не будет компилиться
карма: 0
начавший
0
Ответов: 9906
Рейтинг: 351
#13: 2006-08-14 13:30:17 ЛС | профиль | цитата
Андрей. писал(а):
И почему этой точки нет в остальных элементах? Ведь про этот
магический ритуал
знают не все, соответственно и проект не будет компилиться


И не только doSetFocus это касается, между прочим.
И идеи были на этот предмет ...
карма: 9

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)