Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Componente no aparece en la paleta (https://www.clubdelphi.com/foros/showthread.php?t=48327)

eduarcol 21-09-2007 18:25:42

Componente no aparece en la paleta
 
Hola a todos, estoy diseñando un nuevo componente que tiene como finalidad recopilar funciones de uso general, lo pongo a heredar de TObject y no aparece en la paletas de componentes, ni siquiera si le cambio la clase a TComponent

De que clase se debe heredar para que aparezca???

maeyanes 21-09-2007 18:34:32

Hola...

Si lo que necesitas es una recopilación de funciones de uso general, lo mejor es una unidad y no un componente...

Esta unidad la puedes meter en un paquete y usarla en tus aplicaciones sin necesidad de agregarla implícitamente en tus proyectos...



Saludos...

Jure 21-09-2007 18:36:22

Acuerdate del procedure Register ;)

Código Delphi [-]
procedure Register;
begin
    RegisterComponents('Standard', [TBsFEdit]);
end;

Jure.

Jure 21-09-2007 18:39:37

Cita:

Empezado por maeyanes (Mensaje 232896)
...Si lo que necesitas es una recopilación de funciones de uso general, lo mejor es una unidad y no un componente...

No lei bien el post, la solución de maeyanes es la mejor elección ;)

eduarcol 21-09-2007 21:00:07

Solo por preguntar, que diferencia puede haber, yo lo decia por la practicidad, de colocar el objeto y utilizar sus metodos para lo que se necesite, digo es mas facil de buscar el nombre del procedimiento...

Ahorita yo creo el objeto de forma manual

Código:

MiObjeto: TMiObjeto;
pero me parece mas facil agregarlo desde la paleta y no estar pendiente de la creacion ni la destruccion

eduarcol 21-09-2007 21:01:00

ya eso lo hice Jure:

Código Delphi [-]
procedure Register;
begin
  RegisterComponents('Samples', [TBDEUtil]);
end;

maeyanes 21-09-2007 21:04:56

Cita:

Empezado por eduarcol (Mensaje 232953)
Solo por preguntar, que diferencia puede haber, yo lo decia por la practicidad, de colocar el objeto y utilizar sus metodos para lo que se necesite, digo es mas facil de buscar el nombre del procedimiento...

Ahorita yo creo el objeto de forma manual

Código:

MiObjeto: TMiObjeto;
pero me parece mas facil agregarlo desde la paleta y no estar pendiente de la creacion ni la destruccion

Precisamente esa es la diferencia...

Con una unidad solo haces:

Código Delphi [-]
implementation

uses MiUnit;

Y ya tienes a tu disposición todos los procedimientos y funciones de esa unidad, y no tienes que preocuparte por crear y destruir objetos...


Saludos...

eduarcol 21-09-2007 21:40:02

si pero hay algo, a mi me gusta mucho la facilidad que da escribir el nombre del objeto y luego del punto aparezcan los procedimientos que aplican, es mejor que estarse acordando del nombre de todos...

maeyanes 21-09-2007 21:45:20

Puedes hacer lo mismo con las unidades...

Si pones el nombre de la unidad y punto, el IDE te mostrará todos los procedimientos y funciones que contiene esta...


Saludos...

eduarcol 21-09-2007 21:59:49

jejjeeje 7 años con delphi y a estas altura me voy dando cuenta de ello :D:D

eduarcol 21-09-2007 22:42:59

Ok ya lo converti en una unidad, pero quedo con la duda, de que objeto debe heredar???

maeyanes 21-09-2007 22:49:05

Hola...

Los objetos no se heredan, solo las clases... :p

Y no tienes que heredar de nada... solo haces:

Código Delphi [-]
unit MiUnidad;

interface

uses
  // lista de unidades que usa tu unidad...

procedure Procedimiento1(Parametro1: TipoParametro);
function Funcion1(Parametro1: TipoParametro): Integer;

implementation

uses // Si necesitas...

procedure Procedimiento1(Parametro1: TipoParametro);
begin
end;

function Funcion1(Parametro1: TipoParametro): Integer;
begin
end;

end.


Saludos...

eduarcol 21-09-2007 22:56:55

jejeje buena acotacion


Pues eso fue lo que hice y ya lo tengo listo tan pronto lo suba aviso, mi duda es que de que CLASE tengo que heredar para que aparezca en la barra de componentes

maeyanes 21-09-2007 22:59:34

Una unidad no aparece en la barra de componentes...

Solo la agregas a la clausula uses de la unidad donde la quieras usar y listo...



Saludos...

eduarcol 21-09-2007 23:22:29

Creo que sigo sin poder explicarme, a ver si hago esta pregunta asi:

¿Como creo un componente no visual que aparezca en la paleta de componentes?

maeyanes 24-09-2007 15:29:30

Hola...

Creas un componente que herede de TComponent...


Saludos...

eduarcol 24-09-2007 15:39:19

Gracias por dedicarme el mensaje numero 1000 pero igual ya lo hice asi y sigue sin aparecer, voy a crearlo desde cero a ver que sucede, solo por no quedarme con la duda

Delphius 24-09-2007 15:52:21

Ya me estaba resultando extraño lo que venía leyendo... y luego vi la trampa.
Maeyanes... ya no puedes huir... ¡te pillaron!:D:)

Saludos,

maeyanes 24-09-2007 16:12:27

Hola...

Cita:

Empezado por eduarcol (Mensaje 233369)
Gracias por dedicarme el mensaje numero 1000 pero igual ya lo hice asi y sigue sin aparecer, voy a crearlo desde cero a ver que sucede, solo por no quedarme con la duda

Es raro, ya que la base de los componentes tanto visuales como no visuales es TComponent...

Con solo crear tu clase heredada de TComponent y registrándolo en Delphi vía el procedimiento Register este debería aparecer en la barra de componentes...

Cita:

Empezado por Delphius (Mensaje 233373)
Ya me estaba resultando extraño lo que venía leyendo... y luego vi la trampa.
Maeyanes... ya no puedes huir... ¡te pillaron!:D:)

Saludos,

:D

eduarcol 24-09-2007 16:48:24

Pues que de cosas desde new component si lo instala, pero a lo que le agrego mi codigo no hace nada, bueno voy a montar las dos versiones solo con la unit y con el componente desde la paleta que cada quien elija cual quiere usar

Por cierto Delphius la duda si es real :D:D:D

Delphius 24-09-2007 20:05:46

Cita:

Empezado por eduarcol (Mensaje 233392)
Pues que de cosas desde new component si lo instala, pero a lo que le agrego mi codigo no hace nada, bueno voy a montar las dos versiones solo con la unit y con el componente desde la paleta que cada quien elija cual quiere usar

Por cierto Delphius la duda si es real :D:D:D

Ha bueno si es asi pues si.:D
Hay una parte en el escrito que me confunde: pero a lo que le agrego mi codigo no hace nada. Eso me llama la atención, si el componente ya viene con algún código de procedimiento general... ¿que y/o como es que le agregas más código? ¿O es que el código (procedimientos y funciones) no se ejecuta? Me queda la duda.

Saludos,

maeyanes 24-09-2007 20:08:30

Y si mejor nos pones parte del código para ver donde podría estar tu problema?

eduarcol 24-09-2007 20:59:14

Ok lo voy a hacer, lo que pasa es qe ya desarme el objeto y lo deje como una unidad, y si lo hago como digo si funciona, o sea creo el TComponent y a este .pas que se crea le añado los procedimientos y funciones si se instala, pero si el objeto que tenia antes que se crea desde TObject le modifico la clase antecesora a TComponent y le agrego el register igual no se instala.

Como decia no tengo las fuentes originales ya que lo modifique, dejenme revisar si tengo alguna copia en el respaldo. Cuando lo consiga lo aviso, por lo pronto pueden conseguir el actual en:

http://eduarcol.clubdelphi.com/Componentes/BDEUtil.pas

Por los momentos estoy tratando de hacer una breve explicacion de cada procedimiento por eso no lo he subido publicamente pero para el que quiera verlo alli esta

Espero haberme explicado :S

Delphius 25-09-2007 12:11:12

Disculpa que vuelva tras 15 horas. Bueno.. le hecho bien el ojo al código de esa unidad y veo cual puede ser el problema.

Saludos,

Delphius 26-09-2007 19:15:27

Hola eduarcol,

He visto tu unidad y me gusta... es evidente que mis conocimientos no llegan a tanto como lo que hiciste, aunque entiendo la mayoria de las cosas hay unas cosillas menores que me resultan chinas para mi.
Bueno, hice la prueba como dices, de tranformar tu unidad en componente... lo intenté una y otra vez... pero no me deja intalarlo. Tal como tu dices. No se que puede ser... no he tocado el código simplemente lo hice componente y nada. No se instala... es de loco.... No encuentro razón en mi cabeza para atribuir esto.
He hecho componentes y nunca tuve problemas para instalarlos. Lo que hago es simplemente añadirle el:

Código Delphi [-]
TDBEUtil = class(TComponent)

y poner la declaración de register. No hace falta más, al menos yo no le veo otra cosa. ¿Habrá algo en el código que lo impida? Lo he revisado y ne le veo algo "extraño" como para decir que no se pueda realizar dicha instalación. Voy a continuar... esto me es una rareza.

Saludos,

eduarcol 26-09-2007 19:32:24

Gracias por el interes amigo, pues asi de intrigado ando yo, pero bueno que se la hace

por cierto cuando quieras te aclaro las dudas de las que hablas

paldave 26-09-2007 19:44:21

Pues yo he mirado el código y el error es claro: no se registra en la paleta porque en la Unit no tienes definido en ninguna parte el tipo TBDEUtil, ¿como va a registrarlo luego con el procedimiento Register?
Se me adelantaron...

eduarcol 26-09-2007 19:55:41

Cita:

Empezado por paldave (Mensaje 234088)
Pues yo he mirado el código y el error es claro: no se registra en la paleta porque en la Unit no tienes definido en ninguna parte el tipo TBDEUtil, ¿como va a registrarlo luego con el procedimiento Register?
Se me adelantaron...

Compañero paldave Si te fijas aqui explico que desarme el objeto y lo deje como unidad
Cita:

Empezado por eduarcol (Mensaje 233448)
Ok lo voy a hacer, lo que pasa es qe ya desarme el objeto y lo deje como una unidad, y si lo hago como digo si funciona, o sea creo el TComponent y a este .pas que se crea le añado los procedimientos y funciones si se instala, pero si el objeto que tenia antes que se crea desde TObject le modifico la clase antecesora a TComponent y le agrego el register igual no se instala.

Como decia no tengo las fuentes originales ya que lo modifique, dejenme revisar si tengo alguna copia en el respaldo. Cuando lo consiga lo aviso, por lo pronto pueden conseguir el actual en:

http://eduarcol.clubdelphi.com/Componentes/BDEUtil.pas

Por los momentos estoy tratando de hacer una breve explicacion de cada procedimiento por eso no lo he subido publicamente pero para el que quiera verlo alli esta

Espero haberme explicado :S


Por lo mismo el amigo delphius realiza este cambio dentro de la misma para que funcione como componente

Cita:

Empezado por Delphius (Mensaje 234063)
Hola eduarcol,

He visto tu unidad y me gusta... es evidente que mis conocimientos no llegan a tanto como lo que hiciste, aunque entiendo la mayoria de las cosas hay unas cosillas menores que me resultan chinas para mi.
Bueno, hice la prueba como dices, de tranformar tu unidad en componente... lo intenté una y otra vez... pero no me deja intalarlo. Tal como tu dices. No se que puede ser... no he tocado el código simplemente lo hice componente y nada. No se instala... es de loco.... No encuentro razón en mi cabeza para atribuir esto.
He hecho componentes y nunca tuve problemas para instalarlos. Lo que hago es simplemente añadirle el:

Código Delphi [-]
TDBEUtil = class(TComponent)

y poner la declaración de register. No hace falta más, al menos yo no le veo otra cosa. ¿Habrá algo en el código que lo impida? Lo he revisado y ne le veo algo "extraño" como para decir que no se pueda realizar dicha instalación. Voy a continuar... esto me es una rareza.

Saludos,


Delphius 26-09-2007 20:14:45

Lo que se me ocurre que podría suceder (como caso extremo) que sea la versión de Delphi... Yo estoy usando la 6. Aunque es poco probable que sea esto. Pues, como dije antes he hecho componentes antes (y todos ellos no visuales y descendientes de TComponent) y no he tenido problemas.

Por el momento habrá que conformarse con una unidad.

Amigo eduarcol en cuanto yo esté más tranquilo y tu tengas tiempo te pregunto algunas de esas dudas, primero dejame leer uno poco la ayuda para ver si logro despejar algunas. De seguro que tienes otras cosas que priorizar.

Lo que se me está pasando por la cabeza... ¿será que alguna de las units declaradas en uses traerá algún efecto?:confused:

Saludos,

paldave 26-09-2007 20:21:46

Yo tengo un componente en el cual puse algunas funciones, lo derivé de TComponent y lo uso perfectamente. No sé si te sirve para algo lo pongo acá.
Cuando lo uso lo incluyo en Uses o lo pego en el formulario.

eduarcol 26-09-2007 21:06:40

se ve bueno seguro le podre dar algun uso, gracias :)


La franja horaria es GMT +2. Ahora son las 03:46:04.

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