Fórum MDIChild sempre maximizadas, como? #324387

28/06/2006

0

Tem como eu fazer isso? Pois quando tenho uma tela maximizada, e abro outra.. simplesmente as duas ficam em tamanho normal... e eu queria que ficassem sempre maximizadas...

Desde já agradeço

[]s


Titanius

Titanius

Responder

Posts

29/06/2006

Aasn

Caro titanus,

Configurar a propriedade WindowState dos forms childs para wsMaximized deve resolver!
Agora, se vc não quiser permitir que elas sejam redimensionadas de maneira nenhuma, terá que controlar as mensagens de eventos dos forms.

[]´s
AASN


Responder

Gostei + 0

29/06/2006

Titanius

Olá AASN, já tinha tentado isso anteriormente e nada... o que estou fazendo é no OnActive:

  if WindowState <> wsMaximized then
    WindowState := wsMaximized;


mas to achando isso um ´tapa buraco´ e tem aquele efeito de maximizando que dá que fica muito ruim, quando se tem muitos forms abertos..


[]s


Responder

Gostei + 0

29/06/2006

Massuda

Pelo que me lembro, esse comportamento é determinado pelo Windows. Acho que dá para você usar o evento OnShow ao invés do OnActivate.


Responder

Gostei + 0

30/06/2006

Titanius

Olá massuda, realmente se for do windows complicou... :D

Mas eu tenho que usar no OnActive mesmo.. porque posso ter mais de 5 telas abertas... e ao dar o show funciona, mas depois ele ativa o OnActive, na hora que eu vejo a tela..

Obrigado,

[]s


Responder

Gostei + 0

30/06/2006

Massuda

Entendi... você quer que o MDI fique sempre maximizado.

Acho (não testei) que uma alternativa seria você não maximizar o form, mas sim definir o tamanho máximo/mínimo do form (via TForm.Constraints) como sendo o tamanho da área disponível no form principal; note que você precisa mudar o valor se o form principal for redimensionado. Para obter o tamanho da área cliente do form principal...
var
  R: TRect;
...
  GetWindowsRect(SeuFormPrincipal.ClientHandle, R);
  // largura = R.Right - R.Left + 1
  // altura = R.Bottom - R.Top + 1
  // posição = R.Top, R.Left
...



Responder

Gostei + 0

30/06/2006

Titanius

Olá massuda... tentei as deu acesso de violação de memória...

tentei:

var 
  R: TRect; 
begin
  GetWindowRect(FrmPrincipal.ClientHandle, R);
  FrmRequisito.Width := R.Right - R.Left + 1;
  FrmRequisito.Height := R.Bottom - R.Top + 1;


no OnShow, OnCreate do Form... e o mesmo erro...


[]s


Responder

Gostei + 0

30/06/2006

Massuda

Se você fez isso no form MDI filho, isto deveria funcionar...
var 
  R: TRect; 
begin
  GetWindowRect(FrmPrincipal.ClientHandle, R);
  // poderia ser...
  // GetWindowRect(Application.MainForm.ClientHandle, R);

  Width := R.Right - R.Left + 1;
  Height := R.Bottom - R.Top + 1;



Responder

Gostei + 0

30/06/2006

Titanius

Cara pode pareceer mentira, mas agora funcionou... sabe qual foi a difereça?
isso daqui:

var
R: TRect;
begin
GetWindowRect(FrmPrincipal.ClientHandle, R);

[b:7c9e9309d4]FrmRequisito.[/b:7c9e9309d4]Width := R.Right - R.Left + 1;
[b:7c9e9309d4]FrmRequisito.[/b:7c9e9309d4]Height := R.Bottom - R.Top + 1;


Estava tentando com o negrito, e nao funcionava... aí fiz tirando a parte do negrito, como vc me mostrou.. e funcionou.. estranho né!??


Muito obrigado massuda...

[]s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar