Fecha actual Lun Jul 01, 2024 10:46 am

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 13 mensajes ] 
Autor Mensaje
NotaPublicado: Jue Ago 10, 2006 7:28 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Me he hecho este codigo, esto no deberia lanzar un mensaje "HOLA" cuando el intervalo llegue a 0?


#include "Form1.frm"


procedure Main
Activate()
? "Hola radiola"
return

Function Activate
Local oForm
oForm := TTimer():Create( @oForm )
oForm:Enabled := .T.
oForm:Interval := 100
oForm:Caption := "HOLA"
oForm:OnTimer := { | oObjeto | MessageDlg("HOLA") }
return

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Vie Ago 11, 2006 9:09 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Josu,

No, la clase TTimer lanza el evento OnTimer cada vez que pase el tiempo indicado por Interval en milisegundos.

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Vie Ago 11, 2006 10:20 am 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
la idea es que lance el mensaje o la funcion indicada, pero no me sale nada....idea de porque? el intervalo lo he incrementado y reducido

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Vie Ago 11, 2006 4:43 pm 
Avatar de Usuario

Registrado: Vie Oct 07, 2005 8:26 pm
Mensajes: 115
Ubicación: Valencia - España
Josu, mira este proyecto a ver si te sirve de ejemplo.

Un saludo.
Vïctor


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Vie Ago 11, 2006 10:21 pm 
Avatar de Usuario

Registrado: Mar Ago 01, 2006 9:57 pm
Mensajes: 44
Victor escribió:
Josu, mira este proyecto a ver si te sirve de ejemplo.

Un saludo.
Vïctor


Victor, creo que el fichero viene corrupto o le falta el form.

Salu2 José Manuel


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Sab Ago 12, 2006 12:11 am 
Avatar de Usuario

Registrado: Vie Oct 07, 2005 8:26 pm
Mensajes: 115
Ubicación: Valencia - España
Jose Manuel, tienes razón , se me quedó el form. Aquí va de nuevo.

Un saludo.
Víctor


Adjuntos:
Timer.rar [1.24 KiB]
385 veces
Arriba
 Perfil  
Responder citando  
NotaPublicado: Dom Ago 13, 2006 10:44 am 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Hola Bruno:

he estado un par de dias off en otros temas...
No he escrito bien el codigo?
creo la clase con ttimer():create(@oTimer)
asigno intervalo y cargo un codeblock en ontimer...no se puede hacer asi?
es que quiero evitar el uso del form como pone en el ejemplo Victor

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Ago 13, 2006 6:10 pm 
Avatar de Usuario

Registrado: Vie Oct 07, 2005 8:26 pm
Mensajes: 115
Ubicación: Valencia - España
Josu , esta forma de declarar el objeto timer no es correcta.

ttimer():create(@oTimer)

Esta sería correcta.

oTimer:=TTimer():Create( Self )

o bien de esta otra forma.

oTimer:=TTimer():Create()


Un saludo.
Víctor


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Ago 14, 2006 9:05 am 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Josu,

El problema es que no sigues las normas, en tu código saltas a la función Activate, creas un objeto TTimer, le asignas unas propiedades, retornas a la función main, muestras un mensaje y termina la aplicación, ¿qué más quieres? El programa se acaba, no hay bucle que mantenga viva la aplicación. Te recomiendo que uses el IDE para ir comprendiendo cómo funcionan los programas en Windows, hay una serie de requisitos que deben cumplir.

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
NotaPublicado: Lun Ago 14, 2006 10:36 am 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Hola Bruno:

Para comprobar la clase,el mensaje lo dejo abierto.no hago nada, es una forma de dejar la aplicacion corriendo sin pulsar una tecla y sin tener que hacer un bucle tonto de do while-enddo que cuente 2 millones de segundos.

Quiero usar el timer para crearme una clase llamada Tdemostracion, en la cual al crear la aplicacion se activa, y si el programa no esta registrado, entonces cada 10 minutos deberia salir un mensaje, esa es la idea...lo unico que se me ocurre es que cuando estoy en el showmodal del mensaje esperando, el otimer no se ejecute y por eso no sale. He quitado el ? "HOLA" y he puesto un bucle do while de 20 millones y no sale nada, por lo que deduzco que no cargo bien el codeblock para ejecutar el ontimer?

procedure Main
Local nI
Public nContador
nI := 0
Activate()
Do While nI < 20000000
nI++
Enddo
return

Function Activate
Local oTimer,nContador
oTimer := TTimer():Create()
oTimer:Enabled := .T.
oTimer:Interval := 1000
oTimer:Caption := "HOLA"
oTimer:left := 0
oTimer:OnTimer := { | oTimer | EstoyEnDemo(oTimer) }
return



Function EstoyenDemo(oTimer)
MessageBox("HOLA caracola")
nContador++
return

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
NotaPublicado: Lun Ago 14, 2006 11:08 am 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
ironmansp escribió:
Hola Bruno:

Para comprobar la clase,el mensaje lo dejo abierto.no hago nada, es una forma de dejar la aplicacion corriendo sin pulsar una tecla y sin tener que hacer un bucle tonto de do while-enddo que cuente 2 millones de segundos.

Quiero usar el timer para crearme una clase llamada Tdemostracion, en la cual al crear la aplicacion se activa, y si el programa no esta registrado, entonces cada 10 minutos deberia salir un mensaje, esa es la idea...lo unico que se me ocurre es que cuando estoy en el showmodal del mensaje esperando, el otimer no se ejecute y por eso no sale. He quitado el ? "HOLA" y he puesto un bucle do while de 20 millones y no sale nada, por lo que deduzco que no cargo bien el codeblock para ejecutar el ontimer?

procedure Main
Local nI
Public nContador
nI := 0
Activate()
Do While nI < 20000000
nI++
Enddo
return

Function Activate
Local oTimer,nContador
oTimer := TTimer():Create()
oTimer:Enabled := .T.
oTimer:Interval := 1000
oTimer:Caption := "HOLA"
oTimer:left := 0
oTimer:OnTimer := { | oTimer | EstoyEnDemo(oTimer) }
return



Function EstoyenDemo(oTimer)
MessageBox("HOLA caracola")
nContador++
return


Hola, Josu.

Como te dice Bruno (y te animo a que le escuches - yo lo hago muy a menudo), insistes en aplicar tus conocimientos de Clipper (bajo D.O.S.) en un entorno Windows. Tienes que hacer el esfuerzo de cambiar tu forma de pensar con respecto a la programacion, ya que en windows no funcionan las cosas igual que en la epoca de clipper.
Como ampliación al comentario de Bruno te comento que colocar un bucle Do/While VACIO y con un contador muy grande lo unico que puedes conseguir es BLOQUEAR la máquina, ya que estas impidiendo que windows realiza otras MUCHAS tareas que tiene que hacer para funcionar (no solo esta atento a tu programa, cosa que con clipper era así), y el codigo que muestras no es eficiente ni puede hacer nada, ya que declaras unas variables, defines un timer, haces que windows espere un tiempo Y FINALIZA-TERMINA-SE ACABA-FIN.
Bueno, insisto, animate, reciclate y sigue las normas, ya que éstas no se pueden cambiar.

Animo!!!!!

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
NotaPublicado: Lun Ago 14, 2006 11:30 am 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
ironmansp escribió:
Quiero usar el timer para crearme una clase llamada Tdemostracion, en la cual al crear la aplicacion se activa, y si el programa no esta registrado, entonces cada 10 minutos deberia salir un mensaje, esa es la idea...


Hola de nuevo, Josu.

Bueno, aqui te dejo una demo de lo que quieres... no necesito una clase llamada TDemostracion... pero FUNCIONA!!!!!!!


Adjuntos:
Josu.zip [1.72 KiB]
591 veces

_________________
Un saludo.
Jesús P. Melgar Velasco
Arriba
 Perfil  
Responder citando  
NotaPublicado: Lun Ago 14, 2006 12:02 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
gracias.

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 13 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a: