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

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

Как запретить двигать форму? [D6, Win2k]


Страницы:   1 2

Бегун ©   (2004-04-28 18:14:00) 

subj


inic   (2004-06-01 10:46:00) [1]

Лучше поздно, чем никогда!!!

WM_WINDOWPOSCHANGING: begin
  PWindowPos(ALParam)^.flags:=
     PWindowPos(ALParam)^.flags or SWP_NOMOVE or SWP_NOSIZE;
  Result:= 0;
end;


grom   (2004-06-01 08:55:00) [2]

[27] align := alCustom -прощее не придумаеш


MetalFan   (2004-05-31 17:30:00) [3]

хех) а как вам:
align := alCustom ?


grom   (2004-05-31 15:49:00) [4]

а можно попровывать вот так
   public { Public declarations }
   Procedure WMGetSysCommand(var Message:TMessage);message WM_SYSCOMMAND;
========================
 procedure TForm1.WMGetSysCommand(var Message:TMessage); //**
 begin
 if (CheckBox1.Checked)or(Message.wParam=SC_MINIMIZE)or(Message.wParam=SC_CLOSE)
 or(Message.wParam=SC_MAXIMIZE)//и так далее...
  then inherited;
 end;


Глеб   (2004-05-31 11:00:00) [5]

запустить бесконечный цикл


Ivolg   (2004-05-30 15:44:00) [6]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics,     Controls, Forms,
 Dialogs, StdCtrls;

type
 TFrmAdd = class(TForm)
   CheckBox1: TCheckBox;
   procedure FormMouseMove(Sender: TObject; Shift: TShiftState;      X,Y: Integer);
  procedure CheckBox1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 FrmAdd: TFrmAdd;
 b:boolean;
implementation

{$R *.dfm}
procedure TFrmAdd.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
   if b then
   ReleaseCapture;
   Perform(wm_SysCommand,$F012,0);
end;

procedure TFrmAdd.CheckBox1Click(Sender: TObject);
begin
   b:=not b
end;

end.
и на FormCreate или в ручную:
BorderStyle:=bsnone;


Глеб   (2004-05-29 13:50:00) [7]

for i := 1 to 10000000 do
begin
 
ShowMessage('Чтобы переместить форму, тебе придётся все эти сообщения закрыть :-)');

end;


:-)


tesseract   (2004-05-22 11:56:00) [8]

А зачем тебе неперетасиваемое окно с заголовком? ну накатай свой, похожий. Юзер увидев окно с заголовком сразу начнёт его перетаскивать - так-что лучше не парься.


LMD   (2004-05-21 23:23:00) [9]


> Ты процедуру Abort знаешь?
> Используй её в WM_WINDOWPOSCHANGING процедуре!!!


Если ты пробовал, то приведи рабочий код. Если не пробовал, то не сбивай людей с толку, Abort в обработчике сообщения не приводит к нужному эффекту.


WebErr   (2004-05-21 18:28:00) [10]

Просто напиши между begin и end слово Abort; !


WebErr   (2004-05-21 18:23:00) [11]


> Использую WM_WINDOWPOSCHANGING, WM_MOVING
> все равно форма мигает, если пытаюсь её тащить.. :(

Ты процедуру Abortзнаешь?
Используй её в WM_WINDOWPOSCHANGING процедуре!!!
Неужели не доходит! :))))


GEN   (2004-05-21 13:07:00) [12]

>Бегун
Загодовок убирать не надо. Просто координаты мыши надо переустанавливать "внутрь формы", пусть Win думает, что пытаемся тащить не за заголовок


tesseract   (2004-05-21 09:17:00) [13]

А зачем тебе заголовок - кинь на форму панель и замаскируё под неё - и на фи не надо все сообщения обрабатывать - винда и без лишнего вмешательства логадается чем процессор занять.


ChainikDenis   (2004-05-20 20:31:00) [14]

А еще не сработает если вызвать меню в правом углу формы 'переместить'. Проверил!


DVM   (2004-04-29 10:37:00) [15]


> Бегун   (29.04.04 03:06) [14]

А если подвинуть программно, то не сработает.


Бегун   (2004-04-29 03:06:00) [16]

Спасибо, работает.


default   (2004-04-29 02:17:00) [17]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 protected
   procedure WMNCHITTEST(var Msg: TWMNCHITTEST); message WM_NCHITTEST;
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 CanMove: Boolean = True;

implementation

{$R *.dfm}

procedure TForm1.WMNCHITTEST(var Msg: TWMNCHITTEST);
begin
inherited;
if not CanMove then if Msg.Result = HTCAPTION then Msg.Result := HTCLIENT
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
CanMove := not CanMove
end;

end.


Бегун   (2004-04-29 01:47:00) [18]

Народ, или я тупой или лыжи не едут...
Использую WM_WINDOWPOSCHANGING, WM_MOVING
все равно форма мигает, если пытаюсь её тащить.. :(

Давайте еще раз четко изложу задачу.

Я ХОЧУ РАЗРЕШАТЬ/ЗАПРЕЩАТЬ ДВИГАТЬ ФОРМУ.

На форме frmAdd положим cbMove: TCheckBox.
Если True - двигать можно, если False - нельзя.

Как это сделать?


DVM   (2004-04-29 00:24:00) [19]

WM_MOVING тогда уж, а не WM_MOVE


Sanek_metaller   (2004-04-29 00:04:00) [20]

BorderStyle:=bsnone;


Страницы:   1 2

Наверх

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