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 22-04-2004
gustavo2 gustavo2 is offline
Miembro
 
Registrado: dic 2003
Posts: 13
Poder: 0
gustavo2 Va por buen camino
constructor y destructor

Hola y Gracias a Todos
Quiero crear con un constructor para tablas paradox un dbgrid y un table.
Saludos Gustavo2....
Responder Con Cita
  #2  
Antiguo 22-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Podrías ser un poco mas explícito...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 22-04-2004
gustavo2 gustavo2 is offline
Miembro
 
Registrado: dic 2003
Posts: 13
Poder: 0
gustavo2 Va por buen camino
constructor y destructor

Hola a todos
Para ser mas explicito deseo crear con el metodo constructor create un objeto dbgrid y un objeto table con uso de algunos de sus properties : posicion,tamaño,campos.Si es posible?.... Las tablas que usare para llenar las grillas y relacionar con el table son paradox.
Saludos Gustavo2....
Responder Con Cita
  #4  
Antiguo 22-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola gustavo.

La verdad me parece que seguis dando muy poca información. Si realmente queres conseguir ayuda, creo que vas a tener que dedicar unos minutos mas a redactar un mensaje que sea claro para que quienes no tenemos ni la menor idea de lo que estas haciendo, pero que si sabemos hacerlo, podamos darte una mano.

Antes de responder de nuevo, te recomiendo la lectura de este hilo
Por ejemplo en el constructor create de que???

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 22-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por jachguate
La verdad me parece que seguis dando muy poca información. Si realmente queres conseguir ayuda, creo que vas a tener que dedicar unos minutos mas a redactar un mensaje que sea claro para que quienes no tenemos ni la menor idea de lo que estas haciendo, pero que si sabemos hacerlo, podamos darte una mano.
Me alegro de ver que no es un problema mío, que verdaderamente no se entiende ...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 23-04-2004
gustavo2 gustavo2 is offline
Miembro
 
Registrado: dic 2003
Posts: 13
Poder: 0
gustavo2 Va por buen camino
crear objetos

Hola y gracias a todos
Primero creo en tiempo de ejecucion tablas desnormalizadas.
Luego lo que yo quiero hacer es crear objetos de tipo table y dbgrid sacados de sus respectivas clases. Lo que pasa es que mi aplicacion requiere de una cantidad "x" de objetos dbgrid para enlazarlos a una cantidad "x" de objetos table que deben crearse en tiempo de ejecucion (enlazados estas Grillas Y Table a las tablas anteriores). El numero de objetos y tablas creados es sacado de lo que el usuario me ingrese en registros de una tabla creada en tiempo de desarrollo(normalizada). Luego paso a tablas nuevas que creo en tiempo de ejecución(normalizadas) y borro las otras. El sistema ,es mi intencion hacerlo de esta manera,para evitarle al usuario una Grilla grande con informacion desparramada que el debera ordenar en varios pasos y a mi una programacion al estilo excel con reconocimiento de distintos datos en celdas, etc. La creacion en tiempo de ejecucion de objetos es mi duda. Las tablas son desnormalizadas por el mejor ingreso de informacion para este caso en particular.
Saludos y pedidos de disculpas Gustavo2.....
Responder Con Cita
  #7  
Antiguo 23-04-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
Cita:
Empezado por gustavo2
La creacion en tiempo de ejecucion de objetos es mi duda.
Ok, entonces es una pregunta acerca de objetos y realmente no tiene que ver con tablas planas de manera que deberías haberlo puesto en el foro OOP.

Para construir un objeto en tiempo de ejecución tienes que usar su constructor- en la inmensa mayoría de casos se llamará Create. Digamos que tienes una clase TMiClase y deseas crear un objeto de esta clase; si tienes una variable de tipo TMiClase bastará que le asignes el resultado del constructor:

Código:
var
  UnObjeto: TMiClase;

...

UnObjeto := TMiClase.Create(parámetros);
Pasando los parámetros pertinentes según la clase de que se trate y llenando las propiedades necesarias. En tu caso particular, necesitas un grid, una tabla y un datasource por cada tabla física:

Código:
var
  Grid: TDBGrid;
  Table: TTable;
  DSource: TDataSource;

begin
  Table := TTable.Create(nil);
  DSource := TDataSource.Create(nil);
  Grid := TDBGrid.Create(nil);

  Table.DatabaseName := alias de la base de datos;
  Table.TableName := nombre de la tabla física;
  
  DSource.DataSet := Table;

  DBGrid.DataSource := DSource;  
end;
Fíjate en el parámetro (nil en el ejemplo) de los constructores. Este parámetro es una componente que será la encargada de destruir al objeto cuando ella misma se destruya. Cuando en tiempo de diseño insertas componentes como Table en el formulario, este parámetro automáticamente se asigna al formulario mismo de manera que cuando el formulario se destruye (sea porque termina la aplicación o porque explícitamente lo hagas en código) él destruirá también a todas las componentes que posee, razón por la cual no necesitas hacerlo tú mismo. Sin embargo, si requieres destruir las componentes antes de que termine la aplicación para liberar memoria entonces te conviene pasar nil como parámetro lo cual querrá decir que nadie se va a encargar de destruirlas de forma automática y lo harás tú mismo cuando sea necesario:

