Trabalhando com componentes criados em tempo de execução

Delphi

22/02/2004

Amigos,

Criei um programa que faz o seguinte:

1. O usuário cadastra empresas em uma simples ListBox
2. Quando fecha o form, um loop transfere os nomes das empresas para um menu Popup, ou seja, adiciona os itens ao menu.
3. Quando o usuário clicar em um desses itens, no menu, quero que a procedure leia o caption do menu clicado para transferí-lo para outro form.

Infelizmente não sei como executar o passo 3, já que não se trata de um número fixo de itens criados em tempo de projeto, e sim de um nº variável de itens criados em tempo de execução. Como faço isso?

Grato.


Mathac_admin

Mathac_admin

Curtidas 0

Respostas

Ilopaiz

Ilopaiz

22/02/2004

Ao criar um novo item, no Tag dele, insisra um número, depois é só gravar em alguma array, qual item q se refere aquela TAG...


ilopaiz@bol.com.br


GOSTEI 0
Marco Salles

Marco Salles

22/02/2004

Se a Sugestão Anterior Não lhe Couver , Eu Teria Uma Outra Sugestão a Dar :idea: , Só Que Preciso De Uma Pequena Informação. :?: :?: ...

Quando o usuário clicar em um desses itens, no menu, quero que a procedure leia o caption do menu clicado

Isto Eu Entendi, e Acredito Que Dá Para Concluir :P

para transferí-lo para outro form. :?:


Mas Estes Forms Que Voce Citou :?: Qual Seria a Relação Com O Caption
Destes Items De Menu Criados Dinamicamente :?:

, um loop transfere os nomes das empresas para um menu Popup, ou seja, adiciona os itens ao menu.


Se For Digitado Dez Empresas, Voce Pretende Criar Dez Forms Diferents
Caso os Captions Das Dez Empresas Forem Diferentes :?:

Na Verdade Meu Amigo, a Minha Dúvida Para TENTAR lhe Fornecer Minha Opinião é a Respeito Da Criação Ou Correlação Deste Forms Com Os Captions Do Menu Criados Dinamicamente...Se Voce Dizer (Postar) Para Mim Que Esta Etapa é Com Voce, Eu Mando Bala...Desde Que Voce Não Seje Atendido Primeiro e Claro...


GOSTEI 0
Marco Salles

Marco Salles

22/02/2004

Conforme M.P Enviada Para Por Voce Para Mim, Prefiro Deixar Aberto o
Tópico , Porque Outras Pessoas Poderão Participar, Corrijir,Opinar,Acrescentar,Etc...

mathac_admin, O Que Vou Lhe Passar Dependerá De Alguns Ajustes Tecnicos, Que Com Certeza Facilmente Serão Solucionados Por Voce:

1) Voce Deve Criar Um Um Procedimente Para Evitar Duplicidade Na    
       Lista 
2) Deve Também Criar Um Procedimento Para Que Somente Novas 
    Empresas Sejam Adicionadas Aos Novos Items De Menu
3) Por Fim Fazer Um Processo De Exclusão Caso o Usuário Exclua Uma 
    Empresa Da Lista


Estas Situações Podem Ou Não Desempenhar Papel Importâncai No Seu Programa, Vai Depender Do Que Voce Quer De Fato... No Exemplo Que Estou Lhe Enviando, Não Estou Considerando Tais Fatos...

1)  Crie a Nivel De Projeto(Este Passo Também Pode Ser Feito a Nível De 
    Execução) Um Item De Menu Com Caption Definido Por "Empresas" e 
    Consequentemente Sua Propriedade Name Será : "Empresas1"....
2) Na Secção Private Do Formulário Defina Um Procedure Onde Voce Vai 
    Conhecer o Caption Selecionado: Secção Private Do Form Onde Se 
    Encontra o Componente MainMenu:
   procedure CaptionEmpresa(Sender: TObject);
3) Aperte <Control+Shift+C> Simultaneamente Para Acionar o Class 
    Completion, Para Incluir Um Manipulador De Eventos No Seu 
    Aplicativo... Ou Faça Isto Manualmente
  procedure TForm1.SizeItemClick(Sender: TObject);
    begin
      ShowMessage(TMenuItem(Sender).Caption);
      TMenuItem(Sender).Checked := True;//Opção Para Marcar a 
                                                              //Empresa "Clicada"
    end;
Obs:Observe Que Voce Não Vai Fazer Nada Com Esta Mensagem, So 
       Coloquei Esta Instrução Para Voce Ter Uma Idéia De Como Pode 
       Aproveitar e Tirar O Caption Que Voce Quer Da Empresa 
       Selecionada Pelo Click Do Botão
4)Agora Por Fim as Instruções Que Irão Criar Dinamicamente Em Tempo 
   De Execução Os Item De Menu.... Adicione No Evento Que Lhe For 
   Conveniente as Instruçõe Abaixo
  Var
i:Integer;
Item: TMenuItem;
begin
i:=0;
  while I <= (ListBox1.Items.Count-1) do
  begin
    //cria os novos items
    Item := TMenuItem.Create (Self);
    //Adiciona Uma Empreas Ao Caption Do Item Do Menu
    Item.Caption :=ListBox1.Items[i];
    //Definindo Assim Fica Fácil Fazer Referência
    Item.ComponentIndex:=I;
    //Marca a Empresa Clicada..InsTrucoes Opcional
    Item.GroupIndex := 1;
    Item.RadioItem := True;
    //Insere o Evento Clic
    Item.OnClick := SizeItemClick;
    Empresas1.Insert (Empresas1.Count, Item);
    I := I + 1;
  end;


Eu Acho Que Isto Dá Para Voce Começar, Os Problemas Aparecerão Mas
Os Amigos Sempre Estarão Por Perto


GOSTEI 0
POSTAR