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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2012, 18:37   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Перетаскивание формы в Kol&MCK

Всем привет. Столкнулся с не ришаемой ситлуацией для себя. Создал форму на Kol&MCK, но как перетаскивать форму не за зоголовок не пойму.
Вариант с
Код:
...
public
    procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
  { Public declarations }
  end;
....
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;                   { вызов унаследованного обработчика события}
if M.Result = htClient then  { кликнув в области окна?}
M.Result := htCaption;     { если так, то мы заставили Windows думать,}
{ что щелчок был на заголовке окна.}
end;
и
Код:
function TForm1.KOLForm1Message(var Msg: tagMSG; 
var Rslt: Integer): Boolean; 
begin 
Result:=Msg.message=WM_NCHITTEST; 
If Result then Rslt:=HTCAPTION; 
end;
Я кидаю в основной unit, но форма остаётся не подвижной. В googl'e находил варианты с mousedoun, mouseup, mousemove не помогают тоже. Мож у кого вариант какой в кладовой завалялся.

Последний раз редактировалось bulldog5293; 11.03.2012 в 19:18.
bulldog5293 вне форума Ответить с цитированием
Старый 12.03.2012, 16:56   #2
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Вопрос снят. Нада была в pas файле написать:
Код:

procedure TForm1.KOLForm1MouseMove(Sender: PControl;var Mouse: TMouseEventData);
var Pt: TPoint;
    I: Integer;
begin

  GetCursorPos( Pt );
  if not Moving and Mouse_L then
  begin
    if (Abs( Pt.X - Mouse_Pos.X ) > 4) or (Abs( Pt.Y - Mouse_Pos.Y ) > 4) then
    begin
      SetCapture( Form.Handle );
      Moving := TRUE;
    end;
  end;

  if Moving then
  begin
    Form.Left := TopLeft.X + Pt.X - Mouse_Pos.X;
    Form.Top := TopLeft.Y + Pt.Y - Mouse_Pos.Y;
  end;
end;

procedure TForm1.KOLForm1MouseDown(Sender: PControl; var Mouse: TMouseEventData);
begin
  if Mouse.Button = mbLeft then
  begin
    Mouse_L := TRUE;
    TopLeft := MakePoint( Form.Left, Form.Top );
    GetCursorPos( Mouse_Pos );
  end
end;

procedure TForm1.KOLForm1MouseUp(Sender: PControl; var Mouse: TMouseEventData);
begin
  if Mouse_L then
  begin
    Mouse_L := FALSE;
    if Moving then
    begin
      ReleaseCapture;
      Moving := FALSE;
      Exit;
    end;
  end;
end;
а в inc файле
Код:
  Result.Form.OnMouseDown := Result.KOLForm1MouseDown;
  Result.Form.OnMouseUp := Result.KOLForm1MouseUp;
  Result.Form.OnMouseMove := Result.KOLForm1MouseMove;
Мож пригодится кому
bulldog5293 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка Kol и MCK bulldog5293 Компоненты Delphi 0 22.02.2012 20:25
Ошибка при установке KOL&MSK DKENT Компоненты Delphi 0 21.09.2011 10:36
Перетаскивание(dran&drop) с дублированием skill_ C# (си шарп) 3 22.06.2011 17:50
Splitter & VertScrollBar. Перетаскивание за пределы формы. HIC Общие вопросы Delphi 2 31.08.2010 14:58
KOL onkeydown формы Simply-Art Помощь студентам 2 29.07.2008 17:22