Ver Mensaje Individual
  #3  
Antiguo 04-05-2007
Nasca Nasca is offline
Miembro
 
Registrado: abr 2007
Ubicación: Almería (España)
Posts: 249
Reputación: 18
Nasca Va por buen camino
Yo ese mismo problema lo he solucionado seleccionando el DBGrid de todos los del formulario que quiero exportar.

Te pongo un ejemplo de lo que uso yo para buscar los DataSet de un form, el funcionamiento es básicamente el mismo para otro tipo de objetos.

Muestro un formulario con un ListBox con este código:

Código Delphi [-]
procedure TfSelDataSet.FormCreate(Sender: TObject);
var
  I : integer;
  FPadre : TComponent;
begin
if Assigned (Self.Owner) then
 begin
  FPadre := Self.Owner;
  for I := 0 to FPadre.ComponentCount - 1 do
     begin
       if FPadre.Components[i] is TDataSource then
         lstDataSets.Items.AddObject(TDataSource(FPadre.Components[i]).DataSet.Name, TDataSource(FPadre.Components[i]).DataSet);
     end;
 end;
end;

Luego llamo ese formulario en modo modal y recojo el objeto con algo así:

Código Delphi [-]
         with SYS_SDT_seleccionar_dataset.TfSelDataSet.Create(Self) do
          begin
             ShowModal;
             if ModalResult = mrOK then
              SYS_FAV_filtro_avanzado.TfFiltroAvanzado.CreateFiltro(Self,TClientDataSet(lstDataSets.Items.Objects[lstDataSets.ItemIndex])).Show;
          end;

Como verás la clave está en AddObject y el Objects.

Aunque ahora que lo miro acabo de encontrarle un bug ya que también carga los DataSet de los DataSource que apuntan a los TSQLDataSet (no solo los TClientDataSet) para montar la lógica de cliente-detalle en DBX.
Responder Con Cita