Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 24
David Va por buen camino
En el ejemplo de Jachguate no llego a comprender , que tiene que ver la clase TEtiquetaV

Por otro lado , según me dijeron tenia que programar una propiedad en mi programa y lo he hecho de esta manera y me funciona , aunque no sé si es la forma más correcta .

Tengo un Datamodule y un FrmReformas .

En el Datamodule ,tengo la tabla de reformas , TReformas con su datasource , y en el formulario tengo una tabla de componentes que corresponde a cada reforma . De tal manera que si en el formulario de Reformas , vas recorriendo la tabla de Reformas , tienen que ir apareciendo los componentes de dicha reforma .

Para ello , la tabla TComponentes , hago un filter para igualar el campo de reforma con el código de la tabla reforma .

Asi en el Datamodule tengo esto :

Código Delphi [-]
 
private
    { Private declarations }
    FNotifyToTFReformas:TDataChangeEvent;
    
  public
    { Public declarations }
    property NotifyToTFReformas:TDataChangeEvent  read FNotifyToTFReformas
                                                       write FNotifyToTFReformas;

// Después en el datasource de la tabla Reformas (esta en el DM)

implementation
procedure TDM.dsReformasDataChange(Sender: TObject; Field: TField);
begin
If  Assigned(FNotifyToTFReformas) Then 
Begin
 FNotifyToTFReformas(Sender, Field);
// luego pongo más código ....  (no tiene que ver con el caso)

end;

Bien esto es lo que he puesto en el DataModule , ahora en el formulario FReformas , donde esta la tabla componentes , he puesto lo siguiente

Código Delphi [-]
public
    // Declaro un procedure
    procedure ReformaDataChange(Sender: TObject; Field: TField);

implementation
procedure TFReformaDataChange(Sender: TObject; Field: TField);
 begin
    Caption := ' Reforma  :    ' + DM.TReformas.FieldByName('titulo').AsString + '  ';
    TComponentes.Filter:='icodReforma = '''+DM.TReformas.FieldByName('Codigo').AsInteger+'''';
    // Aquí aprovecho para cambiar otro Query de Componentes
 end;

// después en el evento Oncreate , hago esto 

procedure TFReformas.FormCreate(Sender: TObject);
begin
DM.NotifyToTFReformas:=ReformaDataChange;
end;

// y en el evento Onclose , donde el formulario se destruye , aprovecho para 
//decir que el formulario es fsMDIChild y se crea y se destruye al entrar y 
//salir -> Action := caFree.

procedure TFReformas.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DM.NotifyToTFReformas:= nil;
end;
Responder Con Cita
  #2  
Antiguo 31-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Está bien como práctica de clase, aunque no le hallo sentido a lanzar un evento de esta manera, pues bastaría poner un DataSource asociado al dataset en el módulo de datos en el formulario y atender el evento OnDataChange de este.

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
  #3  
Antiguo 01-11-2006
donki donki is offline
Miembro
 
Registrado: oct 2006
Posts: 24
Poder: 0
donki Va por buen camino
Hola,

Hay que aclarar una cosa, las clases, objetos, interficie, no se utilizan por que si. Nadie se pondrá a hacer una clase para guardar un solo valor.

Tened en cuenta que las clases nacen de modelar los objetos de un problema y tienen su semantica dentro del problema que quieres resolver.

Resumiendo, la teoria de programación orientada a objetos tiene unas especificaciones que a priori no sirven para nada, pero que en diseños complejos pueden salvarte de tener que hacer miles de "xapuzas" para ajustarte al diseño.

No es que sea un purista de las OOP, pero va muy bien conocer todas estas opciones.
__________________
Grandes frases de nuestro tiempo:
"La pasta no és para tirarla, es para el Tunning"

"TodoOK=False...."

Enjoy it!!!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
pregunta tonta sobre "property" patroclus02 OOP 6 09-10-2006 18:14:31
Interbase/Firebird. Clasic ó Superserver. ¿Cuando usar cada una? Delphius Firebird e Interbase 9 08-08-2006 23:37:30
Ayuda para sobreescribir property Egroc OOP 3 12-11-2005 22:24:09
Excepción "Invalid property value" en botón inexistente melanthea C++ Builder 1 07-07-2004 18:12:39
a proposito de property pickman Varios 2 18-07-2003 04:10:34


La franja horaria es GMT +2. Ahora son las 23:09:06.


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