GARANTIR DESCONTO

Fórum Criando componentes em tempo de execução #356615

04/04/2008

0

Quero permitir que o usuário monte o form da maneira que ele achar melhor. Para isso eu terei em um form uma lista de componentes que ele pode adicionar.

O problema é que eu não posso declarar um monte de variáveis prevendo os componentes que o usuário possa adicionar ao form. Exemplo:

var Edit1: TEdit;
      Edit2: TEdit;
      Edit3: TEdit;


Dessa forma eu só permitiria ao usuário adicionar três edits no form. Como fazer para que não haja essa limitação de número?

Grato pela ajuda.

t+!


Delphi32

Delphi32

Responder

Posts

04/04/2008

Bterossi

Cara nao sei se eu comprendi sua duvida, porem voce pode adicionar ao evento ´FormMouseDown´ este codigo, no caso de voce adicionar varios tipos de componentes voce deve tratar a varial obj como object, e no momento de efeturar o create voce muda, por ex:

var
obj: TEdit;
begin
if edit then
obj := TEdit.Create(Self)
else
if bitbtn then
obj := TBitBtn.create(self);

obj.Parent := Self;
obj.Top := y;
obj.Left := x;
end;

espero ter ajudado.


Responder

Gostei + 0

04/04/2008

Delphi32

o problema é que eu quero fugir de ter que declarar as variáveis que serão usadas. Porque veja bem, imagina que o usuário queira criar um form com 1000 edits. Eu teria que criar:

var
  Edit1: TEdit;
  Edit2: TEdit;
  Edit3: TEdit;
  Edit4: TEdit;
...
  Edit999: TEdit;
  Edit1000: TEdit;


E se para cada Edit o usuário quisesse adicionar 1 botão. Então além de declarar 1000 edits eu teria que declarar 1000 botões. O que eu estou querendo fazer é muito similar ao que o delphi faz. Ele permite que você adicione um número infinito de componentes. Não creio que ela tenha declarado em seu código 1000 variáveis de cada componente, não é?

Como posicionar o componente no form não é o problema, mas sim como fugir dessa declaração da variável.

Obrigado pela ajuda.

t+!


Responder

Gostei + 0

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

Aceitar