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 27-11-2008
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
Question Manejo de propiedades

Tengo dudas sobre como seria la forma correcta de manejar propiedades.

Tengo una aplicación en el que se manejan una serie de variables relacionadas entre si, las cuales se almacenan en una tabla de una base de datos.

Por ejemplo, 3 variables relacionadas entre si, de las que el usuario va a definir 2 de ellas y el programa la tercera.En concreto son la longitud de una tubería, el número de tramos de la tubería y la longitud de cada tramo de la tubería. Definiendo el usuario dos de ellas, calculo la 3ª.

Como las variables están almacenadas en una base de datos, no se si lo correcto sería almacenar las 3 variables o solo 2 y calcular la 3ª.

Tampoco sé como debo definir las propiedades. Debo de definirlas así

Código Delphi [-]
private
   FVariable: double;
public
   property Variable: double read GetVariable write FVariable;

Y leer el valor de la base de datos en el onCreate del Form

Código Delphi [-]
function TForm1.GetVariable:double
begin
   FVariable:= {leo el valor de la base de datos}
end;

Pero si lo hago asi y cambian el valor de la variable, tengo que almacenar el valor en la base de datos, y esto lo puedo hacer en ese momento o al cerrar el Form, ya que es posible que el usuario recalcule varias veces y con diferentes valores.

En fin, un lío que agradecería me ayudaran a resolver

Un saludo
Responder Con Cita
  #2  
Antiguo 27-11-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si las combinaciones de cálculo van a ser todas, es decir, que el usuario puede colocar 2 propiedades cualquiera y el sistema siempre calcula la tercera, yo centralizaría eso en un procedimiento.

Cargas las tres propiedades al crear el form (o show) y guardalas al cerrarlos, para evitar operaciones innecesarias sobre Base de Datos.

Los GET los haría accediendo directamente al valor de la variable y los SET, con un procedimiento que recalcule. De esta forma cuando el usuario asigna un nuevo valor a una de las propiedades el sistema vuelve a recalcular.

No se si me expliqué bien...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-11-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
En realidad sólo necesitas esta linea:
Código Delphi [-]
   property Variable: double read GetVariable write FVariable;
ahora pulsas CTRL + SHIFT + C (class completion de delphi) que generará todo lo demás.

Igual que estás usando el get, puedes usar el set:
Código Delphi [-]
private 
  Fvari :integer;
  
properyt Vari:integer read GetVari write SetVari;
y vuelta con el class completion jeje.

Ahora cuando necesites el valor, lo rescatas de la BBDD en GetVari y cuando el usuario le asigna el valor, se ejecuta SetVari y en ese procedimiento es donde lo guardas en la BBDD.

Si te gusta la opción de Neftali, pues get y set lo único que hacen es actualizar el valor de FVariable, después en el FormClose es cuando grabas los valores a la BBDD.

Edito: aquí te falta un pequeño detalle, asignar el result, supongo que será al tiempo de escribir en el foro:
Código Delphi [-]
function TForm1.GetVariable:double
begin
   FVariable:= {leo el valor de la base de datos}
   Result := FVariable;
end;

"Ahora es un lío" después será mecánico

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 27-11-2008 a las 11:46:59.
Responder Con Cita
  #4  
Antiguo 27-11-2008
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
Gracias por las respuestas

He estado probando usando la primera opción de las que me dais (usando FVariable), porque prefiero leer lo menos posible de BD, pero ahora el problema me surge porque el usuario modifica los valores de estas variables a través de DBEdit, y por tanto tendría que enlazar el evento onChange de cada variable ( y tengo sobre 40) con SetVariable, por lo que el listado me va a llegar a Pekín.

Un saludo
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
manejo de arbol de contenidos y manejo se sonido y video Buelos Internet 4 09-07-2007 14:52:45
Propiedades Componente Punzo OOP 2 20-12-2006 20:50:58
Propiedades DevExpress Punzo OOP 0 18-12-2006 20:57:54
Acceso a las propiedades de un objeto desde el editor de propiedades Hugo OOP 0 24-11-2006 12:58:22
Propiedades ADO Zopi Conexión con bases de datos 4 10-10-2003 15:41:57


La franja horaria es GMT +2. Ahora son las 00:11:37.


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