Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

Изменение размера формы   Найти похожие ветки 

 
alexnmsk   (2003-12-30 09:19) [0]

Делаю
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
if NewWidth<328 Then NewWidth:=328;
if NewHeight<186 Then NewHeight:=186;
end;

но при изменении размера путем перетаскивания границ, разрешается заход за минимальные значения. Как сделать, чтобы заход за минимальные границы не разрешался?


 
ЮЮ ©   (2003-12-30 09:24) [1]

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
Resize := (NewWidth >=328) and (NewHeight >= 186);
end;


 
alex_*** ©   (2003-12-30 09:24) [2]

может попробовать Resize := false при неверных условиях?


 
Романов Р.В. ©   (2003-12-30 09:25) [3]

Resize := False


 
alexnmsk   (2003-12-30 09:29) [4]

Тогда размеры просто не изменяются, а рамка, которая рисуется при перетягивании границ мышкой все равно лезет за минимум.


 
alexnmsk   (2003-12-30 09:32) [5]

В Visual FoxPro в форме есть свойства MinHeight и MinWidth. Нет ли здесь чего-нибудь подобного?


 
alex_*** ©   (2003-12-30 09:34) [6]

Смотри Constraints. Так тебе же и надо чтоб размеры не изменились меньше чем надо?


 
ЮЮ ©   (2003-12-30 09:35) [7]

procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
Resize := (NewWidth >=328) and (NewHeight >= 186);
if not Resize then <bAbort; // помогает не только для прерывания беременности :-)
end;


 
Романов Р.В. ©   (2003-12-30 09:36) [8]

есть


 
ЮЮ ©   (2003-12-30 09:36) [9]

if not Resize then Abort;


 
alexnmsk   (2003-12-30 09:38) [10]

Да, но во время изменении рамка границы доходит до каких-то своих минимальных размеров, а уже после отпускания мыши границы пересчитываются. А хотелось бы, чтобы пользователь мышью не мог перетащить границу дальше положенного места.


 
alex_*** ©   (2003-12-30 09:41) [11]

Не занимайся ерундой. У тебя дел больше нет на такие мелочи заморачиваться? ПОльзователи в даже внимания не обратят на это. Кстати это стандартное поведение для окон, у которых можно менять размер.


 
alexnmsk   (2003-12-30 09:48) [12]

Вобщем то да. Просто привык к фоксовскому поведению окон. Думал, может чего не так делаю..


 
Silver Alex ©   (2003-12-30 09:57) [13]

все гораздо проще, есть у формы свойство Constraints вот его и юзай


 
alex_*** ©   (2003-12-30 10:15) [14]

procedure OnMsg(var msg: TMessage); message WM_SIZING;

procedure TForm1.OnMsg(var msg: TMessage);
var lprect: PRect;
x,y: Integer;
dw: Integer;
begin
with msg do
Begin
lpRect := PRect(LParam);
Label1.Caption := Format("left=%d top=%d right=%d bottom=%d",[
lpRect^.Left,
lpRect^.Top,
lpRect^.Right,
lpRect^.Bottom]
);
dw := (lpRect^.Right - lpRect^.Left);
// (Width > dw) - убеждаемся что форма уменьшается
if (Width > dw) and (dw < 500) then
Begin
Beep();
//отжимаем левую кнопку (прекращаем изменение размера)
mouse_event(
MOUSEEVENTF_LEFTUP,
lpRect^.Right,
lpRect^.Bottom,
0,
GetMessageExtraInfo()
);
end;
End;
end;


 
Rouse_ ©   (2003-12-30 10:42) [15]

Можно по другому...
Что намного проще и без работы с отпусканием кнопки мыши ;)

procedure WMGetMinMaxInfo(var M: TWMGetMinMaxInfo); message WM_GetMinMaxInfo;

procedure TForm1.WMGetMinMaxInfo(var M: TWMGetMinMaxInfo);
begin;
inherited;
M.MinMaxInfo^.ptMinTrackSize.X:=630;
M.MinMaxInfo^.ptMinTrackSize.Y:=400;
end;


Желаю успехов


 
alex_*** ©   (2003-12-30 10:47) [16]

ОК. согласен.


 
Rouse_ ©   (2003-12-30 11:09) [17]

Кстати Constraints работают именно на основе WM_GetMinMaxInfo...

С Наступающим...



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
1-37612
MadAngel
2003-12-28 14:13
2004.01.13
Путь в TreeView?


1-37692
AndB
2003-12-30 17:48
2004.01.13
Размер программы в памяти


1-37685
TATIANA
2003-12-26 11:27
2004.01.13
Maskedit - Edit c маской


4-37980
Санёк
2003-11-08 19:51
2004.01.13
Хук на принтер можно или


1-37638
Эли
2003-12-27 13:20
2004.01.13
Добавить иконку в EXE файл