0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 14
1

Error: Wrong number of parameters specified for call to "Image1MouseUp"

04.04.2018, 19:12. Показов 4891. Ответов 6

Студворк — интернет-сервис помощи студентам
Ситуация в следующем такова: при создании графического редактора в Лазарь я добавил функцию загрузки изображения, но при попытке задать для функции событие MouseUp возникла ошибка, с которой я не смог разобраться прошу помощи.
Итог компиляции:
unit1.pas(69,22) Error: Wrong number of parameters specified for call to "Image1MouseUp"
unit1.pas(38,15) Error: Found declaration: Image1MouseUp(TObject;TMouseButton;TShiftState;LongInt;LongInt);

Image1.OnMouseUp:= Image1MouseUp; причина ошибки
--------------------------------------------------------------------------------------------------------------------------------------------------------
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
116
117
118
119
120
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    OpenDialog1: TOpenDialog;
    PaintBox1: TPaintBox;
    Shape1: TShape;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
 
 
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
 
  private
    { private declarations }
  public
    { public declarations }
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  end;
 
var
  Form1: TForm1;
  Shape: TShape;
  stat_x, stat_y, x1, y1: Integer;
  flag: boolean = false;
 
implementation
 
{$R *.lfm}
 
 
{ TForm1 }
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Top:= 0;
  Form1.Left:= 0;
  Form1.windowstate:= wsfullscreen;
  Shape:= TShape.create(Form1);
  Shape.Shape:= stRectangle;
  Shape.Width:= Form1.width;
  Shape.Height:= 70;
  Shape.parent:= Form1;
  PaintBox1.Top:= 70;
 
  Image1.OnMouseUp:= Image1MouseUp;
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
  Shape.Width:=Form1.width;
  PaintBox1.width:=Form1.width;
  PaintBox1.Height:=Form1.height - 70;
end;
 
procedure TForm1.MenuItem5Click(Sender: TObject);
begin
  Image1:=TImage.create(Form1);
  OpenDialog1.title:='Загрузить вибране зображення: ';
  if OpenDialog1.Execute then
  begin
    Image1.Picture.loadfromfile(OpenDialog1.Filename);
    Image1.width:= Image1.picture.width;
    Image1.height:= Image1.picture.height;
    Image1.autosize:= true;
    Image1.parent:= Form1;
 
  end;
end;
 
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  stat_x:=X;
  stat_y:=Y;
end;
 
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not (ssLeft in Shift) then
  Exit();
  with PaintBox1.Canvas do begin
    MoveTo(stat_x, stat_y);
    LineTo(X,Y);
  end;
  stat_x:=X;
  stat_y:=Y;
end;
 
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  flag:=false;
end;
 
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2018, 19:12
Ответы с готовыми решениями:

Ошибка "Error: Wrong number of parameters specified for call to "FloatToStrF""
и снова я. задание: создайте программу, в которой можно найти максимальное из четырех заданных...

Error: Wrong number of parameters specified for call to "Image5Click" при назначении обработчика
Динамически создаем Image. Необходимо чтобы при нажатии на нее вызывалась procedure...

Error: Call by var for arg no. 3 has to match exactly: Got "_WIN32_FIND_DATAA" expected "WIN32_FIND_DATAA"
Lazarus отказывается компилировать данный код function GetFileNameFromLink( LinkFileName:...

Ошибка "Fatal: Syntax error, ";" expected but "." found"
звучит задание: создай программу, в которой можно преподнести введенное пользователем число к...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32587 / 21057 / 8133
Регистрация: 22.10.2011
Сообщений: 36,330
Записей в блоге: 8
04.04.2018, 19:41 2
Лучший ответ Сообщение было отмечено Joey как решение

Решение

Pascal
1
Image1.OnMouseUp:= @Image1MouseUp;
1
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 14
04.04.2018, 20:50  [ТС] 3
Спасибо, очень помогло!

Добавлено через 5 минут
volvo, ток у меня ещё одна ошибка появилась

unit1.pas(35,15) Error: Forward declaration not solved "ImageMouseDown(TObject;TMouseButton;TShiftState;LongInt;LongInt);"
----------------------------------------------------------------------------------------------------------------------------------------------------
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
 
 
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
  Image:=TImage.create(Form1);
  OpenDialog1.title:='Загрузить вибране зображення: ';
  if OpenDialog1.Execute then
  begin
    Image.Picture.loadfromfile(OpenDialog1.Filename);
    Image.width:= Image.picture.width;
    Image.height:= Image.picture.height;
    Image.autosize:= true;
    Image.parent:= Form1;
    Image.OnMouseDown:= @ImageMouseDown;
    Image.OnMouseUp:= @ImageMouseUp;
end;
 
end;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32587 / 21057 / 8133
Регистрация: 22.10.2011
Сообщений: 36,330
Записей в блоге: 8
04.04.2018, 20:52 4
Описание метода - вижу, реализации в приведенном фрагменте нет. Она есть у тебя в проекте?
0
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 14
04.04.2018, 21:15  [ТС] 5
Весь проект
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    OpenDialog1: TOpenDialog;
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure MenuItem4Click(Sender: TObject);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure PaintBox1Resize(Sender: TObject);
  private
 
  public
    procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
 
  end;
 
var
  Form1: TForm1;
  Shape: TShape;
  Image: TImage;
  stat_x, stat_y, x1, y1: integer;
  Flag: boolean = false;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if not (ssLeft in Shift) then
  Exit();
  with PaintBox1.Canvas do begin
    MoveTo(stat_x, stat_y);
    LineTo(X,Y);
  end;
  stat_x:=X;
  stat_y:=Y;
end;
 
procedure TForm1.PaintBox1Resize(Sender: TObject);
begin
  Shape.Width:=Form1.width;
  PaintBox1.width:=Form1.width;
  PaintBox1.Height:=Form1.height - 70;
end;
 
procedure TForm1.ImageMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
begin
  Flag:= False;
end;
 
procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
begin
  x1:=X;
  y1:=Y;
  Flag:=True;
end;
 
procedure TForm1.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if flag then
  with TImage(Sender) do
  begin
    Left:=Left+X-x1;
    Top:=Top+Y-y1;
  end;
end;
 
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  stat_x:=X;
  stat_y:=Y;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.Top:= 0;
  Form1.Left:= 0;
  Form1.windowstate:= wsfullscreen;
  Shape:= TShape.create(Form1);
  Shape.Shape:= stRectangle;
  Shape.Width:= Form1.width;
  Shape.Height:= 70;
  Shape.parent:= Form1;
  PaintBox1.Top:= 70;
end;
 
procedure TForm1.MenuItem4Click(Sender: TObject);
begin
  Image:=TImage.create(Form1);
  OpenDialog1.title:='Загрузить вибране зображення: ';
  if OpenDialog1.Execute then
  begin
    Image.Picture.loadfromfile(OpenDialog1.Filename);
    Image.width:= Image.picture.width;
    Image.height:= Image.picture.height;
    Image.autosize:= true;
    Image.parent:= Form1;
    Image.OnMouseDown:= @ImageMouseDown;
    Image.OnMouseUp:= @ImageMouseUp;
    Image.OnMouseMove:= @ImageMouseMove;
end;
 
end;
 
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32587 / 21057 / 8133
Регистрация: 22.10.2011
Сообщений: 36,330
Записей в блоге: 8
04.04.2018, 21:16 6
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

procedure TForm1.ImageMouseDown добавь в реализацию...
1
0 / 0 / 0
Регистрация: 04.04.2018
Сообщений: 14
04.04.2018, 21:25  [ТС] 7
Спасибо, пропустил)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2018, 21:25
Помогаю со студенческими работами здесь

Код с ошибкой, Error: Found declaration, Error: Wrong number of parameters specified for call
Задние: Заполнить двумерный массив случайными числами. Размерность массива и диапазон генерации...

Светофор: ошибка "Wrong number of parameters specified"
Подсвечивает ошибку(Wrong number of parameters specified for call to "OnShape"), помогите исправить...

Ошибка в программе "Compile error: Wrong number of arguments or invalid property assignment"
Ошибка: Compile error: Wrong number of arguments or invalid property assignment Sub answ() s =...

Error. number-53, File not found: vba6.dll. String shell "call.exe"
Есть вопросик. Я вставил в свою прогу этот код: Public Sub StartProgram(StringS As String) Dim...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru