Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

где фокус ввода [D7, XP]


dim12345   (15.06.17 22:35

Подскажите как программно узнать на каком элементе формы находится фокус ввода ?


Наверх   (15.06.17 22:41[1]

Form.ActiveControl
Screen.ActiveControl


dim12345   (15.06.17 23:50[2]

постараюсь обрисовать проблему:
На форме кнопка и edit

procedure TFormMain.BitBtnScaleClick(Sender: TObject);

// чтение веса с весов   считал и устанавливаю фокус в edit

// в отладчике can focus =true
 IF EditSK.CanFocus THEN EditSK.SetFocus;
end

у формы стоит keypreview

procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;   Shift: TShiftState);        // hot key

IF  .....
  программно вызываю процедуру кнопки
 ELSE IF key =121 THEN BEGIN IF BitBtnScale.Enabled   THEN BitBtnScale.OnClick(Sender)   END   //F10

end

end

если интерактивное нажатие не кнопку мышкой все нормально.
Если через горячую кнопку, то  полноценный фокус ввода в edit не устанавливается.
Курсор в edite стоит, но не моргает!

Form.ActiveControl
Screen.ActiveControl  возвращают активный эмемент edit, но если нажать кнопку на клаве ввод текста в edit не происходит
повторное нажатие горячей клавиши заставляет заморгать курсор в edite и все вводится.
Но надо с первого раза, подскажите может что-то перерисовывается, обновляется и курсор не совсем полноценный


Kilkennycat ©   (16.06.17 00:15[3]

ну вызвать еще раз сетфокус после вызова, который не сетфокусит. а ваще, странная логика - кэнфокус-некэнфокус... все енабленные инпутные должны быть кэнфокусные, иначе это бэдинтерфейс.


dim12345   (16.06.17 00:22[4]

еще раз вызываю setfocus после анализа горячих кнопок- изменений нет.
курсор в edite, НО НЕ МОРГАЕТ- как называется это состояние я не знаю...
Иногда (в других случаях) этот edit недоступен, поэтому в него фокус не может быть установлен, поэтому и предварительно проверяю на доступность фокуса


dim12345   (16.06.17 00:26[5]

пробовал  refresh и repaint чтоб "разбудить" edit, но наблюдаю странное поведение- вертикальная черта курсора отрисована в едите, но не моргает. Если начать что-то набирать, первый символ не вводится, со второго вводится


rrrrrr ©   (16.06.17 07:35[6]

долго наблюдая  за форумом, сделал открытие.
в мире есть пользователи без обеих рук, для которых погромисты без головы сочиняют интерфейсы с переключением фокуса.


Leonid Troyanovsky ©   (16.06.17 10:24[7]


> dim12345   (15.06.17 23:50) [2]

RTFM delphi help: TAction.ShortCut.

See also: ActiveControl :=  EditSK;

--
Regards, LVT.


dim12345   (16.06.17 11:53[8]

> rrrrrrrrrr Вы угадали! В моем случае пользователь- весовщик на морозе, руки  в рукавицах держат бутыль с "огненной водой" и он нажимает педаль = "горячая кнопка" получения веса. Бутыль выпустить из рук нельзя- грузчики рядом ему завидуют.


KilkennyCat ©   (16.06.17 17:10[9]

а зачем ему фокус в едите, если он в рукавицах?


dim12345   (16.06.17 20:08[10]

Там еще сканер ШК usb-hid


Kilkennycat ©   (17.06.17 07:50[11]

а сканеру зачем фокус в едите?


Leonid Troyanovsky ©   (17.06.17 09:59[12]


> Kilkennycat ©   (17.06.17 07:50) [11]

> а сканеру зачем фокус в едите?

Видимо, сканер эмулирует клавиатурный ввод.

Однако, если в руках есть сканер, то ни клавиатура, ни фокус,
ни даже эдит не нужны.  Достаточно нескольких служебных штрихкодов,
задающих необходимые команды.

Оные коды можно нанести хоть на рукав(ицу).

--
Regards, LVT.


KilkennyCat ©   (17.06.17 15:01[13]


> Leonid Troyanovsky ©   (17.06.17 09:59) [12]

в случае с hid-usb даже штрихкоды не нужны.


dim12345   (17.06.17 15:59[14]

Ура ! ActionList помог решить проблему по горячей клавише курсор в edite как-то непривычно моргает однократно, но фокус устанавливается и ввод ШК (эмуляция клавиатуры) проходит нормально.
Всем спасибо!!!!!!!!!


Kilkennycat ©   (17.06.17 21:01[15]

а я бы всё-таки стремился к типа такому: hiddevice(vid,pid).event(e) {edit.text = e.data}


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо