FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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; Código:
unit unCustomConsulta; interface uses Windows, Messages, SysUtils... FSForm; type TfrmCustomConsulta = class(TFSForm) ....
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
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. |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
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
__________________
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: 11-05-2003 a las 00:16:32. |
#6
|
|||
|
|||
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? |
#7
|
||||
|
||||
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. |
#8
|
|||
|
|||
Yo estoy utilizando el Delphi 5 tambien (y no consigo que funcione)
|
#9
|
||||
|
||||
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. |
#10
|
||||
|
||||
Una forma de agregar propiedades a un formulario la pueden ver en la página de Dr. Marteens , específicamente el truco 16
// Saludos |
#11
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#12
|
|||
|
|||
Como hago para agregar al repositorio un form que no tenga dfm?
__________________
Saludos Douglas Cruz |
#13
|
||||
|
||||
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. |
#14
|
|||
|
|||
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 |
#15
|
||||
|
||||
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) Código:
type TiFSForm = class(TFSForm) 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). |
#16
|
||||
|
||||
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. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear dinámicamente componentes en el formulario | D@byt | Varios | 2 | 27-11-2005 23:30:05 |
Crear reporte desde un formulario | jose_c27 | Impresión | 2 | 01-11-2005 19:13:45 |
Crear Formulario que me devuelva un valor | coulthard | Internet | 2 | 26-11-2004 14:32:53 |
problema al crear un formulario de otro ya creado | soyhugo | Varios | 2 | 01-02-2004 14:11:54 |
Crear formulario | joantobi | Impresión | 4 | 10-07-2003 12:30:02 |
|