Ver Mensaje Individual
  #5  
Antiguo 31-10-2006
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Reputación: 22
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