Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: rapbyone en 27 Abril 2014, 00:37 am



Título: problema con checkbox (me tiene de cabeza)
Publicado por: rapbyone en 27 Abril 2014, 00:37 am
Amigos les cuento, tengo un problema, no logro hacer funcionar lo que quiero, es algo complejo de explicar, les cuento:

tengo un checkbox que:
1. cuando se marca cambia el nombre de una carpeta
2. cuando se desmarca cambia por el nombre anterior

(http://i55.servimg.com/u/f55/14/27/29/04/ddddd10.png)

El tema es que quiero que el programa detecte el nombre que tiene para marcar o no marcar el checkbox, trate de hacer lo siguiente. Cuando se inicie el programa haga una comprobación del nombre que tiene la carpeta y marque o desmarque el checkbox.

este es el código:
Código:
Private Sub Check1_Click()
If Check1.Value = 1 Then
   Name "C:\activo" As "C:\inactivo"
Else
   Name "C:\inactivo" As "C:\activo"
End If
End Sub

Private Sub Form_Load()
If Len("C:\activo") = 0 Then
   Check1.Value = 0
   Else
   Check1.Value = 1
End If
End Sub

mas que nada quiero saber como hacer para que cuando se marque una opción al volver a iniciar el programa aparezca la opción marcada.

Difícil de explicar, espero alguien entienda.

dejo el proyecto por si alguien me da una mano por favor

https://mega.co.nz/#!2MZjGJRQ!aCjfA5BJFmhi1_qzh4eqVaWX8-xV198JfNNoFFccWH0


Título: Re: problema con checkbox (me tiene de cabeza)
Publicado por: abkanis en 28 Abril 2014, 02:53 am
jejejejeje  XD  , recuerdo que una vez tube el mismo problema, no soy  un profesional en vb6 , pero lo resolvi de  esta forma , mira  el error  ante  todo se  produce, porque al cargar el formulario, envia la señal de  volver a  activar el checkbox , y al hacerlo , intenta  repetir  la misma orden , y  como la orden ya ha sido echa, no encuentra el archivo . bueno   en mi caso  lo resolvi asi:

primero  puse una variable  global

Código:
Dim X As Integer

luego para detectar el archivo activo puse en el form_load :

Código:
X = 0
Set Carpeta = New FileSystemObject
If Not Carpeta.Folderexists("C:\activo") Then
Check1.Value = 0
Else
Check1.Value = 1
End If

y para que no ejecute una accion repetida creé una condicion if con " X "  no con el checkbox , de tal forma que si x= 1  entonces se ejecute recien la condicion:

Código:
If X = 1 Then
If Check1.Value = 0 Then
   Name "C:\activo" As "C:\inactivo"
Else
   Name "C:\inactivo" As "C:\activo"
End If
End If

como abras visto en la carga del formulario se le da el valor 0  por lo tanto no hara nada cuando el formulario envie la orden al click del chekbox ,  y para que se active justo en el momento preciso en que vas a  seleccionar el checkbox  utilice:

Código:
Private Sub Check1_GotFocus()
X = 1
End Sub

esto esta basado en tu codigo,  el mio era mas largo XD  en total   todo el codigo se  veria asi :

Código:
Dim X As Integer

Private Sub Form_Load()
X = 0
Set Carpeta = New FileSystemObject
If Not Carpeta.Folderexists("C:\activo") Then
Check1.Value = 0
Else
Check1.Value = 1
End If
End Sub

Private Sub Check1_Click()
If X = 1 Then
If Check1.Value = 0 Then
   Name "C:\activo" As "C:\inactivo"
Else
   Name "C:\inactivo" As "C:\activo"
End If
End If
End Sub

Private Sub Check1_GotFocus()
X = 1
End Sub

espero que te sirba, como repito no soy experto , si  hay cosas que s e puedan corregir , pake no sea mucho codigo, psss ya depende  de  ti,  suerte..


Título: Re: problema con checkbox (me tiene de cabeza)
Publicado por: rapbyone en 28 Abril 2014, 03:35 am
hermoso, funciono genial
muchas gracias amigo :D


Título: Re: problema con checkbox (me tiene de cabeza)
Publicado por: abkanis en 29 Abril 2014, 19:09 pm
De nada amigo