Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Другие темы раздела
PascalABC.NET Записи: Определить по данной дате день недели и его порядковый номер в году http://www.cyberforum.ru/pascalabc-net/thread816110.html
Первого января какого-то года был понедельник. Определить по данной дате день недели и его порядковый номер в году. Ребят помогите может кто объяснит, я не могу понять что писать и как!!
Задачи к заочной олимпиаде PascalABC.NET
Задача 6. Четыре чертёнка Мир в опасности. Один известный мошенник по имени Остап умер, и, попав в ад, решил заключить сделку с дьяволом. Игра простая: четыре чертёнка делятся на две команды —...
PascalABC.NET Вычислить площадь поверхности параллелепипеда
Добрый день, нужна помощь в составлении программы: Заданы, трехмерные векторы a,b,c, которые выходят из точки A(x,y,z) и являются ребрами параллелепипеда. Вычислить площадь поверхности...
PascalABC.NET Подсчитать, сколько чисел из отрезка [a, b] не попало во множество Множество заполняется n целыми случайными равномерно распределенными числами из интервала . http://www.cyberforum.ru/pascalabc-net/thread815417.html
PascalABC.NET Определить, какие цифры содержатся в тексте http://www.cyberforum.ru/pascalabc-net/thread815408.html
Слова в тексте разделены пробелами, встречаются даты. Какие цифры содержатся в тексте?
PascalABC.NET Определить игрушки из списка: -которых нет ни в одном из садов; -которые есть в каждом из детсадов.
Есть список игрушек, некоторые из которых имеются в N детских садах. Определить игрушки из списка: • которых нет ни в одном из садов; • которые есть в каждом из детсадов.
Подсчитать, сколько чисел из отрезка [a, b] не попало во множество PascalABC.NET
Множество заполняется n целыми случайными равномерно распределенными числами из интервала . Нужно подсчитать, сколько чисел из отрезка не попало во множество
PascalABC.NET Заполнение и графический вывод массива - исправить ошибки в коде помогите найти ошибку. Может кто-нибудь подскажет в чем проблема program exm; Uses GraphABC; Type mas = array of integer; Var mas1,mas2 : array of mas; n, nMax, k, f : integer; ... http://www.cyberforum.ru/pascalabc-net/thread815254.html
PascalABC.NET Переделать C# в Pascal надо кто может? http://www.cyberforum.ru/pascalabc-net/thread814858.html
public partial class Form1 : Form { public Form1() { InitializeComponent(); create(); } static int i = 0; static int R = 0;...
PascalABC.NET Не сохраняется изображение {$apptype windows} {$reference 'System.Windows.Forms.dll'} {$reference 'System.Drawing.dll'} Var myForm: System.Windows.Forms.Form; GraphBox: System.Drawing.Graphics; Pictures:... http://www.cyberforum.ru/pascalabc-net/thread814804.html
BaboshinSD
341 / 280 / 49
Регистрация: 15.11.2012
Сообщений: 477
Записей в блоге: 1
23.03.2013, 15:03  [ТС] 0

Полезные коды для PascalABC.NET

23.03.2013, 15:03. Просмотров 205675. Ответов 125
Метки (Все метки)

Ответ

В: Как двигать форму без границ?
О:
Двигаем форму без границ (FormBorderStyle.None)
Для начала делаем событие на нажатие кнопки мыши:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
procedure MainForm_MouseDown(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  Down := True; {Зажали кнопку}
  
  // Запоминаем координаты формы
  X := MainForm.Left;
  Y := MainForm.Top;
  
  // Запоминаем координаты курсора
  cX := System.Windows.Forms.Cursor.Position.X;
  cY := System.Windows.Forms.Cursor.Position.Y;
end;
В нём будет переменная типа boolean, которая будет отвечать за "нажатие" кнопки (если нажата - True, если отпустили - False). Тут же запоминаем текущие координаты формы (X, Y) и текущие координаты курсора (cX, cY).

Далее пишем коротенькую процедуру, которая будет отвечать за "отпускание" кнопки:
Pascal
1
2
3
4
procedure MainForm_MouseUp(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  Down := False; {Отпустили кнопку}
end;
Думаю тут всё понятно)

Последний шаг делаем событие по движению мыши:
Pascal
1
2
3
4
5
6
7
8
9
procedure MainForm_MouseMove(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  if Down then {Если кнопка нажата}
  begin
  // Двигаем форму относительно курсора
    MainForm.Left := System.Windows.Forms.Cursor.Position.X - cX + X;
    MainForm.Top := System.Windows.Forms.Cursor.Position.Y - cY + Y;
  end;
end;
Тут тоже вроде всё ясно, единственная сложность с "движением относительно курсора", но тут легче понять чем объяснить.

Вот целый код:
Pascal
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
50
51
{$apptype windows}
{$reference 'System.Windows.Forms.dll'}
{$reference 'System.Drawing.dll'}
uses
  System.Windows.Forms,
  System.Drawing;
 
var
  MainForm: System.Windows.Forms.Form;
  X, Y, cX, cY: integer;
  Down: boolean := False;
 
procedure MainForm_MouseDown(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  Down := True; {Зажали кнопку}
  
  // Запоминаем координаты формы
  X := MainForm.Left;
  Y := MainForm.Top;
  
  // Запоминаем координаты курсора
  cX := System.Windows.Forms.Cursor.Position.X;
  cY := System.Windows.Forms.Cursor.Position.Y;
end;
 
procedure MainForm_MouseUp(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  Down := False; {Отпустили кнопку}
end;
 
procedure MainForm_MouseMove(sender: object; args: System.Windows.Forms.MouseEventArgs);
begin
  if Down then {Если кнопка нажата}
  begin
  // Двигаем форму относительно курсора
    MainForm.Left := System.Windows.Forms.Cursor.Position.X - cX + X;
    MainForm.Top := System.Windows.Forms.Cursor.Position.Y - cY + Y;
  end;
end;
 
begin
  
  MainForm := new Form;
  MainForm.StartPosition := FormStartPosition.CenterScreen;
  MainForm.FormBorderStyle := FormBorderStyle.None;
  MainForm.MouseDown += MainForm_MouseDown;
  MainForm.MouseUp += MainForm_MouseUp;
  MainForm.MouseMove += MainForm_MouseMove;
  
  Application.Run(MainForm);
end.


Вернуться к обсуждению:
Полезные коды для PascalABC.NET
2
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 15:03
Готовые ответы и решения:

Модуль для PascalABC.NET
Здравствуйте уважаемые форумчане, возник вопрос почему не работает модуль. Вот модуль unit...

Исправить код для PascalABC.net
как минимум, первое место которое ему не нравиться это как я обьявляю тип объект const size=10; ...

Процедура GetMem для PascalABC.NET
Долго долго курил страницы форума, изучал динамические списки. Когда код для программы уже...

Есть ли PascalABC.NET для Mac OS X?
Есть ли PascalABC.NET для Mac OS X?

В чем разница PascalABC.net и PascalABC
Скажите в чем разница PascalABC.net И PascalABC. Помню когда-то давно программы работающие в...

125
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.