Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error "A component named xxx already exists" (https://www.clubdelphi.com/foros/showthread.php?t=92433)

The Cid James 27-10-2017 08:16:45

Error "A component named xxx already exists"
 
Cree un form nuevo con un label y dos botones pero cuando quiero abrirlo me sale esto



el boton que llama al form solo tiene esto
Código Delphi [-]
procedure Tflistadoproductos.BitBtn7Click(Sender: TObject);      //Boton insertar producto
begin
    fCantidad.Create(self).ShowModal;
end;

Prove mil nombres distinos para los botones y el label y sigue saliendo no se que puede hacer o hacer al respecto

Neftali [Germán.Estévez] 27-10-2017 10:23:24

Perece que hay algo en ese formulario que no está bien.
Es el error es claro, pero con la información que das no se puede saber mucho más.

Habría que saber si ese formulario crea componentes en ejecución, o tiene algo mal en el DFM.

The Cid James 27-10-2017 10:44:18

Cita:

Empezado por Neftali (Mensaje 522063)
Perece que hay algo en ese formulario que no está bien.
Es el error es claro, pero con la información que das no se puede saber mucho más.

Habría que saber si ese formulario crea componentes en ejecución, o tiene algo mal en el DFM.

Pues es toda la informacion que poseo no es que tenga mucho que digamos, de echo incluso con un "label" llamado lo que se te ocurra (prove mil nombres distintos en NAME y nada) también tira el error, y si creo otro form y le pongo el componente que sea pasa exactamente lo mismo, la única form que me deje abrir es un form totalmente limpio.

que es DFM? y a que te referis con componentes en ejecución?

También probé crear un proyecto nuevo nuevo y copiar todas los .pas e importarlas directamente no me abre ningún form y me tira ese mismo error al cargar el primer componente

Neftali [Germán.Estévez] 27-10-2017 11:46:17

Cita:

Empezado por The Cid James (Mensaje 522066)
Pues es toda la informacion que poseo no es que tenga mucho que digamos, de echo incluso con un "label" llamado lo que se te ocurra (prove mil nombres distintos en NAME y nada) también tira el error, y si creo otro form y le pongo el componente que sea pasa exactamente lo mismo, la única form que me deje abrir es un form totalmente limpio.

Me refiero que el problema lo tienes en el form fCantidad, y ese es el que no has puesto.
Tiene pinta de que ese form es el que tiene el problema.
Si puedes, comprímelo y adjunta el ZIP al mensaje.


Cita:

Empezado por The Cid James (Mensaje 522066)
que es DFM?

El DFM es "la mitad" de un formulario.
Un formulario en Delphi se componen del código (fichero .PAS) y la parte visual (fichero DFM).
Para trabajar con un formulario debes tener ambos ficheros. Se llaman igual y cambia su extensión.

Tendríamos que vcerlos para poder saber si hay algun problema.

Cita:

Empezado por The Cid James (Mensaje 522066)
y a que te referis con componentes en ejecución?

En Delphi puedes crear un componente de la forma "normal" que es arrastrándolo en diseño sobre el formulario, pero también puedes crearlos cuando el programa se está ejecutando (a eso llamamos crearlos en ejecución).

Si en diseño pones 2 botones en un form y les intentas asignar el mismo nombre, te da un error:



Si cuando los estás creando en ejecución les da el mismo nombre obtienes un error similar (a este o al que has puesto tú).
POr eso lo preguntaba.

The Cid James 27-10-2017 12:02:51

Te dejo todo el proyecto para que veas, y no solo me pasa con ese form me pasa con cualquiera nuevo que cree asi que algo anda mal y el debug mode me tira el error pero no me dice donde

Si estoy creando el form en ejecucion, pero no solo me pasa con un nombre como dije probe muchos nombres distintos y sigue pasando asi que ni idea.

Descarga

Casimiro Notevi 27-10-2017 12:07:46

Cita:

Empezado por Neftali (Mensaje 522068)
Si en diseño pones 2 botones en un form y les intentas asignar el mismo nombre, te da un error:

Obviamente.

Caminante 27-10-2017 18:51:37

Hola

A mi me pasaba eso cuando estaba usando frames y queria ponerlos en un panel. El problema fue que al crearlos les asignaba el mismo owner y saltaba el error.

Se arreglo cuando los fui creando dentro de un page control asignandole un owner distinto (Cada tabsheet).

No se si sea el caso pero espero sea util

Saludos

The Cid James 28-10-2017 01:50:39

Cita:

Empezado por Caminante (Mensaje 522081)
Hola

A mi me pasaba eso cuando estaba usando frames y queria ponerlos en un panel. El problema fue que al crearlos les asignaba el mismo owner y saltaba el error.

Se arreglo cuando los fui creando dentro de un page control asignandole un owner distinto (Cada tabsheet).

No se si sea el caso pero espero sea util

Saludos

No tengo idea de lo que me decis pero estoy usando un tpanel donde dokeo un form podria ser eso?

Donde veo los owners de los componentes?

Neftali [Germán.Estévez] 29-10-2017 19:01:39

Yo si veo la pantalla de productos correctamente.



De todas formas para llegar a ella, hay que corregir un eror que tienes en este procedimiento:

Código Delphi [-]
procedure Tflistadoproductos.BitBtn4Click(Sender: TObject);
begin
  fmodulo.qProductos.Active := true;
  fmodulo.qProductos.Insert;
  fproductos.Create(self).ShowModal;
end;

Debes llamar al Create con la Clase(Tfproductos), no con la instancia/variable (fproductos).

The Cid James 30-10-2017 02:18:33

El problema es con el botón seleccionar productos no con agregar, ese botón llama a fcantidad, en realidad con cualquier form nuevo que cree y no me deja de salir el error ya me ha llegado a desesperar es bastante frustrante porque no me marca de donde viene el error. En realidad es con cualquier form nuevo que creee y le ponga cualquier componente (limpios o sin componentes si lo llama)
Emm nunca entendí la diferencia entre usar tf y f voy a buscar al respecto para no comentar esos errores

Neftali [Germán.Estévez] 30-10-2017 17:59:40

Cita:

Empezado por The Cid James (Mensaje 522117)
Emm nunca entendí la diferencia entre usar tf y f voy a buscar al respecto para no comentar esos errores

Pues no es una cosa trivial.

En un caso te estás refiriendo a la clase que en algún sitio tendrás defida como:

Código Delphi [-]
Tflistadoproductos = class (Tform)
private
   ....
public
 ...
end;
Y en el segundo caso, te estás refiriendo a una varianble/objeto/instancia definida con ese tipo.
Sería como hacer referencia a TEdit (Clase) o a un edit1 (una instancia de la clase TEdit).

The Cid James 30-10-2017 20:55:39

Cita:

Empezado por Neftali (Mensaje 522130)
Pues no es una cosa trivial.

En un caso te estás refiriendo a la clase que en algún sitio tendrás defida como:

Código Delphi [-]
Tflistadoproductos = class (Tform)
private
   ....
public
 ...
end;
Y en el segundo caso, te estás refiriendo a una varianble/objeto/instancia definida con ese tipo.
Sería como hacer referencia a TEdit (Clase) o a un edit1 (una instancia de la clase TEdit).

Gracias por la explicación fue de lo mas claro.
Con respecto al error, ya no se que hacer estoy totalmente frustrado, estoy avanzando con otros temas pero estancado ahí y no tengo idea como solucionarlo

The Cid James 31-10-2017 04:04:40

Encontre el error!!! era como decis la forma de llamar de los form que estaba usando, cambie todo al llamado por instancia y ahora no me sale el error!!! gracias!


La franja horaria es GMT +2. Ahora son las 08:10:00.

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