FoxPro/Visual FoxPro - Deshabilitar/habilitar ComboBox

   
Vista:
Imágen de perfil de Sofia

Deshabilitar/habilitar ComboBox

Publicado por Sofia (1 intervención) el 31/03/2017 23:54:44
Hola, recientemente estoy empezando a programar con foxpro y mi tarea nueva es hacer un programa que registre alumnos, hice un formulario con la planilla de inscripcion y todo bien, mi problema es que son varias materias y estas tienen turno nocturno / diurno y seccion A / B asi que coloque en cada materia un check box y en los turnos utilice combo box las cuales coloque deshabilitadas, lo que quiero es que al momento de que seleccionen la materian con el check box el combo box se active y si quitan la seleccion se vuelva a desactivar.

Hasta ahora solo pude lograr que al seleccionar se active el combo box pero cuando quito la seleccion sigue activo, este es el codigo que estoy usando:

thisform.turno1.enabled=.t.
thisform.seccion1.enabled=.t.

form
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Deshabilitar/habilitar ComboBox

Publicado por Fidel José (552 intervenciones) el 01/04/2017 01:10:44
En lugar de poner turno1, seccion1, check1, etc, te conviene lo siguiente:
Agrega 1 Container al form:
Agrega al container 1 checkbox, 2 textbox y 2 combobox (como cada línea de las que tienes)
Supongamos que los nombres de los controles son:
Container: Cnt_NombreMateria (o código materia, lo que sea más práctico)
Checkbox: chk_Materia (colocar en el diseño Value = .F. && También por programa en el init del container)
Textbox del código de materia: txt_Codigo
Textbox de descripción: txt_Materia
Combobox de turno: cmb_turno
Combobox de sección: cmb_Seccion

En el evento click del checkbox (chk_Materia)
This.Parent.cmb_Turno.Enabled = This.Value
This.parent.cmb_Seccion.Enabled = This.Value

Luego tendrás que ver qué mecánica usas para trabjar y guardar los datos.

Pero la interfaz la puedes resolver con un solo container, que luego copias tal cual y le cambias el nombre solamente al container.
La idea, en realidad, pasa por hacer una clase container y agregarla tantas veces como materias tengas. Eso te evita tener que copiar y alinear a mano los containers.
Puedes utilizar las propiedades Tag y Comment del container para indicar qué destino tendrán los datos que contienen sus controles y si esos containers están involucrados en un proceso determinado.

Si las materias son muchas, digamos más de 20, te conviene utilizar un control grid al que le puedes agregar esos objetos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Deshabilitar/habilitar ComboBox

Publicado por wences (4 intervenciones) el 04/04/2017 11:05:13
Si no te quieres complicar mucho usa un bucle... solo tienes que poner el mismo nombre para cada grupo y un número ...

1
2
3
4
5
6
FOR x=1 TO 10
	nombre="thisform.turno"+ALLTRIM(STR(x,2,0))
	&nombre..enabled=.F.
	nombre2="thisform.seccion"+ALLTRIM(STR(x,2,0))
	&nombre2..enabled=.F.
NEXT

Espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad