<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />No es tan fácil como piensas. Por alguna razón, no puede enviar el comando "<< Set Window Icon ()" durante el proceso de creación. Normalmente esto está bien, ya que simplemente puede enviar el comando a la ventana inmediatamente después. Al igual que:
noroeste = Nueva ventana ( "prueba" , << Modal , caja de texto ( "prueba" )) ;
noroeste << Establecer el icono de la ventana ( "$ SAMPLE_IMAGES / pi.gif" ) ;
Sin embargo, cuando se trata de ventanas modales, encontramos algunos problemas interesantes. Primero, la ventana modal evita que se ejecuten más scripts hasta que el usuario interactúe con la ventana modal. Esto normalmente significa que, cuando podamos enviar el comando Establecer icono de ventana, la ventana ya se habrá cerrado. Para solucionar esto, podemos programar el comando de envío, para 0 segundos en el futuro. Lo que esto hace es que le dice a JMP que envíe el comando tan pronto como sea posible, AKA cuando deja de ejecutar otros comandos. Dado que la ventana modal impedirá que el script continúe, será justo después de que se muestre la ventana. Lo cual es perfecto para nuestra intención.
Por lo anterior, puede pensar que está bien. Lo programo, coloco el código sobre la creación de la ventana y ¿estamos bien?
programar ( 0 , noroeste << Establecer el icono de la ventana ( "$ SAMPLE_IMAGES / pi.gif" )) ;
noroeste = Nueva ventana ( "prueba" , << Modal , caja de texto ( "prueba" )) ;
¡INCORRECTO!
El problema con esto es que el objeto nw no se crea hasta después de que se responde a la ventana modal. A diferencia de otras ventanas, el objeto nw no contiene una referencia a la ventana de visualización, en su lugar está configurado para almacenar el objeto de datos enviado por la ventana modal. En su mayor parte esto será {Button = -1} o {Button = 1} dependiendo de si presionas "Ok" o "Cancel". Por lo tanto, para resolver este problema necesitamos un objeto de visualización al que podamos enviar el comando. El cuadro de texto funcionaría, pero elegí envolverlo en un cuadro de lista y enviarlo allí.
Así obtenemos (después de una pequeña refactorización):
iconFunction = Función ({ caja , camino } ,
caja << Establecer el icono de la ventana ( camino ) ;
) ;
s = programar ( 0 , iconFunction ( vlb , "$ SAMPLE_IMAGES / pi.gif" )) ;
informe ( s ) << Mostrar ventana ( 0 ) ;
noroeste = Nueva ventana ( "prueba" , << Modal , vlb = vlistbox ( caja de texto ( "prueba" ))) ;
Esta fue solo una peculiaridad interesante de JSL que me encontré hoy. ¿Cuáles son algunas de sus peculiaridades favoritas de JSL?