25.06.2013, 05:14 | #1 |
Участник
|
Dynamics AXBR: AX2012 – Criando propriedades a partir de um texto selecionado
Источник: http://feedproxy.google.com/~r/daxbr/~3/kLZ55KcNcjI/
============== Caros, Frequentemente temos que criar métodos do tipo ‘parm’ no DAX via X++ e toda vez é sempre a mesma coisa, criamos a classe, as variáveis e etc… O próximo passo é criar os métodos para que essas propriedades possam ser atribuídas / lidas, e hoje, ao presenciar essa situação novamente eu resolvi criar um script que gera pra mim os métodos dentro da minha classe a partir do Class Declaration. Vamos ao exemplo. A primeira coisa a se fazer é criar o método que irá tratar o meu texto selecionado, para isso: Na classe EditorScripts crie um novo método com a estrutura: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546public void template_method_createAllParms(Editor editor){ Source template = "public %1 parm%3(%1 _%2 = %2)\r\n{\r\n ;\r\n %2 = _%2;\r\n return %2;\r\n}"; str parmOne, parmTwo; int spacePosition; List linesToCreate = new List(Types::String); List parmsToCreate = new List(Types::String); ListEnumerator listEnum; str currentLine; ClassBuild obj; TreeNode parent = TreeNode::findNode(SysTreeNode::pathParent(editor.path())); ; linesToCreate = strSplit(EditorScripts::getSelectedText(editor), '\r\n'); if(linesToCreate) { listEnum = linesToCreate.getEnumerator(); while(listEnum.moveNext()) { currentLine = strLTrim(listEnum.current()); if(currentLine) { spacePosition = strScan(currentLine, " ", 1, strLen(currentLine)); parmOne = subStr(currentLine, 0, (spacePosition - 1)); parmTwo = strLTrim(strRTrim(subStr(currentLine, spacePosition, strLen(currentLine)))); parmTwo = subStr(parmTwo, 0, strLen(parmTwo) -1); parmsToCreate.addEnd(strFmt(template, parmOne, parmTwo, str2Capital(parmTwo))); } } } if(parmsToCreate) { listEnum = parmsToCreate.getEnumerator(); obj = new ClassBuild(parent.AOTname(), true); while(listEnum.moveNext()) { currentLine = strLTrim(listEnum.current()); obj.addMethod('name', listEnum.current()); obj.classNode().AOTcompile(); } }} O segundo passo é criar a classe com as variáveis: 12345678class Class1{ str StringOne; int IntOne; real RealOne; date DateOne; NoYes NoYesEnum;} Agora que já temos tudo o que precisávamos, vamos ao funcionamento! 1 -> Abra o ClassDeclaration da classe criada acima; 2 -> Selecione as variáveis que quer criar as propriedades; 3 -> Clique com o botão direito e seguir o caminho: Scripts -> Template -> Method -> CreateAllParms. Espere o processo terminar, e no final sua classe ficará assim: Considerações:
Pichler Источник: http://feedproxy.google.com/~r/daxbr/~3/kLZ55KcNcjI/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|