ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Resolvido] Como Listar meus Forms no botão Voltar e Avançar
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Sáb Fev 11, 2012 2:36 pm    Assunto: [Resolvido] Como Listar meus Forms no botão Voltar e Avançar Responder com Citação

Olá pessoal, venho solicitar um auxilio na questão de, "Como listar todos forms MDIChild abertos dentro do form PAI atravez dos botões [VOLTAR |v|] e [AVANCAR |v|], este |v| é a propriedade [ DropDownList ] dos botões....**Componente "toolbar"**


Motivo do Auxilio é:
- Evitar que o usuário fique clicando em 'Voltar' ou 'Avançar' um a um até chegar em um FormFilho aberto,ex: abro lá uns 10 forms (Parceiro/Cliente/Produto etc.....) então justamente entra esta minha lista nesta setinha para baixo do botão aparecerá todos meus Forms Filhos que foram abertos, e ele podendo selecionar na lista qual ele deseja que volte a ser mostrado...

Hoje estes meus 2 botões não faz mas do que ao clicar neles:

[Voltar] -> Previous;
[Avancar] -> Next;

Em Pratica da minha solicitação de auxilio:

[VOLTAR |v|]
[FormCadParceiro 1]
[FormCadCliente 2 ]
[FormCadFunc 3 ]
[FormCadProduto 4 ]

Etc...

PS: O botão Avançar mostrará tambem as mesmas listas do botão Voltar.


Poderiam me dar uma ideia de como fazer isso, se é por Popup ou por Action e vinculando no meu DropDownList destes botões


Espero que me ajudem, pois isso pode ajudar tambem muita gente..


Editado pela última vez por eduardolfj em Qua Fev 22, 2012 12:04 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Dom Fev 12, 2012 1:25 pm    Assunto: Re: Como Listar meus Forms MDIChild no botão Voltar e Avançar Responder com Citação

Up
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lucas_alves
Colaborador
Colaborador


Registrado: Domingo, 30 de Agosto de 2009
Mensagens: 1632
Localização: São Gonçalo - Rio de Janeiro

MensagemEnviada: Dom Fev 12, 2012 2:52 pm    Assunto: Responder com Citação

Eu fiz algo parecido usando um JvTabBar, eu fiz asim:
Código:

function FindTabTag(Tag : Integer) : TJvTabBarItem;
Var i : Integer;
begin
Result:=Nil;
for i := 0 to Pred(FormPrincipal.JvTabBar1.Tabs.Count) do
if FormPrincipal.JvTabBar1.Tabs[i].Tag=Tag then
  begin
    Result:=FormPrincipal.JvTabBar1.Tabs[i];
    Exit;
  end;

end;

procedure TFormPrincipal.RefleshTab;
Var NewTabBarItem : TJvTabBarItem;
    TabSelected : TJvTabBarItem;
    i : Integer;
begin
if JvTabBar1.Tabs.Count>0 then
JvTabBar1.Tabs.Clear;
for i := 0 to Pred(FormPrincipal.MDIChildCount) do
  begin
    NewTabBarItem:=TJvTabBarItem.Create(JvTabBar1.Tabs);
    NewTabBarItem.Caption:=' '+FormPrincipal.MDIChildren[i].Caption+'   ';
    NewTabBarItem.Tag:=integer(FormPrincipal.MDIChildren[i].Handle);
    FormPrincipal.MDIChildren[i].Tag:=NewTabBarItem.Tag;
  end;

if (ActiveMDIChild<>nil) then
  begin
    TabSelected:=FindTabTag(FormPrincipal.ActiveMDIChild.Tag);
    FormPrincipal.JvTabBar1.SelectedTab:=TabSelected;
    if ActiveMDIChild.WindowState <> wsMaximized then ActiveMDIChild.WindowState:=wsMaximized;
  end;

JvTabBar1.Visible:=(JvTabBar1.Tabs.Count>0);
//PanelFundo.Visible:=(Not JvTabBar1.Visible);

end;

//evento onTabSelected
procedure TFormPrincipal.JvTabBar1TabSelected(Sender: TObject;
  Item: TJvTabBarItem);
Var vWinControl : TForm;
begin
 if JvTabBar1.SelectedTab=nil then
  Exit;
    vWinControl:=FindFormTag(JvTabBar1.SelectedTab.Tag);
    if vWinControl<>nil then
    TForm(vWinControl).Show;
end;

///***********
///***********
//Depois que dar um Show no form chame a função "RefleshTab;"


Você pode adaptar o código as suas necessidades!

Qualquer coisa é só falar!

Abraços!!!
_________________
Agora eu também programo em PHP.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Seg Fev 13, 2012 8:48 am    Assunto: Responder com Citação

Veja como funciona a property "WindowMenu" do form

ela faz exatamente isso
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Seg Fev 13, 2012 6:34 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
Veja como funciona a property "WindowMenu" do form

ela faz exatamente isso


Boa tarde, obrigado pelas informações mas pelo WindowMenu do form eu sabia que listava, o que eu quero é mostrar as mesmas do WindowMenu nos meus Botões [Voltar] e [Avançar] que possui o 'DropDowMenu'



Segue a imagem dos meus botões no FormPrincipal
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Fev 14, 2012 9:51 am    Assunto: Responder com Citação

eu não falei pra vc usar o menuwindow.

falei pra vc ver como ele funciona.

vc pode tb fazer assim:

acho q funciona. não testei.

Código:

procedure TSeuForm.FormCreate(Sender: TObject);
begin
  Self.WindowMenu := SeuBotao.DropDowMenu.Items
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Qua Fev 15, 2012 6:43 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
eu não falei pra vc usar o menuwindow.

falei pra vc ver como ele funciona.

vc pode tb fazer assim:

acho q funciona. não testei.

Código:

procedure TSeuForm.FormCreate(Sender: TObject);
begin
  Self.WindowMenu := SeuBotao.DropDowMenu.Items


Tentei desta forma citada no meu FormPrincipal mas não funcionou, tambem Crying or Very sad

Mais alguma solução amigos ?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Qui Fev 16, 2012 8:59 am    Assunto: Responder com Citação

Código:
var
  mi : TMenuItem;
begin
  mi := TMenuItem.create(SeuBotao.DropDowMenu);
  SeuBotao.DropDowMenu.Items.Add(mi);
  mi.Caption := 'Janelas';
  Self.WindowMenu := mi;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Qui Fev 16, 2012 11:48 pm    Assunto: Responder com Citação

gilsonnrodrigues escreveu:
Código:
var
  mi : TMenuItem;
begin
  mi := TMenuItem.create(SeuBotao.DropDowMenu);
  SeuBotao.DropDowMenu.Items.Add(mi);
  mi.Caption := 'Janelas';
  Self.WindowMenu := mi;


1º Obrigado por estar me ajudando gilson, tentei utilizar isso no meu Form Pai, evento OnCreate mas não funcionou, tentei tambem no OnChange do popup tambem não deu hehe....

Haveria algum outro local para se adaptar o código ou se foi testado já ?

Obs: Se coloco no OnCreate ocorre violações


---------------------------
Debugger Exception Notification
---------------------------
Project Comercial.exe raised exception class EAccessViolation with message 'Access violation at address 0053B6BA in module 'Comercial.exe'. Read of address 00000034'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Sáb Fev 18, 2012 12:33 pm    Assunto: Responder com Citação

UP
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Ter Fev 21, 2012 12:57 pm    Assunto: Responder com Citação

eduardolfj escreveu:
UP


Ainda não consegui pessoal tentei ligar o WindowMenu do meu FormPai em um TMenuItem do popup que está ligado ao btnVoltar.DropDowMenu mas não aparece os forms Filhos abertos.. Opção do WindowMenu so funciona ao TMainMenu.

Ajudem plz rs....msn: eduardolfj@hotmail.com
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lucas_alves
Colaborador
Colaborador


Registrado: Domingo, 30 de Agosto de 2009
Mensagens: 1632
Localização: São Gonçalo - Rio de Janeiro

MensagemEnviada: Ter Fev 21, 2012 8:06 pm    Assunto: Responder com Citação

eduardolfj escreveu:
eduardolfj escreveu:
UP


Ainda não consegui pessoal tentei ligar o WindowMenu do meu FormPai em um TMenuItem do popup que está ligado ao btnVoltar.DropDowMenu mas não aparece os forms Filhos abertos.. Opção do WindowMenu so funciona ao TMainMenu.

Ajudem plz rs....msn: eduardolfj@hotmail.com


tente assim:
Código:

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
  private
    procedure ClickButton(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
    procedure ExibirMenu;
  end;

{.......}

procedure TForm1.ClickButton(Sender: TObject);
  Var vForm : TForm;
begin
vForm:=TForm(FindControl(HWnd(TToolButton(Sender).Tag)));
if vForm<>nil then
vForm.Show;
end;


procedure TForm1.ExibirMenu;
var
  NewPopUp : TPopupMenu;
  NewItem : TMenuItem;
  i : Integer;
begin
NewPopUp:=TPopupMenu.Create(self);
for i := 0 to self.MDIChildCount-1 do
  begin
    NewItem := TMenuItem.create(NewPopUp);
    NewItem.Caption := Self.MDIChildren[i].Caption;
    NewItem.Tag:=Self.MDIChildren[i].Handle;
    NewItem.OnClick:=ClickButton;
    NewPopUp.Items.Add(NewItem);
    ToolButton1.DropdownMenu:=NewPopUp;
  end;
end;



depois que abrir um form tem que chamar a função "ExibirMenu();".

Abraços!!!
_________________
Agora eu também programo em PHP.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Ter Fev 21, 2012 10:33 pm    Assunto: Responder com Citação

Citação:

tente assim:
Código:

type
  TForm1 = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
  private
    procedure ClickButton(Sender: TObject);
    { Private declarations }
  public
    { Public declarations }
    procedure ExibirMenu;
  end;

{.......}

procedure TForm1.ClickButton(Sender: TObject);
  Var vForm : TForm;
begin
vForm:=TForm(FindControl(HWnd(TToolButton(Sender).Tag)));
if vForm<>nil then
vForm.Show;
end;


procedure TForm1.ExibirMenu;
var
  NewPopUp : TPopupMenu;
  NewItem : TMenuItem;
  i : Integer;
begin
NewPopUp:=TPopupMenu.Create(self);
for i := 0 to self.MDIChildCount-1 do
  begin
    NewItem := TMenuItem.create(NewPopUp);
    NewItem.Caption := Self.MDIChildren[i].Caption;
    NewItem.Tag:=Self.MDIChildren[i].Handle;
    NewItem.OnClick:=ClickButton;
    NewPopUp.Items.Add(NewItem);
    ToolButton1.DropdownMenu:=NewPopUp;
  end;
end;



depois que abrir um form tem que chamar a função "ExibirMenu();".

Abraços!!!


Obrigado lucas_alves desta forma funcionou perfeito, só a um problema quando o form é fechado o nome dele esta permanecendo na lista do botao.DropDowMenu

Ps: estou chamando o ExibirMenu(); no OnCreate dos meus forms..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
eduardolfj
Novato
Novato


Registrado: Sábado, 4 de Fevereiro de 2012
Mensagens: 33

MensagemEnviada: Qua Fev 22, 2012 12:04 am    Assunto: Responder com Citação

Resolvido adicionei mas está procedure com for i :=1 no meu FormPrincipal e declarei pubilica, depois no FormClose eu chamo frmMenu.FecharMenu(); e ela atualiza meu caption do botão.

Obrigado a todos que ajudaram..

Código:

procedure TfrmMenu.FecharMenu;
var
NewPopUp : TPopupMenu;
NewItem : TMenuItem;
i : Integer;
begin
NewPopUp:=TPopupMenu.Create(self);
for i := 1 to self.MDIChildCount-1 do
  begin
    NewItem := TMenuItem.create(NewPopUp);
    NewItem.Caption := Self.MDIChildren[i].Caption;
    NewItem.Tag:=Self.MDIChildren[i].Handle;
    NewItem.OnClick:=ClickButton;
    NewPopUp.Items.Add(NewItem);
    btnVoltar.DropdownMenu:=NewPopUp;
    btnAvancar.DropdownMenu:=NewPopUp;
  end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lucas_alves
Colaborador
Colaborador


Registrado: Domingo, 30 de Agosto de 2009
Mensagens: 1632
Localização: São Gonçalo - Rio de Janeiro

MensagemEnviada: Qua Fev 22, 2012 11:02 am    Assunto: Responder com Citação

eduardolfj escreveu:
Resolvido adicionei mas está procedure com for i :=1 no meu FormPrincipal e declarei pubilica, depois no FormClose eu chamo frmMenu.FecharMenu(); e ela atualiza meu caption do botão.

Obrigado a todos que ajudaram..


É só chamar a função "ExibirMenu;" depois que fechar o form!

Abraços!!!
_________________
Agora eu também programo em PHP.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB