|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите пожалуйста с формой в Borland Delphi 7
Доброго времени суток. В проекте есть "дочерняя", подчиненная форма (Height=1200 и Width=1600). На этой форме есть три панели Panel, несколько картинок Image и кнопку Button. При нажатии на кнопку Button срабатывает процедура закрытия формы:
Код:
... procedure TForm4.Button1Click(Sender: TObject); begin Form4.Close; end; ... Панель Panel1 отображает название формы - тоже не так важно. При нажатии на панель Panel2 написан следующий код: ... Код:
procedure TForm4.Panel2Click(Sender: TObject); begin if Image2.Left<800 then if Image3.Left<800 then ... if Image23.Left>587 then begin Panel3.Visible:=True; Panel3.Color:=clGreen; Panel3.Caption:='Да!' end else Panel3.Visible:=True; Panel3.Color:=clRed; Panel3.Caption:='Не-а' end; ... Картинки Image2, Image3,...,Image23 имеют следующий код (небольшое различие только в прописывании события MouseMove для определенной картинки Image): Код:
... procedure TForm4.Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button<>mbLeft then move:=false //если нажали не левой кнопкой, то перемещать не будем! else begin move:=true; x0:=x; y0:=y; end; end; procedure TForm4.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if move then begin image2.Left:=image2.Left+x-x0; image2.Top:=image2.Top+y-y0; end; end; procedure TForm4.Image2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:=false; end; procedure TForm4.Image3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button<>mbLeft then move:=false //если нажали не левой кнопкой, то перемещать не будем! else begin move:=true; x0:=x; y0:=y; end; end; procedure TForm4.Image3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if move then begin image3.Left:=image3.Left+x-x0; image3.Top:=image3.Top+y-y0; end; end; procedure TForm4.Image3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:=false; end; ... lmikle: пользуемся тегами! При запуске проекта из главной формы открывается данная "дочерняя", подчиненная форма. Кнопка Button1 работает правильно, а при нажатии на панель Panel2: - не переместив ни одной картинки Image, появляется панель Panel1, но неправильно выбран цвет при правильном расположении картинок Image, т.е. красный clRed; - переместив хотя бы одну картинку Image, панель Panel1 не появляется совсем. Подскажите пожалуйста, что не так? Последний раз редактировалось lmikle, 22.11.2016 в 23:44. |
#2
|
|||
|
|||
Проблема, похоже, в этом коде (ну, если код представлен правильно):
Код:
procedure TForm4.Panel2Click(Sender: TObject); begin if Image2.Left<800 then if Image3.Left<800 then ... if Image23.Left>587 then begin Panel3.Visible:=True; Panel3.Color:=clGreen; Panel3.Caption:='Да!' end else Panel3.Visible:=True; Panel3.Color:=clRed; Panel3.Caption:='Не-а' end; ... Код:
if (Image2.Left<800) and (Image3.Left<800) and ... and (Image23.Left>587) then ... else ... |
#3
|
||||
|
||||
Можно упростить код, если удалить все обработчики жима по имиджам, взамен оставив только эту "троицу"
Код:
procedure TForm4.Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button = mbLeft then // если нажали левой кнопкой, то перемещать будем! begin move:= true; x0:= X; y0:= Y; end; end; procedure TForm4.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var s: TImage absolute Sender; begin if move then s.SetBounds(s.Left+X-x0, s.Top+Y-y0, s.Width, s.Height); end; procedure TForm4.Image2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:= false; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 23.11.2016 в 12:41. |