Abrir multiples veces un form? c#

csharp
Etiquetas: #<Tag:0x00007fb8db0d2078>

#1

estimados,
esperando estén bien, como es posible abrir un form múltiples veces en mi addon, muchos son los objetos que se puede abrir mas de una vez, como es posible hacer esto en mis forms?

por ejemplo de comisiones lo abro dos veces

y una consulta básica que diferencia tiene el oform con el UIAPIRawForm?

muchas gracias!!


#3

Hola :smile:!

Si usas el SAP Business One Studio para VS para desarrollar el AddOn y sigues la misma metodologia de la Clase “Menu.cs” (o Menu.vb), puedes abrir todas las instancias de un form que quieras, siempre y cuando dejes en blanco la propiedad"UniqueID" del Form.

En cambio si usas el metodo tradicional basado en XML y LoadBatchActions(), deberas asignar un ID a cada nueva instancia.

PD: Hoy termino de responderte la pregunta anterior, he estado full con una migracion que me carga loco y no he podido ver con calma tu codigo :crazy_face:

Saludos :vulcan_salute:

Por otro lado “UIAPIRawForm” es una propiedad de los UserFormBase para acceder a las propiedades de su Objeto Base “SAPbouiCOM.Form”.

Es decir, en el Studio Suite para VS, se crean automaticamente forms de usuario de clase UserFormBase y para poder acceder a las propiedades bases de una INSTANCIA de dicho form, deberas usar la propiedad UIAPIRawForm

Asi:

  Dim Formp2 As MyForm
  Formp2 = New MyForm

  oForm as SAPbouiCOM.Form = Application.SBO_Application.Forms.Item(Formp2.UIAPIRawForm.UniqueID) 
' Aqui solo puedo acceder a la propiedad UniqueID por medio de UIAPIRawForm
                        

#4

muchas gracias Gabriel como siempre.
Con respecto a tu segunda respuesta, me surgio la duda, ya que yo tenia asi:
oForm = this.UIAPIRawForm.Items.Item("grilaedi");
pero leía que era mejor utilizar el UIAPIRawForm, pero no tenia idea del porque.
Application.SBO_Application.Forms.Item(this.UIAPIRawForm.UniqueID);
entonces ire viendo como se maneja esto, y gracias por ambas respuestas, y espeor lo otro cuando puedas nomas :slightly_smiling_face:

saludos!


#5

Debes dejar la propiedad UniqueID de un form en blanco y usar siempre
oForm = Application.SBO_Application.Forms.Item(this.UIAPIRawForm.UniqueID);
Para identificar una instancia abierta de un Form, ya que no conoceras su UniqueID en tiempo de ejecucion (El programa lo asigna de forma automatica).

Saludos.


#6

hola Gabriel, estoy haciendo una prueba y si funciona como me decias, osea se abre y no me da error y le asigna solo un nombre al form, pero al abrir de nuevo me da el problema


tengo que poner esta linea

oForm = Application.SBO_Application.Forms.Item(this.UIAPIRawForm.UniqueID);
``
en el Form_LoadAfter  o OnCustomInitialize?

muchas gracias!

#7

Falta que hagas eso, porque “addtables” no es un Unique ID generado automaticamente por el sistema.

Adicionalmente:
oForm = Application.SBO_Application.Forms.Item(this.UIAPIRawForm.UniqueID);

Lo puedes asignar en el OnCustomInitialize, pero puede ser definido en cualquier evento sin problemas

Saludos.


#8

muchas gracias, ahora otra pregunta despues pero en otro tema, te pasaste Gabriel.
muchos saludos!


#9

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.