Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

thales.saraiva

Delphi - Formulário MDI

Recommended Posts

Olá pessoal,

estou criando uma aplicação usando MDI(sou inocente nesta área). Tenho um Form com um calendário que pode ser aberto com o clique de um botão ou dois cliques no relógio que tenho no programa.

O problema é o seguinte: Em tempo de execução abro o Form que contem o Calendário. Quando eu aperto o botão de abrir o Form novamente, a aplicação cria outro Form com o calendário ficando dois Forms iguais aberto.

Desejo que alguém ajude-me a fazer um tratamento em que quando o FrmCalendario estiver aberto, caso eu clique no botão para abri-lo de novo não crie outro form e sim que o foco passe para o FrmCalendario já criado...

por enquanto estou fazendo com que o botão receba o inverso:

btnCalendario.enabled := not btnCalendario.enabled;

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

kra.......usa no onshow do form formprincipal.miprograma.enabled:=false;ou se você quiser complicar.......... um activeformcount sei lá.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 is TForm then

if TForm(Components)= nomejanela then

Formexiste := true;

end;

 

 

É simples, no botão em que voce quer chamar o formulario 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

Nome do Form.BringToFront;

Nome do Form.SetFocus;

end;

 

Obs. : voce deve deixar o form do calendário sem estar automaticamente criado. Para fazer isso vá em Project > Options, então transfira

o form do calendario para a lista avaliable forms.

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa.......desculpa ai se eu respondi pela metade.....eu estava meio compressa...não tinha entendido...mas foi uma boa resposta esta sua kra....

Compartilhar este post


Link para o post
Compartilhar em outros sites

descobri outra....." Assim é muito trabalhoso e não tão eficaz. Use a função de api do windows FindWindow "assim disse o mestre....como é que usa eu não sei... mas se for do interesse eu pergunto pra ele

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal! fiquei um grande tempo sem mecher com delphi... estava me dedicando mais a webdesign.... mas agora surgiu a oportunidade boa para eu desenvovel programas em Delphi e estou de volta...

 

Sobre esta pergunta q tinha feito.. agradeço memso pelas dicas foram de ótimo proveito... sou ainda um pouco inexperiente no delphi e estou querendo absorver o maximo de informações...

 

PROTEUS.... se você tiver a possibilidade ainda de dar a dica dessa materia com a função do API do windows FindWindow... sera de grande proveito...

 

Desde já muito obrigado a todos!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.