Formulário Livre

Esta página mostra o código gerado automaticamente para um free form e um exemplo modificado que captura texto como um formulário modal. Um free form difere de um application form principalmente porque permite múltiplas instâncias e oferece controle mais rigoroso sobre o tempo de vida do formulário.

unit_FreeForm (gerado automaticamente)
unit _FreeForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIForm;

type
  TFreeForm = class(TUniForm)
  private
    { Declarações privadas }
  public
    { Declarações públicas }
  end;

implementation

uses
  uniGUIApplication;

{$R *.dfm}

end.

Características importantes:

  • Não existe equivalente da variável global do VCL (a função que fornece uma instância global do formulário está ausente).

  • Solicitar um free form implica que o usuário deseja comportamentos não disponíveis com um application form:

    • Podem ser criadas múltiplas instâncias do formulário (por exemplo, vários formulários não-modais mostrando registros diferentes).

    • O usuário tem controle mais rígido sobre o tempo de vida do formulário.

circle-info

Observações sobre este exemplo modal:

  • O owner do free form é a instância que gerencia a sessão atual (não uma variável global de aplicação).

  • O formulário é liberado automaticamente porque FreeOnClose é true e um valor ModalResult foi atribuído.

  • A variável local (frm) é liberada quando sai do escopo (após sair de GetText).

  • Free forms são convenientes ao expor um serviço (como GetText) em vez de expor o próprio formulário. O formulário pode ser criado e liberado inteiramente dentro da implementação do serviço.