Вверх ↑
Этот топик читают: Гость
Ответов: 2
Рейтинг: 0
#1: 2017-09-12 10:59:52 ЛС | профиль | цитата
Хочу реализовать возможность перемещать картинку или объект по форме при помощи зажатия левой кнопки мыши , но столкнулся с проблемой. За расположение картинки или объекта на форме отвечает параметр Top и Left, а у мыши координаты x, y. И как все это совместить? ни чего в голову даже не приходить. может кто то сталкивался с подобным, отпишите. Заранее спасибо!
карма: 0

0
Ответов: 537
Рейтинг: 14
#2: 2017-09-12 12:01:09 ЛС | профиль | цитата
Нужно смотреть видео уроки и читать, читать

Add(MainForm,2953706,21,105)
{
}
Add(Image,13638444,140,105)
{
Left=140
Top=60
Width=90
Height=70
Color=32768
Point(Handle)
Point(onMouseDown)
link(onMouseDown,11077689:doMove,[(184,118)(184,142)(135,142)(135,167)])
}
Add(MoveWindow,11077689,147,161)
{
link(Handle,13638444:Handle,[])
}
карма: 4

0
Ответов: 322
Рейтинг: 8
#3: 2017-09-12 13:28:25 ЛС | профиль | цитата
Пользуйся.
мне сбрасывали на форуме.

Add(MainForm,4983658,196,161)
{
Position=1
Point(Handle)
link(onCreate,15561254:doPopup,[])
}
Add(InlineCode,12360657,343,399)
{
@Hint=#24:Глобальный перехват мыши|
EventPoints=#2:ev|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,windows,messages;|0:|4:type|27: tagMSLLHOOKSTRUCT = record|12: pt:TPoint;|18: mouseData:dword;|14: flags:dword;|13: time:dword;|23: dwExtraInfo:^Cardinal|5: end;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ev:THI_Event;|0:|23: constructor Create;|33: destructor Destroy; override;|0:|5: end;|0:|14:var H:THandle;|20: hac:THiAsmClass;|0:|14:implementation|0:|49:function hook(code,w,l:integer):Lresult; stdcall;|15:var str:string;|25: ll:tagMSLLHOOKSTRUCT;|15: d:LongWord;|5:begin|38: ll := tagMSLLHOOKSTRUCT(pointer(l)^);|0:|26: d := ll.mouseData shr 16;|46: if d and $8000 <> 0 then d := d or $FFFF0000;|0:|30: str := Int2Str(w)+Int2Str(d);|25: _hi_OnEvent(hac.ev,str);|38: result := CallNextHookEx(H,code,w,l);|4:end;|0:|31:constructor THiAsmClass.Create;|5:begin|18: inherited Create;|13: hac := self;|48: H := SetWindowsHookEx(14, @hook, hInstance, 0);|82: if H = 0 then messagebox(ReadHandle,'Ошибка перехвата мыши','ERROR',mb_iconhand);|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|24: UnhookWindowsHookEx(H);|19: inherited Destroy;|4:end;|0:|4:end.|
link(ev,14423304:doAdd,[])
}
Add(Memo,14423304,399,399)
{
Left=10
Top=5
Width=160
Height=260
AddType=1
ScrollBars=2
}
Add(InfoTip,13344029,476,280)
{
Info=#20:5120 - движение мыши|55:522ХХХ - прокрутка колеса, где ХХХ - значение прокрутки|18:5130 - нажатие ЛКМ|21:5140 - отпускание ЛКМ|18:5160 - нажатие ПКМ|21:5170 - отпускание ПКМ|21:5190 - нажатие колеса|24:5200 - отпускание колеса|33:5231 - нажатие 1-й боковой кнопки|36:5241 - отпускание 1-й боковой кнопки|33:5232 - нажатие 2-й боковой кнопки|35:5242 - отпускание 2-й боковй кнопки|
Frame=2
Transparent=1
HAlign=0
Width=316
Height=172
Margin=5
}
Add(WinTools,15561254,245,168)
{
link(Handle,4983658:Handle,[(251,156)(237,156)(237,208)(202,208)])
}

--- Добавлено в 2017-09-12 13:39:52

Файл большой (с картинками) поэтому закинул на сторонний обменник
http://file.sampo.ru/nj8dft/

Редактировалось 1 раз(а), последний 2017-09-12 13:39:52
карма: 0

0
Ответов: 2
Рейтинг: 0
#4: 2017-09-12 13:47:05 ЛС | профиль | цитата
Спасибо за ответы, теперь осталось понять куда втыкать этот код.

--- Добавлено в 2017-09-12 14:13:12

Все, понял. Наглядный пример все же более показателен.

Редактировалось 1 раз(а), последний 2017-09-12 14:13:12
карма: 0

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)