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

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

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

Author24 — интернет-сервис помощи студентам
Пока только начинаю разбираться в Delphi перерыл кучу примеров и уроков но не смог найти подходящих..
Нужно чтобы при зажатой левой кнопке мыши можно было перетаскивать контролы по форме
Подскажите пожалуйста пример кода или ссылку на ресурс, тему со сходной тематикой
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2013, 09:14
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru