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 09-05-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 21
Angel Va por buen camino
Crear nuevas propiedades de un formulario

Hola a todos.

Me gustaría crear un nuevo formulario con propiedades añadidas por mí y que aparecieran en el Object inspector, el problema es que no tengo ni idea de como hacerlo.

¿Podría alguien enviarme código de ejemplo, o algún enlace donde lo expliquen, o algo de ayuda?


Muchas gracias a todos
Responder Con Cita
  #2  
Antiguo 09-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Si querés hacerlo con herencia visual, las propiedades no van a aparecer en el object inspector, pero si creas una clase heredada de TForm sin su respectivo DFM, creas un nuevo formulario y modificas la clase heredada, Eureka!….

Este ejemplo lo vengo usando desde hace mucho y funciona:


Código:
unit FSForm;
…
type
  TFSForm = class(TForm)
  …
  published
    property StatusBar  : TStatusBar read FStatusBar     write FStatusBar;
    property AutoTabs   : Boolean    read FAutoTabs      write SetAutoTabs;
  end;
Implementación
Código:
unit unCustomConsulta;

interface

uses
  Windows, Messages, SysUtils... FSForm;

type
  TfrmCustomConsulta = class(TFSForm)
  ....
La primera ves que modificas el form para modificar la clase, las propiedades no aparecen, pero lo cerras y lo abrís... (el IDE lee el DFM y la información RTTI de las clases).. y listo!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 09-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Vuelvo aclarar que la unit FSForm es una Unit "plana"... no tiene DFM... (File / New / Unit)
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 10-05-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 21
Angel Va por buen camino
Siento mucho comunicarte que el truco no me funciona (quizás esté haciendo algo mal). Aqui te muestro las dos units que tengo creadas:

unit UListForm;

interface

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

type
TFSForm = class(TForm)
private
FValor: Integer;
FParam1: Variant;
public
published
property ParametroEntrada:Variant read FParam1 write FParam1;
property aux:Integer read FValor Write FValor;
end;

implementation

end.

y la unit donde heredo esta clase:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs, UListForm;



type
TForm1 = class(TFSForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }

public
{ Public declarations }
published

end;

var
Form1: TForm1;

implementation

{$R *.dfm}



Incluso cerrando y volviendo a abrir el Delphi siguen sin mostrarse esas dos nuevas propiedades.

¿Estoy haciendo algo mal?


Saludos
Responder Con Cita
  #5  
Antiguo 10-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Bueno, ante todo quiero decirte que no tengo un Delphi para probarlo pero si la memoria no me falla. me parece que me olvidé de comentarte algo, hay que modificar la declaración del TForm1 en el dfm, donde debe decir algo similar a
Código:
 object Form1: TForm1
No recuerdo bien la sintaxis, pero te aseguro que es la primer linea, tenés que poner uno de estos códigos:
Código:
 object Form1: TFSForm
Código:
 inherited Form1: TFSForm
Código:
 inherited Form1: TForm1
Espero que sea esto, comentame como te fue, sinó recien el lunes voy a poder volver a ayudarte... Suerte!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.

Última edición por delphi.com.ar fecha: 10-05-2003 a las 23:16:32.
Responder Con Cita
  #6  
Antiguo 12-05-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 21
Angel Va por buen camino
hola delphi.com.ar,

Sigo sin conseguir que me funcione.... me gustaría mandarte el proyecto que tengo hecho para que lo vieses y me dijeses que falla. Consigo que me compile, pero no me muestra las propiedades que creo.

He realizado los cambios que me propusiste, pero el único que funciona es dejándolo como estaba.

es decir, si escribo esto en el DFM (que sería lo lógico)

object Form1: TFrmList
Left = 192
Top = 108
Width = 696
Height = 480
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end

me aparece el siguiente error al intentar cargar otra vez el proyecto:
Error in module: Declaration of class TFrmList is missing or incorrect

¿alguna idea del error?
Responder Con Cita
  #7  
Antiguo 12-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Bueno, he probado esto en Delphi 5, y veo que no hay que cambiar nada en el DFM.
Pero la mala noticia, es que en Delphi 7 no funciona...
Mil disculpas.. es que aun sigo programando solo en Delphi 5
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 13-05-2003
Angel Angel is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante, España
Posts: 58
Poder: 21
Angel Va por buen camino
Yo estoy utilizando el Delphi 5 tambien (y no consigo que funcione)
Responder Con Cita
  #9  
Antiguo 13-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Bueno, siendo así, envíame el proyecto a webmaster@delphi.com.ar

PD: Tené en cuenta que si migras a una versión superior, vas a perder los datos modificados de esas propiedades, lo que es un verdadero peligro para tu aplicación.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 14-05-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Una forma de agregar propiedades a un formulario la pueden ver en la página de Dr. Marteens , específicamente el truco 16

// Saludos
Responder Con Cita
  #11  
Antiguo 26-06-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Bueno, me acabo de dar cuenta que en la unit donde registro mis componentes en el paquete de diseño, aparece la línea:

Código:
RegisterCustomModule(TFSForm, TCustomModule);
Eso era lo que faltaba,
mil disculpas por la omisión
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #12  
Antiguo 04-07-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 21
lafirma Va por buen camino
Como hago para agregar al repositorio un form que no tenga dfm?
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #13  
Antiguo 04-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Agregas un Form heredado del form sin DFM!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #14  
Antiguo 10-07-2003
lafirma lafirma is offline
Miembro
 
Registrado: may 2003
Ubicación: Honduras
Posts: 159
Poder: 21
lafirma Va por buen camino
mi pregunta sobre agregar forms al repositorio sin dfm se refiere a que esa opcion solo la he encontrado haciendo click derecho en la ventana del form, pero como el form esta sin dfm no hay diseño visual, por lo tanto no hay acceso a esa opcion
__________________
Saludos

Douglas Cruz
Responder Con Cita
  #15  
Antiguo 10-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Lo que te está indicando delphi.com.ar, es que crees un formulario intermedio. Creas un nuevo Formulario y en su definición de clase :

Código:
type
  TForm1 = class(TForm)
lo cambies por algo como

Código:
type 
  TiFSForm = class(TFSForm)
Ahora cierra este formulario y vuelvelo a abrir, te aparecerá con las nuevas propiedades, y como es un formulario con .dfm lo podrás añadir al Repositorio.

Ahora los nuevos formularios, los vas a heredar de este ultimo TiFSForm en lugar de TFSForm inicial.

Por cierto delphi.com.ar, ¿ este truco también funciona para definir eventos en el formulario ?

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #16  
Antiguo 10-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
No lo he probado, pero como Delphi le da a los eventos el mismo trato que a las propiedades, mejor dicho: los eventos no son mas que propiedades del tipo "procedure of object", ¡¡Tiene que Funcionar!!

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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
Crear dinámicamente componentes en el formulario D@byt Varios 2 27-11-2005 22:30:05
Crear reporte desde un formulario jose_c27 Impresión 2 01-11-2005 18:13:45
Crear Formulario que me devuelva un valor coulthard Internet 2 26-11-2004 13:32:53
problema al crear un formulario de otro ya creado soyhugo Varios 2 01-02-2004 13:11:54
Crear formulario joantobi Impresión 4 10-07-2003 11:30:02


La franja horaria es GMT +2. Ahora son las 02:03:58.


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