Fórum Form filho ocupando toda a area de trabalho do form pai #345924
12/09/2007
0
vou explicar o que eu estou precisando.
Tenho um form que e do tipo fsMDIForm, e nele eu tenho um menu, uma StatusBar e futuramente uma barra de Botões, e os outros forms são todos do tipo fsMDIChild, o que eu preciso e o seguinte. Quando um form filho e aberto eu quero verificar o tamanho da tela do form pai que é o principal da aplicação e dimencionar o form filho [b:dd64195479]sem que o mesmo seja maximizado[/b:dd64195479], no tamanho da area de trabalho do form pai.
Godzilla_xf
Curtir tópico
+ 0Posts
13/09/2007
Massuda
type TSeuFormFilho = class(TForm) public procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; ... end; ... procedure TSeuFormFilho.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); var MainForm: TForm; Rect: TRect; begin if Showing then begin MainForm := Application.MainForm; // Obtem o retângulo da área cliente MDI Windows.GetWindowRect(MainForm.ClientHandle, Rect); // Ajusta a nova posição ALeft := Rect.Left; ATop := Rect.Top; AWidth := Rect.Right - Rect.Left; AHeight := Rect.Bottom - Rect.Top; end; inherited SetBounds(ALeft, ATop, AWidth, AHeight); end;
Gostei + 0
13/09/2007
Godzilla_xf
type TSeuFormFilho = class(TForm) public procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; ... end; ... procedure TSeuFormFilho.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); var MainForm: TForm; Rect: TRect; begin if Showing then begin MainForm := Application.MainForm; // Obtem o retângulo da área cliente MDI Windows.GetWindowRect(MainForm.ClientHandle, Rect); // Ajusta a nova posição ALeft := Rect.Left; ATop := Rect.Top; AWidth := Rect.Right - Rect.Left; AHeight := Rect.Bottom - Rect.Top; end; inherited SetBounds(ALeft, ATop, AWidth, AHeight); end;
Olá, muito obrigado Massuda, pelo apoio, so que eu não entendi uma coisa.
eu usei a procedure que vc me passou que erda da da procedure SetBounds, so que o que eu não entendi e quando eu vou chamar ela, e que parametros eu passo para a mesma, por que da forma com eu fiz:
[b:540375816d]SetBounds(0,0,Application.MainForm.ClientWidth,Application.MainForm.ClientHeight);[/b:540375816d]
eu acredito que estou fazendo algo de errado, por que ele ajusta ao tamanho da area cliente do meu form pai, porem como eu tenho componentes do tipo [b:540375816d]TMainMenu, TTollBar e TStatusBar[/b:540375816d], o form pai cria umas barras de rolagem. o eu precisava que isso não acontese-se.
se o Sr. puder me ajudar ficarei grato, muito obrigado.
Gostei + 0
13/09/2007
Massuda
Gostei + 0
13/09/2007
Godzilla_xf
Olá, eu tentei [b:e11ab62e13] sem fazer [/b:e11ab62e13] a chamada da procedure e não acontece nada. e ai tentei chamá-la e passar os parâmetros e ai fica como citei acima
Gostei + 0
13/09/2007
Massuda
procedure PosicionarForm(AForm: TForm); begin var Rect: TRect; begin Windows.GetWindowRect(Application.MainForm.ClientHandle, Rect); InflateRect(Rect, -2 * GetSystemMetrics(SM_CXBORDER), -2 * GetSystemMetrics(SM_CYBORDER)); OffsetRect(Rect, -Rect.Left, -Rect.Top); AForm.BoundsRect := Rect; end;
Gostei + 0
13/09/2007
Godzilla_xf
procedure PosicionarForm(AForm: TForm); begin var Rect: TRect; begin Windows.GetWindowRect(Application.MainForm.ClientHandle, Rect); InflateRect(Rect, -2 * GetSystemMetrics(SM_CXBORDER), -2 * GetSystemMetrics(SM_CYBORDER)); OffsetRect(Rect, -Rect.Left, -Rect.Top); AForm.BoundsRect := Rect; end;
Olá, Massuda, como eu posso te agradecer, funcionou perfeitamente, muito obrigado mesmo. era o que eu precisava, vlw mesmo.
até ++++
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)