![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменения размеров формы [D7, NT4]
NVMZ © (2009-04-11 02:56:00)Как сделать форму, чтобы она раздвигалась по X и не раздвигалось по Y пользователем, причем при изменении размеров кнопок управления окном элементы формы рисовались правильно (не накладывались друг на друга)?
Необходимо, чтобы работало в NT-2000
Германн (2009-04-15 02:51:00) [21]
> Игорь Шевченко © (15.04.09 02:37) [15]
Игорь, не стоит так кипятиться по такому поводу!
Или ты не встречал "начальников" с" псевдо" степенями?
Не верю. :)
Игорь Шевченко (2009-04-15 02:37:00) [22]NVMZ (12.04.09 23:06) [8]
> С утра хотел написать, что я думаю об форуме. Типа нет ни
> одного Мастера на форуме
И впрямь нету, да и нафиг они не нужны. Или вы всерьез расчитывали, что мастера начнут локтями толкаться, чтобы побыстрее ответ на не до конца понятный вопрос написать ? :)
Германн (2009-04-15 02:06:00) [23]
> NVMZ (15.04.09 01:50) [13]
>
> Естественно, что все якоря у элементов формы стоят правильно.
> Исчерпывающий ответ на мой вопрос дал Юрий Зотов (7-ое
> сообщение).
>
Якоря то стоят. Я в этом не сомневаюсь.
Я сомневаюсь только в том, что ответ Юрий Зотов © (12.04.09 23:39) [9] исчерпывающий.
Но не потому, что ЮЗ чего-то не знает. (он то многое знает, на то он и ЮЗ :)
Я всё ещё не полностью понимаю твой вопрос.
Может дело в том, что я такой тупой!?
NVMZ (2009-04-15 01:50:00) [24]Естественно, что все якоря у элементов формы стоят правильно. Исчерпывающий ответ на мой вопрос дал Юрий Зотов (7-ое сообщение).
Kolan (2009-04-14 14:59:00) [25]Возможно для того, чтобы контролы не накладывались им нужно задать правильные якоря (anchors).
Германн (2009-04-13 01:58:00) [26]Да и "зав. лаб." меня смущает...
:(
Германн (2009-04-13 00:58:00) [27]
> NVMZ (12.04.09 23:06) [8]
>
> С утра хотел написать, что я думаю об форуме. Типа нет ни
> одного Мастера на форуме, и перенесли серьезный вопрос в
> раздел "Начинающим".
Хорошо что расхотел :)
Однако, если на сём форуме и далее есть желание получать ответы, то стОит поучиться задавать вопросы так, чтобы максимально снизить количество "уточняющих" вопросов.
Юрий Зотов (2009-04-12 23:39:00) [28]> зачем нужен метод procedure WMSizing(var Message: TWMMoving)
Чтобы запретить изменение вертикального размера формы... с клавиатуры. Через системное меню.
:o)
P.S.
Николай, поверьте, здесь немало Настоящих Мастеров. И именно с большой буквы. И даже совсем не обязательно с голубым значком. Кстати, мой ответ к Мастерским вовсе не относится - это всего лишь азбука Windows.
P.P.S.
Просто у этого форума есть некоторые особенности. Увы.
:o)
P.P.P.S.
Но к ним можно привыкнуть. Или к ним можно отнестись с юмором. Резвятся хлопцы... ну и пусть себе. Пройдет постепенно.
:о)
Кстати, среди этих резвящихся хлопцев тоже есть Настоящие Мастера.
Чес-слово.
:o)
NVMZ (2009-04-12 23:06:00) [29]С утра хотел написать, что я думаю об форуме. Типа нет ни одного Мастера на форуме, и перенесли серьезный вопрос в раздел "Начинающим".
Однако.... Ответ Юрия Зотова меня порадовал - есть Мастера! Предложенное решение очень элегантное. Мой коллектив до этого не до пер.
На тестовых примерах работает великолепно, сегодня вставлю в основную программу и завтра отдам тестировщикам. Одного не понял - зачем нужен метод procedure WMSizing(var Message: TWMMoving); message WM_SIZING;. Вроде и без него работает. Если Вас не затруднит, сообщите.
Спасибо, Юрий!
Николай Макаров-Землянский, д.т.н., профессор МГУ, зав. лаб. Компьютерной безопасности НИВЦ МГУ.
Юрий Зотов (2009-04-12 13:09:00) [30]
type
TForm1 = class(TForm)
private
procedure WMSizing(var Message: TWMMoving); message WM_SIZING;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
end;
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
with Message do
case Result of
HTTOP, HTBOTTOM:
Result := HTNOWHERE;
HTTOPLEFT, HTBOTTOMLEFT:
Result := HTLEFT;
HTTOPRIGHT, HTBOTTOMRIGHT:
Result := HTRIGHT
end
end;
procedure TForm1.WMSizing(var Message: TWMMoving);
begin
with Message, DragRect^ do
case Edge of
WMSZ_BOTTOM, WMSZ_BOTTOMLEFT, WMSZ_BOTTOMRIGHT:
Bottom := Top + Height;
WMSZ_TOP, WMSZ_TOPLEFT, WMSZ_TOPRIGHT:
Top := Bottom - Height
end;
inherited
end;
PS
Ну не люблю я Constraints, глючат они.
Кролик Иа-Иа2 (2009-04-12 03:13:00) [31]Удалено модератором
Германн (2009-04-12 01:26:00) [32]
> NVMZ (12.04.09 01:16) [4]
Похоже ты ищешь простой ответ на "вечный" вопрос. :(
Я лично не видел пока программ, которые "идеально" бы выглядели при ЛЮБЫХнастройках Windows.
NVMZ (2009-04-12 01:16:00) [33]Форма простая - например, одна кнопка OK. А лучше - Edit, привязанный к левому и правому краю. А кнопка привязана к правому краю. Если установить:
Constraints.MaxHeight:=H; (H-высота формы)
Constraints.MaxWidth:=0;
Constraints.MinHeight:=H;
Constraints.MinWidth:=W; (W -Минимальная ширина формы), то форма будет вести себя, как задано в вопросе. Но при изменении размеров кнопок управления окном элементы формы (средствами Windows, значительное увеличение) кнопка будет накладываться на элемент Edit. Т.е. Constraints как раз и мешает.
Можно, конечно, в OnResize:
ClientHeight:=Hcl; (Hcl-высота клиентской части формы), но при этом форма "мигает" при попытки изменить высоту.
Событие WM_SETTINGCHANGE приходит после перерисовке формы;
Пробовал в OnCanResize что-то подобное делать. Тоже плохо.
Григорьев Антон (2009-04-11 07:48:00) [34]Есть такое свойство - Constraints, - которое определяет ограничения на размеры окна. Если через него на высоту установить одинаковый максимальный и минимальный размер, то у такого оуна можно будет менять только ширину.
Что касается правильного расположения компоннтов, то в такой общей формулировке вопрос не имеет ответа. Всё сильно зависит от того, что в вашем конкретном случае является критерием правильности, а также от того, какие именно компоненты используются.
NVMZ (2009-04-11 04:01:00) [35]Ну, не знаю, как лучше сформулировать вопрос. Думаю, что Свойства:Экран-Оформление-Элемент(Кнопки управления окном - Размеры), прояснят заданный вопрос.
Германн (2009-04-11 03:17:00) [36]
>
> NVMZ (11.04.09 02:56)
>
> Как сделать форму, чтобы она раздвигалась по X и не раздвигалось
> по Y пользователем, причем при изменении размеров кнопок
> управления окном элементы формы рисовались правильно (не
> накладывались друг на друга)?
Невидимы твои пути, создатель! :)
P.S.
А на русский вопрос перевести?:
Или дать пример, блин, кода?