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

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

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

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

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

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

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

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

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
вот это вы просто скопировали и вставили чтоли?
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  [ТС]
А все разобрался! спасибо!
0
29 / 29 / 13
Регистрация: 04.01.2013
Сообщений: 163
29.03.2013, 09:14
короче, делайте так:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2013, 09:14
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Организация сетей в Kubernetes и эффективное развертывание
Mr. Docker 14.04.2025
Сетевая инфраструктура Kubernetes представляет собой сложную, но хорошо спроектированную систему, которая позволяет контейнерам взаимодействовать между собой и с внешним миром. За кажущейся простотой. . .
Многопоточность в Rust: Fearless concurrency и практические примеры
golander 14.04.2025
Многопоточное программирование связано с рядом известных проблем. Наиболее распространенные из них — гонки данных (data races), взаимные блокировки (deadlocks) и условия гонки (race conditions). Эти. . .
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер