Crear un editText de precio c# UI API

Hola maestros , esperando estén bien, quisiera saber como podría crear un editTextbox en un addon ,que se pueda solo se pueda agregar números (dividido por puntos y comas), ademas que aparezca esa calculadora que cuando sale un campo de precio, como es posible hacer esto?
image

muchas gracias

Hola! :grin:

Es muy sencillo, si importas cualquier Form del sistema, veras que cada campo tiene asociado un UserDataSource(UDS), este objeto permite asignar un valor con formato a un control, y es recomendable trabajar con los UserDataSource para asignar y recuperar los valores de los EditText (Mas no directamente).

Entonces para hacer lo que indicas, lo que debes hacer es definir un UserDataSource, bien sea a nivel de diseño o codigo, y definir las siguientes priedades:

  • DataType: deberas indicar el tipo de formato que tendra el control asociado (Fecha, Numero, Cantidad, Precio, Texto, etc.) EN tu caso seri “dt_PRICE”
  • Size: Indicar la longitud del campo en caso de ser tipo Texto.
  • UniqueID : El Nombre del UserDataSource

Una vez definido el UserDataSource,se debe asignar al objeto EdiText correspondiente, para esto solo deberas llenar la propiedad “DataSource” de este ultimo con el UDS recien creado.

Con esto, ya el EditText aparecera con las caracteristicas deseadas, y podras asignarle o recuperar el valor a EdiText por medio del UDS.

Ejemplo por Codigo:

            oForm.DataSources.UserDataSources.Add("UDPrice1", SAPbouiCOM.BoDataType.dt_PRICE, 0)
            Dim oEdit As SAPbouiCOM.EditText = oForm.Items.Item("MiEditText").Specific
            oEdit.DataBind.SetBound(True, "", "UDPrice1")

            'Asignar Valor a EditText por Medio del UDS '
            Dim oUserDataSource As SAPbouiCOM.UserDataSource = oForm.DataSources.UserDataSources.Item("UDPrice1")
            oUserDataSource.ValueEx = 9999.99

Saludos!

3 Me gusta

muchas gracias Gabriel por contestar,esta todo muy claro solo tengo un error…

SAPbouiCOM.EditText oEdit = oForm.Items.Item("txtprsec").Specific;
            oEdit.DataBind.SetBound(true, "", "VALORPRECIO");

            //'Asignar Valor a EditText por Medio del UDS '
            SAPbouiCOM.UserDataSource oUserDataSource = oForm.DataSources.UserDataSources.Item("VALORPRECIO");
            oUserDataSource.ValueEx = "9999.99";

el error es:

Error 9 No se puede convertir implícitamente el tipo ‘object’ en ‘SAPbouiCOM.EditText’. Ya existe una conversión explícita (compruebe si le falta una conversión)

es porque el edittext ya esta inicializado?
saludos

Conversiones Explicitas: algo basico y tipico de C#.

Solucion:

SAPbouiCOM.EditText oEdit = (SAPbouiCOM.EditText)oForm.Items.Item("txtprsec").Specific;
3 Me gusta

Gracias Gabriel, como siempre de gran ayuda.
saludos,