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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2014, 16:41   #1
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию Графика Delphi

Здравствуйте,уважаемые!
Задание.Для всех компонентов, размещенных на панели Рапеl1, запрограммировать перетягивание объектов по панели. Для этого создать для этих компонентов процедуры проработки событий Onmousedown (кнопка нажата), Onmousemove (кнопка мыши удерживается), Onmouseup(кнопка отпущена):

Код:
procedure TForm1.Label2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

  begin
x1:=x;y1:=y; flag:=True;
end;

procedure TForm1.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if flag then with TShape (sender) do begin Left:=Left+x-x1;Top:=Top+y-y1;   end;
end;

procedure TForm1.Label2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
flag:=False;
end;
Объяснение. Если во время выполнения программы кнопка мыши будет нажата в то время, когда ее курсор находится в области компонента Label2, переменные х1 и х2 запоминают координаты размещения фигуры, а флажок flag получит значение True, которое будет означать «перетягивание началось». Если кнопку мыши не отпускать и двигаться, то будет работать процедура Tform1. Label2mousemove, в которой будет происходить перечисление координат объекта Label1 относительно системы координат формы. После того, как кнопка мыши будет отпущена, сработает процедура Tform1. Label2mouseup, где флажок flag получит значение False — перетягивание закончилось.

Вопросы.
1)Здесь я не вижу объявления переменных х1,у1,поэтому компилятор выдает ошибку.2)Тоже самое undeclared identifier 'flag'.
Как решить?
Изображения
Тип файла: jpg Screenshot_1.jpg (16.3 Кб, 142 просмотров)
tane вне форума Ответить с цитированием
Старый 05.02.2014, 23:03   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

описать переменные..
например, сделать их свойством формы (класса) TForm1
Код:
type
  TForm1 = class(TForm)
  procedure Label2MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer);
  procedure Label2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  procedure Label2MouseUp(Sender: TObject; Button: TMouseButton;  
  private
    x1,y1 : integer;
    flag : boolean;
  public
    { Public declarations }
  end;
или вообще, глобальные переменные использовать:
Код:
var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  x1,y1 : integer;
  flag : boolean;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.02.2014, 01:04   #3
tane
Пользователь
 
Регистрация: 14.12.2013
Сообщений: 64
По умолчанию

Спасибо большое)
tane вне форума Ответить с цитированием
Старый 06.02.2014, 03:20   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Первый вариант лучше.
Arigato вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Delphi digital-stream Мультимедиа в Delphi 1 09.04.2012 02:22
Графика в Delphi Dark Raven Помощь студентам 0 26.02.2012 16:30
Графика в Delphi kiss2 Общие вопросы Delphi 2 15.06.2010 13:52
Графика в Delphi novi4ok_Delphi Помощь студентам 0 04.05.2010 10:18