![]() |
|
#1
|
|||
|
|||
![]() Подскажите пожалуйста, можно ли вообще так сделать, чтобы все подчиненные формы при перемещеении их не выходили за границы главной формы. как это можно сделать, если вообще возможно?
главная форма будет в развернутом состоянии, и не будет изменятся, только сворачиваться. подчиненные формы различных размеров, и при перемещении могут заходить за границы главной формы. |
#2
|
|||
|
|||
![]() Что подразумевается под подчиненными формами?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#3
|
|||
|
|||
![]() формы, которые запускаются при нажатии на определенные пункты меню с главной формы
|
#4
|
|||
|
|||
![]() приложение MDI? MDI child формы имеете ввиду?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#5
|
|||
|
|||
![]() нет. мне преподша посоветовала сделать обычные формы
![]() получается у меня приложение не то? |
#6
|
|||
|
|||
![]() Я вообщем делала так, создала несколько форм. сделала переходы и все. при запуске делфи спрашивал, какая из форм будет главной, что то вроде этого.
|
#7
|
|||
|
|||
![]() Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin If Form2.Left<Form1.Left then Form2.Left:=Form1.Left; If Form2.Top<Form1.Top then Form2.Top:=Form1.Top; if Form2.Left+Form2.Width>Form1.Left+Form1.Width then Form2.Left:=Form1.Left; if Form2.Left+Form2.Width>Form1.Left+Form1.Width then Form2.Width:=Form1.Width; if Form2.Top+Form2.Height>Form1.Top+Form1.Height then Form2.Top:=Form1.Top; if Form2.Top+Form2.Height>Form1.Top+Form1.Height then Form2.Height:=Form1.Height; end; |
#8
|
||||
|
||||
![]() а зачем таймер? есть же message WM_WINDOWPOSCHANGING; да и не красиво будет по таймеру окно назад двигать. проще сразу не дать ему выезжать за границы главной формы.
Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) private { Private declarations } public { Public declarations } procedure WMWINDOWPOSCHANGING(var Message: TMessage); message WM_WINDOWPOSCHANGING; end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.WMWINDOWPOSCHANGING(var Message: TMessage); begin if PWindowPos(Message.LParam).x<Application.MainForm.Left then PWindowPos(Message.LParam).x:=Application.MainForm.Left; if PWindowPos(Message.LParam).y<Application.MainForm.Top then PWindowPos(Message.LParam).y:=Application.MainForm.Top; if PWindowPos(Message.LParam).x+PWindowPos(Message.LParam).cx>Application.MainForm.Left+Application.MainForm.Width then PWindowPos(Message.LParam).x:=Application.MainForm.Left+Application.MainForm.Width-Width; if PWindowPos(Message.LParam).y+PWindowPos(Message.LParam).cy>Application.MainForm.Top+Application.MainForm.Height then PWindowPos(Message.LParam).y:=Application.MainForm.Top+Application.MainForm.Height-Height; Message.Result:=DefWindowProc(Handle, Message.Msg, Message.WParam, Message.LParam); end; end. Пишу программы за еду. __________________ |
#9
|
|||
|
|||
![]() Хороший вариант.
|
#10
|
|||
|
|||
![]() Спасибо огромное! то что надо
![]() |