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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.05.2011, 16:41
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию перетаскивание динамически созданных объектов

Подскажите как реализовать перетаскивание мышью динамически созданных объектов?
есть процедура, нормально осуществляющая перетаскивание статично созданного объекта
Код:
procedure Tfrm_Main.drag_Terminal;
const
  SC_DragMove = $F012;
begin
  begin
  ReleaseCapture;
  Panel1.Perform(WM_SysCommand, SC_DragMove, 0);
  end;
end;
но она отказывается навешиваться на динамические объекты
Код:
gr_Term.OnMouseDown:=drag_Terminal(self);

Вопрос 1
Почему, в этой строке возникает ошибка
[DCC Error] main.pas(97): E2010 Incompatible types: 'TMouseEvent' and 'procedure, untyped pointer or untyped parameter'

Вопрос 2
Как в строке
Код:
 Panel1.Perform(WM_SysCommand, SC_DragMove, 0);

отправить сообщение о переносе именно тому объекту на котором была нажата левая кнопка мыши?
Ответить с цитированием
  #2  
Старый 14.05.2011, 20:45
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

С процедурой вроде разобрался
Теперь вопрос можно ли получить объект по имени и назначить конкретно ему обработчик?
Поясню объекты gr_Term создаются динамически при двойном нажатии на панель,
соответственно каждому из них назначаю имя и tag.

Код:
gr_Term.Tag:=term_Index;
gr_Term.Name:='Ter'+InttoStr(term_Index);

term_Index тип integer увеличивающаяся на единицу, с каждым созданным объектом.
как мне теперь назначать на них обработчики при создании?
Понятно что будет выглядеть как то так

Код:
gr_Term.OnMouseDown:=drag_Terminal ;

но как сделать чтобы OnMouseDown навешивалась именно на созданную gr_Term.
что то типа
Код:
gr_Term['индекс tag'].OnMouseDown:=drag_Terminal ;
или
Код:
gr_Term.getName('Ter1').OnMouseDown:=drag_Terminal ;
Ответить с цитированием
  #3  
Старый 14.05.2011, 20:50
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

Может быть создавать массив gr_Term?
Ответить с цитированием
  #4  
Старый 16.05.2011, 11:43
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

Цитата:
Сообщение от kaizer131
С процедурой вроде разобрался
Теперь вопрос можно ли получить объект по имени и назначить конкретно ему обработчик?
...
как мне теперь назначать на них обработчики при создании?
Понятно что будет выглядеть как то так

Код:
gr_Term.OnMouseDown:=drag_Terminal ;

но как сделать чтобы OnMouseDown навешивалась именно на созданную gr_Term.

Если с процедурой разобрался, то у неё должен быть первый параметр Sender:TObject. Это и есть ваш gr_Term
Ответить с цитированием
  #5  
Старый 16.05.2011, 21:43
kaizer131 kaizer131 вне форума
Начинающий
 
Регистрация: 01.11.2008
Сообщения: 112
Репутация: 10
По умолчанию

так вот тут и начинается самое интересное
при инициализации процедуры
Код:
procedure drag_Terminal(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
и её использовании
Код:
procedure Tfrm_Main.drag_Terminal;
begin
(sender as TGroupBox ).left := X;
 (sender as TGroupBox ).top := Y;
end;

Не работает перетаскивание мышью.
Насколько я помню параметры X и Y не нужно передавать в процедуру и они автоматически будут получены от координат мыши.
Но , могу и ошибаться
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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