Duvidas sobre minimizar.

Delphi

21/05/2013

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.
Sublixo

Sublixo

Curtidas 0

Respostas

Tiago Soares

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;
GOSTEI 0
Joel Rodrigues

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

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

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

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;


Gostei, ja estou usando!
GOSTEI 0
POSTAR