Buenas,
podrías activar siempre la primera pestaña antes de eliminar, o hacerlo más coqueto y activar justo la anterior, index -1
Buenas,
podrías activar siempre la primera pestaña antes de eliminar, o hacerlo más coqueto y activar justo la anterior, index -1
Una pregunta adicional,
He visto la utilización de Controls () en este hilo. Mi pregunta es, ¿Hay forma de recoorrer todos los controles de un formulario?
Saludos
Muchas Gracias
Buenas a todos, estaba necesitando un ejemplo para utilizar esto (un combobox alimentado con javascript). Pero veo que la página de fillipe no está ya disponible, alguno posee todavía este vin o me podría mostrar un ejemplo?
Saludos, muchas gracias.
Hola Humber.
Un ejemplo sencillo:
Necesitamos entonces 3 manejadores de Evento: uno para rellenar el Combo, otro para fijar el mes en el combo y un tercero para leer el mes seleccionado en el Combo.
RELLENAR_COMBO
// Formulario y control Combo
var oForm = theRoot.dataView();
var oCombo = oForm.control(“CBO_MES”);
// Añadimos los ítems al combo
// El Combo tiene un Nombre del Item y un valor del Item.
oCombo.addItem("", 0);
oCombo.addItem(“enero”, 1);
oCombo.addItem(“febrero”, 2);
oCombo.addItem(“marzo”, 3);
oCombo.addItem(“abril”, 4);
oCombo.addItem(“mayo”, 5);
oCombo.addItem(“junio”, 6);
oCombo.addItem(“julio”, 7);
oCombo.addItem(“agosto”, 8);
oCombo.addItem(“septiembre”, 9);
oCombo.addItem(“octubre”, 10);
oCombo.addItem(“noviembre”, 11);
oCombo.addItem(“diciembre”, 12);
FIJAR_COMBO
// Formulario y control Combo
var oForm = theRoot.dataView();
var oCombo = oForm.control(“CBO_MES”);
// Obtenemos el mes de la variable local del formulario
var sel = theRoot.varToInt(“NMES”)
// Fijamos el elemento seleccionado
oCombo.setCurrentIndex(sel)
LEER_COMBO
// Se ejecuta con Evento Item: cammbio de seleccioando
// Formulario y control Combo
var oForm = theRoot.dataView();
var oCombo = oForm.control(“CBO_MES”);
// Obtenemos la posición del ítem seleccionado en el combo
var sel = oCombo.currentIndex;
// Extraemos el valor numérico del ítem seleccionado
var codsel = oCombo.itemData(sel);
//Asignamos el dato leído a la variable local del formulario
theRoot.setVar(“NMES”, codsel);
Saludos
Paco Satué
Muchas Gracias.
saludos,
Cesar Fidalgo.
Buenos dias:
El planteamiento de Paco es, como siempre, válido pero ¡manda carayo con Life is Soft…! ¡Montar eso en cada Formulario en donde necesite seleccionar un mes!
Yo lo resolvería así:
1.El formulario sería de una Tabla en memoria que uso como comodín
2.La Tabla del Formulario tiene un puntero a la estática de Meses
3.La estática de meses tiene como primer elemento uno sin descripción para simular el caso vacío y que no muestre por defecto lo que no esté grabado
4.La selección se hace con un combo que muestra la estática de meses
El resto es trivial…
En definitiva, todo esto se resuelve huyendo de los Formularios sin origen como de la peste. Es posible que tenga alguno en mis aplicaciones, pero casi lo dudo…
Saludos. Ramiro
Muchas gracias @seh y @Ramiropa por sus respuestas. Pensé que sería menos tedioso hacerlo con javascript.
Me gustó mas la solución de @Ramiropa, la verdad no lo había pensado, y es una solución bastante sencilla.
Gracias a los dos.
Saludos.
Hola Ramiro.
¡Hombre! todos tenemos claro que la solución JavaScript no es lo ideal y yo he criticado desde el principio lo mal resuelto que está este tema en Velneo y lo más grave de todo es que es una bomba de relojeria que tarde o temprano nos explotará en las manos. Aparte de mis visiones apocalípticas, el tema del hilo era exclusivamente referido a ejemplos Javascript para rellenar el Combo sin entrar si es más óptimo hacerlo con código Velneo nativo.
Quizás el ejemplo no ha sido muy acertado porque he elegido una Lista estática de información, en este caso los meses del año.
Pero podemos plantear otro problema donde metemos el elemento dinámico.
RELLENAR_COMBO
importClass("VProcess");
var oForm = theRoot.dataView();
var oListaAnos = new VRegisterList(theRoot);
var oRegistro = new VRegister(theRoot);
var oProceso = new VProcess(theRoot);
var nAno = 0, nNumAnos = 0
var oCombo = oForm.control("CBO_AÑO");
oCombo.addItem("", 0);
// Proceso que devuelve la Lista de Años en la tabla Histórico
oProceso.setProcess("0PS_Ejercicios_app/PRO_LISTA_AÑOS")
// Ejecuta la selección y la devuelve en la Lista oListaAnos
if (oProceso.exec(VProcess.RunInServer)) {
oListaAnos = oProceso.result()
}
if (oListaAnos) {
// Nº de elementos del Combo
nNumAnos = oListaAnos.size()
for ( i = 0 ; i < nNumAnos ; i++) {
oRegistro = oListaAnos.readAt(i)
// El combo tiene un Nombre del Item y un valor del Item.
// En este caso coinciden
oCombo.addItem(oRegistro.fieldToInt("AÑO"), oRegistro.fieldToInt("AÑO"));
}
}
PROCESO PRO_LISTA_AÑOS
Cargar lista ( HISTORICO@0PS_Ejercicios_dat, AÑO, , , , )
Multipartir lista ( AÑO )
Rem ( Aquí tenemos una Lista con todos los Registros de un Año determinado )
Seleccionar ficha por posición ( 1 )
Leer ficha seleccionada
Añadir ficha a la salida
En este caso ya no tenemos posibilidad de tabla estática ni tampoco el campo Año es un puntero Maestro.
En cuanto a lo de los formularios Sin Origen, pues habrá para todos los gustos. Cuando uno empieza con Velneo y ha sido mi caso, siempre asignaba Origen al formulario. Ha sido en los Seminarios de Velneo donde he visto que en muchos casos se prescinde del Origen para poder resolver diversas situaciones.
Saludos
Paco Satué
Hola Paco:
Gracias por tu última aportación… (por cierto que no era mi ánimo corregir tu mensaje anterior sino simplemente ofrecer una alternativa que me parecía más sencilla)
Respecto a tu último párrafo, me surge una duda…
¿Qué situaciones ven su solución facilitada porque el formulario no tenga origen?
Saludos. Ramiro
Hola Ramiro.
Que haya debate en el foro siempre es bueno y hará más divertido leer el foro.
Los formularios pueden tener Origen o no tenerlo, todo dependerá de lo que vaya a hacer. Habrá formularios sin Origen en diversos casos:
Saludos
Paco Satué