Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
karo_62
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 4
1

Запись щелчков мыши в очередь и отображение этих координат с присвоением порядкового номера

17.05.2015, 13:04. Просмотров 958. Ответов 5
Метки нет (Все метки)

Доброго дня всем.
Я, конечно, понимаю, что мало кто любит разбираться в чужом коде, но может кто поможет)
Суть программы заключается в том, чтобы при щелчке левой клавишей мыши координаты записывались в очередь, а при нажатии правой выводились в месте щелчков цифры, соответствующие порядковому номеру действия пользователя.
Получается, что координаты x и y нужно записать в очередь и вывести на холст. Так вот одну из координат я могу записать в процедуру очереди, а с двумя у меня ошибка. Процедура очереди естьи немножко моего кода с клавишами мыши. Помогите с записью координат в эту очередь


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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls;
 
type
  TForm1 = class(TForm)
    img1: TImage;
    stat1: TStatusBar;
    lbl1: TLabel;
    procedure img1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure img1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure img1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Type
    EXO = ^O;
      O = record
        Data : integer;
        Next : EXO;
      end;
      
  Var
   BeginO, EndO : EXO;
   x1,y1,x2,y2,front:integer;
 
implementation
 
{$R *.dfm}
 
 
 
Procedure writeO(Var BeginO, EndO : EXO; c : integer);
Var
   u : EXO;
Begin
   new(u);
   u^.Data := c;
   u^.Next := Nil;
   if BeginO =Nil then
     BeginO := u
   else
    EndO^.Next := u;
   EndO := u;
End;
 
 
Procedure readO(Var BeginO, EndO : EXO; Var c: integer);
Var
   u : EXO;
Function FreeO(x1 : EXO): boolean;
Begin
   FreeO := (x1=Nil);
End;
Begin
   if FreeO(BeginO) then
     ShowMessage('Очередь пуста')
   else
     begin
       c := BeginO^.Data;
       u := BeginO;
       BeginO := BeginO^.Next;
       dispose(u);
     end;
End;
 
 
 
procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbleft then
    begin
      writeO(BeginO, EndO, x);
    end;
 
end;
 
procedure TForm1.img1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  stat1.Panels[0].Text := 'ÊîîðäèГ*Г*ГІГ»';
  stat1.Panels[1].text := 'x:'+inttostr(x)+ ' y:'+inttostr(y);
 
end;
 
 
 
procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var r:Integer;
begin
  r:=20;
  if button=mbright then
    begin
      readO(BeginO, EndO, x );
      Img1.Canvas.ellipse(x-r,y-r,x+r,y+r);
    end;
 
 
end;
 
end.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2015, 13:04
Ответы с готовыми решениями:

Sql группировка по условию, с присвоением порядкового номера
Здравствуйте Пытаюсь выполнить одновременную группировку по наименнованию и атрибутам, с...

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

Эмуляция щелчков мыши
Здравствуйте! Совсем блин забыл VB, много лет не программировал ( хотя это и было на уровне...

Пробег крысы и счётчик щелчков мыши
Здравствуйте. Я только начал осваивать MS visual studio 2008 c++, хотя на консоли уже пишу....

Chart. Отображение координат точек при наведении курсора мыши
1) Как можно сделать, чтобы при наведении курсором на точку в линейном графике, отображалась...

5
VladWH
241 / 191 / 94
Регистрация: 01.05.2015
Сообщений: 732
17.05.2015, 13:59 2
Может не
Цитата Сообщение от karo_62 Посмотреть сообщение
Data : integer;
А
Delphi
1
Data: TPoint;
Добавлено через 1 минуту
ну и вообще... почему через стек... можно ведь и массивом точек обойтись

Добавлено через 2 минуты
например...
Delphi
1
2
3
4
5
6
7
8
9
10
var PList: array of TPoint;
 
procedure TForm1.img1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbleft then
    begin
      SetLength(PList, Length(PList)+1);
      PList[High(PList)] := Point(x,y);
    end;
Добавлено через 2 минуты
а рисовать так...

Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.img1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var i,r:Integer;
begin
  r:=20;
  if button=mbright then
    begin
      for i:=0 to High(PList) do
       Img1.Canvas.ellipse(PList.x-r,PList.y-r,PList.x+r,PList.y+r);
    end;
Добавлено через 40 секунд
P.S. в Delphi не проверял, писал тут
1
karo_62
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 4
17.05.2015, 15:30  [ТС] 3
Я бы делала по-другому, но мне именно через очередь нужно
0
wendstor
133 / 133 / 64
Регистрация: 15.05.2012
Сообщений: 502
17.05.2015, 21:43 4
Лучший ответ Сообщение было отмечено karo_62 как решение

Решение

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
50
51
52
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
 
type
  TEventTurn = array of record
    Position: TPoint;
    Number: Integer;
  end;
 
type
  TForm1 = class(TForm)
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  EventTurn: TEventTurn;
implementation
 
{$R *.dfm}
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  i: integer;
begin
  if Button = mbLeft then begin
    SetLength(EventTurn, Length(EventTurn)+1);
    EventTurn[High(EventTurn)].Position := Point(X, Y);
    EventTurn[High(EventTurn)].Number := High(EventTurn) +1;
  end;
  if Button = mbRight then begin
    for i:= Low(EventTurn) to High(EventTurn) do begin
      Canvas.Ellipse(EventTurn[i].Position.X-2, EventTurn[i].Position.Y-2,
        EventTurn[i].Position.X+2, EventTurn[i].Position.Y+2);
      Canvas.TextOut(EventTurn[i].Position.X -5, EventTurn[i].Position.Y +10,
        IntToStr(i+1));
    end;
  end;
end;
 
end.
1
Verevkin
966 / 494 / 129
Регистрация: 12.03.2015
Сообщений: 3,450
18.05.2015, 01:40 5
Цитата Сообщение от karo_62 Посмотреть сообщение
но мне именно через очередь нужно
есть же стандртные классы-очереди! чо велосипедизмом-то заниматься?
1
Миниатюры
Запись щелчков мыши в очередь и отображение этих координат с присвоением порядкового номера  
nikonow
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 6
23.06.2015, 11:01 6
karo_62, Добрый день, подскажите пожалуйста вы решили свою задачу? у меня такая же проблема
0
23.06.2015, 11:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2015, 11:01

Запись в файл координат мыши
Здравствуйте уважаемые любители C#. Сделал WinForm прогу, которая работает с изображением(карта...

Запись координат при нажатиях кнопки мыши
Есть программа, которая при нажатии кнопки мыши записывает её координаты. Что нужно добавить, чтобы...

Можно ли создать любое количество обработчиков событий для щелчков мыши?
Можно ли создать любое количество обработчиков событий для щелчков мыши? То есть, есть n классов и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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