Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.09;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




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


2-1222618810
Scary
2008-09-28 20:20
2008.11.09
Новая иконка


4-1199910118
=BuckLr=
2008-01-09 23:21
2008.11.09
Bidi mode средствами API


15-1221195608
[i2e]
2008-09-12 09:00
2008.11.09
Как повернуть текст на 90 градусов?


3-1209101225
дучф_ч
2008-04-25 09:27
2008.11.09
при удалении полей таблицы ее размер не уменьшается