Задача специфическая, но, не вдаваясь в подробности: При каждом введённом символе идёт проверка, и если юзер нажал кнопку (пробел) более 2-х раз (или нажал и не отпускает), то это значит что он хотел инициировать передачу, но забыл, что это делается не в Memo.
p.s. пробел просто удобен для этого.
Этот топик читают: Гость
Ответов: 3851
Рейтинг: 159
|
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Если нет требования блокировки второго пробела в контроллы ввода, то можно так: code_173
[size=-2]------ Добавлено в 12:35 А если надо блокировать автоповтор в Memo, то без KeyPreview-фичи даже и не пойму как можно.... В общем-то, у меня вот такое работает, и блокирует автоповторы: code_174 |
|||
карма: 9 |
| ||
файлы: 2 | code_173.txt [1.1KB] [620], code_174.txt [1KB] [584] |
Ответов: 3851
Рейтинг: 159
|
|||
code_173 не подходит - продолжается ввод в то-же окно, а code_174 говорит, что точка входа doKeyBack не найдена в элементе MainForm.
А надо как раз прекратить дальнейший ввод. |
|||
карма: 0 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Вынул точку Enabled из Memo, завязал её с повтором пробела, вроде работает, так теперь другая проблема - автоповтор озвучивается виндой. Как избавиться от этой трескотни не знаю.
|
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Galkov писал(а): А если надо блокировать автоповтор в Memo, то без KeyPreview-фичи даже и не пойму как можно....Внедрение фичи в дистрибутив не моя прерогатива. Обращаться к Dilma Технология внедрения расписана там, но если плохо ориентируешься в кодах HiAsm, то лучше не пробовать (скажем так - не для новичков). |
|||
карма: 9 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Тогда будем думать дальше.
Попробовал точку doVisible - озвучки нет, но пробелы засылаются даже в невидимый, а когда он опять становится видимым, то пропадает курсор (буквы печатаются). |
|||
карма: 0 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Всё, разобрался - в KeyEvent засылаем TAB (code=9), ну и Handle прицепляем к тому элементу, куда передаём фокус (типа TabOrder).
|
|||
карма: 0 |
|
Ответов: 3851
Рейтинг: 159
|
|||
Пардон, поторопился, не работает при кол-ве элементов больше 2. И вообще, использование элемента KeyEvent во время реально нажатой кнопы - издевательство.
Всё же как восстановить видимость курсора после восстановления видимости самого элемента. Прикольно - буквы печатаются, а курсора нет ... |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Андрей., уж извини, мне трудно понять твои проблемы
![]() Банальная фраза, за которую подвергался не заслуженной критике коллегами, но соответствующая действительности: у меня это прекрасно работает ![]() И этот путь, ИМХО, более правилен и дает и более "хитрые" возможности, кроме необходимых в данном случае. |
|||
карма: 9 |
|
Ответов: 9906
Рейтинг: 351
|
|||
А вот взял и совершенно формально прочитал вопрос в заголовке темы
Ответ: он "отберется" сам, если его получит другой контрол. Правда, не у всех элементов есть точка doSetFocus, но все визуальные элементы в HiAsm (по научному: наследники класса Win ![]() А чтобы появилась точка, например у элемента Button, необходимо сотворить следующий магический ритул: 1) выделить этот элемент (у меня это Button) 2) нажать Ctrl+G 3) в редакторе INI-файла добавить строку *doSetFocus=Устанавливает фокус на элементе|1| в секцию [Methods]
4) сохранить файл 5) перезапустить (увы) HiAsm После этого, такая схема вроде "отбирает" фокус у Memo (впрочем, у кого хочешь) по двойному пробелу |
|||
карма: 9 |
| ||
файлы: 1 | code_179.txt [1014B] [503] |
Ответов: 9906
Рейтинг: 351
|
|||
Впрочем, есть "абсолютный" вариант, без своих кодовых "добавок". Связано с тем, что таки у одного элемента из дистрибутива имеется таки метод doSetFocus
![]() |
|||
карма: 9 |
| ||
файлы: 1 | code_181.txt [1.1KB] [593] |
Ответов: 3851
Рейтинг: 159
|
|||
УРА! Galkov, бальшущее спасиба
![]() ![]() И почему этой точки нет в остальных элементах? Ведь про этот магический ритуал знают не все, соответственно и проект не будет компилиться ![]() |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Андрей. писал(а): И почему этой точки нет в остальных элементах? Ведь про этот магический ритуал знают не все, соответственно и проект не будет компилиться ![]() И не только doSetFocus это касается, между прочим. И идеи были на этот предмет ... |
|||
карма: 9 |
|
13