8

Ejemplo Mover Ventana (forma personalizada) II

En la entrada  Ejemplo Mover Ventana (forma personalizada) vimos como mover la ventana sin tener la barra de títulos nativa de windows. Lo hacíamos con el plugin tmDragDropObj, que lamentablemente no tiene efecto en Vista ni en 7 (Seven).

Ahora que utilizo Windows 7 y gracias a que Jomego preguntó si existe una solución, me puse a buscar una… Primero trate de recordar que plugin puede detectar los eventos del mouse (btdown , btup) y vi un par, pero ninguno funciona en W7, probablemente tampoco en Vista.

Luego de pensar… La lámpara se prendió 💡 . Como utilizo mucho Flash para otros trabajos, recordé que efectivamente Flash puede capturar eventos del mouse cuando interactua con un MovieClip (MC).


Plugins utilizados:

  • NeoDouble (DEC)

El archivo de Flash tiene que tener un MC de la forma que necesitemos y en las acciones del primer fotograma el siguiente codigo:

bt.useHandCursor = false; //Para mostrar el cursor normal y no la mano
bt.onPress = function(){ //Cuando se presione BTDOWN
{fscommand ("NeoBook", "npEjecutarAccion \"[acc_b]\"");}
};

bt.onRelease = function(){ //Cuando se suelte BTUP
{fscommand ("NeoBook", "npEjecutarAccion \"[acc_a]\"");}
};

Noten que bt es la instancia del MC.

Luego lo publicamos y obtenemos el swf que tenemos que cargar en el objeto Flash en nuestra publicación.

Es el único cambio que debemos hacer para que funcione, si no entiendes puedes ver ejemplo nombrado al comienzo . No olvides de revisar el ejemplo incluido en el archivo para descargar. Se incluye el archivo .swf y .fla (CS3 y CS4).

Espero que sirva.

Captura:

ejemplo_mover_ventanaII

Descarga del ejemplo:

  ejemplo_mover_ventanaII.rar (1,4 MiB, 1.590 hits)

NOTA: Si utilizamos este metodo, necesitamos que la pc tenga instalado adobe flash player. Si no estamos seguros podremos embeberlo en la aplicación con un incremento del tamaño final del archivo.

Descarga el ejemplo actualizado (sugerencias por Mongoose).

12

GPNeo: Plugins gratuitos para Neobook

gpneo

Hace un par de días Mariano Chiaverano (DAMANEO) me mando un mail el cual transcribo a continuación:

Me comunico con ustedes para hacerles llegar una Website que he creado recientemente y que intentaré completar a la brevedad. La Website intentará reunir todos los plugins gratuitos que existen para Neobook, desde los más antiguos a los más nuevos. En todos los casos se respetará el autor de los mismos, pero los archivos (en zip y/o cab) estarán en el sitio GPNeo disponibles para todo aquel que quiera hacerse de ellos. Igualmente existiran casos, como los plugins de HPW, los cuales no incluiré en la website debido a que todos son gratuitos y todos estan actualmente disponibles en la website oficial de HPW. Solo se hara mensión y se incluirá el enlace de ellos en GPNeo.
Estoy trabajando para traducir todas las descripciones al inglés (En breve).

Personalmente me parece una gran contribución a la comunidad, pues los que nos iniciamos recientemente en el mundo de neobook no pudimos ver algunos plugins.

Con esta web podremos tener (si contribuimos todos) la base de plugins gratuitos a nuestro alcance.

Desde neobookeros.com.ar el mejor de los deseos para GPNeo.

Link: http://gpneo.eshost.com.ar/

8

NeoIndent

[raw]

[/raw]

neoindent_screen1

Buenas…hoy les voy a presentar una pequeña utilidad para todos los neobookeros. NeoIndent surge de la necesidad de ordenar el código que escribo en los objetos de neobook. Hay veces que tengo que insertar bloques de código dentro otros bloques, lo cual desordena todo el código y lo hace poco legible. Ahí es donde NeoIndent interviene y dejará tu código ordenado y legible. Pues puedes escribir un bloque de código  o abrir una publicación y realizar el indent a todas las acciones de todos los objetos Veamos un ejemplo practico: Código que escribimos:

