FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Tareas repetitvas en tiempo de diseño
Hola, aqui seguimos con mas detalles insignificantes.
En primer lugar no sabía como titular el post. Perdon. En segundo lugar, a ver como me explico. En una aplicación en la que tengo un form con campos del tipo dbtext en los que inicialmente los tengo con la propiedad readonly en true para que no se puedan modificar, luego tengo un boton de añadir registro, otro de cancelacion y otro de aceptar, respectivamente, insert, cancel , y post (este ultimo con un commretaining). Me gustaria saber si hay alguna forma de evitar escribir codigo para no tener que escribir una procedure en la que, si quiero añadir registro, me ponga readonly en false en cada uno de los campos por ejemplo. Otra procedure para volver a ponerlos en readonly en true. Se que es una pregunta de vago, pero tengo muchos campos de diferentes tablas y es un engorro. Perdon por la preguntita. gracias |
#2
|
||||
|
||||
Que yo sepa, no se puede. La forma más cómoda que conozco es crear un método "ActualizaEstados", el cual lo que hace es revisar unas variables (o parámetros pasados a dicho método) y desactivar/activar o mostrar/ocultar los componentes adecuados, y llamar a este método desde los eventos adecuados.
|
#3
|
||||
|
||||
Gracias por contestar,
Digamos que casi es lo mismo que meter todos los datos en una procedure o function, pero tratado de forma diferente, pero aun asi hay que escribir uno por dbcampo. |
#4
|
||||
|
||||
Por supuesto que se puede
Creas un descendiente de TForm, este sera tu ancestro comun para todos los form que mantengan una serie de DBEdits Luego, hay 2 formas de manejar la coleccion de DBEdits: 1) A lo Poor man's: Recorres el arreglo de controles del form, preguntas si es un TDBEdit, si lo es, realizas un cast y modificas su propiedad ReadOnly 2) Mas elaborado: En tu ancestro TForm, declaras una lista de DBEdits; esta lista va a contener la coleccion de DBEdits que te interesa que se cambie su propiedad ReadOnly; luego, en el constructor, invocas a un método abstracto que se encargue de llenar dicha lista. Luego es cuestion de proveer un metodo que recorra esa lista y cambie el valor de ReadOnly en cada iteracion |
#5
|
||||
|
||||
Hola,
puedes recorrerte los componentes de formulario o del panel y hacer lo que necesites. formulario.ComponentCount hay un montón de ejemplos por ahí. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#6
|
||||
|
||||
Cita:
A mi no me queda claro qué es lo que quieres hacer. Da la impresión de que quieres poder insertar registros nuevos pero no editarlos. Si fuera en estos términos generales, bastaría con programar el evento OnBeforeEdit de cada DataSet:
y con ello evitarías que los datos se editen sin tener que lidiar con cada campo o DBEdit. Incluso puedes asignar el mismo manejador de evento a los DataSet que te interesen. Pero, si en cada caso son sólo unos campos los que deben ser ReadOnly y otros no, entonces no veo manera de hacerlo genérico y lo más cercano sería lo que te comenta Agustín (segundo método) en el que tu llenas la lista de los DBEdit que no quieresque editen. LineComment Saludos |
#7
|
||||
|
||||
Gracias a todos por contestar.
Lo que pretendia hacer un form, digamos estandard, donde pudiera ver un registro de una tabla sin poder modificarla, o poder insertar uno nuevo, o borrarlo o modificarlo, todo eso a base de botones. Direis que lo mas facil seria usar un dbnavigator, pero queria aplicarlo con campos dbtext. Poer un boton para insertar, otro para editar por ejemplo. Vamos son tareas repetitivas para cada registro de cada tabla de una base de datos. Cuando tienes muchas tablas y muchos campos por tabla, se hace tedioso escribir cada campo en una procedure y habilitar o no determinadas opciones por campo. La pregunta es como lo haceis vosotros que llevais mucho tiempo en esto . Gracias |
#8
|
||||
|
||||
Cita:
LineComment Saludos |
#9
|
||||
|
||||
gracias por el aporte,
perdon pero soy un poco burro, se que debe ser facil entenderlo pero no lo veo claro. |
#10
|
||||
|
||||
Lo que te dice AgustinOrtu es basicamente lo que se hace.
Lo que quieres es hacer algo con el minimo esfuerzo? Pues eso es lo que hacen los controles DataAware junto al DataSet (que tiene exactamente eso que quieres). Si no quieres usarlo? Pues te toca hacer lo que te dice AgustinOrtu. Hay formas mas o menos elegantes de lograr esto, pero todas seran variaciones de esos dos tipos.
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ocultar componentes en tiempo de diseño | ElDioni | OOP | 3 | 29-11-2011 17:41:47 |
Componentes en tiempo de diseño | ElDuc | OOP | 12 | 10-02-2011 06:02:15 |
eventos en tiempo de diseño | jar | OOP | 0 | 27-01-2007 22:09:11 |
Indices En Tiempo De Diseño?? | amadis | Conexión con bases de datos | 0 | 12-04-2006 20:22:01 |
Diseño en tiempo de ejecucion | Nelson Alberto | Impresión | 2 | 26-01-2006 09:34:12 |
|