Fórum Criar ListBox´s em RunTime #273941
24/03/2005
0
Utilizo Delphi 7 e Firebird 1.5.
No meu banco tenho duas tabelas, sendo uma delas a Mestre e a outra a Detalhe, sao elas:
[u:1736f4c778]Pedidos[/u:1736f4c778]
CD_PEDIDO
DT_PEDIDO
HR_PEDIDO
CD_CLIENTE
[u:1736f4c778]Pedido_Produtos[/u:1736f4c778]
CD_PEDIDO
CD_PRODUTO
QTDE_PRODUTO
Tenho uma tela onde eu informo um intervalo de DT_PEDIDO.
O que eu preciso é para cada pedido que esta pesquisa retornar criar um ListBox com os Pedido_Produtos.
Então, se eu tiver 4 Pedidos, gostaria de criar 4 ListBox´s que irá conter cada um os Pedidos_Produtos.
Agradecido
Diogo.
Diogoalles
Curtir tópico
+ 0Posts
24/03/2005
Imoreira
var
combo:tComboBox;
altura,x:integer;
begin
for x:=form1.ControlCount-1 downto 0 do begin
form1.Controls[x].Destroy[color=blue:2946171827];// destroi os combos anteriormente criados;[/color:2946171827]
end;
tbPedidos.first;
altura:=2;
while not tbPedidos.eof do begin
combo:=tComboBox.Create(self);
combo.Top:=altura;
combo.Left:=5;
combo.parent:=form1;
combo.Style:=csDropDownList;
while not tbProdutos.eof do begin
combo.items.Add(tbProdutoscd_produto.asstring[color=blue:2946171827]{coloque aqui o campo que voce quizer}[/color:2946171827]);
tbProdutos.Next;
end;
inc(altura,23);
tbPedidos.next;
end;
end;
Gostei + 0
24/03/2005
Diogoalles
só mais uma dúvida, se eu tiver 2 panels neste form, ainda posso especificar dentro de qual Panel gostaria de criar ?
abraço
Diogo
Gostei + 0
24/03/2005
Imoreira
Onde lê-se: combo.parent:=form1,
coloque combo.parent:=[color=blue:cb07b87060]{nome do seu panel}[/color:cb07b87060]
Gostei + 0
28/03/2005
Diogoalles
Após criar em run-time os ListBox´s eu ainda tenho neste meu form um Edit1.
Então, gostaria que ao clicar em um dos LIstBox´s criados, que receberam seus devidos valores, este valor que eu clicar apareça no Edit, resumindo também preciso criar o evento OnClick em Runtime ou algo parecido que adicione o texto selecionado ListBox a um Edit.
agradeço
Diogo
Gostei + 0
28/03/2005
Massuda
Gostei + 0
28/03/2005
Diogoalles
Mas acho que não estou conseguindo ligar as pontas, será q poderiam me dar um auxílio?
Criei os ListBox´s dinamicamente conforme o iMoreira passou.
Aí eu crio uma procedure chamada ListBox_Clique que ficaria assim:
procedure Listbox_Clique(ListBox:TListBox); begin Edit1.Text := ListBox.Items[ListBox.ItemIndex]; end
O que não estou conseguindo é Ligar esta procedure (se ela estiver certa) ao ListBox dinamico que estou clicando... no caso se eu tiver 3 ListBox´s que foram criados dinamicamente como vou saber se é o ListBox1, 2 ou 3 que está sendo clicado? como vou ligar a procedure?
será q deu pra enteder?? hehe , espero que sim
agradecido
Diogo.
Gostei + 0
28/03/2005
Massuda
procedure TSeuForm.ListBoxClick(Sender: TObject); var ListBox: TListBox; begin ListBox := Sender as TListBox; Edit1.Text := ListBox.Items[ListBox.ItemIndex]; end
... ListBox := TListBox.Create(self); ListBox.Parent := ... ListBox.Top := ... ListBox.Left := ... ListBox.OnCLick := ListBoxClick; ...
Gostei + 0
28/03/2005
Diogoalles
iMoreira obrigado tb... demais !!!!
Nunca usei TAG e li pelo help que ela é tipo um índice d objeto, isso mesmo? como eu poderia aplicar ela?
Ultimo problema é que estou tentando criar os ListBox´s dentro de um ScrollBox que já está fixo no meu form, só que, por exemplo, se a aplicação tiver 3 ListBox pra criar ele só deixa visivel o ultimo que for criado... eu executei um passo a passo e ele cria os 3 ListBox mas só o ultimo aparece ... tentei dar um update, refresh..etc.. ñ deu ... alguma sugestão?
abraço
Diogo.
Gostei + 0
28/03/2005
Massuda
Gostei + 0
28/03/2005
Diogoalles
e o outro não estava aparecendo porque eu tinha Align=alClient :oops:
Blz galera... ficou show isso aqui
abraço a todos
Diogo
Gostei + 0
28/03/2005
Diogoalles
Destroy ? Free ?
e qual é o momento mais adequado para destruir? no fechamento do form?
e no caso dos eventos onde crio objetos, destruo logo ao fim da procedure?
abraço
Diogo
Gostei + 0
28/03/2005
Kapak
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)