Ver Mensaje Individual
  #7  
Antiguo 17-11-2004
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.285
Reputación: 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
No acabo de entender qué significa ésta frase:
"...Lo prohibitivo es llamar a métodos no de clase desde un método de clase"

Se puede llamar desde un método definido como class (método de clase) a otros metodos de la misma clase (public o published -incluso privates y protected, aunque no sea recoimendable-) que no estén definidos como métodos de clase (con class); Eso no tiene ningun problema; Revisa el siguiente código:

NOTA: Corresponde a un formulario que utiliza un método de clase para crear e inicializarse.

Código Delphi [-]
unit Unit2_classMethod;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm2 = class(TForm)
  private
    procedure LeerDisco;
    { Private declarations }
  public
    { Public declarations }
    procedure Inicializar;
  published
    class procedure Crear();
  end;
var
  Form2: TForm2;
implementation
{$R *.dfm}
{ TForm2 }
class procedure TForm2.Crear;
var
  F:TForm2;
begin
  // Crear el objeto
  F := TForm2.Create(nil);
  // Bloque de proteccion
  try
    // Llamar a "Método no de clase"
    F.Inicializar;
    // Llamar a "Método no de clase" que además está PRIVATE; 
    // Lo permite porque está en la misma Unit 
    // (entiendo que no se debería utilizar)
    F.LeerDisco;
    // show 
    F.ShowModal;
  finally
    F.Free;
  end;
end;
 
procedure TForm2.LeerDisco();
begin
  MessageDlg('Leyendo de disco...', mtInformation, [mbOK], 0);
end;

procedure TForm2.Inicializar();
begin
  MessageDlg('Inicializando...', mtInformation, [mbOK], 0);
end;
end.

Para llamarlo utilizarías:

Código Delphi [-]
  TForm2.Crear();

...tal vez no he entendido bien la cuestión, si es así pido discupas;

P.D: A ésto me refería con crear un método de clase que llama a otros métodos no de clase, de forma que desde fuera se puede llamar a Crear, y desde dentro se puede llamar a Inicializar y LeerDisco.
__________________
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