Validar u tree view

Quisiera que me ayudes sobre el siguiente problema:
Tengo un tree view y quisiera validar
Que al momento de abrir una ventana ya no se abra otra vez en el momento de dar clic en el árbol referente a esta ventana si ésta está abierta.

1 respuesta

Respuesta
La validación que buscas tiene una combinación de mascara y evaluación programática, la primera (el 50%) ya lo tienes dado, ahora la segunda parte.
Un datawindow o mejor dicho, un objeto de power builder contiene un numero de eventos, propios, aunque esto no quiere decir que puedas añadirle otros.
Para eso deberás ir primero al área de eventos propios del objeto (digamos el caso del datawindow), luego presionas el botón derecho y seleccionas ADD, al abrir la ventana de eventos en el nombre de este colocas key
y más abajo encontraras el EVENT ID, el cual deberás indicar pbm_dwnkey, una vez elijas este, automáticamente power builder selecciona el evento y añade los argumentos de este.
Ahora ya tienes declarado el evento que controla las pulsaciones del teclado.
Dentro de este teclado encontraras el argumento key, que indica cual es la tecla presionada,
Para evitar que el evento sea ejecutado por power builder, utilizas la instrucción RETURN(1), esto aborta el proceso normal de secuencia de ejecución.
La idea que quiero transmitirte es la siguiente.
Cuando el usuario presione una tecla, esta sera capturada por el evento key, el cual a su vez coloca el valor en el argumento key,
por medio de un CHOOSE CASE, podrías preguntar por los valores del argumento en cuestión.
Y validar si este es aceptado o no retornando un valor 0 (cero) en caso se ser aceptado y un 1 en caso contrario.
Bien.
En otro caso puedes utilizar la función KEYDOWN(), siempre en el mismo evento. Esta función devuelve un valor boolean, el cual es verdadero cuando determina que el valor enviado compo argumento coincide con la tecla presionada
Por ejemplo.
IF KEYDOWN(KeyEnter!) THEN
MESSAGEBOX('ATENCION', 'PRESIONO LA TECLA RETURN')
END IF
En la ayuda en linea con respecto a la función keydown(), encontraras los valores de las teclas virtuales, los cuales son del tipo KEYCODE, y estos igualmente son los que te sirven para evaluar el valor del argumento key, en el evento que lleva el mismo nombre.
Se me ocurre que entonces en lugar de hacer la apertura de la ventana en el evento clicked lo hagas en el doubleclicked.
De tal forma que para abrir la ventana, deberás hacer doble click,
Otra forma de hacerlo es simplemente generando un menu del tipo emergente, este menu se activa haciendo click con el botón derecho del ratón, en este menu podrías poner la opción de apertura de la ventana que necesitas.
En definitiva este menu del tipo emergente es manejado por la función POPUPMENU(), a la puedes referirte simplemente con la ayuda en linea de pb.
Lo que pasa es que yo estoy llamando a mis ventanas desde el evento selectionchanged del treeview y este c´´odigo no coge en otro evento.
Me parece un poco extraño que solo el evento selectionchanged sea el que puedas utilizar, permíteme insistir, coloca en el evento
rightclicked(), un mensaje utilizando el messagebox(),
Para comprobar lo que me planteas, si esto te funciona la solución ya la tienes dada.
Regularmente el evento selectionchanged, es disparado cuando cambia la selección de un nodo.
agdys

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas