problema con checkbox (me tiene de cabeza)

Iniciado por rapbyone, 27 Abril 2014, 00:37 AM

0 Miembros y 1 Visitante están viendo este tema.

rapbyone

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



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:
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

abkanis

#1
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

Dim X As Integer

luego para detectar el archivo activo puse en el form_load :

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:

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:

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 :

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..

rapbyone

hermoso, funciono genial
muchas gracias amigo :D