Menu Janelas - Como impedir abrir uma janela já aberta?

Delphi

21/04/2004

[b]A questão é a seguinte: tenho um menu ´Janelas´ que mostra todas as janelas já abertas, mas eu gostaria que não fosse possível abrir uma janela que já se encontra aberta, pois pode ser que dê pau na minha aplicação.

Gostaria que aparecesse uma mensagem de erro (´[color=red]A janela já está aberta![/color]´) e bloqueasse a abertura da mesma janela duas vezes.

Atenciosamente

Sergio 8) [/b][/b]


Tejo_pan

Tejo_pan

Curtidas 0

Respostas

Fatrix

Fatrix

21/04/2004

Primeiro voce deve escrever a seguinte função e declara-lá na seção
private do código:

private
{ Private declarations }
function Formexiste(nomejanela:Tform):boolean;
public
{ Public declarations }
end;

implementation

{$R *.DFM}

Function TForm_Principal.Formexiste(Nomejanela:TForm):boolean;
var
I : integer;
begin
Formexiste := false;
for i := 0 to componentcount - 1 do
if Components[i] is TForm then
if TForm(Components[i])= nomejanela then
Formexiste := true;
end;


É simples, no menu janela coloque o seguinte código:

If Formexiste(Nome do Form) = false then
Begin
Nome do Form := TNome do Form.Create(Self);
end
else
If Formexiste(Nome do Form) = true then
Begin
showmessage(´A janela já está aberta´);
Nome do Form.BringToFront;
Nome do Form.SetFocus;
end;


Espero ter ajudado


GOSTEI 0
Tejo_pan

Tejo_pan

21/04/2004

EXECENTE!!!

Funcionou perfeitamente.

Muito obrigado mesmo.



Sergio Costa Faria


GOSTEI 0
Sgubert

Sgubert

21/04/2004

Olá amigo!!!!

Será que seia possível vc me exemplificar como vc imlementou esse seu menu janelas???? Tenho uma aplicação MDI e gostaria de fazer este menu!!! Com relação a seu problema tente o seguinte, é mais simples e fácil.....

No evento on create da janela:

if Janela01 = nil
then ´mostra ela´
else ´traz ela para frente ou da uma mensagem´

OBS: No evento on destroy das janelas vc deve fazer o seguinte:

Janela01 = nil.

=> Acho que assim é bem masi fácil e legível....

[]´s
Samuel Gubert


GOSTEI 0
Tejo_pan

Tejo_pan

21/04/2004

segue o menu abaixo:

| Arquivo | Cadastro | Janelas | Ajuda |

No menu Janelas você deverá defini-la como ´Window Menu´ no Object Inspector. Depois, no seu formulário principal você deverá escrever o código acima (o primeiro código), em seguida, para cada janela que você for abrir (exemplo: cadastro >> clientes) você implementará o segundo código.

Espero ter ajudado.

Atenciosamente
Sergio Costa Faria


GOSTEI 0
POSTAR