Cita:
Empezado por Descendents
No se.Haber si alguien seria tan amable de hacer un pequeño componente muy pequeño que lo unico que haga sea crar dos componentes a partir de uno y que cuando se cierre el programa no de todos esos errores.
|
Vamos a ver. Intenta este:
Código:
unit EditEx;
interface
uses
SysUtils, Classes, Controls, StdCtrls;
type
TEditEx = class(TEdit)
private
FBoton: TButton;
protected
procedure SetParent(AParent: TWinControl); override;
procedure Notification(AComponent: TComponent;
AOperation: TOperation); override;
public
constructor Create(AOwner: TComponent); override;
published
property Boton: TButton read FBoton;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TEditEx]);
end;
constructor TEditEx.Create;
begin
inherited;
FBoton := TButton.Create(Self);
FBoton.FreeNotification(Self);
end;
procedure TEditEx.SetParent(AParent: TWinControl);
begin
inherited;
if Assigned(FBoton) then
FBoton.Parent := AParent;
end;
procedure TEditEx.Notification(AComponent: TComponent; AOperation: TOperation);
begin
inherited;
if (AComponent = FBoton) and (AOperation = opRemove) then
FBoton := nil;
end;
end.
Al parecer no me marca ningún error.
Claro que verás que aunque puedes modificar las propiedades del botón en el inspector de objetos, no puedes moverlo, ni siquiera seleccionarlo en el formulario mediante el ratón. Dependiendo de lo que desees quizá te convenga fijarte con más detalle en la implementación de TLabeledEdit para lograr que el botón se mueva junto con tu Edit.
// Saludos