Хранить нажатия клавиш в X ++ - PullRequest
0 голосов
/ 23 марта 2011

Кто-нибудь знает, как сохранить нажатие клавиш в виде строки в X ++?

А также, если я хочу преобразовать их в ASCII и наоборот.

А в приведенном ниже задании не показано ожидаемое поведение.

public void textChange() 
{ 
       int i, j; 
       int L = 12; 
       int h = 4; 
       int t = 54; 
       str tmpStr; 
   ;  

  i =  strLen(strKeep(seField.text(), '\n')); 
  info(seField.text() + ' Lines: ' + int2str(i)); 
  super(); 
  if (i >= H) 
 { 
  error(strFmt("max lines = %1", h));  
 } 
} 

   Actually i am trying to implement something like- 

в методе textChange stringEdit, когда я ввожу "A" (или любое значение), он должен отображать "A line 0" (в информационном журнале), затем я вводю B, он должен отображать "AB line 0" (в info) После того, как я нажму на кнопку ввода, и на дисплее ввода «Q» появится что-то вроде «AB Line 0» (1-я строка), «Q Line 1» (2-я строка) и так далее. У меня проблема с "\ n" (Enter), поэтому мне нужно добиться этого через значение ASCII. Благодарю.

Ответы [ 3 ]

2 голосов
/ 24 марта 2011

Единственный способ сохранить нажатия клавиш в форме AX - это использовать метод task() в форме.

Но не делайте это для целей, которые вы прокомментировали!

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

ОБНОВЛЕНИЕ: Вы можете найти некоторую полезную информацию по этому вопросу здесь: http://www.axaptapedia.com/FormComboBoxControl
и здесь: http://blogs.msdn.com/b/palle_agermark/archive/2005/06/30/434146.aspx

1 голос
/ 25 марта 2011

Я не понимаю, как task() поможет вам.

Кажется, что когда элемент управления StringEdit содержит возврат каретки, StringEdit.text() всегда дает неверный результат, когда выпроверяя это методом textChange().Вероятно, ошибка AX.Вы можете использовать метод modified() для получения правильного результата хотя бы после этого.

Exportfile for AOT version 1.0 or later
Formatversion: 1

***Element: FRM

; Microsoft Dynamics AX Forms unloaded
; --------------------------------------------------------------------------------
FRMVERSION 5

FORM #TestForm1
  PROPERTIES
    Name                #TestForm1
  ENDPROPERTIES

  METHODS
    Version: 3
    SOURCE #updateOutput
      #void updateOutput()
      #{
      #    container c = str2con(Input.text(), '\n');
      #    int i;
      #    str s;
      #    ;
      #
      #    for (i = 1; i <= conlen(c); i++)
      #        s += strfmt("Line %1: %2\n", i, conpeek(c, i));
      #
      #    Output.text(s);
      #}
    ENDSOURCE
    SOURCE #classDeclaration
      #public class FormRun extends ObjectRun
      #{
      #
      #}
    ENDSOURCE
  ENDMETHODS
  OBJECTBANK
    PROPERTIES
    ENDPROPERTIES

  ENDOBJECTBANK

  JOINS
  ENDJOINS

  DESIGN
    PROPERTIES
    ENDPROPERTIES

    CONTAINER
      CONTROL STRINGEDIT
        PROPERTIES
          Name                #Input
          AutoDeclaration     #Yes
          Width               #Column width
          Height              #Column height
          MultiLine           #Yes
        ENDPROPERTIES

        METHODS
          Version: 3
          SOURCE #modified
            #public boolean modified()
            #{
            #    boolean ret = super();
            #    ;
            #
            #    element.updateOutput();
            #
            #    return ret;
            #}
          ENDSOURCE
          SOURCE #textChange
            #public void textChange()
            #{
            #    super();
            #
            #    element.updateOutput();
            #}
          ENDSOURCE
        ENDMETHODS
      ENDCONTROL

      CONTROL STRINGEDIT
        PROPERTIES
          Name                #Output
          AutoDeclaration     #Yes
          AllowEdit           #No
          Width               #Column width
          MultiLine           #Yes
        ENDPROPERTIES

      ENDCONTROL

    ENDCONTAINER

  ENDDESIGN

ENDFORM

***Element: END

Обновление. Возможно, вы можете вызвать метод modified() из textChange() - этобудь хаком, я не пробовал.

0 голосов
/ 28 марта 2011

Попробуйте атрибут SearchMode строкового элемента управления.Чтобы быть полезным, строковое значение должно быть сопоставлено с полем индексированной таблицы.

...