Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 58

Общий обработчик для множества объектов TShape

14.03.2013, 11:46. Показов 611. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Я в программе использую множество фигур. Стоит задача двигать каждую из них по изображению. Обработчик для свойства OnEndDrag у них общий. но как в нем определить какую именно в данный момент я двигаю фигуру у меня не получается. Довольно таки сложно объяснить словами, вот код)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
TShape *my_shape[255];  // фигуры для отображения на плане
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
        for (i = 0; i < 255; i++) {
        my_shape[i] = new TShape(this);
    }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::Button4Click(TObject *Sender) // расстановка фигур на рисунке
{
    my_shape[0]->Parent = pnImagePlan;
    my_shape[0]->Shape = 4;
    my_shape[0]->Left = X;
    my_shape[0]->Top = Y;
    my_shape[0]->Width = 16;
    my_shape[0]->Height = 16;
    my_shape[0]->Brush->Color = clGreen;
    my_shape[0]->DragMode = dmAutomatic;
 
    my_shape[0]->OnEndDrag = ShapeEndDrag;
 
.....  // и так далее
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::ShapeEndDrag(TObject *Sender, TObject *Target, int X, int Y)  // конец перетаскивания фигуры
{
 
    if (X>0 && X<imPlan->Width && Y>0 && Y<imPlan->Height) {
        // тут нужно указать какую именно фигуры двигать, но не могу понять как(
                //my_shape[0]->Left = X;
        //my_shape[0]->Top = Y;
    }
}
Добавлено через 5 минут
Всем сори за беспокойство) Нашел как нужно
C++
1
2
3
4
5
6
    TShape *my_shape = (TShape * )Sender;
 
    if (X>0 && X<imPlan->Width && Y>0 && Y<imPlan->Height) {
        my_shape->Left = X;
        my_shape->Top = Y;
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2013, 11:46
Ответы с готовыми решениями:

Общий hint для множества объектов
Суть вопроса: можно ли в инспекторе объектов строковую переменную задавать не явно, а как-то по...

Общий обработчик событий для однотипных компонентов (например CheckBox)
Всем доброго времени суток. Прошу помощи в решении данного вопроса. Возникла маленькая проблемка. ...

TShape поверх всех объектов
Здравствуйте! Хочу повесить объект Shape поверх ВСЕХ объектов на форме. Что-то типа блокировки...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2013, 11:46
Помогаю со студенческими работами здесь

Общий обработчик событий
Этот код взят из готового примера #include &lt;vcl.h&gt; #pragma hdrstop #include &quot;Unit1.h&quot;...

Динамически создать 15 кнопок на форме и сделать общий обработчик OnClick
Здравствуйте, создаю 15 кнопок вот так: HWND hWnd = this-&gt;Handle; long hThisInstance =...

Общий обработчик для всех страниц
Добрый день. Еесть вот такой участок кода protected override void OnPreInit(EventArgs e) ...

Общий обработчик для кнопок с одним классом
Есть код: var btn = document.getElementsByClassName('button'); btn.onclick = function() { ...

Общий обработчик события для компонентов одного класса
На форме 100 компонентов TShape. При щелчке на любом из них компонент, по которому щелкаем,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru