Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2011
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 21
Young Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola de nuevo.

Creo que me quedé corto con la explicación anterior sin dar ni un mísero ejemplo...

Ejemplos para encapsular la creación/muestra de diferentes tipos de ventanas:
Código Delphi [-](* Ventanas modales *) procedure TForm1.MostrarVentanaModal(AClass: TFormClass); begin with AClass.Create(Application) do try ShowModal; finally Free; end; end; (* Ventanas no modales *) procedure TForm1.MostrarVentanaNoModal(AClass: TFormClass); var Frm: TForm; begin Frm:= Application.FindComponent(Copy(AClass.ClassName,2,MaxInt)) as TForm; if Assigned(Frm) then Frm.Show else Frm.Create(Application); end; (* Ventanas MDIChild *) procedure TForm1.MostrarMDIChild(AClass: TFormClass); var i: Integer; begin for i:= 0 to Screen.FormCount -1 do if Screen.Forms[i] is AClass then begin Screen.Forms[i].WindowState:= wsNormal; Screen.Forms[i].BringToFront; Exit; end; AClass.Create(Application); end;


Saludos.
Exelente los ejemplos y gracias nuevamente, ya estoy pensando en un par de tareas en que me van a servir de mucho.

Saludos.

PD: El post no era mio, pero le he sacado buen provecho.
Responder Con Cita
  #2  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Ya que te enganchaste con el tema, te comento otro recurso: Métodos de clase.

Los métodos de clase se aplican a una referencia de clase a diferencia de los métodos aplicados a la instancia de una clase.

Y seguimos con las ventanitas...

Form1:
Código Delphi [-]
...
uses Unit2; // donde está declarado Form2

procedure TForm1.Button1Click(Sender: TObject);
begin
  if  TForm2.Mostrar = mrCancel then
    ShowMessage('Cancelo')
  else
    ShowMessage('Acepto');
end;

Form2:
Código Delphi [-]
...
type
  TForm2 = class(TForm)
    BitBtnAceptar: TBitBtn;
    BitBtnCancelar: TBitBtn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
  private
  public
    class function Mostrar: TModalResult;
  end;

var
  Form2: TForm2;

implementation

class function TForm2.Mostrar: TModalResult;
begin
  if not Assigned(Form2) then
    Form2:= TForm2.Create(nil);
  Result:= Form2.ShowModal;
end;
...
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  Form2:= nil;
end;
(Fijate la diferencia en la declaracion class function o class procedure, con la de un método normal de instancia de clase)

En el ejemplo puse las propiedades ModalResult de los BitBtns a mrOk y mrCancel respectivamente para capturar como salió de Form2, en Form1.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 19:33:37.
Responder Con Cita
  #3  
Antiguo 24-05-2011
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 21
Young Va por buen camino
Amigo ecfisa a modo de cultura general...

1. ¿Desde que versión de delphi se introdujieron estos métodos de clases y referencias de clases?

2. ¿El método de clase se puede usar instanciado?

3. ¿Que diferencia tienen con los métodos estáticos?


Saludos.

Última edición por Young fecha: 24-05-2011 a las 20:29:03. Razón: Otra pegunta.. :)
Responder Con Cita
  #4  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

El compañero Al, me ha hecho una observación sobre un error que cometí al tipear una línea de código:
Código Delphi [-]
procedure TForm1.MostrarVentanaNoModal(AClass: TFormClass);
var
  Frm: TForm;
begin
  Frm:= Application.FindComponent(Copy(AClass.ClassName,2,MaxInt)) as TForm;
  if Assigned(Frm) then
    Frm.Show
  else
    Frm.Create(Application);  <---- AQUI.
end;

Lo correcto es:
Código Delphi [-]
 AClass.Create(Application)

Mis disculpas si la confusión le acarreó dolores de cabeza a alguien y mi agradecimiento a Al por avisarme prontamente del error, ya que
la idea es que los ejemplos ayuden a simplificar el entendimiento y no que lo compliquen más...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 21:16:38.
Responder Con Cita
  #5  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Young Ver Mensaje
Amigo ecfisa a modo de cultura general...

1. ¿Desde que versión de delphi se introdujieron estos métodos de clases y referencias de clases?

2. ¿El método de clase se puede usar instanciado?

3. ¿Que diferencia tienen con los métodos estáticos?

Saludos.
Hola.

Según tengo entendido:

1. No lo sé.
2. Se puede usar sin necesidad de instanciar la clase.
3. Ninguna, los métodos de clase son estáticos.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-05-2011
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 26
maeyanes Va por buen camino
Hola...

Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Según tengo entendido:

3. ninguna, los métodos de clase son estáticos.

Saludos.
A lo mejor estoy confundido, pero yo puedo hacer algo como:

Código Delphi [-]
TMyClass = class
public
  class procedure MyClassMethod; virtual;
end;

TInheritedClass = class
public
  class procedure MyClassMethod; override;
end;

Y compila y se ejecuta perféctamente.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Pasar mi clase a una clase de 3 capas o lo mas parecido elarys OOP 2 07-04-2011 23:02:54
Pasar datos a una clase de un WS gcaffe Internet 1 17-12-2010 16:42:52
¿¿Es posible pasar una clase como parámetro con el modificador var?? PaFernan99 OOP 3 09-02-2009 18:49:00
Pasar parametro a una sentencia sql molinero1 SQL 23 12-04-2007 17:55:22
pasar parametro pharaonhx Conexión con bases de datos 3 10-05-2006 19:02:50


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


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi