С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
1

Как сделать чтобы контролы типа Button можно было перетаскивать по форме?

29.03.2013, 07:49. Показов 1331. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пока только начинаю разбираться в Delphi перерыл кучу примеров и уроков но не смог найти подходящих..
Нужно чтобы при зажатой левой кнопке мыши можно было перетаскивать контролы по форме
Подскажите пожалуйста пример кода или ссылку на ресурс, тему со сходной тематикой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2013, 07:49
Ответы с готовыми решениями:

Как сделать, чтобы Form можно было перетаскивать за любое место
Кто знает? Везде либо темы 2004 года, либо невнятное хз, а я нуб.

Как сделать так, чтобы можно было выводить текст в форме
1. Как сделать так, чтобы можно было выводить текст в форме ? Например, как в калькуляторе - ты...

Можно ли сделать так, чтобы Panel можно было бы передвигать по форме мышкой?
Можно ли сделать так, чтобы Panel можно было бы передвигать по форме мышкой?

Как подцепить контролы к определенным путям линиям? чтобы пермещать их можно было только по ним
Имеется форма, фоном у нее идет рисунок(план), на форме находятся контролы их можно перетаскивать...

5
29 / 29 / 13
Регистрация: 04.01.2013
Сообщений: 163
29.03.2013, 07:57 2
вот
1
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
29.03.2013, 08:59  [ТС] 3
понимаю что наверняка глупый вопрос задаю но почему ошибку выдает?
Добавил панель на форму, вставил код, что не так делаю? или чего не добавил?

Delphi
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
unit Unit1;
 
interface
 
uses
  SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
  QDialogs, QStdCtrls, QExtCtrls;
 
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
   // Panel1: TPanel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
    xx,yy:integer;
  bool:boolean;
implementation
 
{$R *.xfm}
 
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;
end.
ругается на
[Îøèáêà] Unit1.pas(27): Undeclared identifier: 'Panel1MouseDown'
[Îøèáêà] Unit1.pas(27): ';' expected but '(' found
[Îøèáêà] Unit1.pas(30): Undeclared identifier: 'panel1'
[Îøèáêà] Unit1.pas(31): Missing operator or semicolon
[Îøèáêà] Unit1.pas(35): Undeclared identifier: 'Panel1MouseMove'
[Îøèáêà] Unit1.pas(35): ';' expected but '(' found
[Îøèáêà] Unit1.pas(39): Undeclared identifier: 'panel1'
[Îøèáêà] Unit1.pas(39): Missing operator or semicolon
[Îøèáêà] Unit1.pas(40): Missing operator or semicolon
[Îøèáêà] Unit1.pas(40): Missing operator or semicolon
[Îøèáêà] Unit1.pas(44): Undeclared identifier: 'Panel1MouseUp'
[Îøèáêà] Unit1.pas(44): ';' expected but '(' found
[Îøèáêà] Unit1.pas(11): Unsatisfied forward or external declaration: 'TForm1.FormCreate'
[Ôàòàëüíàÿ îøèáêà] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
0
29 / 29 / 13
Регистрация: 04.01.2013
Сообщений: 163
29.03.2013, 09:04 4
вот это вы просто скопировали и вставили чтоли?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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;
end.
надо через инспектор объектов

и еще не видно что у вас на форме есть объект Panel1
1
2 / 2 / 0
Регистрация: 14.06.2012
Сообщений: 70
29.03.2013, 09:08  [ТС] 5
А все разобрался! спасибо!
0
29 / 29 / 13
Регистрация: 04.01.2013
Сообщений: 163
29.03.2013, 09:14 6
короче, делайте так:
1. помещаем объект Button1 на форму.
2. выделяем этот объект.
3. идем в инспектор объектов.
4. ищем MouseDown - щелкаем дважды в рядом стоящее пустое окно, у вас откроется редактор в которой вы пишите прогу и уже будет написано

Delphi
1
2
3
4
5
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 
end;
вам нужно будет вставить вот это:
Delphi
1
2
3
xx:=panel1.left;
yy:=panel1.top;
bool:=true;
чтобы получилось вот так:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
xx:=panel1.left;
yy:=panel1.top;
bool:=true;
end;
при чем в общем var-е надо прописать параметры xx и yy

Добавлено через 1 минуту
не успел...
Цитата Сообщение от Rayrat89 Посмотреть сообщение
А все разобрался! спасибо!
молодца, можешь же когда хочешь....
1
29.03.2013, 09:14
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2013, 09:14
Помогаю со студенческими работами здесь

Сделать в пользовательской форме так, чтобы можно было добавлять не один товар, а много
Задача такая, я пишу курсовик. Это типа программа для клиента который пришел в пришел в магазин. У...

Сделать поле со списком в ленточной форме, чтобы можно было вносить значения без повторений
Подскажите пожалуйста, как правильно сделать поле со списком в ленточной форме, что бы можно было...

Сделать свой заголовок к форме, за который ее можно будет перетаскивать
Нарисовал типо меню. Все как надо. Крестик и сворачивание. Надо как то это завернуть в софт, и...

Можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву
подскажите можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву?...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Блоги программистов
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­хронн­ый счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru