Dúvida com Form MDI

Delphi

27/01/2008

Olá,

Estou com um problema e precisando de ajuda, tenho um programa onde estou utilizando os forms MDI, o que preciso é o seguinte, imaginem os forms f_clientes, f_produtos, f_orcamentos e novamente f_clientes foram aberto no sistema, eu preciso fazer um recurso onde o usuário possa alternar entre este form´s como o alt+tab do windows. Pensei no seguinte, criar um botão em uma barra assim q o form for aberto, e ai clicar neste botão o form viria para frente dos outros.

Se alguém tiver uma solução ficarei agradecido.

Edeilson A. Silveira.
MSN: edeilson.s@hotmail.com


Edeilson.s

Edeilson.s

Curtidas 0

Respostas

Dbergkamps10

Dbergkamps10

27/01/2008

Olá,
Estou tb com esse mesmo problema. Tô tentando fazer uma rotina pra criar um menu janela (parecido com aquele do Word). assim q tiver aqui posto aqui ou me mande um e-mail dbergkamps@hotmail.com.

Att
Dalton


GOSTEI 0
Dbergkamps10

Dbergkamps10

27/01/2008

Olá,
consegui terminar minha procedure.
Passos:
1 - Adicione no MenuItem um Item com Caption de Janela;
2 - Declare as seguintes procedures no seu Form Principal:
procedure TFmPrincipal.ControlaJanela; //essa procedure cria e destroi os itens do menu
var
   NewItem: TMenuItem;
   i : integer;
begin
MainMenu1.Items.Items[6].clear;
  for i := 0 to (Screen.FormCount -1) do
   if screen.Forms[i].Showing=true then
    begin
    NewItem:=TMenuItem.Create(FmPrincipal.MainMenu1);
    NewItem.Caption:=Screen.Forms[i].Caption;
    FmPrincipal.MainMenu1.Items.Items[6].add(NewItem);
    newitem.OnClick:=giveclick;
    end;
end;

procedure TFmPrincipal.GiveClick(Sender: TObject); // essa procedure atribui o evento onclick para cada item criado através da procedure anterior.
var
 i: integer;
begin
for i:=0 to (Screen.FormCount -1) do
 begin
 if screen.Forms[i].Showing=true then
  if Screen.Forms[i].Caption = TMenuItem(Sender).Caption then
   Screen.Forms[i].BringToFront;
 end;
end;

Nos eventos OnShow e OnDeactivate de cada Form MDI chame a procedure ´ControlaJanela´; Não esqueça de liberar os forms da memória quando fecha-los (com free, nil e release), pq se não a procedure pode não funcionar.
Comigo deu certo, espero q com quem tentar tb.

Att
Dalton :wink: :wink: :wink: :wink:


GOSTEI 0
Aasn

Aasn

27/01/2008

Olá pessoal,

Quando tempo mais de uma janela MDI aberta, podemos alternar entre elas usando o Ctrl + Tab.

[]´s
AASN


GOSTEI 0
POSTAR