Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2011, 12:00   #1
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
Сообщение мышь в делфи

здравствуйте..помогите доработать программу так что бы изображение можно было передвигать с помощью мыши:
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);

begin
Image1.Canvas.MoveTo(285,167);
Image1.Canvas.LineTo(275,157);
Image1.Canvas.LineTo(273,168);
Image1.Canvas.LineTo(285,167);

Image1.Canvas.MoveTo(265,155);
Image1.Canvas.LineTo(255,146);
Image1.Canvas.LineTo(253,158);
Image1.Canvas.LineTo(265,155);

Image1.Canvas.MoveTo(290,152);
Image1.Canvas.LineTo(280,162);
Image1.Canvas.MoveTo(270,140);
Image1.Canvas.LineTo(260,150);
Image1.Canvas.MoveTo(300,230);
Image1.Canvas.LineTo(300,170);
Image1.Canvas.MoveTo(350,200);
Image1.Canvas.LineTo(180,200);
Image1.Canvas.MoveTo(300,200);
Image1.Canvas.LineTo(230,150);
Image1.Canvas.LineTo(230,250);
Image1.Canvas.LineTo(300,200)

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.04.2011 в 15:08.
Сергей58rus вне форума Ответить с цитированием
Старый 24.04.2011, 13:36   #2
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
По умолчанию

вот вся программа:
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    procedure N2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.N2Click(Sender: TObject);

begin
Image1.Canvas.MoveTo(285,167);
Image1.Canvas.LineTo(275,157);
Image1.Canvas.LineTo(273,168);
Image1.Canvas.LineTo(285,167);

Image1.Canvas.MoveTo(265,155);
Image1.Canvas.LineTo(255,146);
Image1.Canvas.LineTo(253,158);
Image1.Canvas.LineTo(265,155);

Image1.Canvas.MoveTo(290,152);
Image1.Canvas.LineTo(280,162);
Image1.Canvas.MoveTo(270,140);
Image1.Canvas.LineTo(260,150);
Image1.Canvas.MoveTo(300,230);
Image1.Canvas.LineTo(300,170);
Image1.Canvas.MoveTo(350,200);
Image1.Canvas.LineTo(180,200);
Image1.Canvas.MoveTo(300,200);
Image1.Canvas.LineTo(230,150);
Image1.Canvas.LineTo(230,250);
Image1.Canvas.LineTo(300,200)




end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if form1.Button1.Tag = 100 then
 begin
  image1.Top:= form1.ClientHeight+10 - form1.Image1.Height-20;
  form1.Button1.Tag:=0;
 end
else
 begin
  Image1.Top :=   Image1.Top + 10;

  form1.Button1.Tag:=0;
 end;
end;





procedure TForm1.Button2Click(Sender: TObject);
begin
if form1.Button2.Tag = 100 then
 begin
  image1.Top:= form1.ClientHeight+10 - form1.Image1.Height-20;
  form1.Button2.Tag:=0;
 end
else
 begin
  Image1.Top :=   Image1.Top - 10;

  form1.Button2.Tag:=0;
 end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
if form1.Button1.Tag = 100 then
 begin
  image1.Left:= form1.ClientHeight+10 - form1.Image1.Height-20;
  form1.Button1.Tag:=0;
 end
else
 begin
  Image1.Left :=   Image1.Left + 10;

  form1.Button1.Tag:=0;
 end;
end;




procedure TForm1.Button4Click(Sender: TObject);
begin
if form1.Button2.tag = 100 then
 begin
  image1.Left:= form1.ClientHeight+10 - form1.Image1.Height-20;
  form1.Button2.Tag:=0;
 end
else
 begin
  Image1.Left :=   Image1.Left - 10;

  form1.Button2.Tag:=0;
 end;



end;

end.

end.
end;

end.

Последний раз редактировалось Stilet; 24.04.2011 в 13:59.
Сергей58rus вне форума Ответить с цитированием
Старый 24.04.2011, 13:59   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не особо поняв задание могу предложить простенький пример:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var    ax,ay:integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
begin
 with Canvas do begin
      MoveTo(285+ax,167+ay);
      LineTo(275+ax,157+ay);
      LineTo(273+ax,168+ay);
      LineTo(285+ax,167+ay);

      MoveTo(265+ax,155+ay);
      LineTo(255+ax,146+ay);
      LineTo(253+ax,158+ay);
      LineTo(265+ax,155+ay);

      MoveTo(290+ax,152+ay);
      LineTo(280+ax,162+ay);
      MoveTo(270+ax,140+ay);
      LineTo(260+ax,150+ay);
      MoveTo(300+ax,230+ay);
      LineTo(300+ax,170+ay);
      MoveTo(350+ax,200+ay);
      LineTo(180+ax,200+ay);
      MoveTo(300+ax,200+ay);
      LineTo(230+ax,150+ay);
      LineTo(230+ax,250+ay);
      LineTo(300+ax,200+ay);
  end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 ax:=x-200;ay:=y-200;
 Repaint;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.04.2011, 21:07   #4
Сергей58rus
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 28
По умолчанию

Мне значит заново придется рисовать объект дописывая ax, ay:
procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Canvas.MoveTo(285,167);
Image1.Canvas.LineTo(275,157);
Image1.Canvas.LineTo(273,168);
Image1.Canvas.LineTo(285,167);

Image1.Canvas.MoveTo(265,155);
Image1.Canvas.LineTo(255,146);
Image1.Canvas.LineTo(253,158);
Image1.Canvas.LineTo(265,155);

Image1.Canvas.MoveTo(290,152);
Image1.Canvas.LineTo(280,162);
Image1.Canvas.MoveTo(270,140);
Image1.Canvas.LineTo(260,150);
Image1.Canvas.MoveTo(300,230);
Image1.Canvas.LineTo(300,170);
Image1.Canvas.MoveTo(350,200);
Image1.Canvas.LineTo(180,200);
Image1.Canvas.MoveTo(300,200);
Image1.Canvas.LineTo(230,150);
Image1.Canvas.LineTo(230,250);
Image1.Canvas.LineTo(300,200);
end;
.....


а потом использовать:
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
begin
ax:=x-100;
ay:=y-100;
Repaint;
end;
....


я правильно понял?
Сергей58rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зависает мышь gsg Компьютерное железо 1 16.11.2010 13:30
Мышь Salvatore- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.09.2009 16:57
Мышь Михаил Юрьевич Общие вопросы Delphi 8 09.06.2008 11:23
мышь в паскале. Iceman Паскаль, Turbo Pascal, PascalABC.NET 6 10.03.2008 14:50
Мышь kl45gp Общие вопросы Delphi 7 16.06.2007 22:47