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 01-07-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 21
burasu Va por buen camino
Metodo rapido para bloquar componentes??

Hola amigos, tengo que hacer en las pantallas que tengo un control de ver los datos de una base de datos sin poder modificarlos. Para ello uso la misma pantalla que uso para añadir y modificar.

En ella tengo tanto controles edit como controles check, radio y combos. Cada unos distribuidos dentro de paneles y esas cosas.

Existe algún metodo rápdio para bloquear todos los componentes??
Responder Con Cita
  #2  
Antiguo 01-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Recorre la coleccion Components del form. El form será el owner de todos los componentes. Si no usases panels, podrías usar la propiedad Controls y ahorrarte el cast, pero está coleccion tinene que ver con el Parent, así que no nos sirve

Código Delphi [-]
  for i := 0 to ComponentCount - 1 do
    if Components[i] is TControl then
      TControl(Components[i]).Enabled := false;
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 01-07-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 21
burasu Va por buen camino
Ese codigo me valdría entonces para todos, pero debo incluirlo tambien en los panels, o no me haría falta??.
Responder Con Cita
  #4  
Antiguo 01-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Components es un array con todos los componentes cuyo owner es el componente en cuestion. Todos los componentes de un form creados en tiempo de diseño tienen como owner al propio form. Dicho esto, ¿si recorremos todos la propiedad components del form, hará falta hacer algo más?

Si no lo ves claro, prúebalo, y verás como NO hace falta hacer nada con los paneles
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 01-07-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 21
burasu Va por buen camino
Perdona que sea un poco pesado, ciertamente el código ese que me has pasado es lo que yo quería, el problema es que no quiero bloquear los botones, pero ya lo he solucionado. Ahora resulta que tengo tambien un frame incorporado en esa pantalla. Que debo añadirle al codigo para que me bloquee las cajas de ese frame??

Gracias
Responder Con Cita
  #6  
Antiguo 01-07-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
Pues hable de memoria, porque no lo he probado, pero creo que el owner de los componentes del frame es el propio frame. Yo crearia un método publico en el frame que deshabilitase/ habilitase sus componentes. Desde el form principal solamente tienes que llamar a este método
__________________
E pur si muove
Responder Con Cita
  #7  
Antiguo 01-07-2004
burasu burasu is offline
Miembro
 
Registrado: may 2003
Ubicación: Cádiz - España
Posts: 183
Poder: 21
burasu Va por buen camino
Vale pues gracias por todo
Responder Con Cita
  #8  
Antiguo 01-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Y no podrías simplemente poner la propiedad ReadOnly del DataSet asociado a los controles en true, al menos mientras se muestra la ventana?

// Saludos
Responder Con Cita
  #9  
Antiguo 01-07-2004
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 21
andres1569 Va por buen camino
No puedo evitarlo, cuando veo un hilo con la palabra "componente", enseguida pienso en OOP, más aún si implica como este caso el uso de Polimorfismo. Así que muevo el hilo al foro de OOP.

Por cierto, si tienes los controles agrupados en Panels, ¿no te vale poner a FALSE la propiedad Enabled de los mismos? (ello afecta a los controles que contiene, y si puedes pon los botones en un Panel aparte), o bien podrías hacer uso de la propiedad Tag que trae cualquier componente (si es que no le das otro uso), y recorres todos los componentes deshabilitando sólo los que tengan un determinado Tag, de esta forma puedes definir un comportamiento genérico para todo el formulario/s, sin necesidad de retocar código cada vez para determinar cuál deshabilitar o no (bastaría con modificar desde el Object Inspector). Es una idea.

Saludos
__________________
Guía de Estilo
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


La franja horaria es GMT +2. Ahora son las 16:14:14.


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