Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 818

/ вопрос решён /

Здравствуйте, уважаемые эксперты!

На этот раз меня интересует слудущее:

- У меня проект состоит из нескольких форм - можно ли сделать так, что бы перемещая одну форму проекта, перемещались все в след за ней?

- Можно ли сделать так, что бы, например, (используя кнопку PNGButton) при наведении на нее курсора - отдельной картинке присавивалась другая - ну, например - при наведении на PNGButton1 присваивалась другая картинка для Image1 - или что-то в этом роде?

Спасибо...

Violina Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задала: Violina (статус: Посетитель)
Вопрос отправлен: 16 августа 2008, 15:17
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Аксион

Здравствуйте, Violina!
По поводу 1 вопроса, да такое воможно вот вам пример для синхронногоперемещения 2х форм, посмотрите, есле у вас больше форм то добавите просто тоже амое для них.
(Х1,Y1:integer вписываем в public)
Дальше, это пишем в свойство OnMouseDown для ГЛАВНОЙ формы (т.е. той которую вы будите перемещать):
X1 := X;
Y1 := Y;
Form1.BringToFront;
А это в OnMouseMove тоже для ГЛАВНОЙ формы:
if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
begin
Form1.Left := Form1.Left + X - X1;
Form1.Top := Form1.Top + Y - Y1;
Form2.Left := Form2.Left + X - X1;
Form2.Top := Form2.Top + Y - Y1;
end;

Должно работать (у меня работает) есле что то пишите на мини-форуме, разберемся ;)

Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 16 августа 2008, 16:18
Оценка за ответ: 5

Ответ #2. Отвечает эксперт: Dron

Здравствуйте, Violina!
По второму вопросу. Почитал я мини-форум и понял, что у вас вся загвоздка в мерцании.
Чтобы избавиться от мерцания, нужно запретить постоянное обновление второй картинки. Если загружать вторую картинку по событию OnMouseMove, мерцание будет всегда, ведь при любом перемещении курсора (даже на один пиксель) "дёргается" это событие. Решение: использовать события "прихода" и "ухода" мыши. Такие события есть у большинства компонент. Например, у TImage они называются OnMouseEnter и OnMouseLeave. Пример:

procedure TForm1.Image1MouseEnter(Sender: TObject);
begin
  Image2.Visible:=True
end;
 
procedure TForm1.Image1MouseLeave(Sender: TObject);
begin
  Image2.Visible:=False
end;
Всё, никакого мерцания. При наведении курсора на Image1 станет видимой Image2, при убирании курсора вторая картинка пропадёт.
Аналогичные события есть у TLabel, TButton и т.д. Обнаружить их несложно - просто прочтите названия всех событий OnMouse*.
Удачи!

Ответ отправил: Dron (статус: Студент)
Время отправки: 17 августа 2008, 15:04
Оценка за ответ: 5

Комментарий к оценке: Огромное спасибо!

Мини-форум вопроса

Всего сообщений: 67; последнее сообщение — 17 августа 2008, 23:32; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2] [3] [4]

Violina

Violina (статус: Посетитель), 17 августа 2008, 22:51 [#61]:

А Вы через Internet Explorer зайти попробуйте 8)
Вадим К

Вадим К (статус: Академик), 17 августа 2008, 23:03 [#62]:

вот только как? нет у меня его... Не Windows единым жив человек.
Галочка "подтверждения прочтения" - вселенское зло.
Violina

Violina (статус: Посетитель), 17 августа 2008, 23:20 [#63]:

Специально для Вас я сделала скриншот!

http://s50.radikal.ru/i130/0808/7a/7034e709e50c.jpg
Вадим К

Вадим К (статус: Академик), 17 августа 2008, 23:23 [#64]:

жалко мне вас. Хватит оффтопить.
Галочка "подтверждения прочтения" - вселенское зло.
Violina

Violina (статус: Посетитель), 17 августа 2008, 23:25 [#65]:

И чего же это Вам меня жалко? хорошо - перестаю - толкьо на этот фопрос хочу узнать ответ!
Вадим К

Вадим К (статус: Академик), 17 августа 2008, 23:29 [#66]:

я же сказал- пишите в асю.
Галочка "подтверждения прочтения" - вселенское зло.
Violina

Violina (статус: Посетитель), 17 августа 2008, 23:32 [#67]:

Не достаточно Вы меня заинтириговали, что б писать в асю 8) Ладно - удачи) Всем еще раз большое спасибо! Оффтоп закончен!

31 января 2011, 19:31: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Страницы: [« Предыдущая] [1] [2] [3] [4]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 25 апреля 2026, 22:05
Выполнено за 0.03 сек.