Delphi - Delphi
|
Старожил Сообщения: 225 |
Профиль | Отправить PM | Цитировать Как сделать, чтобы по достижению опренделенного размера, при перетаскивание бордюра мышкой, размер формы переставал изменяться...
|
|
------- Отправлено: 16:57, 15-11-2002 |
Fobos
Сообщения: n/a |
У формы есть свойство: Constraints. Надо установить предельные значения максимальной высоты и ширины формы: Constraints.MaxWidth и Constraints.MinHeight.
|
Отправлено: 10:32, 18-11-2002 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 225
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
------- Отправлено: 05:33, 19-11-2002 | #3 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать Roman Go
Какая версия дельфи? Добавлено: У формы OnCanResize есть или что-то типа этого? |
------- Отправлено: 17:27, 19-11-2002 | #4 |
Старожил Сообщения: 225
|
Профиль | Отправить PM | Цитировать vasketsov Delphi 5 там есть OnResize, OnCanResize и OnConstrainedResize но они мне не подходят, почему я объяснил выше...
|
|
------- Отправлено: 16:44, 21-11-2002 | #5 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать Roman Go
При OnCanResize так и работает как написал, причем у меня в Delphi5 это используется. Хочешь "правильно" - обрабатывай сообщения WM_SIZING и WM_MOVING. |
------- Отправлено: 17:18, 21-11-2002 | #6 |
Старожил Сообщения: 225
|
Профиль | Отправить PM | Цитировать Цитата:
это то до чего я дошел, только вот уже сил нет, по крайней мере сегодня, я вообще не могу понять как эта штука работает, вроде все пишется одинаково, а результата никакого type TForm1 = class(TForm) Button1: TButton; procedure qwe1(var message :Tmessage); message wm_size; procedure mtop(var message:Tmessage); message wmsz_top; procedure mleft(var message:Tmessage); message wmsz_left; ... procedure Tform1.qwe1(var message:Tmessage); var h:integer; begin if form1.Height<200 then form1.Height:=200; if form1.width<200 then form1.width:=200; end; procedure tform1.mtop(var message:Tmessage); var h:integer; begin h:=form1.height; if form1.Height<200 then form1.Height:=200; if (200-h)>0 then form1.top:=form1.top-(200-h); end; procedure Tform1.mleft(var message:Tmessage); var w:integer; begin showmessage(''); w:=form1.width; if form1.width<200 then form1.width:=200; if (200-w)>0 then form1.left:=form1.left-(200-w); end; с помощью mtop я добился того чтобы она не скакала при изменении размеров сверху-вниз, думал такое же повторить, для слева-направо с помощью mleft но не прокатило, к тому же моя форма также скачет если ее тащить за углы, в смысле изменять размеры... можно конечно попробовать написать что-то типа mtop и для этого случая, но что если получится также как и с mleft... короче я в тупике... может я все таки не с той стороны подошел, как обычно, не там ищу... |
|
------- Отправлено: 12:57, 23-11-2002 | #7 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать Roman Go
Цитата:
Читай на msdn.microsoft.com |
|
------- Отправлено: 13:55, 25-11-2002 | #8 |
Старожил Сообщения: 225
|
Профиль | Отправить PM | Цитировать procedure qwe1(var message :Tmessage); message wm_sizing; ... procedure Tform1.qwe1(var message:Tmessage); type R=record left:Longint; top:Longint; right:Longint; bottom:Longint; end; var h:integer; myRect:^R; // longint mRect:R; begin { myRect:=@(message.lparam);} {НЕТРОГАТЬ!!!} myRect:=ptr(message.lparam); mrect:=Myrect^; label1.caption:=inttostr(mRect.Top)+#13+inttostr(mRect.Bottom)+#13+inttostr(mRect.left)+#13+inttostr(mRect.Right); label2.caption:=inttostr(mrect.bottom-mrect.top); if mrect.bottom-mrect.top<300 then begin form1.BorderStyle:=bsSingle; form1.BorderStyle:=bsSizeAble; form1.height:=300; //repaint form1.invalidate; beep; end; if mrect.right-mrect.left<300 then begin form1.BorderStyle:=bsSingle; form1.BorderStyle:=bsSizeAble; form1.width:=300; form1.invalidate; beep; end; form1.invalidate; //repaint; refresh; end; это чтобы мышка форму отпустила это я пытаюсь все перерисовать, но все равно все коряво... |
------- Отправлено: 09:35, 30-11-2002 | #9 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать Roman Go
The WM_SIZING message is sent to a window that the user is resizing. By processing this message, an application can monitor the size and position of the drag rectangle and, if needed, change its size or position. Делается примерно так. Во-первых, надо вызывать inherited; Во-вторых, перед этим, если не надо ничего делать, просто возвращаешь 0 (в документации написано, что надо TRUE возвращать). То же для WM_MOVING. |
------- Отправлено: 16:00, 02-12-2002 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - Delphi | UpperCase на Delphi 7 | Cognolio | Программирование и базы данных | 3 | 26-01-2006 15:42 | |
Delphi - C++ vs Delphi | BigMac | Программирование и базы данных | 76 | 13-01-2004 09:54 | |
Delphi - Delphi | Surround | Программирование и базы данных | 11 | 10-01-2004 22:13 | |
Delphi - Delphi | Zx | Программирование и базы данных | 3 | 27-08-2003 10:19 | |
Delphi - Delphi | Roman Go | Программирование и базы данных | 9 | 25-12-2002 15:48 |
|