Duvidas sobre minimizar.
Galera vamos ao seguinte cenário...
Estou rodando uma aplicação que tem uma tela principal aonde tem os botões de cadastro e afins, esta tela ocupa o monitor inteiro,
Então quando clico no botão cadastro ele abre uma janela menor, o que acontece hoje é que eu uso Form.show, então quando eu clico no fundo da tela que ocupa o monitor inteiro, a telinha de cadastro some, neste caso gostaria de saber se existe a possibilidade de clicar fora da tela, e o form minimizar, porém que ficasse naquele estilo minimizado por cima do menu iniciar, não quero usar Form.showmodal.
Só pra critério de informação uso, Delphi XE2 e Win7.
Sublixo.
Estou rodando uma aplicação que tem uma tela principal aonde tem os botões de cadastro e afins, esta tela ocupa o monitor inteiro,
Então quando clico no botão cadastro ele abre uma janela menor, o que acontece hoje é que eu uso Form.show, então quando eu clico no fundo da tela que ocupa o monitor inteiro, a telinha de cadastro some, neste caso gostaria de saber se existe a possibilidade de clicar fora da tela, e o form minimizar, porém que ficasse naquele estilo minimizado por cima do menu iniciar, não quero usar Form.showmodal.
Só pra critério de informação uso, Delphi XE2 e Win7.
Sublixo.
Sublixo
Curtidas 0
Respostas
Tiago Soares
21/05/2013
Como colocar na barra Iniciar, mas para não criar outra instancia da janela eu uso essa procedure
procedure OpenForm(FClass: TFormClass; var Instance);
begin
//ESSA PROCEDURE VAI SER RESPONSAVEL EM VERIFICAR SE O FORM QUE VOCE PEDIU PARA
//ABRIR JA ESTA ABERTO. SE JA ESTIVER ABERTO ELE EXIBE O FORM CASO CONTRARIO ELE CARREGA OUTRO NA MEMORIA
if Assigned(TForm(Instance)) then
begin //EXIBE CASO JA ESTEJA A MEMORIA
TForm(Instance).WindowState := wsNormal;
TForm(Instance).BringToFront;
end
else
begin//CRIA OUTRO CASO NAO ESTEJA NA MEMORIA
Application.CreateForm(FClass, Instance);
end;
TForm(Instance).Position := poScreenCenter;
TForm(Instance).Show;
end;
procedure OpenForm(FClass: TFormClass; var Instance);
begin
//ESSA PROCEDURE VAI SER RESPONSAVEL EM VERIFICAR SE O FORM QUE VOCE PEDIU PARA
//ABRIR JA ESTA ABERTO. SE JA ESTIVER ABERTO ELE EXIBE O FORM CASO CONTRARIO ELE CARREGA OUTRO NA MEMORIA
if Assigned(TForm(Instance)) then
begin //EXIBE CASO JA ESTEJA A MEMORIA
TForm(Instance).WindowState := wsNormal;
TForm(Instance).BringToFront;
end
else
begin//CRIA OUTRO CASO NAO ESTEJA NA MEMORIA
Application.CreateForm(FClass, Instance);
end;
TForm(Instance).Position := poScreenCenter;
TForm(Instance).Show;
end;
GOSTEI 0
Joel Rodrigues
21/05/2013
Usar MDI é uma opção? Por que se for, os forms MDI Childs ficam minimizados "no pé" do form pai.
GOSTEI 0
Sublixo
21/05/2013
Usar MDI é uma opção? Por que se for, os forms MDI Childs ficam minimizados "no pé" do form pai.
Nunca usei MDI.
Veja, no delphi 7 este código funcionava quando eu usava, quando eu usava no create do Form
SetWindowLong(Application.Handle,GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
porém, no Delphi XE2 não.
GOSTEI 0
Alisson Santos
21/05/2013
Para um melhor controle é legal utilizar o form MDI pois não precisa ficar fazendo códigos e mais códigos para esse controle.
GOSTEI 0
Sublixo
21/05/2013
Como colocar na barra Iniciar, mas para não criar outra instancia da janela eu uso essa procedure
procedure OpenForm(FClass: TFormClass; var Instance);
begin
//ESSA PROCEDURE VAI SER RESPONSAVEL EM VERIFICAR SE O FORM QUE VOCE PEDIU PARA
//ABRIR JA ESTA ABERTO. SE JA ESTIVER ABERTO ELE EXIBE O FORM CASO CONTRARIO ELE CARREGA OUTRO NA MEMORIA
if Assigned(TForm(Instance)) then
begin //EXIBE CASO JA ESTEJA A MEMORIA
TForm(Instance).WindowState := wsNormal;
TForm(Instance).BringToFront;
end
else
begin//CRIA OUTRO CASO NAO ESTEJA NA MEMORIA
Application.CreateForm(FClass, Instance);
end;
TForm(Instance).Position := poScreenCenter;
TForm(Instance).Show;
end;
procedure OpenForm(FClass: TFormClass; var Instance);
begin
//ESSA PROCEDURE VAI SER RESPONSAVEL EM VERIFICAR SE O FORM QUE VOCE PEDIU PARA
//ABRIR JA ESTA ABERTO. SE JA ESTIVER ABERTO ELE EXIBE O FORM CASO CONTRARIO ELE CARREGA OUTRO NA MEMORIA
if Assigned(TForm(Instance)) then
begin //EXIBE CASO JA ESTEJA A MEMORIA
TForm(Instance).WindowState := wsNormal;
TForm(Instance).BringToFront;
end
else
begin//CRIA OUTRO CASO NAO ESTEJA NA MEMORIA
Application.CreateForm(FClass, Instance);
end;
TForm(Instance).Position := poScreenCenter;
TForm(Instance).Show;
end;
Gostei, ja estou usando!
GOSTEI 0