Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-05-2008
Carlos Arevalo Carlos Arevalo is offline
Miembro
 
Registrado: may 2003
Ubicación: Caracas, Venezuela
Posts: 111
Poder: 21
Carlos Arevalo Va por buen camino
Gracias Neftali.

Me podrias orientar como declarar la clase para poder utilizar el Self.

Yo trate colocando:

Código Delphi [-]
type
  Tformsender = class(TForm)

Pero no me funciono, no tengo muy claro como debo hacer para declararla.


Código Delphi [-]

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,Controls, Forms;

type
  Tformsender = class(TForm)

  end;

  function xform(formsender: Tform; Sender: TObject): Boolean;

  implementation


function xform(formsender: Tform; Sender: TObject): Boolean;
begin
//en la linea sig. esta el error
 formsender:=Tform(formsender).Create(self);
  Tform(formsender).showmodal;
  result:=true;

end;

end.
__________________
Carlos Arevalo
MSN Messenger: carlos@arevalo.com.ve
Responder Con Cita
  #2  
Antiguo 06-05-2008
Avatar de delfib
delfib delfib is offline
Miembro
 
Registrado: abr 2008
Ubicación: Los Mochis Sinaloa
Posts: 12
Poder: 0
delfib Va por buen camino
Función genérica para crear forms usando TAction

Yo lo hago por medio de un TAction que al agregarlo en el ActionList le pongo el mismo nombre de la forma con prefijo act por ejemplo actMiForma, además en la forma al final del código le agrego

Código Delphi [-]
initialization
  RegisterClass(TMiForma)
finalization
  UnregisterClass(TMiForma)

Aunque esto ya lo automatice por medio de un wizard, si te interesa puedes bajar mi demás código de http://sourceforge.net/projects/delfib

Código Delphi [-]
unit uaxActionMenu;

interface

uses
  Forms, SysUtils, Classes, Controls, ActnList;

type
  TaxActionMenu = class(TCustomAction)
    procedure actAbrirVentanaExecute(Sender: TObject);
  private
    FModal: Boolean;
    FOnmrOK: TNotifyEvent;
    function CrearVentana(sForma: string): TForm;
    procedure AbrirVentana(sForma: string);
    procedure SetModal(const Value: Boolean);
    procedure domrOK;
    procedure SetOnmrOK(const Value: TNotifyEvent);
  public
    constructor Create(AOwner: TComponent); override;
    function Execute: Boolean; override;
  published
    property Caption;
    property Name;
    property ShortCut;
    property Modal: Boolean read FModal write SetModal default False;
    property OnmrOK: TNotifyEvent read FOnmrOK write SetOnmrOK;
  end;

implementation

{ TaxActionMenu }

function TaxActionMenu.CrearVentana(sForma: string): TForm;
var
  FormClass: TFormClass;
begin
  sForma:= StringReplace(sForma, 'act', 'frm',[]);
  Result:= TForm(Application.FindComponent(sForma));
  if not Assigned(Result) then
  begin
    FormClass:= TFormClass(GetClass('T' + sForma));
    if Assigned(FormClass) then
       Result:= FormClass.Create(Application);
  end;
end;

procedure TaxActionMenu.AbrirVentana(sForma: string);
begin
  if FModal then
  begin
    if CrearVentana(sForma).ShowModal = mrOK then
      domrOK
  end
  else
    CrearVentana(sForma).Show
end;

procedure TaxActionMenu.actAbrirVentanaExecute(Sender: TObject);
begin
  inherited;
  AbrirVentana(TAction(Sender).Name)
end;

constructor TaxActionMenu.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FModal:= False;
  OnExecute:= actAbrirVentanaExecute
end;

function TaxActionMenu.Execute: Boolean;
begin
  Result:= inherited Execute
end;

procedure TaxActionMenu.domrOK;
begin
  if Assigned(OnmrOK) then
    OnmrOK(Self)
end;

procedure TaxActionMenu.SetModal(const Value: Boolean);
begin
  FModal := Value;
end;

procedure TaxActionMenu.SetOnmrOK(const Value: TNotifyEvent);
begin
  FOnmrOK := Value;
end;

end.

Código Delphi [-]
unit uaxActionMenuReg;

interface

uses
  SysUtils, Classes, ActnList, uaxActionMenu;

procedure Register;

implementation

procedure Register;
begin
  RegisterActions('Menu', [TaxActionMenu], nil);
end;

end.

Última edición por delfib fecha: 06-05-2008 a las 17:50:59.
Responder Con Cita
  #3  
Antiguo 06-05-2008
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.289
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 Carlos Arevalo Ver Mensaje
Me podrias orientar como declarar la clase para poder utilizar el Self.
La verdad es que no le veo sentido a que crees una clase para esto.
En este caso lo normal para pasarle al parámetro no es Self, sino nil o Application, dependiendo de quieen quieres que sea el "propietario".

Tu formulario ya es una clase. Si quieres hacer un "visualizador genérico" no necesitas otra. Basta con crear una función similar a la que has hecho tú.

(1º) Como ya te he dicho, olvídate del Self. no lo necesitas.
(2º) Si vas a crear tu formulario en ese procedimiento, necesitas pasar como parámetro la clase del constructor, para poder crearlo correctamente; Alguien más arriba ya te ha dado la pista (TfrmClass: TFormClass).
A partir de esa clase ya puedes hacer un:

Código Delphi [-]
  f := TFormClass.Create(application);
__________________
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
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
Como hacer para que una funcion regrese varios valores jangel_ramirezm Varios 11 07-03-2008 22:14:49
Crear un form fsMDIForm y varios forms hijos citlalliDgp Varios 11 07-12-2007 15:13:31
funcion genérica para cargar combos Byfed Varios 7 08-04-2007 01:14:36
Problemas para crear una funcion fartycl Varios 1 04-07-2006 19:47:50
Función Genérica radaalvaro .NET 0 28-06-2006 16:51:29


La franja horaria es GMT +2. Ahora son las 12:53:15.


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