Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

noseDeep

'menu janela'

Recommended Posts

opa, estou precisando de uma pequena ajuda... tava querendo fazer um menu janela no meu programa tipo tem no word e tal onde você tem as janelas que estão abertas no momento ( forms ) alguem saberia? dei uma boa pesquisada@google mas nao axei nada apagar

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja o seguinte topico:

 

http://forum.imasters.com.br/index.php?showtopic=187799

 

lah eu fiz uma pergunta semelhante, e logo após concegui achar a resposta, apesar de lá estar colocando o nome das janelas num listbox você pode tambem pode por num mainmenu, segue um exemplo abaixo que peguei no Dicas e Truques Delphi Ver 2.7:

 

Como adicionar items de menu dinâmicamente

Normalmente nós criamos nossos menus, diretamente no Delphi em time project.

Mas e se por algum motivo quisermos incluir itens em um menu em runtime ?

Bom, o TMainMenu possui métodos capazes de incluir(Insert) e excluir(Delete) itens

de um menu, como fazer isso? Fácil. No exemplo vamos incluir todas as fontes do windows

em um sub-menu.

 

1: Inicie um novo projeto e inclua um componente TMainMenu no form.

2: Faça com que o menu tenha a seguinte estrutura.

Arquivo Editar

Abrir Copiar

Fechar Colar

Fontes

3: Coloque um TButton no form e inclua o seguinte código no evento onClick do mesmo.

 

procedure TfMtCpPrMs.Button1Click(Sender: TObject);

var

I : Integer;

NovoItem : TMenuItem;

begin

For I := 0 to Screen.Fonts.Count - 1 do

begin

NovoItem := TMenuItem.Create(MainMenu1);

NovoItem.Caption := Screen.Fonts;

MainMenu1.Items[1].Items[2].Insert(I,NovoItem);

end;

NovoItem.Free;

end;

 

Bom, beleza o menu será criado.

Na linha MainMenu1.Items[1].Items[2].Insert(I,NovoItem);

Existe uma lógica, veja:

MainMenu1.Items[1] = Menu Editar

MainMenu1.Items[1].Items[2] = Item 3 de menu Editar, no caso Fontes

(Lembre-se que o indece começa em 0)

4: Ótimo, mas o que fazer com um item de menu que não tem funcinalidade?

Para que nosso exemplo faça sentido, precisamos que o item clicado execute alguma ação. Para isso no momento da criação é necessário associar ao evento onClick do mesmo uma ação, no nosso caso vamos criar uma procedure para ele.

Crie uma procedure na área publica ou privada do seu form, algo como.

 

procedure CapturaClick(Sender : TObject);

 

5: Escreva o seguinte código na sua nova procedure;

 

procedure TfMtCpPrMs.CapturaClick(Sender: TObject);

begin

ShowMessage('Você escolheu a fonte: ' + TMenuItem(Sender).Caption);

end;

 

6: Agora associe a procedure CapturaClick ao evento de cada item adicionado;

Adicione a seguinte linha ao laço For;

 

MainMenu1.Items[1].Items[2].Items.OnClick := CapturaClick;

//Atenção, não passe parâmetros para a procedure

//Modo incorreto.

MainMenu1.Items[1].Items[2].Items.OnClick := CapturaClick(Sender);

 

7: O código de inclusão do item de menu completo fica assim:

 

procedure TfMtCpPrMs.Button1Click(Sender: TObject);

var

I: Integer;

NovoItem : TMenuItem;

begin

For I := 0 to Screen.Fonts.Count - 1 do

begin

NovoItem := TMenuItem.Create(MainMenu1);

NovoItem.Caption := Screen.Fonts;

MainMenu1.Items[1].Items[2].Insert(I,NovoItem);

MainMenu1.Items[1].Items[2].Items.OnClick := CapturaClick;

end;

NovoItem.Free;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.