FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
creando componente
Tengo una pregunta, ¿como puedo yo en un determinado procedure dentro de mi componente, crear otro componente? pero que el parent sea el parent de mi componente.NO que el parent sea el mismo componente.
Es decir pongamos que hago un componetne que hereda de un tbutton, pero en el on create del mismo, que cree un tmemo, en el form , no dentro del boton.Dentro del boton seria, paren := self; He probado parent := self.parent; pero entonces no me aparece nada. Gracias. La finalidad, es que en un deterrminado procedimiento o evento o lo que sea, poder crear un determinado componente, pero que el parent sea el form, o sino el parent de mi componente. Seria que cuando pongo Tmibutton en el formulario, apreciera Tmibutton, y un Tmemo en una determinada posicion, quien dice tmemo, dice lo que sea. Saludos Muchas gracias
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón). |
#2
|
||||
|
||||
La solución es lo que tu propones, fíjate que el código que muestras no este dentro de un with, ten en cuenta que en el create del componente aún no esta asignado el parent del mismo.
Código:
constructor TMiComponente.Create(AOwner: TComponent); override; begin inherited; FBoton := TButton.Create(Self); end; procedure TMiComponente.SetParent(AParent: TWinControl); override; begin inherited; FBoton.Parent := AParent; end; Código:
procedure TMiComponente.CrearBoton; begin FBoton := TButton.Create(Self); FBoton.Parent := Parent; end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Cita:
Gracias de nuevo
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón). |
#4
|
|||
|
|||
Uso windows Xp y delphi 7 lo digo por si acaso.
cuando se trata de procedimiento ningún problema, el parent se asinga bien y todo.Pero lo de setparent al crear el componente, en momento de diseño todo bien, pero cuando compilo, y cierro la aplicación me da un error bastante grande, que tengo que volver a reiniciar el delphi.. Este es mi codigo de un componente simple y me da error.Haber si podeis decirme porfavor donde esta el error.Ahora que lo pienso igual el error esta en el destroy, por que es cuando me da error. Código:
unit Edit2; interface uses SysUtils, Classes, Controls, StdCtrls; type TEdit2 = class(TEdit) private Fboton :Tbutton; { Private declarations } protected procedure SetParent(AParent: TWinControl); override; { Protected declarations } public constructor Create(AOwner : TComponent); override; {Constructor} destructor Destroy; override; { Public declarations } published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Lezandi', [TEdit2]); end; constructor TEdit2.Create(AOwner: TComponent); begin inherited; FBoton := TButton.Create(Self); end; destructor TEdit2.Destroy; begin Fboton.free; inherited; end; procedure Tedit2.SetParent(AParent: TWinControl); begin inherited; FBoton.Parent := AParent; end; end. Gracias Saludos
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón). |
#5
|
|||
|
|||
debugueando he visto que el error me lo da en el destroy justo en el inherited.
Hago algo mal, que cuando la aplicacion se cierra, por culpa del parent, me da un error que me hace reiniciar el programa entero. Gracias de antemano
__________________
La victoria tiene cien padres. La derrota es huérfana (Napoleón). |
#6
|
||||
|
||||
Tienes un problema en el orden de liberación de los componentes, solución: elimina la línea Fboton.Free, total queda siempre eliminado cuando se elimina el TEdit, por su relación Owner.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|