Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-07-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
desactivar controles de un form al mostrar...

Hola

Quiziera saber de qué forma puedo escribir un procedimiento dentro de un Form, de manera que cambie la propiedad "enabled" de todos sus controles a falso (botones, dbEdits, etcétera).

Intenté recorrer entre los componentes del Form y los del dataSource, pero no se de que forma puedo identificar los componentes visuales y los no visuales...

El sentido de ésto es que el form muestra los datos de una tabla(DB), y en el caso que se muestre la tabla en estado dsBrowse dependiendo de donde se llame a Form.show necesito que sus controles internos esten habilitados... o no. Necesitaría implementar algo así como un form.DisableVisibleControls.

Una solución que se me había ocurrido es poner un frame dentro del form y poner todos los controles ahi, entonces dependiendo el contexto lo pongo a disabled o enabled al mostrar, pero preferiría hacerlo por código....

Alguien algúna sugerencia?

Saludos.-
Responder Con Cita
  #2  
Antiguo 31-07-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Smile

Saludos.

Te recomiendo utilizar RTTI, en la página de Neftalí hay buenos ejemplos.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #3  
Antiguo 31-07-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
For I := 0 to ComponentCount -1 do begin
  if (Components[i] is TEdit) then (Component[i] as TEdit).Text := '';
  (Component[i] as TControl).Enabled := False;
end; //for
__________________

Responder Con Cita
  #4  
Antiguo 31-07-2008
Avatar de RolphyReyes
RolphyReyes RolphyReyes is offline
Miembro
 
Registrado: ago 2004
Ubicación: Santo Domingo
Posts: 285
Poder: 20
RolphyReyes Va por buen camino
Cita:
Empezado por ContraVeneno Ver Mensaje
Código Delphi [-]For I := 0 to ComponentCount -1 do begin if (Components[i] is TEdit) then (Component[i] as TEdit).Text := ''; (Component[i] as TControl).Enabled := False; end; //for
Saludos.

Es sencillo el ejemplo y funcional, pero tendrías que estar preguntando por cada tipo de componente existente en tu formulario. Sin embargo con RTTI te evitas eso y tu código es más eficiente.
__________________
Gracias,
Rolphy Reyes
Responder Con Cita
  #5  
Antiguo 31-07-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
Gracias!!!
Responder Con Cita
  #6  
Antiguo 31-07-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
De ésta forma me funcionó de la forma que quiero:

Código Delphi [-]
For I := 0 to ComponentCount -1 do 
     if (Components[i] is Tcontrol)  then   
        (Components[i] as TControl).Enabled :=False;
Responder Con Cita
  #7  
Antiguo 31-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, por si aun no lo has resuelto : http://www.clubdelphi.com/foros/show...ighlight=brick
Responder Con Cita
  #8  
Antiguo 31-07-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
gracias!

tu código me fue de gran inspiración

saludos
Responder Con Cita
  #9  
Antiguo 31-07-2008
Avatar de peccatum
peccatum peccatum is offline
Miembro
 
Registrado: oct 2005
Posts: 89
Poder: 19
peccatum Va por buen camino
Estudiaré también RTTI, es interesante (Y)
Responder Con Cita
  #10  
Antiguo 31-07-2008
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 19
javier7ar Va por buen camino
Fijate que si usas la propiedad Controls en lugar de Components, recorres solamente los controles, y no tenes que hacer elif (Components[i] is Tcontrol) then

Saludos.
Responder Con Cita
  #11  
Antiguo 31-07-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
de nada hombre
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
mostrar propiedades de Form Koder OOP 3 07-09-2007 01:09:11
Convertir un form junto con sus controles en una imagen Pernorak C++ Builder 7 30-05-2007 12:37:52
Desactivar un form mientras se ejecuta otra aplicación hvelascos Internet 2 19-01-2007 01:50:41
Borrar controles de mi form. Bill Varios 1 04-11-2006 01:25:35
Contar controles en un form worf_argentino Varios 2 24-01-2005 05:56:36


La franja horaria es GMT +2. Ahora son las 12:31:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi