Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2016, 09:05   #1
gromdel
Пользователь
 
Регистрация: 24.04.2012
Сообщений: 68
По умолчанию DragDrop. Как обратится к отдельному компоненту

Здравствуйте, при создании формы цикл пробегает по базе. к каждой записи он создает image на форме. Свойство top и left считывает с базы и присваивает.
Вопрос, как мне обратится к любому из этих image, т.е. я его передвину, и чтобы его новые свойства left и top дописались в базу.


Я понимаю решение проблемы такое: при создании image каждому давать имя какого-то поля, например по id. Это не сложно. А вот, куда прописать событие "если передвинул, то adoquryleft.asinteger:=image.left"
Помогите пожалуйста понять. Хотя бы логически.
gromdel вне форума Ответить с цитированием
Старый 11.10.2016, 09:17   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1.
Цитата:
т.е. я его передвину,
Стало быть у тебя есть(будет) код, выполняющий данное передвижение. Вот там и пиши операции обновления БД.

2. Выбирай

компонент передвигается не сам по себе, а ПО КАКОМУ_ТО ОДНОМУ вполне определенному компоненту-контейнеру(Form, Frame, Panel, Groupbox, ...)
Если он перемещается между РАЗНЫМИ контейнерами, то это уже ПЕРЕТАСКИВАННИЕ (хотя это тоже DragDrop)
И реакция на DrapDrop выполняется в объекте-контейнере.

Цитата:
TEndDragEvent = procedure(Sender, Target: TObject; X, Y: Integer) of object;
The Sender is the object being dragged, Target is the object Sender is dragged to, and X and Y are screen coordinates in pixels.
Изображения
Тип файла: jpg 3.JPG (25.0 Кб, 143 просмотров)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.10.2016 в 09:29.
evg_m на форуме Ответить с цитированием
Старый 11.10.2016, 10:03   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Id записи можно в Image.Tag засунуть. Если оно совместимо с integer конечно. А любое изменение позиции можно еще так отлавливать
Код:
type
  TImage = class(ExtCtrls.TImage)
    procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED;
  end;
  TForm1 = class(TForm)
...

implementation

{$R *.dfm}

procedure TImage.WMWindowPosChanged(var Message: TWMWindowPosChanged);
begin
  Inherited;
  if ComponentState * [csReading, csLoading] = [] then begin
    ShowMessage(Format('Tag=%d,Left=%d,Top=%d',[Tag,Left,Top]));
  end;
end;

...

end.
Вместо ShowMessage свои действия
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратится к компоненту на динамически созданной форме nibufep Общие вопросы Delphi 12 07.05.2016 16:48
FileAge overload как обратится Dozent Общие вопросы Delphi 10 14.10.2013 12:17
как обратится к объектам marales Помощь студентам 2 14.11.2012 11:10
Как обратится к конкретной ячейке loki22208 БД в Delphi 8 03.05.2010 20:07
как обратится HrenoV Общие вопросы C/C++ 1 16.02.2007 18:05