Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2010
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Componentes en DLL

Que tal amigos del foro, espero que sea el lugar indicado para mi pregunta y gracias por responder.

Pues he buscado y he encontrado muy poca informacion, alguien me puede decir si es posible crear componentes solo componentes en una DLL o tengo que hacer mi formulario ?

Me refiero que tengo mi aplicacion exe por un lado y quiero solo crear el componente digamos Tedit con caracteristicas definidas ancho color font etc.

Y si me podrian ayudar con un pequeño ejemplo.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 18-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No acabo de entender muy bien lo que necesitas.
Hay cosas que comentas que no tienen sentido (al menos para mi).

En Delphi los componentes se crean en Packages (BPL) si deseas instalarlos en el IDE. Si no deseas instalarlo en el IDE y sólo crearlo en ejecución, tal vez sí, como cualquier otro objeto, pero es algo muy extraño.
Por otro lado dices que quieres almacenar el componente en una DLL, pero no el formulario, pero un Edit debes utilizarlo en un formulario
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 19-05-2010
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Componentes DLL

Disculpa si no me explique bien, pero lo que estoy haciendo es esto.

Tengo mi aplicacion EXE y quiero que en una libreria DLL tener un procedimiento o funcion que me cree un Tedit (edit)

ejemplo:
Mi DLL

Código Delphi [-]
library Project1;

uses
  SysUtils, Classes, StdCtrls, Forms, Windows, Controls, Dialogs,
  CommCtrl;

{$R *.res}

procedure CreaEdit(Self: TWinControl); stdcall; export;
var
Edit1, Edit2: TEdit;
Label1: TLabel;
begin
Edit1:=TEdit.Create(Self);
Edit1.Parent:=Self;
Edit1.Top:=20;
Edit1.Left:=50;
Edit1.Name:='Caja1';
Edit1.Text:='Hola Fui creado desde codigo...';

Edit2:=TEdit.Create(Self);
Edit2.Parent:=Self;
Edit2.Top:=60;
Edit2.Left:=50;
Edit2.Name:='Caja2';
Edit2.Text:='Hola Fui creado desde codigo ...';

Label1:=TLabel.Create(Self);
Label1.Parent:=Self;
Label1.Top:=100;
Label1.Left:=50;
Label1.Name:='label1';
Label1.Caption:='Hola Fui creado desde codigo ...';

ShowMessage('Segun se ejecuta...');
end;

exports CreaEdit;

end.

Mi EXE

Código Delphi [-]

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

procedure CreaEdit(Form1: TForm1); stdcall; external 'Project1.dll';


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  CreaEdit(Form1);
end;

end.
Responder Con Cita
  #4  
Antiguo 19-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No lo he probado y creo que debería poderse hacer, aunque creo que te sería bastante más sencillo y menos problemático utilizar una BPL en lugar de una DLL.

De todas formas, sigo sin entender cual es la lógica de esta operación. Tal vez si nos explicaras para qué necesitas hacer esto enteríamos mejor cual es el objetivo y tal vez te podríamos proponer algun procedimiento alternativo, ya que como te he dicho, aunque creo que es posible, no le veo ninguna lógica.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 19-05-2010
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Componentes en DLL

Pues soy algo nuevo en delphi y mi forma de programar ha sido minuciosa en cuestion de codigo que quiero mantener el control total de un proyecto.

Todo esto es con fin de estudio, pero en si lo que quiero hacer es que tengo mi formulario en un vcl form mi aplicacion mi exe ... y quiero que en las dll crear o hacer el diseño de algunos componentes como un edit fijos en tamaño, color, fuente, o un label en fuente .. has de cuenta como si fueran mis estilos.

Asi en mi formulario digamos
crealabel(x,y,font) etc. entonces en mi aplicacion en tiempo de ejecucion se creará un Tlabel en la posicion x,y de tal fuente sin tener que estar poniendo las caracteristicas de cada label.

tal vez se me ocurre la conexion a una base de datos, un ejecutador de querys:

Query("select", "*", tabla,"condicion","ordenamiento","limite")

asi para cuando tenga que modificar no este con cada Form peleandome en los estilos de cada componente.

No se si esté muy viajado ... y si me dan algunas soluciones.

Las bpl ya lei sobre ellas pero me interesan mas las DLL porque pueden ser utilizadas por vb y delphi ... y otras ventajas que tienen las DLL.

