Criando componente composto por componentes

16/12/2019

0

Olá, galera

Estou começando a desenvolver componentes visuais, a princípio eu preciso de um componente chamado "TComponenteAleatorio" que tenha vários outros componentes dentro como TEdit, TLabel, TRectangle, etc. (Foquem no TEdit)

Dúvida: Eu preciso ter acesso a propriedade TEXT do TEdit que compõe o meu "TComponenteAleatorio", com isso adicionei uma propriedade "EditText" no meu "TComponenteAleatorio" que acessa a propiedade Text do TEdit. O problema é quando eu digito algo no TEdit pertencente ao "TComponenteAleatorio" e acesso pela propriedade "EditText" do "TComponenteAleatorio" ele sempre retornar uma string vazia, mesmo tendo algo digitado no TEdit. Alguém pode me ajudar?

O código abaixo não é o real do componente que estou fazendo, dei uma resumida pra ficar mais fácil de entender. Esse código abaixo foi testado e dá a mesma coisa.


uses
  System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Edit;

type
  TEditTeste = class(TControl)
  private
    FEdit: TEdit;
    function GetFText: String;
    procedure SetFText(const Value: String);

  protected
    procedure Paint; override;

  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

  published
    property Text: String read GetFText write SetFText;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents(''''Delphistrap'''', [TEditTeste]);
end;

{ TEditTeste }

constructor TEditTeste.Create(AOwner: TComponent);
begin
  inherited;
  FEdit := TEdit.Create(self);
  FEdit.Parent := Self;
  FEdit.Align := TAlignLayout.Client;
end;

destructor TEditTeste.Destroy;
begin
  inherited;
end;

procedure TEditTeste.Paint;
begin
  inherited;
end;

procedure TEditTeste.SetFText(const Value: String);
begin
  FEdit.Text := Value;
end;

function TEditTeste.GetFText: String;
begin
  Result := FEdit.Text;
end;

end.



Aqui está o resultado quando eu acesso a propiedade: https://imgur.com/a/kbDG5hJ
Joao

Joao

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar