Конференция "Начинающим" » где фокус ввода [D7, XP]
 
  • dim12345 (15.06.17 22:35) [0]
    Подскажите как программно узнать на каком элементе формы находится фокус ввода ?
  • Наверх (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}
 
Конференция "Начинающим" » где фокус ввода [D7, XP]
Есть новые Нет новых   [87965   +8][b:0.001][p:0.001]