Criando componentes em tempo de execucao
Tarde galerinha !
Estou com dificuldades em criar componentes em tempo de execução.
Os componentes devem ficar dentro de um scrollBox.
Já consegui fazer com que o scroolBox receba os panels, mas dentro dos panels deve conter um progressBar. Nao sei como faço para avisar na criacao do componente que o progress irá dentro do panel criado !
Vejam como está o codigo, lembrando que ele pega da base.
Estou com dificuldades em criar componentes em tempo de execução.
Os componentes devem ficar dentro de um scrollBox.
Já consegui fazer com que o scroolBox receba os panels, mas dentro dos panels deve conter um progressBar. Nao sei como faço para avisar na criacao do componente que o progress irá dentro do panel criado !
Vejam como está o codigo, lembrando que ele pega da base.
// Coloca no primeiro registro do select
qestoque.First;
// enquanto nao chega no ultimo
while qestoque.Eof = false do
Begin
// Cria o panel
P := TPanel.Create(Self);
P.align := alLeft;
P.Width := 50 ;
P.Height := 95;
// Cria um nome para o panel com um numero para poder ser unico
P.Name := 'Painel' + inttostr(x);
//Fala para o componente ser criado dentro do ScroolBox
P.Parent := sb1;
// Criacao do Progress
Pg := TcxProgressBar.Create(Self);
Pg.Properties.Orientation := cxOrVertical;
Pg.AutoSize := false;
Pg.Left := 10;
Pg.Top := 20;
Pg.AlignWithMargins := true;
Pg.Width := 30;
Pg.Height := 63;
Pg.Name := 'Progress' + inttostr(x);
// Como definir o componente que vai ser recebido o progress se ele nao esta no form ? gera um erro no delphi
Pg.Parent := ???;
qestoque.Next;
x := x +1;
End;
Geison
Curtidas 0
Respostas
Alan Souza
03/09/2012
testei passando o próprio p no Parent e funcionou:
mas o código não pode ser reexecutado sem destruir todos os componentes dentro do ScrollBox.
Pg.Parent := p;
mas o código não pode ser reexecutado sem destruir todos os componentes dentro do ScrollBox.
GOSTEI 0
Geison
03/09/2012
alanps, estava agora mesmo respondendo ao topico,
deve-se colocar o nome do objeto criado (correto ?) no parent, aí foi.
Obrigado !
deve-se colocar o nome do objeto criado (correto ?) no parent, aí foi.
Obrigado !
GOSTEI 0
Alan Souza
03/09/2012
na verdade o que você passa é O objeto descendente de TWinControl.
GOSTEI 0
Geison
03/09/2012
Entendi. Obrigado !
GOSTEI 0
Deivison Melo
03/09/2012
Posso colocar o tópico como encerrado?
GOSTEI 0
Geison
03/09/2012
Quase Deividison !
eu faço isso usando o do scroll ? ou tenho q ter todos os nomes dos componentes e destruir um a um ?
mas o código não pode ser reexecutado sem destruir todos os componentes dentro do ScrollBox
eu faço isso usando o
DestroyComponents
GOSTEI 0
Alan Souza
03/09/2012
costumo fazer assim para destruir controles dentro de um container:
for i := 0 to Pred(ScrollBox.ControlCount) do
ScrollBox.Controls[0].Free;
GOSTEI 0