En este ejemplo veremos como acceder al valor de un control de otro formulario que esté abierto.
Es necesario si necesitamos conocer el valor de algún campo o grid de las ventanas que tengamos abiertas.
Necesitamos conocer tanto el nombre del formulario como la librería de la que proviene.
Código VB6:
Set lCol = gcn.obj.DameForms("Ahora<Libreria>") For i=0 To lCol.count -1 ' lCol(i).name nos devuelve el nombre del formulario If lCol(i).name = "<Nombre Formulario>" Then lUbic = lCol(i).Controls("<Nombre Control a Recuperar>").Text Exit For End If Next Set lCol = Nothing
Ejemplo. Refresco la grid de materiales del parte al cerrar un formulario con Botonera.
Sub Initialize() gForm.Controls("Botonera").ActivarScripts = True End Sub Sub Botonera_BeforeExecute(aBotonera, aBoton, aCancel) If aboton.name = "botCerrar" Then gcn.obj.showmsgbox "Antes:" & aboton.name Set lCol = gcn.obj.DameForms("AhoraPartes") For i=0 To lCol.count -1 ' lCol(i).name nos devuelve el nombre del formulario If lCol(i).name = "frmParte" Then 'gcn.obj.showmsgbox lCol(i).Controls("Descrip").Text 'Devuelve el valor del campo Descrip del parte. 'GRID DE MATERIALES Set lGrid = lCol(i).Controls("grdLineasMat") If lGrid Is Nothing Then gcn.obj.showmsgbox "No existe" Else 'inserto linea por bbdd. lGrid.refrescar End If Exit For End If Next End If End Sub
Código C#:
IVB6Collection<IForm> lCol = gCn.Obj.OnDameForms("<AhoraLibreria>"); foreach (IForm form in lCol) { if (form.Name == "<Nombre Formulario>") { // Recuperación del control break; } }
Ejemplo. Refresco la grid de materiales del parte al cerrar un formulario con Botonera.
using AhoraCl; using AhoraCore; using AhoraOCX; using AhoraUtil; namespace AhoraScriptsPantalla { public class AhoraCl_frmClientes : AhoraOCX.AhoraBaseScript { public void Show() { (gForm.Controls["Botonera"] as ICntBotonera).ActivarScripts = true; } public void Botonera_BeforeExecute(ICntBotonera aBotonera, IAhoraTool aBoton, ref Valor aCancel) { if (aBoton.Name == "botCerrar") { IVB6Collection<IForm> lCol = gCn.Obj.OnDameForms("AhoraPartes"); foreach (IForm form in lCol) { if (form.Name == "frmParte") { ICntGridUsuario lGrid = (ICntGridUsuario)form.Controls["grdLineasMat"]; if (lGrid == null) { gCn.Obj.ShowMsgBox("No existe"); } else { lGrid.Refrescar(); gCn.Obj.ShowMsgBox("Refrescado grid grdLineasMat"); } break; } } } } } }
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo