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 05-11-2010
jednavlop jednavlop is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: México
Posts: 6
Poder: 0
jednavlop Va por buen camino
Question Herencia externa de componentes (BPL)(RTTI)

Hola a todos.! Este es el primer tema que hago.. espero que no sea el ultimo.
Tengo algunas pequeñas dudas... Quisiera y les agradeceria mucho si me ayudaran .

He cargado 2 paquetes dinamicos. Cada paquete contiene un formulario.

¿Es posible hacer que un formulario herede del otro? ¿Como lo lograria?

He visto algunos ejemplos en este foro donde definen metodos con abstract y virtual... ¿Para que sirven estos?

¿Es posible llamar a un procedimiento o funcion pasandole parametros?

Estoy empezando en esto. De antemano gracias
Responder Con Cita
  #2  
Antiguo 05-11-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jednavlop Ver Mensaje
Hola a todos.!
Hola y bienvenidoa los foros.

Cita:
Empezado por jednavlop Ver Mensaje
He cargado 2 paquetes dinamicos. Cada paquete contiene un formulario.
¿Es posible hacer que un formulario herede del otro? ¿Como lo lograria?
En diseño basta con que crees un formulario que herede del anterior, no importa que estén en diferentes packages; Lo que sí povocará eso es que el segundo package quedará "ligado" de forma estática al primero.
Es normal, ya que se el formulario del package2 deriva del formulario del package1, al cargar el package2 se cargará el package1 (puesto que lo has utilizado en diseño para la herencia).

Cita:
Empezado por jednavlop Ver Mensaje
He visto algunos ejemplos en este foro donde definen metodos con abstract y virtual... ¿Para que sirven estos?
Son "variaciones" que se aplican al funcionamiento de un método/procedimiento de un objeto.

Abstract indica que el método no está definido en el actual clase y que deberá ser obligatoriamente redefinido en las clases "hijas" que deriven de esta.

Virtual indica que el método/procedimiento de la clase actual (el que está marcado así) puede ser sobreescrito (override) en las clases hijas (derivadas de la actual).

Cita:
Empezado por jednavlop Ver Mensaje
¿Es posible llamar a un procedimiento o funcion pasandole parametros?
Sí.

Código Delphi [-]
  function suma(num1, num2:integer):integer;

  ...

  res := suma(3,5);

Tal vez no entendí bien esta última pregunta...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 05-11-2010
jednavlop jednavlop is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: México
Posts: 6
Poder: 0
jednavlop Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Tal vez no entendí bien esta última pregunta...
Gracias por responder,, me has aclarado mucho el tema.
No me explique bien en la ultima pregunta, lo que quiero saber es como llamar a una funcion o procedimiento que este dentro de una clase obtenida de un paquete externo dinamico, claro pasandole parametros.

// SaludOS y gracias
Responder Con Cita
  #4  
Antiguo 05-11-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Thumbs up

Luego con tranquilidad pensé que podía ser eso...
En mi caso lo hago así (te orto un trozo de programa para que veas el funcionamiento):

Código Delphi [-]
...
const
  RUNBROWSE_METHOD     = 'RunBrowse';
var
  _FormBrowse:TForm;
  _FormBrowseClass:TFormClass;
  Routine: TMethod;
begin

    // recuperar el proceso y asi el formulario de browse
    _FormBrowseClass := YTrazProc.FormBrowseClass;
    // Creamos el form para acceder a los métodos
    _FormBrowse := _FormBrowseClass.Create(Self);
    // Bloque de proteccion para liberar
    try
      // Acceso a la rutina
      Routine.Data := Pointer((_FormBrowse as _FormBrowseClass));
      // Devuelve la dirección de un método published
      Routine.Code := (_FormBrowse as _FormBrowseClass).MethodAddress(RUNBROWSE_METHOD);

    finally
      // Liberamos el form
      FreeAndNil(_FormBrowse);
    end;

    // No ha encontrado el código de la rutina...
    if (Routine.Code = nil) then begin
      Exit;
    end;

    // hacer la llamada al RunBrowse
    i := TExecuteRunBrowse(Routine)(_FormBrowseClass,
                                    [ATTR_TYTRAZA],
                                    [Traza],
                                    [tsEqual],
                                    [False],
                                    ['FechaHora']);

    FFormBrowseTraz := YTrazProc.FormBrowse;
  end;
end;

He quitado algun trozo que sobra, pero las operaciones básicas están.
El tipo del procedimietno está definido con todos los parámetros:

Código Delphi [-]
  //: Tipo para ejecutar un método de clase RunBrowse
  TExecuteRunBrowse = function (FormBrowseClass: TFormClass;
                                AttrName : Array of string;
                                AttrValue : Array of Variant;
                                Operator : Array of TSQLOperator;
                                IsNot : Array of Boolean;
                                ...): Integer of object;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 05-11-2010
jednavlop jednavlop is offline
Registrado
NULL
 
Registrado: nov 2010
Ubicación: México
Posts: 6
Poder: 0
jednavlop Va por buen camino
BINGO!,, funciona!. ya he podido llamar a una metodo con parametros.

Te agradesco por la ayuda Neftali.

//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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Herencia miguel867 OOP 6 12-01-2007 23:08:20
Herencia... dunia_lv C++ Builder 3 29-05-2006 22:43:00
Problemas con herencia adpa OOP 5 05-02-2006 20:03:31
herencia de metodos supermilloriver OOP 7 07-01-2006 14:46:01
Herencia vegalisandro OOP 8 15-09-2003 14:30:42


La franja horaria es GMT +2. Ahora son las 04:32:04.


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