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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2016, 19:18   #1
V1ktor1
 
Регистрация: 11.09.2016
Сообщений: 7
По умолчанию Помогите пожалуйста с формой в Borland Delphi 7

Доброго времени суток. В проекте есть "дочерняя", подчиненная форма (Height=1200 и Width=1600). На этой форме есть три панели Panel, несколько картинок Image и кнопку Button. При нажатии на кнопку Button срабатывает процедура закрытия формы:
Код:
...
procedure TForm4.Button1Click(Sender: TObject);
begin
Form4.Close;
end;
...
Картинка Image1 содержит фон для формы - это не так важно.
Панель 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;
...
Панель Panel3 должна менять свои свойства Properties (Visible, Color, Caption) в зависимости от результата процедуры при нажатии панели Panel2.
Картинки 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;
...
При запуске проекта из главной формы открывается данная "дочерняя", подчиненная форма. Кнопка Button1 работает правильно, а при нажатии на панель Panel2:
- не переместив ни одной картинки Image, появляется панель Panel1, но неправильно выбран цвет при правильном расположении картинок Image, т.е. красный clRed;
- переместив хотя бы одну картинку Image, панель Panel1 не появляется совсем.
Подскажите пожалуйста, что не так?

Последний раз редактировалось Вадим Мошев; 22.11.2016 в 21:13.
V1ktor1 вне форума Ответить с цитированием
Старый 23.11.2016, 09:49   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
не переместив ни одной картинки Image, появляется панель Panel1, но неправильно выбран цвет при правильном расположении картинок Image, т.е. красный clRed;
стало быть Image23 ИЗНАЧАЛЬНО "убежал" далеко влево.
Цитата:
Код:
if Image23.Left>587 then 
begin
........
end
else
.....
Panel3.Color:=clRed;
Если конечно же не было ничего в опущенных if
Цитата:
Код:
if Image2.Left<800 then
if Image3.Left<800 then
...
Цитата:
панель Panel1 не появляется совсем.
а где же код по управлению этой панелью.
Код:
Panel1.Visible:=true;/False;
да и нужен ли он если
Цитата:
Панель Panel1 отображает название формы - тоже не так важно.
А картинки(Image) размещены(Parent) на панелях или на самой форме.
в случае формы идет перекрытие показа (Z-порядок)
У тебя есть СТОПКА изображений( и Image и Panel одинаково есть изображения c точки зрения формы, сложенных в стопку) и видна ПОЛЬЗОВАТЕЛЮ будет только "верхняя", хотя с точки зрения программы видны (visible=true) могут быть ВСЕ.
для "перевода наверх" BringToFront.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить 3 задания, с формой пожалуйста (либо перечислением компонентов для формы) AlexandraGrey Lazarus, Free Pascal, CodeTyphon 4 11.11.2015 09:34
Borland C++ Помогите,пожалуйста millersofi C++ Builder 3 13.05.2015 21:33
Пожалуйста помогите с формой входа!!! Ramil999 Помощь студентам 1 01.12.2013 17:57