Главная страница
    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.009 c
1-37758
Ivolg
2003-12-29 20:20
2004.01.13
Язык


1-37766
baataars
2003-12-31 15:08
2004.01.13
dbgrid и колесико мыши


1-37613
Byte
2003-12-24 13:49
2004.01.13
Как зарегистрировать для своего компонента ComponentEditor от дру


1-37742
Ego
2003-12-30 08:27
2004.01.13
Вставить фрейм


6-37836
Max_212_max
2003-11-11 23:41
2004.01.13
Вопрос по TcpClient1 ......





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский