Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Un label q diga "Se activara en 30 segundos", luego 29, luego 28, etc

Estas en el tema de Un label q diga "Se activara en 30 segundos", luego 29, luego 28, etc en el foro de Visual Basic clásico en Foros del Web. Suponer q al apretar un CommandButton, aparece un label y diga q quedan 30, despues 29, despues 28, etc y asi hasta 0. Osea q ...
  #1 (permalink)  
Antiguo 06/04/2006, 00:07
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Un label q diga "Se activara en 30 segundos", luego 29, luego 28, etc

Suponer q al apretar un CommandButton, aparece un label y diga q quedan 30, despues 29, despues 28, etc y asi hasta 0. Osea q vaya cambiando el numerito nada mas.
Ami se me ocurrio crear 30 label y q vayan apareciendo en secuencia. Pero me parece una burrada esa.
Como puedo hacer entonces q en un laberl mismo vaya haga el conteo.
  #2 (permalink)  
Antiguo 06/04/2006, 01:06
Avatar de darkhack  
Fecha de Ingreso: marzo-2005
Mensajes: 654
Antigüedad: 19 años, 1 mes
Puntos: 3
coloca un boton, un timer y un label en tu formulario. En la propiedad enabled del timer ponla en falso y al intervalo ponle 1000 para usar segundos.
Borra el contenido de la propiedad caption del label.
escribe este codigo en tu formulario
Cita:
Dim x

Private Sub Command1_Click()
Timer1.Enabled = 1
End Sub

Private Sub Form_Load()
x = 30
End Sub

Private Sub Timer1_Timer()
If x >= 0 Then
Label1.Caption = "se activara en :" & x & " segundos"
x = x - 1
End If
End Sub
__________________
Dios solo nos dio el 0 y el 1 pero con eso hemos hecho maravillas
1er dia te espantas, 2° te desesperas,3° buscas ayuda y 4°....Adios
  #3 (permalink)  
Antiguo 06/04/2006, 01:33
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Muchisimas pero muchisimas gracias, funciono perfeco eso.
Le agregue esto q lo nesecitaba(cambie la variable x por ActivarSensor, y el label de mi aplicacion es 14, aviso por las dudas):

If ActivarSensor = -1 Then
Label14.Caption = "Sensor Activado!!!"
End If

Ahora bien, le agrego un poco mas de complejidad.
Cuando llega a 0, quiero q mi aplicacion se minimize, q aparezca al lado del reloj de windows, se puede esto?

Última edición por renga73; 06/04/2006 a las 03:23
  #4 (permalink)  
Antiguo 06/04/2006, 05:43
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo

Cita:
Iniciado por renga73
Muchisimas pero muchisimas gracias, funciono perfeco eso.
Le agregue esto q lo nesecitaba(cambie la variable x por ActivarSensor, y el label de mi aplicacion es 14, aviso por las dudas):

If ActivarSensor = -1 Then
Label14.Caption = "Sensor Activado!!!"
End If

Ahora bien, le agrego un poco mas de complejidad.
Cuando llega a 0, quiero q mi aplicacion se minimize, q aparezca al lado del reloj de windows, se puede esto?
claro ke se puede

dame un seg ke te armo el codigo y luego te lo pongo

salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #5 (permalink)  
Antiguo 06/04/2006, 06:07
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo

bue aca te pongo como se hace:
primero ke nada haces un menu con la propiedad invisible (los demas menues ke sean visibles -este menu es para cuando se minimize en el systray) ejemplo: archivo (invisible) > Salir (adentro de archivo -Visible)
bue segun el codigo ke te pongo aca, al primer menu (Archivo seria el Caption) ponele como name (nombre) mnuSystray
bue listo, ya tenes el menu ke va a ser usado cuadno el progama se minimice en el systray (al lado del relojhito)
ahora el siguiente codigo:

declaras en la parte general (option explicit) lo siguiente


Código:
Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" _
          (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Private Declare Function SetForegroundWindow Lib "user32" _
          (ByVal hwnd As Long) As Long
Private Type NOTIFYICONDATA
 cbSize As Long             '//size of this UDT
 hwnd As Long               '//handle of the app
 uId As Long                '//unused (set to vbNull)
 uFlags As Long             '//Flags needed for actions
 uCallBackMessage As Long   '//WM we are going to subclass
 hIcon As Long              '//Icon we're going to use for the systray
 szTip As String * 64       '//ToolTip for the mouse_over of the icon.
End Type
Private Const NIM_ADD = &H0             '//Flag : "ALL NEW nid"
Private Const NIM_MODIFY = &H1          '//Flag : "ONLY MODIFYING nid"
Private Const NIM_DELETE = &H2          '//Flag : "DELETE THE CURRENT nid"
Private Const NIF_MESSAGE = &H1         '//Flag : "Message in nid is valid"
Private Const NIF_ICON = &H2            '//Flag : "Icon in nid is valid"
Private Const NIF_TIP = &H4             '//Flag : "Tip in nid is valid"
Private Const WM_MOUSEMOVE = &H200      '//This is our CallBack Message
Private Const WM_LBUTTONDOWN = &H201    '//LButton down
Private Const WM_LBUTTONUP = &H202      '//LButton up
Private Const WM_LBUTTONDBLCLK = &H203  '//LDouble-click
Private Const WM_RBUTTONDOWN = &H204    '//RButton down
Private Const WM_RBUTTONUP = &H205      '//RButton up
Private Const WM_RBUTTONDBLCLK = &H206  '//RDouble-click
Private nid As NOTIFYICONDATA       '//global UDT for the systray function
luego pones este cdigo en el evento Activate del formulario

Código:
With nid
    .cbSize = Len(nid)
    .hwnd = Me.hwnd
    .uId = vbNull
    .uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    .uCallBackMessage = WM_MOUSEMOVE
    .hIcon = Me.Icon
    .szTip = "programa Aldo1982" & vbNullChar 'tooltiptext del systray
  End With
 
  Shell_NotifyIcon NIM_ADD, nid
Este codigo en el evento mousemove del formulario

Código:
Dim msg As Long     '//The callback value
  
  '//The value of X will vary depending
  '//upon the ScaleMode setting.  Here
  '//we are using that fact to determine
  '//what the value of 'msg' should really be
  If (Me.ScaleMode = vbPixels) Then
    msg = X
  Else
    msg = X / Screen.TwipsPerPixelX
  End If

  Select Case msg
    Case WM_LBUTTONDBLCLK    '515 restore form window
      Me.WindowState = vbNormal
      Call SetForegroundWindow(Me.hwnd)
      Me.Show
      
    Case WM_RBUTTONUP        '517 display popup menu
      Call SetForegroundWindow(Me.hwnd)
      Me.PopupMenu Me.mnuSystray
    
    Case WM_LBUTTONUP        '514 restore form window
      '//commonly an application on the
      '//systray will do nothing on a
      '//single mouse_click, so nothing
  End Select
Éste codigo en el evento unload del formulario

Código:
Shell_NotifyIcon NIM_DELETE, nid
   Set Form1 = Nothing  'OJO: Form1 es el nombre de tuformulario
bueno y cuando tu etiqueta (label) sea = 0 o sea

Código:
if val(tulabel) = 0 then
  Form1.WindowState = 1
end if
salu2 y espero te haya servido mi guia jeej nos vemos cualq ddua solo poosteá aqui nos vemos
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #6 (permalink)  
Antiguo 06/04/2006, 06:55
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Muchas gracias ya lo hice andar, pero tiene algunos problemas por ejemplo, ejecuto la aplicacion y despues de un rato me tira este error: "error 428 en tiempo de ejecucion" "Un menu contextual debe tener al menos un submenu"
le pongo depurar y me senala esta linea: "Me.PopupMenu Me.mnuSystray"

Última edición por renga73; 06/04/2006 a las 07:07
  #7 (permalink)  
Antiguo 06/04/2006, 07:52
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
De acuerdo

Cita:
Iniciado por renga73
Muchas gracias ya lo hice andar, pero tiene algunos problemas por ejemplo, ejecuto la aplicacion y despues de un rato me tira este error: "error 428 en tiempo de ejecucion" "Un menu contextual debe tener al menos un submenu"
le pongo depurar y me senala esta linea: "Me.PopupMenu Me.mnuSystray"
eso es porque te tenes ke fijar bien el nombre del menu ke vos usas

salu2
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #8 (permalink)  
Antiguo 06/04/2006, 09:29
 
Fecha de Ingreso: marzo-2006
Mensajes: 38
Antigüedad: 18 años, 1 mes
Puntos: 0
Mira eso ya lo solucione. Ahora queda un pequeño detalle q es por ejemplo ejecuto la aplicacion, se minimiza, y salgo.
Despeus vuelvo a ejecutarla y me sigue quedando el iconito al lado del reloj, y cuando le paso el mouse por arriba se va.
  #9 (permalink)  
Antiguo 07/04/2006, 23:01
Avatar de darkhack  
Fecha de Ingreso: marzo-2005
Mensajes: 654
Antigüedad: 19 años, 1 mes
Puntos: 3
aa mira ese codigo ya lo coloco una vez en el foro Fann_lavigne
aqui esta lo que el escribio
Cita:
'Delete an existing icon.

Dim i As Integer
Dim nid As NOTIFYICONDATA

nid = setNOTIFYICONDATA(hWnd:=Form1.hWnd, _
ID:=vbNull, _
Flags:=NIF_MESSAGE Or NIF_ICON _
Or NIF_TIP, _
CallbackMessage:=vbNull, _
Icon:=Form1.Icon, _
Tip:="")

i = Shell_NotifyIconA(NIM_DELETE, nid)
Solo adaptalo a lo que tu necesites
__________________
Dios solo nos dio el 0 y el 1 pero con eso hemos hecho maravillas
1er dia te espantas, 2° te desesperas,3° buscas ayuda y 4°....Adios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:34.