Ver Mensaje Individual
  #1  
Antiguo 14-07-2012
Avatar de Jere_84
Jere_84 Jere_84 is offline
Miembro
NULL
 
Registrado: sep 2011
Ubicación: Córdoba, Argentina
Posts: 214
Reputación: 0
Jere_84 cantidad desconocida en este momento
Question ¿Cómo recorrer los Server Modules de una aplicación?

Hola!, necesito recorrer los server modules de una aplicación. Básicamente lo que tengo es el nombre del ServerModule en una variable de tipo string, a partir de esto, la mision es recorrer todos los server modules una vez que consiga el que se llame igual a mi variable, comenzaría a recorrer sus componentes uno a uno. Esta función va a estar en una unit y se podría llamar desde toda la aplicación. El problema que me surgió es: como obtener el objeto a partir de un string.
Este código que hice anda pero en el mismo SM, el FindComponent me ayuda ya que encuentra los componentes que están ubicados en ese ServerModule, pero desde otra unit esto no funciona porque no estan, por lo tanto necesitaria localizar ese SM y poder trabajar con el mismo. se me ocurrio que quizas pueda existir alguna func. de mas bajo nivel que sirvan en esta labor o algunas del desconocido (para mi) API de windows.
Espero haberme explicado bien

Gracias de antemano.

Código Delphi [-]
unction TPLDBVarios.ObtenerSQL(vServerModule, vProvider: string): string;
var
  i, j: integer;
  vServerMod, vDataSetPro, vDataSet: TComponentName;
  DS: TComponent;
begin
  try
    vServerMod := TDSServerModule(FindComponent(vServerModule)).Name;
    vDataSetPro := TDataSetProvider(FindComponent(vProvider)).Name;
    DS := TDatasetProvider(FindComponent(vProvider)).Owner;

    if DS is TDSServerModule then
    begin
      for i := 0 to DS.ComponentCount - 1 do
      begin
        if DS.Components[i].name = vDataSetPro then
        begin
          vDataSet:=  TDataSetProvider(DS.Components[i]).DataSet.Name;
          for j := 0 to DS.ComponentCount - 1 do
          begin
            if DS.Components[j].Name = vDataSet then
            begin
              Result:= TSQLdataSet(DS.Components[j]).CommandText;
              Exit;
            end;
          end;
        end;
      end;
    end;
  finally
    //...
  end;
end;
Responder Con Cita