Gracias por su tiempo. Les agradezco.
Responder Con Cita
  #6  
Antiguo 19-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Bueno, te diré a nivel general que la idea puede ser buena, pero la forma en que la estás enfocando creo que es incorrecta (a mi entender).

Se supone que Delphi es un Entorno RAD (Rapid Application Development). Una de las mejores cosas que tiene es, el diseño visual de formularios, que digamos es la parte más tediosa y menos importante de la aplicación, frente a la lógica propia de la aplicación. Y tú estás intentando dejar todo eso de lado para volver al desarrollo como si estuvieras en COBOL.

Creo que hay formas más lógicas (utilizando delphi) de hacer lo que necesitas. Sin ir más lejos, la herencia.

Deriva el Label estandard a un componente propio (TMiLabel), modifica sus propiedades como deses y utilízalo. Si más adelante necesitas cambiar "algo" en todos tus Labels, basta con que lo modifiques en tu componente TMiLabel y automáticamente todos los que tienes colocados se actualizarán.
Incluso en ese componente propio puedes programar varios estilos, de forma que si cuando coloques un label, sólo seleccionando el "Estilo1" tendrás X propiedades prefijadas, seleccionando el "Estilo2" tendrás otras, y así con tantos como necesite....

En cuando a las DLL's/BPL's, tienes que saber que las BPL's son como DLL's ampliadas, así que todo lo que puedas hacer con una DLL, lo puedes hacer con una BPL, además de muchas otras. Lo único, eso sí, que la BPL sólo podrás utilizarla en Delphi; Pero tengo mis dudas que que esta DLL que estás diseñando en Delphi se pueda utilizar en VB.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 19-05-2010
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Componentes DLL

Me parece muy buena idea la herencia.

1.- Y me podrias dar tu opinion, y siendo otra solucion la de meter Form
(formularios) en DLL´s.

2.- Y si se puede que en una DLL llame una funcion o procedimiento de otra DLL.

Gracias por todo. Neftali Gracias por responder.
Responder Con Cita
  #8  
Antiguo 20-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ethangio Ver Mensaje
Me parece muy buena idea la herencia.
Creo que es lo que necesitas.
Yo mismo la he utilizado para algio similar a lo que te digo en proyectos grandes donde intervienen varios programadores. Derivas los componentes y creas unos nuevos con una serie de propiedades "fijadas", de forma que todos los programadores utilizan esos componentes y:
(1) Te evitas cambiar determinadas propiedades para ponerlas en todos sitios igual.
(2) Evitas que los componentes se vean o actuen distinto en varios sitios de la aplicación; Estandarizas el aspecto y la funcionalidad.
(3) es más cómodo a la hora de modificar algo en todos los componentes (como tú decías).
...

Cita:
Empezado por ethangio Ver Mensaje
1.- Y me podrias dar tu opinion, y siendo otra solucion la de meter Form
(formularios) en DLL´s.
Es una buena forma de "modularizar" la aplicación y de compartir código (formularios, procedimientos, funciones,...) entre diferentes aplicaciones. Si vas a usarlo sólo en delphi utiliza BPL's, si vas a utilizarlos en otros leguajes, utiliza DLL's.

Si miras en el FTP del club (seccion ejemplos) verás que hay varios ejemplos de DLL's. Uno para incluir forms en DLL's, otro para tareas y otro para usar formularios MDI (busca los ficheros que en el nombre incluyen dll).


Cita:
Empezado por ethangio Ver Mensaje
2.- Y si se puede que en una DLL llame una funcion o procedimiento de otra DLL.
Diría que sí, de forma similar a como se hace la llamada desde cualquier otro punto del programa.
Revisa los ejemplos, y si tienes problemas, ya dirás...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
componentes ADO anoniboxx Conexión con bases de datos 2 04-03-2010 15:52:47
Componentes TCP/UDP JPMMVR Internet 8 13-04-2009 19:12:49
D7 + componentes dfarias Varios 6 31-08-2008 20:58:41
Uso de componentes ado Fenix_Xanadu Conexión con bases de datos 18 28-05-2007 11:50:14
Componentes PHP Bicho PHP 2 13-12-2004 16:18:37


La franja horaria es GMT +2. Ahora son las 23:27:06.


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
Copyright 1996-2007 Club Delphi