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

Передвижение созданного Shape мышкой

19.06.2015, 16:35. Показов 2152. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я не могу перетащить созданный Shape мышкой. Сам компонент получается перетащить спокойно, вот:
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
void __fastcall TForm1::Shape1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
IsMouseDown=false;
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 OldX=X;
        OldY=Y;
        IsMouseDown=true;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if(IsMouseDown)
        {
            Shape1->Left+=X-OldX;
                Shape1->Top+=Y-OldY;
        }
 
}
//---------------------------------------------------------------------------
Вот присоздании нового Shape :
C++
1
2
3
4
  TShape *iShape = new TShape(this);
      iShape->Parent = this;
      iShape->Name = "iShape"+AnsiString(i);
      iShape->Shape = stCircle;
Как его сдвинуть можно? Помогите решить задачу.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.06.2015, 16:35
Ответы с готовыми решениями:

Передвижение shape через сокет
Идея в следущем передвигать шейп по сети, вот написал программу: #include <vcl.h> #pragma hdrstop #include...

Передвижение объекта мышкой
Всем привет! Возникла некая необходимость таскать некий объект по форме. Как это сделать? Пытался через mouseMoveEvent. Перемещение...

Система координат, shape и его передвижение
Здравствуйте. Помогите пожалуйста.Как в image1 сделать,чтобы при передвигании shape по оси ox,от shape рисовалась прямая не все время,когда...

7
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
19.06.2015, 16:39
Назначь динамически созданному компоненту обработчики событий:
C++
1
2
3
iShape->OnMouseUp = Shape1MouseUp;
iShape->OnMouseDown = Shape1MouseDown;
iShape->OnMouseMove = Shape1MouseMove;
0
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 54
21.06.2015, 07:40  [ТС]
движется опять Shape1. Когда пытаешься iShape сдвинуть, перемещается Shape1, работает как процесс мышки.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33374 / 21499 / 8235
Регистрация: 22.10.2011
Сообщений: 36,894
Записей в блоге: 11
21.06.2015, 12:13
Лучший ответ Сообщение было отмечено INSULIN как решение

Решение

Ну, так ты перепиши обработчик-то:
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
    if(IsMouseDown)
    {
        TShape *shape = static_cast<TShape*>(Sender)
        shape->Left+=X-OldX;
        shape->Top+=Y-OldY;
    } 
}
, чтобы изменение позиции происходило для того, компонента, который тянут, а не для Shape1 все время.
1
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 54
22.06.2015, 15:16  [ТС]
volvo спасибо, все отлично работает
0
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 54
11.07.2015, 22:49  [ТС]
volvo, не мог бы еще помочь в одном по данной теме. Я не могу увеличить shape, в простом случае получается, а вот созданном ни как.

C++
1
2
3
4
5
6
7
8
9
10
11
12
TForm1 *Form1;
TShape *shape;
 
Shape1->Width = Shape1->Width*1.2;
Shape1->Height = Shape1->Height*1.2;
вот его увеличить получается
 
      shape = new TShape(this);
      shape->Parent = this;
      shape->Shape = stCircle;
      shape->Width = shape->Width*1.2;
      shape->Height = shape->Height*1.2;
а тут хоть и компилирутся, но не увеличивается
0
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
12.07.2015, 01:58
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TShape *shape;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  shape = new TShape(this);
  shape->Parent = this;
  shape->Shape = stCircle;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  shape->Width = shape->Width*1.2;
  shape->Height = shape->Height*1.2;
}
Миниатюры
Передвижение созданного Shape мышкой   Передвижение созданного Shape мышкой  
1
0 / 0 / 0
Регистрация: 13.07.2014
Сообщений: 54
12.07.2015, 07:25  [ТС]
Как так то все испробовал, как я мог забыть про Формкрит.

Добавлено через 38 секунд
gunslinger, Спасибо))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.07.2015, 07:25
Помогаю со студенческими работами здесь

Перетаскиваем shape мышкой
Люди как мне при нажатие на shape, можно было бы его переместить, а при отпускании кнопки мыши он оставался на месте?

Передвижение блока мышкой
Хочу сделать перемещение блока мышью. Узнавать координаты мыши научился, но в JS коде выскакивает ошибочка. function MoveWindow(id) ...

Передвижение мышкой обьектов
Графика GDI+ Передвижение мышкой обьектов Например есть графический обьект слова, нужна мышкой перемещать этот обьект?

Передвижение объектов по форме мышкой
Хочу написать в Windows Forms игру Unblock King. На данном этапе реализовал реализовал перемещение PictureBox по форме, и их столкновение....

Окружности - создание и передвижение их мышкой
Вообщем у меня задаются параметры r1 r2 и r3 - это так называемые три различных радиуса, мне необходимо создать в scrollbox - 3 круга...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru