Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
4-37989
stas kalishenko
2003-10-30 18:49
2004.01.13
Сервис и Novell-овский сетевой диск


1-37734
raidan
2003-12-29 22:25
2004.01.13
Как в listbox узнать номер последней выделенной строки?


1-37674
Raduga
2003-12-26 13:53
2004.01.13
help по созданию сервисов Windows


14-37859
Спрашивающий_
2003-12-22 01:29
2004.01.13
Поздравляю всех энергетиков с профессиональным праздником


14-37905
Wistler
2003-12-21 12:59
2004.01.13
Оптимальные деревья





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский