Criando um TButton em tempo de execução
A primeira coisa a fazer é declarar uma variável para o botão, por exemplo:
Botao: TButton;
Pode ser necessário incluir a unit StdCtrls. Em seguida escrevemos o código que cria o componente:
Botao := TButton.Create(nil);
O construtor Create espera receber o dono do componente (Owner) como parâmetro. Nesse caso informamos que o Botão não tem dono. Você pode ainda informar Self ou Application. Se for informado um desses dois últimos, o objeto criado será destruído juntamente com o seu dono. No nosso exemplo o objeto deve ser destruído explicitamente usando o método Free.
Quando um objeto é criado, muitas propriedades recebem valores padrão. Dessa forma precisamos definir pouca coisa mais.
Botao.Parent := Form1;
Botao.Name := 'Botao';
Botao.Caption :='Ok';
A propriedade Parent informa onde o componente será colocado. Ou seja Parent indica o componente que contém o botão. Se tivermos um TPanel chamado Panel1 dentro do Form1 e desejarmos inserir o botão nesse painel, só precisamos informar Botao.Parent := Panel1. Podemos definir valores para as propriedades Left e Top do botão. Esses valores são sempre relativos ao Parent. Ambas serão inicializadas com 0, caso não atribuirmos valores para elas.
Se desejarmos definir um método para um evento do componente, é necessário criar o método primeiro. Por exemplo, supondo que queremos programar o evento OnClick do botão:
procedure TForm1.Clica(Sender: TObject);
begin
ShowMessage('Componente dinâmico');
end;
Assim, podemos referenciar o método durante a criação do componente com o comando:
Botao.OnClick := @Clica;
Botao.Free;
Um novo item de menu
Para incluir um novo item de menu, vamos supor que já exista um TPopupMenu chamado PopupMenu1. Declaramos um novo TMenuItem:
ItemNovo: TMenuItem;
E o código para cirar o novo item:
ItemNovo := TMenuItem.Create(nil);
ItemNovo.Caption := 'Nova opção';
ItemNovo.Name := 'ItemNovo';
ItemNovo.OnClick := @Clica;
PopupMenu1.Items.Add(ItemNovo);
Agora, resta exceutar o programa e experimentar nossos componentes dinâmicos.
Atualizado em 16/05/2010.
4 comentários:
Puts, eu uso muito essa técnica. Com mais frequencia em componentes não visuais, mas uso nos visuais também.
Quem bem souber usar técnicas assim já iniciará usando boas práticas de OO, pois com esta aí podemos desacoplar interfaces.
Valeu prof. Carlos :)
Pois é Sílvio
Ficamos viciados na facilidade da programação visual e acabamos por engessar nossas aplicações e nossos usuários. Esquecemos que o poder que a OO nos dá de dinamizar os sistemas, facilitando em muito a vida dos usuários.
Valeu
professor tengo un problema con SQL base de datos usted me podria ayudar????
chacunvele13
Mande-me um e-mail.
Postar um comentário