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 |
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; Código:
unit unCustomConsulta; |
Vuelvo aclarar que la unit FSForm es una Unit "plana"... no tiene DFM... (File / New / Unit)
|
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 |
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 Código:
object Form1: TFSForm Código:
inherited Form1: TFSForm Código:
inherited Form1: TForm1 |
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? |
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 |
Yo estoy utilizando el Delphi 5 tambien (y no consigo que funcione)
|
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. |
Una forma de agregar propiedades a un formulario la pueden ver en la página de Dr. Marteens , específicamente el truco 16
// Saludos |
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); mil disculpas por la omisión Saludos! |
Como hago para agregar al repositorio un form que no tenga dfm?
|
Agregas un Form heredado del form sin DFM!
|
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
|
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 Código:
type 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. |
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! |
La franja horaria es GMT +2. Ahora son las 19:49:52. |
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