SetVar "[accion]" "MCICommand [#34]STATUS [tema] mode[#34]"
npEjecutarAccion "[accion]"
if "[MCIResponse]" "<>" "playing"
if "[random]" "=" "3"
setvar "[random]" "1"
else
if "[random]" "<" "3"
setvar "[random]" "[random]+1"
endif
Endif
npRutaCortaArchivo "[tema[random]]"
setvar "[tema]" "[npResultadoAccion]"
SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
npEjecutarAccion "[accion]"
Endif

NeoIndent los transforma a:

SetVar "[accion]" "MCICommand [#34]STATUS [tema] mode[#34]"
npEjecutarAccion "[accion]"
if "[MCIResponse]" "<>" "playing"
    if "[random]" "=" "3"
        setvar "[random]" "1"
    else
        if "[random]" "<" "3"
            setvar "[random]" "[random]+1"
        endif
    Endif
    npRutaCortaArchivo "[tema[random]]"
    setvar "[tema]" "[npResultadoAccion]"
    SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
    npEjecutarAccion "[accion]"
Endif

Descargar:

  NeoIndent.rar (2,4 MiB, 4.532 hits)

Por bugs y/o sugerencias [email protected] Historial de Actualizaciones: update Actualización 19/06/09 [Versión 1.0.0.1]: -Al ingresar un código extenso manualmente al realizar el indent no mostraba información al usuario de que se estaba analizando el texto. Corregido. Gracias a Quili por comunicar. -Al realizar indent a archivos y éste en su codigo tenía acciones que contenian el caracter “| ” al escribir en el archivo se escribia como una linea nueva. Corregido. Gracias a Quili por comunicar. Link de descarga actualizado! update Actualización 20/12/10 [Versión 1.0.0.4]: -Ahora se puede seleccionar el idioma (Español-Ingles). -Agregada opción de redimensionar la aplicación. El programa recuerda el tamaño y posición de la ventana. -Ahora la comprobación de actualizaciones es opcional (ver botón opciones). Link de descarga actualizado!

19

Música de fondo en publicaciones

Hola hoy voy a compartir con ustedes un ejemplo (contestando a Jackie en su comentario) de como reproducir música de fondo en sus publicaciones y poder navegar entre las paginas sin que la música se pare.

Las opciones para solucionar esto eran:

Objeto MediaPlayer (al cambiar de página se para)
Objeto Flash (al cambiar de página se vuelve a ejecutar)
Comandos MCI (ésta es la solución)

Pues bien ya antes había tenido un pequeño encuentro con los comandos MCI en la entrada Lista de reproducción y más… la cual recomiendo que le den un vistazo antes, pero en este caso era distinto, pues yo debía investigar como saber si ya se esta reproduciendo un archivo antes de reproducir otro.

Luego de mucho google 😀 di con la solución. Pero vamos por pasos.

Primero le diremos a nuestra publicación (en acciones al cargar la aplicación ) cuales y cuantos archivos queremos reproducir y le diremos que todavía no estamos reproduciendo.

setvar "[temas]" "3"
setvar "[tema1]" "[PubDir]tema1.mp3"
setvar "[tema2]" "[PubDir]tema2.mp3"
setvar "[tema3]" "[PubDir]tema3.mp3"
setvar "[play]" "NO"

Luego en las acciones de la primera página (o la que necesitemos que se inicie la reproducción) pondremos el siguiente código.

If "[play]" "=" "NO"
    :ran
    Random "[temas]" "[random]"
    if "[random]" "=" "0"
        GotoLine "ran"
    endif
    npRutaCortaArchivo "[tema[random]]"
    setvar "[tema]" "[npResultadoAccion]"
    SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
    npEjecutarAccion "[accion]"
    SetVar "[play]" "SI"
EndIf
TimerStart "Timer1" "1000"

Lo que hace el código anterior es generar un numero aleatorio para empezar a reproducir ese archivo, esto para evitar siempre reproduzca el mismo sonido siempre. Todo ésto lo hace solamente una vez al entrar a la página pues si navegamos a otra y volvemos a ésta empezaría a reproducir otro archivo haciendo que se mezclen los sonidos.

En las acciones del Timer

SetVar "[accion]" "MCICommand [#34]STATUS [tema] mode[#34]"
npEjecutarAccion "[accion]"
if "[MCIResponse]" "<>" "playing"
    if "[random]" "=" "3"
        setvar "[random]" "1"
    else
        if "[random]" "<" "3"
            setvar "[random]" "[random]+1"
        endif
    Endif
    npRutaCortaArchivo "[tema[random]]"
    setvar "[tema]" "[npResultadoAccion]"
    SetVar "[accion]" "MCICommand [#34]play [tema][#34]"
    npEjecutarAccion "[accion]"
Endif

El código anterior obtiene el estado del dispositivo MCI y si éste no esta reproduciendo pasa al siguiente tema.

Espero que sea claro, pues me cuesta explicarlo en detalle, cualquier cosa comenten y responderé su consulta.

Plugins Utilizados:

  • NeoDouble (DEC)

Screenshot del ejemplo:

ejemplo_musica_fondo

Descarga:

  ejemplo_musica_fondo.rar (6,9 MiB, 3.544 hits)


Saludos

7

Evitar que se cierre la aplicación desde el botón cerrar de la barra de títulos

Buenas, mediante un mail me consultaron como se pude hacer para hacer una pregunta al estilo “Realmente desea Salir?”, esto es fácil si usamos un boton personalizado con la función Exit, pero esta persona se refería precisamente al botón cerrar de la barra de titulo (X).

Pues bien, para esto necesitamos de la variable [ShutdownSource]. Ésta variable contiene la causa del cierre de nuestra aplicación.

Puede contener:

NeoBook > La petición se generó por la acción Exit de neobook.

Windows > La petición se generó por Windows.

CloseButton > La petición se generó a través del botón Cerrar de la aplicación (alt+f4, etc).

Cambien necesitaremos de la variable [ShutdownStatus] para cancelar el cierre mediante la siguiente acción:

SetVar "[ShutdownStatus]" "False"

Sabiendo, finalmente procedemos a programar lo que evitara el cierre, para esto vamos a Libro>Propiedades>Acciones>Cierre y luego escribimos:

If "[ShutdownSource]" "=" "CloseButton"
	MessageBox "Salir" "Realmente desea salir?" "Si|No" "[op_salir]"
	If "[op_salir]" "=" "2"
		SetVar "[ShutdownStatus]" "False"
	Endif
EndIf

El código anterior comprueba si la petición de cierre fue del botón cerrar, si fue así pregunta si desea salir y guarda la opción elegida en la variable [op_salir], si ésta es igual a 2 (Respuesta No) cancelamos el cierre como vimos arriba, eso es todo, pues si se elige la Respuesta Si se guarda 1 en [op_salir] con lo que no hacemos nada pues la aplicación se cerrará cumpliendo su cometido el botón cerrar.
Screenshot del ejemplo:

ejemplo_salir

Descarga:

  ejemplo_salir.rar (651,1 KiB, 1.843 hits)

Nota: El ejemplo muestra que ocasiona la petición de cierre y tal cual lo explica el ejemplo muestra como evitar que se cierre si la petición es del botón cerrar. Prueben el ejemplo cerrando desde el botón salir, del botón cerrar (x) y haciendo click derecho>cerrar de la barra de tareas.


Eso es todo espero que les sea útil.

BuNKeR

5

Felices Fiestas!

Feliz Navidad

Buenas … Solo quiero desearles a todos neobookeros una muy FELIZ NAVIDAD y un PROSPERO AÑO NUEVO… Que se cumplan sus deseos y salgan nuevos proyectos, a programas 😉 …

Recuerden que las entradas que publico acá son gracias a sus consultas, por lo cual espero sus dudas…

Saludos

4

Creando CustomWindows Acopladas y Moviendolas

Buenas… Navegando por el foro de neosoftware me encuentro con una entrada creada por Apoleo en la cual pregunta como puede hacer para abrir 2 customwindows y que la segunda quede “pegada” a la primera. Resulta que yo ya había hecho un ejemplo parecido (Ejemplo Acople de Ventanas) Pero con la diferencia que se movia a partir de la ventana principal de nuestra aplicación no como en este caso que se tendria q mover desde un customwindow.

Plugins Utilizados:

Sin más que decir les dejo el ejemplo para descarga.

Screenshot del ejemplo:

Descarga:

  ejemplo_customwindows.rar (1,5 MiB, 1.728 hits)

NOTA: NO SE OLVIDEN DE PONER EN EL MISMO DIRECTORIO EL ARCHIVO AutoItDLL.dll (parte del plugin hpwAutoIt).
Descarga actualizada!

13

Ejemplo paint con flash y neobook

Hace algunos días recibí un mail en el cual me preguntaban si se podía hacer una aplicación similar al paint de windows con neobook. De poder se puede, esto depende de nuestra imaginación, destreza y bolsillo 😆 .

Sin dudas el mejor plugin para este caso es rtImageFX (RonMarie). Dado que no todos pueden o quieren comprar dicho plugin podemos programarlo con flash y luego incluirla en nuestra aplicación.

Toda la interfaz de dibujo esta realizada en flash, existe un solo botón en neobook que guarda la imagen en formato jpg donde el usuario lo desee.
No voy a explicar el código de flash, pues no es mi especialización pero basta con decirles que programé el ejemplo leyendo la ayuda.

Cabe destacar que este es un ejemplo básico se pueden agregar mas colores, herramientas, etc. ustedes pueden modificarlo libremente para adaptarlo a sus necesidades.

Screenshots del ejemplo

Interfaz del programa

Imagen luego de guardar

Plugins utilizados:

tmCanvas (TechMedia Software)
hpwImage (H.P.Wickern)

Descarga (incluye los códigos fuente)

  ejemplo_paint.rar (1,9 MiB, 3.312 hits)

NOTA: El .fla del ejemplo esta en formato Flash CS3.

.Fla Versión Flash MX 2004 (decompilada): ➡ http://www.neobookeros.com.ar/wp-content/files/paint_flash_mx2004.fla

.Fla Versión Flash 8 (guardada desde original): ➡ http://www.neobookeros.com.ar/wp-content/files/paint_flash_8.fla

7

La variable [CommandLine]

Hola, hoy voy a comentar un poco sobre la variable [CommandLine], ésta nos permite obtener los parámetros que fueron pasados a nuestra aplicación para poder utilizarlos luego.

Por ejemplo podríamos hacer una aplicación que al ser llamada desde la linea de comandos mi_calc.exe 2 6 muestre la suma de los parámetros, en este caso el primer parámetro (nuestro) seria el 2 y el segundo parámetro (nuestro) seria el 6 dando como resultado 8.

¿Porque aclaro nuestro parámetro entre paréntesis? Porque siempre el primer parámetro para nuestra aplicación será el nombre del ejecutable (con ruta).

En el ejemplo anterior la lista seria la siguiente:

Parámetro 1: c:\mi_calc.exe

Parámetro 2: 2

Parámetro 3:6

Como hago para obtener la lista de parámetros en neobook?

StrParse "[CommandLine]" "[#13]" "[Parametro]" "[Parametro_cantidad]"
Loop "1" "[Parametro_cantidad]" "[i]"
	AlertBox "Ejemplo Commandline" "El parametro [i] es [Parametro[i]]"
EndLoop

Screenshot del ejemplo:

Descarga:

  ejemplo_commandline.rar (835,5 KiB, 2.066 hits)

NOTA: Para ver el ejemplo ejecuten el archivo ejemplo_commandline_lanzador.exe

Espero les sirva.

3

1 Botón Varias Acciones

Hoy después de mucho tiempo inactivo voy a postear una entrada que si bien la tenia pensada no me daba tiempo hacerla.

En la entrada anterior (Usando Botones Invisibles) mostraba como ejecutar acciones de distintos botones con la misma tecla de acceso directo. Pues bien esto es algo parecido, pero utilizando 1 solo botón.

Para esto utilizo la variable [FocusedObject] que contiene el nombre del objeto que tiene foco en ese momento, luego en las acciones del botón con un If logro realizar las acciones que yo quiera para ese objeto al presionar el acceso directo a ese botón (que yo lo puse oculto).

Ejemplo código acciones del botón:

if "[accion]" "=" "ListBox1"
   ListBoxGetItem "[FocusedObject]" "[ListBox1]" "[texto]"
   AlertBox "Prueba" "[texto]"
endif

if "[accion]" "=" "ListBox2"
   ListBoxGetItem "[FocusedObject]" "[ListBox2]" "[texto]"
   MessageBox "Prueba" "[texto]" "Aceptar" "[resultado]"
endif

if "[accion]" "=" "TextEntry1"
   StickyNote "-1" "-1" "[TextEntry1]" "0"
endif

Miren el ejemplo y cualquier cosa preguntan.

Saludos

Screenshot del ejemplo

Prueba el ejemplo: Da foco a los distintos objetos y presiona Enter para ver que pasa.

Descargar:

  ejemplo_boton_varias_acciones.rar (656,8 KiB, 1.800 hits)

P/D: Tambien dejo disponible la descarga del ejemplo (con las correcciones) enviado por apoleo para la entrada anterior. Recomendable de ver.

  formularios.rar (2,9 KiB, 1.521 hits)