![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте! Требуется реализовать динамическое создание объекта с возможностью менять его положение (вроде как создать ярлык на раб столе и потом его таскать зажав мышку). Юзер нажал ПКМ, выбрал создать, появился объект квадратной формы (вот тут что лучше? баттон либо что еще?), наведя и зажав мышку юзер мог бы таскать этот объект по форме или скрол боксу. С динам. созданием ничего сложного, но какой объект лучше создавать и как реализовать его перетягивание?
|
#2
|
||||
|
||||
![]() Цитата:
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
nano_bot (07.01.2014)
|
#3
|
||||
|
||||
![]() Лучше имидж - проще. Предварительно надо завести глобальную триаду процедур жима мышки, примерно такую
Код:
var Xi, Yi : integer; flg: boolean; ... procedure TForm1.ImgMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button = mbLeft then begin flg:= true; Xi:= X; Yi:=Y; end; end; procedure TForm1.ImgMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if flg then begin (Sender as TImage).SetBounds( (Sender as TImage).Left+X-Xi, (Sender as TImage).Top+Y-Yi, (Sender as TImage).width, (Sender as TImage).height); end; end; procedure TForm1.ImgMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin flg:= false; end; Код:
with TImage.Create(Form1) do begin ... OnMouseDown:= ImgMouseDown; OnMouseMove:= ImgMouseMove; OnMouseUp:= ImgMouseUp; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 07.01.2014 в 18:56. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
nano_bot (07.01.2014)
|
#4
|
||||
|
||||
![]() Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TDragPanel = class(TPanel) private procedure WMLBUTTONDOWN(var Message: TMessage); message WM_LBUTTONDOWN; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} const SC_DRAGMOVE = 61458; { TDragPanel } procedure TDragPanel.WMLBUTTONDOWN(var Message: TMessage); begin ReleaseCapture; SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0); end; { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin with TDragPanel.Create(Self) do begin Parent:=Self; Caption:='Drag me...'; end; end; end. Пишу программы за еду. __________________ |
#5
|
||||
|
||||
![]() Кстати, а для баттона можно это делать вот так
Код:
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssCtrl in Shift then begin ReleaseCapture; SendMessage((Sender as TButton).Handle, WM_SYSCOMMAND, 61458, 0); end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |