Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Помогите не могу понять!


Автор: PavelPro 1.4.2005, 11:04
Не сочтите за Ламера но я не могу понять как сделать чтоб окно драгилось при Borderstyle=none;
Напишите прогу плиз!!!!!!!!!!!!!!!!!

Автор: ~FoX~ 1.4.2005, 11:43
Код

unit Unit1;

interface

uses
  WinProcs, Messages, Classes, Controls, Forms, StdCtrls;

type
  TForm1 = class(TForm)
  private
    procedure WMNCHitTest(var M: TWMNCHitTest); 
    message WM_NCHITTEST;    { Private declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);  //Куда там юзверь тыкнул?

begin 
  inherited;
  if M.Result = htClient then  // Если в кусок формы, то
  M.Result := htCaption;      //говорим, что он и есть капшн
end;

end.

Напримр так.
А вообще в FAQ или в DRKB есть пример.

Автор: Poseidon 2.4.2005, 01:30
Пример ~FoX~ хорош, но в нем мы обманываем винду, говоря, что область формы - это ее Caption. При этом невозможно отловить события на некоторых компонентах формы (например Label). Вот еще пример, каторые справляется с этои проблемой:
Код
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  SC_DragMove = $F012;  { a magic number }
begin
  ReleaseCapture;
  perform(WM_SysCommand, SC_DragMove, 0);
end;

Автор: PavelPro 5.4.2005, 11:42
Poseidon,объясни свою прогу она чото не работает!

Автор: _hunter 5.4.2005, 15:38
нечего там объяснять... ты тот кусок в обработчик засунул или так приписал?

Автор: PavelPro 5.4.2005, 16:13
Так она окно воще не драгится smile
Добавлено @ 16:17
И что за магический номер?

Автор: ~FoX~ 6.4.2005, 07:58
Цитата(PavelPro @ 5.4.2005, 17:13)
И что за магический номер?

Не обращай внимания.........так............., для передачи левого параметра в сообщении мастдая.
По существу, форма таскается........просто, скорее всего, сама форма закрыта у тебя какими то контролами, или ты пытаешься таскать её за какие то контролы. Это нормально............придется на каждом контроле обрабатывать OnMouseDown.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)