Código:
Table.Free;
DSource.Free;
Grid.Free;
Ahora bie, dado que la cantidad de tablas que crees en la ejecución no es fija sino que depende de condiciones que de el usuario, te convendrá mantener una lista dinámica de ellas, por ejemplo, con un TObjectList:

Código:
type
  TDataPack = class
    Table: TTable;
    DSource: TDataSource;
    Grid: TDBGrid;
  end;
En cada item de la lista pondrías un "pack" o conjunto de las tres componentes requeridas:

Código:
var
  Pack: TDataPack;

begin
  Pack := TPack.Create;
  Pack.Table := TTable.Create(nil);
  Pack.DSource := TDataSource.Create(nil);
  Pack.Grid := TDBGrid.Create(nil);

  List.Add(Pack); // List es de tipo TObjectList
end;

y llenas el resto de las propiedades como antes.
Recuerda que deberás crear List previamente:

Código:
List := TObjectList.Create(true);
Al pasar true como parámetro hace que la lista ´'posea' los objetos que agregas de manera que cuando destruyas la lista automáticamente se destruirán todos sus elementos.

Espero que esto te sirva de guía.

Dejame comentarte que Delphi es un lenguaje orientado a objetos de manera que es fundamental tener una noción al menos básica de éstos y como funcionan en el lenguaje. Por ello te recomiendo que leas un poco acerca de ello para no estar atorándote en cuestiones que hasta cierto punto son más o menos elementales.

// Saludos
Responder Con Cita
  #8  
Antiguo 23-04-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Cita:
Empezado por roman
Ok, entonces es una pregunta acerca de objetos y realmente no tiene que ver con tablas planas de manera que deberías haberlo puesto en el foro OOP.
Lo muevo al foro OOP
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 23-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
creo que esto perfectamente se puede lograr con herencia visual, simplemente asignando en un método el nombre de la tabla...

Seria mucho mas práctico, a mi entender...

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 23-04-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
Cita:
Empezado por jachguate
creo que esto perfectamente se puede lograr con herencia visual
No alcanzo a ver dónde entra la herencia visual. Quizá te refieres a simplemente a utilizar un formulario con un grid, un table y un datasource y crear varias instancias de él asignado el nombre de la tabla.

En todo caso sí, tienes razón, es mucho más sencillo.

// Saludos
Responder Con Cita
  #11  
Antiguo 23-04-2004
gustavo2 gustavo2 is offline
Miembro
 
Registrado: dic 2003
Posts: 13
Poder: 0
gustavo2 Va por buen camino
Talking Objetos

Hola y Gracias
Al principio mi intención era optimizar codigo y no aprender sobre programacion orientada a objeto como roman hace referencia; (leer cuando hago referencia a metodos constructores y destructores , create) si no recorreria al help de delphi . Sobre el titulo de "duda" hace referencia al ejemplo en aplicacion y a la optimizacion del codigo para varios objetos creados en tiempo de ejecucion. Sobre "complicarse" al igual que lo anterior lo tomo con humor porque me parece una opinion apresurada y fuera de lugar ya que deseo crear ademas de ventajas para el usuario un data warehouse (ver desnormalizar) al violar la nfbc y crear campos calculados. La aclaracion de es una lenguaje orientado a objetos me parece que esta de mas ya que no creo que nadie en este foro no lo sepa.
Saludos Gustavo2......
Responder Con Cita
  #12  
Antiguo 23-04-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
Cita:
Empezado por gustavo2
Al principio mi intención era optimizar codigo y no aprender sobre programacion orientada a objeto como roman hace referencia;
Al principio tu intención no era clara para nadie y después se vio que tu pregunta era acerca de construcción de objetos (léase programación orientada a objetos) de manera que me es difícil entender que alguien quiera usar OOP sin aprender OOP.

Cita:
Empezado por gustavo2
(leer cuando hago referencia a metodos constructores y destructores , create) si no recorreria al help de delphi . Sobre el titulo de "duda" hace referencia al ejemplo en aplicacion y a la optimizacion del codigo para varios objetos creados en tiempo de ejecucion.
Tú lo has dicho. Con conocimientos básicos, leídos del help de Delphi, puedes perfectamente saber cómo construir objetos en tiempo de ejecución.

Cita:
Empezado por gustavo2
Sobre "complicarse" al igual que lo anterior lo tomo con humor porque me parece una opinion apresurada y fuera de lugar ya que deseo crear ademas de ventajas para el usuario un data warehouse (ver desnormalizar) al violar la nfbc y crear campos calculados.
De hecho no entendiste que la observación de jachguate iba para mí y no para tí. Su idea es mucho más sencilla que la mía y lo acepto tal cual, sin ponérmele al "brinco".

Cita:
Empezado por gustavo2
La aclaracion de es una lenguaje orientado a objetos me parece que esta de mas ya que no creo que nadie en este foro no lo sepa.
Llevas muy pocos mensajes en los foros por lo cual no tenemos muchos medios para saber cuál es tu nivel de conocimientos. A estos foros entran muchas personas que apenas se están iniciando y dada que confundiste un problema de normalización de tablas con un problema de objetos es natural que pensemos que eres novato y de ahí la observación que era una simple recomedación. Cuando desconozco un tema nunca veo con malos ojos que alguien me haga una sugerencia.

// Saludos
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 10:07:54.


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