|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
как сделать перетаскивание объектов в проге мышкой! помогите плз!
Здравствуйте уважаемые программисты!)) мне надо напистаь прогу, в которой должно выполняться следующее: при нажатии и удерживании левой кнопки мыши по какому либо объекту, напримар Panel, он бы перетаскивался по форме (синхронно с курсором) до тех пор пока не отпустить кнопку! помогите пожалуйста!!! Заранее огромное спасибо!))
|
#2
|
||||
|
||||
Код:
var TForm1:TForm; xx,yy:integer; bool:boolean; ...... procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin xx:=panel1.left; yy:=panel1.top; bool:=true; end; procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if bool then begin panel1.left:=panel1.left+x-xx; panel1.top:=panel1.top+y-yy; end; end; procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bool:=false; end; Кому я должен - всем прощаю!!!! Последний раз редактировалось <<D>>, 20.01.2008 в 02:41. |
#3
|
||||
|
||||
Drag and Drop
Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
|||
|
|||
Огромное Вам СПАСИБО!!! ВЫ МНЕ ОЧЕНЬ ПОМОГЛИ!!!))
|
#5
|
|||
|
|||
Все оч клево, только вот это не работает если надо перетаскивать несколько панелей! почитал я drag and drops, там по этому поводу ничего не сказано! пробовал задать массив, тоже не помогает.. что делать? помогите пожалуйста!!!))
|
#6
|
|||
|
|||
Тебе надо одновременное перетаскивание нескольких панелей?
|
#7
|
|||
|
|||
Нет! Мне надо перетаскивать несколько панелей по очереди!)) Вообщем есть 15 панелей и главная задача что бы была возможность перетащить на другое место каждую из них в отдельности! Если кто знает как это осущиствить, подскажите пожалуста...!!!))
Последний раз редактировалось Baster, 21.01.2008 в 20:18. |
#8
|
|||
|
|||
Выделяешь все эти 15 панелей и в сообытии OnMouseDown пишешь (в испекторе объектов в эдите, должно быть написано, что выделено 15 объектов):
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const SC_DRAGMOVE = $F012; begin ReleaseCapture; (Sender as TPanel).Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0); end; |
#9
|
||||
|
||||
У меня есть исходник по перетаскиванию и изменению размера выделенного компонента:
Кому я должен - всем прощаю!!!! |
#10
|
||||
|
||||
Или же установи компонент SizeControl (используемый в выложенном выше примере)
TSizeControl (версия 3.5) - http://www.decoding.narod.ru/downloa...rcontrol35.zip TSizeControl (версия 7.2) - http://www.decoding.narod.ru/downloa...rcontrol72.zip |
#11
|
|||
|
|||
вот...
это событие OnMouseDown const SC_DragMove = $F012; begin ReleaseCapture; Panel2.perform(WM_SysCommand,SC_DragMove,0); end; |
#12
|
|||
|
|||
Здравствуйте, как в sizecontrol установить только изменение размера и только определенным панелям?
и еще желательно чтобы можно было менять размер сразу, не нажимая на объект. |