Форум: "Основная";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизИзменение размера формы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c