Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.01.2008, 01:33
Baster Baster вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 4
Репутация: 10
По умолчанию как сделать перетаскивание объектов в проге мышкой! помогите плз!

Здравствуйте уважаемые программисты!)) мне надо напистаь прогу, в которой должно выполняться следующее: при нажатии и удерживании левой кнопки мыши по какому либо объекту, напримар Panel, он бы перетаскивался по форме (синхронно с курсором) до тех пор пока не отпустить кнопку! помогите пожалуйста!!! Заранее огромное спасибо!))
Ответить с цитированием
  #2  
Старый 20.01.2008, 02:34
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Код:
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  
Старый 20.01.2008, 02:52
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Восклицание Drag and Drop

Вот:
http://www.delphiworld.narod.ru/_syntax_.html
читай раздел "Drag and Drop"
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием
  #4  
Старый 21.01.2008, 14:11
Baster Baster вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 4
Репутация: 10
По умолчанию

Огромное Вам СПАСИБО!!! ВЫ МНЕ ОЧЕНЬ ПОМОГЛИ!!!))
Ответить с цитированием
  #5  
Старый 21.01.2008, 15:23
Baster Baster вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 4
Репутация: 10
По умолчанию

Все оч клево, только вот это не работает если надо перетаскивать несколько панелей! почитал я drag and drops, там по этому поводу ничего не сказано! пробовал задать массив, тоже не помогает.. что делать? помогите пожалуйста!!!))
Ответить с цитированием
  #6  
Старый 21.01.2008, 15:26
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Тебе надо одновременное перетаскивание нескольких панелей?
Ответить с цитированием
  #7  
Старый 21.01.2008, 20:16
Baster Baster вне форума
Прохожий
 
Регистрация: 20.01.2008
Сообщения: 4
Репутация: 10
По умолчанию

Нет! Мне надо перетаскивать несколько панелей по очереди!)) Вообщем есть 15 панелей и главная задача что бы была возможность перетащить на другое место каждую из них в отдельности! Если кто знает как это осущиствить, подскажите пожалуста...!!!))

Последний раз редактировалось Baster, 21.01.2008 в 20:18.
Ответить с цитированием
  #8  
Старый 21.01.2008, 20:28
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Выделяешь все эти 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  
Старый 22.01.2008, 01:12
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

У меня есть исходник по перетаскиванию и изменению размера выделенного компонента:
Вложения
Тип файла: zip Size Control.zip (48.0 Кбайт, 122 просмотров)
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #10  
Старый 22.01.2008, 13:00
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Или же установи компонент SizeControl (используемый в выложенном выше примере)

TSizeControl (версия 3.5) - http://www.decoding.narod.ru/downloa...rcontrol35.zip
TSizeControl (версия 7.2) - http://www.decoding.narod.ru/downloa...rcontrol72.zip
Ответить с цитированием
  #11  
Старый 12.03.2008, 16:25
aesoem aesoem вне форума
Прохожий
 
Регистрация: 07.03.2008
Сообщения: 19
Репутация: 10
По умолчанию

вот...

это событие OnMouseDown

const
SC_DragMove = $F012;
begin
ReleaseCapture;
Panel2.perform(WM_SysCommand,SC_DragMove,0);
end;
Ответить с цитированием
  #12  
Старый 16.11.2009, 10:55
AbekIn3D AbekIn3D вне форума
Прохожий
 
Регистрация: 16.11.2009
Сообщения: 1
Репутация: 10
По умолчанию

Здравствуйте, как в sizecontrol установить только изменение размера и только определенным панелям?
и еще желательно чтобы можно было менять размер сразу, не нажимая на объект.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram