Form - Criando um com Edit e Botoes em Runtime

Top  Previous  Next

uses StdCtrls, Buttons;

 

function ObterNome(var Nome: string): boolean;

var

  Form: TForm; // Variável para o Form

  Edt : TEdit; // Variável para o Edit

begin

  Result := false; // Por padrão retorna false 

  // Cria o form

  Form := TForm.Create(Application);

  try

    // Altera algumas propriedades do Form

    Form.BorderStyle := bsDialog;

    Form.Caption  := 'Atenção';

    Form.Position := poScreenCenter;

    Form.Width    := 200;

    Form.Height   := 150;

    // Coloca um Label

    with TLabel.Create(Form) do

    begin

      Parent  := Form;

      Caption := 'Digite seu nome:';

      Left    := 10;

      Top     := 10;

    end;

    // Coloca o Edit

    Edt := TEdit.Create(Form);

    with Edt do

    begin

      Parent := Form;

      Left   := 10;

      Top    := 25;

      Width  := Form.ClientWidth - 20// Ajusta o comprimento do Edit de acordo com a largura do form

    end;

    // Coloca o botão OK

    with TBitBtn.Create(Form) do

    begin

      Parent := Form;

      Left   := Form.ClientWidth - (Width * 2) - 20// Posiciona de acordo com a largura do form

      Top    := 80;

      Kind   := bkOK;

    end;

    // Coloca o botão Cancel

    with TBitBtn.Create(Form) do

    begin

      Parent := Form;

      Left   := Form.ClientWidth - Width - 10;

      Top    := 80;

      Kind   := bkCancel;

    end;

    // Exibe o form e aguarda a ação do usuário. Se for OK...

    if Form.ShowModal = mrOK then

    begin

      Nome   := Edt.Text;

      Result := true;

    end;

  finally

    Form.Free;

  end;

end;

 

procedure TForm1.mlABtn1Click(Sender: TObject);

var

  S: string;

begin

  if ObterNome(S) then Caption := S;

end;

 

Observações

 

Os componentes Label, Edit (var Edt) e BitBtn's (botões) não são destruídos explicitamente 

(Componente.Free). Isto não é necessário, pois ao criá-los informei como proprietário o Form 

(ex: TLabel.Create(Form)). Neste caso, estes componentes são destruídos automaticamente ao 

destruir o Form (Form.Free). 

.