Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Запрет перемещения формы..   Найти похожие ветки 

 
AlexDan ©   (2008-09-26 22:35) [0]

private
 procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
  {...}

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  inherited;

  with Message do
  begin
    if Result = HTCAPTION then
      Result := HTNOWHERE;
  end;
end;
Судя по форумам у всех работает, а у меня пишет:
Result := HTNOWHERE; - [Error] Unit1.pas(39): Incompatible types: "Integer" and "THitTest"
С чего это..?((


 
{RASkov} ©   (2008-09-26 22:37) [1]

> [0] AlexDan ©   (26.09.08 22:35)

Вот так попробуй
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
 Inherited;
 if Message.Result=HTCAPTION then Message.Result:=HTCLIENT;
end;

Только перемещать такую форму можно ...с клавиатуры :)


 
AlexDan ©   (2008-09-26 22:38) [2]

Удалено модератором


 
{RASkov} ©   (2008-09-26 22:40) [3]

> [0] AlexDan ©   (26.09.08 22:35)
> Result := HTNOWHERE; - [Error] Unit1.pas(39): Incompatible types: "Integer" and "THitTest"

Что-то ты напутал как обычно...) Сейчас опять закроют ветку :)


 
AlexDan ©   (2008-09-26 22:40) [4]

Нет, то что ты написал, работает, спасибо..


 
{RASkov} ©   (2008-09-26 22:42) [5]

> [2] AlexDan ©   (26.09.08 22:38)

Точно закроют) Прибей ее гвоздями :)
Попробуй глянуть в сторону сообщений WM_MOVE или WM_MOVING


 
DVM ©   (2008-09-26 22:42) [6]


> мне бы вообще..

Вообще это к WM_WINDOWPOSCHANGING


 
{RASkov} ©   (2008-09-26 22:43) [7]

> [4] AlexDan ©   (26.09.08 22:40)

Кликни правой кнопкой по заголовку и выбери "Переместить".... Теперь "стрелочками" "таскай" ее :)


 
DVM ©   (2008-09-26 22:43) [8]

WM_MOVING и WM_SIZING тоже можно, но WM_WINDOWPOSCHANGING это наиболее общее


 
AlexDan ©   (2008-09-26 22:43) [9]

> {RASkov} ©   (26.09.08 22:42) [5]
И кстати, что значит
> Только перемещать такую форму можно ...с клавиатуры :)
что значит с клавиатуры? Попробовал, вроде не перемещается..


 
{RASkov} ©   (2008-09-26 22:46) [10]

> [9] AlexDan ©   (26.09.08 22:43)

Даже и мышкой таскается :)
Вызови системное меню (Окна)формы и выбери "Переместить" ну и мышкой как обычно таскается... до клика)

См сообщения выше.


 
AlexDan ©   (2008-09-26 22:48) [11]

> {RASkov} ©   (26.09.08 22:46) [10]
Да, и к тому же можно её мышкой за бардюр сложить..( Что ж делать..?:(


 
{RASkov} ©   (2008-09-26 22:49) [12]

Удалено модератором


 
DVM ©   (2008-09-26 22:50) [13]


> Что ж делать..?

все уже написано


 
AlexDan ©   (2008-09-26 22:51) [14]

Ну да, буду смотреть WM_WINDOWPOSCHANGING..


 
AlexDan ©   (2008-09-26 23:11) [15]

Ага, спасибо всем, почти получилось..)


 
{RASkov} ©   (2008-09-26 23:16) [16]

> [15] AlexDan ©   (26.09.08 23:11)
> почти получилось..)

:)
Ты чего там воротишь? Там кода - две дельных строчки ....я думаю)


 
berrometr   (2008-09-26 23:26) [17]

WM_GETMINMAXINFO - посылается при изменении размеров или положения окна. Обработчик события может использоваться для ограничения допустимых размеров и координат положения на экране.

Определение:

WM_GETMINMAXINFO
lpmmi = (LPMINMAXINFO) lParam; // address of structure

Параметр lpmmi указывает на структуру типа MINMAXINFO, содержащую принятые по умолчанию пределы изменения размеров и координат положения окна. Описание этой структуры:

typedef struct tagMINMAXINFO { // mmi
POINT ptReserved;
POINT ptMaxSize;
POINT ptMaxPosition;
POINT ptMinTrackSize;
POINT ptMaxTrackSize;
} MINMAXINFO;

Поля структуры означают следующее:ptReserved Зарезервировано и пока не используется
ptMaxSize Поле типа Point определяет ширину (Point.x) и высоту (Point.y) развернутого окна
ptMaxPosition Поле типа Point определяет положение левого (Point.x) и верхнего (Point.y) краев развернутого окна
ptMinTrackSize Поле типа Point определяет минимальную ширину (Point.x) и минимальную высоту (Point.y) окна при изменении пользователем размеров его рамки.
ptMaxTrackSize Поле типа Point определяет максимальную ширину (Point.x) и максимальную высоту (Point.y) окна при изменении пользователем размеров его рамки.

Если приложение обрабатывает это сообщение, оно должно вернуть 0.


 
AlexDan ©   (2008-09-26 23:31) [18]

> {RASkov} ©   (26.09.08 23:16) [16]
> Ты чего там воротишь? Там кода - две дельных строчки ...
> я думаю)
Да нет, не две..

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FDisableChange : boolean;
protected
procedure WMWINDOWPOSCHANGING(var Message: TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;
public
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMWINDOWPOSCHANGING(var Message: TWMWINDOWPOSCHANGING);
begin
if FDisableChange then begin
message.WindowPos.flags := message.WindowPos.flags or SWP_NOMOVE or SWP_NOSIZE;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FDisableChange := false;
{width := 100;}
FDisableChange := true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
FDisableChange := true;
end;
 Вот и две..). И стоит всё мёртво, как вкопанное..).


 
AlexDan ©   (2008-09-26 23:34) [19]

Удалено модератором


 
{RASkov} ©   (2008-09-26 23:40) [20]

> [19] AlexDan ©   (26.09.08 23:34)

В общем-то одна :) ...дельная, остальные так это, для прихвата)


 
berrometr   (2008-09-26 23:55) [21]

а все - таки переместить окно можно и изменяя его размеры.
так что перехватывай и это.. ))


 
AlexDan ©   (2008-09-27 00:25) [22]

Не, в [18] и размеры изменить нельзя..


 
DVM ©   (2008-09-27 17:00) [23]


> berrometr   (26.09.08 23:55) [21]

WM_WINDOWPOSCHANGING позволяет контролировать все изменения размеров и положения окон. Причем даже по оси Z, а не только по X и Y.


 
AlexDan ©   (2008-09-27 22:07) [24]

Удалено модератором



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
15-1221473784
wayfarer
2008-09-15 14:16
2008.11.09
почему в mainmenu delphi for php 2.0 не выводятся русские символы


2-1222522737
@!!ex
2008-09-27 17:38
2008.11.09
Помогите перевести с С


15-1221451319
Slider007
2008-09-15 08:01
2008.11.09
С днем рождения ! 15 сентября 2008 понедельник


2-1222682642
Vlad Oshin
2008-09-29 14:04
2008.11.09
PageControl и 2 tabsheet. Дизайн


15-1221142340
Оксана
2008-09-11 18:12
2008.11.09
Опера





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