Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменения размеров формы [D7, NT4]


Страницы:   1 2

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.
А на русский вопрос перевести?:
Или дать пример, блин, кода?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо