![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
// Saludos |
|
#2
|
||||
|
||||
|
Cita:
Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#3
|
||||
|
||||
|
Por otro lado, suponiendo que las componentes se insertan durante el diseño, pienso que el error de clase no registrada puede deberse a que al no estar siendo insertadas mediante el mecanismo normal del IDE, es decir, desde la paleta, el entorno no tiene ocasión de registrar las clases. Quizá pueda entonces solucionarlo mediante RegisterClass. De cualquier forma, cuando uno inserta una componente desde una paleta, el IDE, además de registrar la clase de la componente, añade la o las unidades pertinentes a la cláusula uses. Al no recurrise al método normal, imagino que ésto no se hará, de manera que tendrá que agregarlas a mano él mismo para que el programa pueda compilar. Creo que hay manera de que este agregado se haga en automático pero requiere más trabajo y conocimiento de la interacción de componentes con el IDE.
// Saludos |
|
#4
|
||||
|
||||
|
Bien... ante todo gracias por sus respuestas. La verdad es q puse dos problemas en lugar de uno; lo q sucede es q en tiempo de diseño deseo q al insertar mi componente en el form, este inserte 2 componentes; TIBDataSet y TDataSource, el primer metodo q intenté fue con el constructor de cada objeto asi:
FDataSet:= TIBDataSet.Create(FMainParent); FDataSet.Name:= 'TPDataSet1'; FDataSource:= TDataSource.Create(FMainParent); FDataSource.Name:= 'TPDataSource1'; FDataSource.DataSet:= FDataSet; FMainParent, es el parent de mi componente y lo utilizo como referencia para los demas componentes. esto funcionaba bien 'En Diseño' pero al ejecutar me daba el error q me decia q ya existia un componente con el nombre puesto 'TPDataSet1' y 'TPDataSource1'. Decidi entonces probar con InsertComponent de la siguiente forma: FDataSet:= TIBDataSet.Create(nil); FDataSet.Name:= 'TPDataSet1'; FDataSource:= TDataSource.Create(nil); FDataSource.Name:= 'TPDataSource1'; FDataSource.DataSet:= FDataSet; with FMainParent as TForm do begin InsertComponent(FDataSet); InsertComponent(FDataSource); end; puse nulo en los constructores por q me daba el error q ya existian los componentes al insertar en el form... pero al ejecutar da el error q no encuentra la clase TIBCustomDataSet, pero en el uses del form cuando inserto mi componente si aparace la unit... entonces no se q pueda ser... Agradezco de nuevo su colaboracion. Salu2
__________________
Diego. Colombia es pasión. |
|
#5
|
||||
|
||||
|
No se que pretendas... pero no veo muy normal eso de insertar componentes en el parent.
Podes crear los componentes, e incluso publicarlos como propiedades de tu propio componente. O bien, dejar que sea el programador quien los cree y vos solamente almacenar apuntadores a estos, también medinte propiedades. Si queres mantener tu comportamiento actual, el caso de los nombres, ya te lo ha resuelto magistralmente Román, y según parece con el primer método lo único que te fallaba era eso, no? Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#6
|
||||
|
||||
|
OK, la verdad es q en esto de la programacion como en el amor una cosa lleva a otra y estoy lleno de codigo... me inclino por poner estos componentes como propiedades de mi componente, pero como hacerlo, es decir haciendolo, por ejemplo un TDBEdit podria usarlos en diseño... agradeceria un poco de orientacion al respecto.
Gracias.
__________________
Diego. Colombia es pasión. |
|
#7
|
||||
|
||||
|
Pues no lo he intentado.. pero suponiendo que publicas el DataSource en la propiedad del mismo nombre, seria tan fácil como intentar usarlo, y si algo falla, pues suponer que no se puede.
Digamos, en tiempo de diseño, asignar a edit1.datasource el valor componentediego1.datasource. en tiempo de ejecución es seguro que no tendrias ningún problema. Hasta luego. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#8
|
||||
|
||||
|
bien, muchas gracias a todos por la colaboracion, intentare y de fallar creo q voy a optar por q el programador inserte los componentes y recibirlos como propiedades dentro del mio...
Salu2
__________________
Diego. Colombia es pasión. |
|
#9
|
||||
|
||||
|
¿Por qué no nos describes un poco lo que quieres lograr?
El objetivo podría no ser tan descabellado. Por ejemplo, a mi se me ocurriría una componente TBdePack que al insertarla me inserte un DBGrid, un TTable y un TDataSource ya todos enlazados. Similarmente podría tener compontes TIbPack, TZeosPack, TAdoPack, etc. de manera que la creación de un formulario ABM sea cosa de dos click (o un doble click que no es lo mismo) y uno sólo escoge la componente adecuada según el tipo de controles BD que se requieran. Pero creo que el mismo objetivo, suponiendo que sea similar al tuyo, puede obtenerse mejor creando expertos (wizards) que se encarguen de todos los detalles del registro de clases, uso de las unidades necesarias, etc. Si es un tema que te interesa mucho pienso que te convendría tomarte un tiempo para comenzar a estudiar las ToolsApi y la creación de Wizards. // Saludos |
|
#10
|
||||
|
||||
|
Muy bien... lo q kiero es hacer un componente estilo DBNavigator, lo cierto es q no me gusta el q trae Delphi (q raro...), ademas de q puedo personalizar un poco mas el código si lo hago yo mismo, el componente parte de un TPanel con Botones insertados cuando se crea el comp; hasta ahi todo va bien, pero se complica cuando llegue al tema de este hilo... y por ahi voy, la verdad es q kisiera q con solo insertar el componente todo estuviese listo para insertar los demas componentes... claro esta resta la insercion de los SQL's en el IBDataSet pero no todo es tan sencillo... bueno eso es lo q llevo y a donde kiero llegar, si tienen sugerencias como siempre son bienvenidas.
Salu2
__________________
Diego. Colombia es pasión. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|