Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2008, 16:55   #1
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию перемещение формы

Ребята, есть форма. надо запретить ее перемещение мышкой, но программно left и top может меняться? Возможно?
Черничный вне форума Ответить с цитированием
Старый 30.05.2008, 17:02   #2
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Установите Form1.BorderStyle:=bsNone;
Мышкой точно двигать не сможете
Dux вне форума Ответить с цитированием
Старый 30.05.2008, 17:04   #3
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

нет нет, такого не надо.
Черничный вне форума Ответить с цитированием
Старый 30.05.2008, 19:49   #4
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

Код:
procedure freeze;
begin
  oldx:=form1.left;oldy:=form1.top;
  form1.timer1.enabled:=true;
end;

procedure antifreeze;
begin
  form1.timer1.enabled:=false;
end;
на Ontimer (частота 1 ms вначале выключен):

Код:
  x:=form1.left;y:=form1.top;
  if oldx<>x then x:=oldx;
  if oldy<>y then y:=oldy;
  oldx:=form1.left;oldy:=form1.top;
на OnShow формы

Код:
freeze;
и применение:

если надо изменить, то

Код:
antifreeze;
form1.left:=..
form1.top:=...
freeze;
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг
Dj_smart вне форума Ответить с цитированием
Старый 30.05.2008, 21:03   #5
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Все-таки лучше без таймера:
Код:
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;

Последний раз редактировалось alexBlack; 30.05.2008 в 21:05.
alexBlack вне форума Ответить с цитированием
Старый 01.06.2008, 15:26   #6
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Сообщений: 293
По умолчанию

А вообще есть такое просто запретить перемещение? Я где то давно давно находил такое, просто запретить, а не отлавливать и блокировать
Черничный вне форума Ответить с цитированием
Старый 01.06.2008, 16:03   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
   Form1.Constraints.MinHeight := 100;
   Form1.Constraints.MinWidth  := 100;
   Form1.Constraints.MaxHeight := 100;
   Form1.Constraints.MaxWidth  := 100;
На вопрос в следующем посте (#8):
Программно изменять меняя Constraints, а не width/height

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Constraints.MinHeight := 200;
 Form1.Constraints.MinWidth  := 200;
 Form1.Constraints.MaxHeight := 200;
 Form1.Constraints.MaxWidth  := 200;
end;

Последний раз редактировалось alexBlack; 01.06.2008 в 16:16. Причина: дополнение про программное изменение
alexBlack вне форума Ответить с цитированием
Старый 01.06.2008, 16:06   #8
Dj_smart
Капсула от спама
Форумчанин
 
Аватар для Dj_smart
 
Регистрация: 04.03.2008
Сообщений: 779
По умолчанию

А программно тогда как двигать?
Есть вариант поставить Form1.BorderStyle:=bsNone и "нарисовать" рамки своей формы. Может так и легче будет? Я например обходился 2 image'ми (1-полоска формы, ширина - 1, но разтянута при помощи streech. а 2- кнопка "х") и одним shape'ом, которым отображал рамки формы. Может так и проще.
---------------------
Извеняюсь, недочитал
AlexBlack прав.
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг

Последний раз редактировалось Dj_smart; 01.06.2008 в 16:27.
Dj_smart вне форума Ответить с цитированием
Старый 02.06.2008, 08:50   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нет нет, такого не надо.
Почему? Это лучшее решение, ли автор чего-то недоговаривает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2008, 11:58   #10
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Тю, проблема )))
Поймать WM_NCHITTEST и если кликнули по заголовку - сказать приложению, что ему это почудилось

Код:
TForm1 = class(TForm)
  private
    { Private declarations }
    procedure noMovePlease(var Message: TMessage); message WM_NCHITTEST;
  public
    { Public declarations }
  end;
...............................
procedure TForm1.noMovePlease(var Message: TMessage);
begin
  inherited;
  with Message do
   if Result = HTCAPTION then Result := HTNOWHERE;
end;
Учитесь искать максимально простые решения, а то чуть что - таймеры, какие-то boolean-переменные, жуть
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение формы за компонент Zeraim Общие вопросы Delphi 2 20.05.2008 09:26
Перемещение компонентов _SERGEYX_ Общие вопросы Delphi 2 10.04.2008 13:33
Delphi, перемещение формы. north Помощь студентам 3 23.01.2008 22:34
Перемещение рисунков внутри формы Marsik Помощь студентам 10 01.11.2007 09:48
Перемещение файлов Nasya Microsoft Office Excel 2 13.10.2007 20:37