|
Вопрос # 1 818/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
На этот раз меня интересует слудущее:
- У меня проект состоит из нескольких форм - можно ли сделать так, что бы перемещая одну форму проекта, перемещались все в след за ней?
- Можно ли сделать так, что бы, например, (используя кнопку PNGButton) при наведении на нее курсора - отдельной картинке присавивалась другая - ну, например - при наведении на PNGButton1 присваивалась другая картинка для Image1 - или что-то в этом роде?
Спасибо...
 |
Вопрос задала: 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 (статус: Посетитель), 17 августа 2008, 13:12 [#21]:
О.. вроде получилось.. большое спасибо - один нюанс остался - у меня когда стартует проект - он стартует не с главной страницы - а с последнего 5-го фрэйма - и кнопки не сразу активируются - как это испрасить можно? Чтобы с первой формы стартовал проект..
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 13:14 [#22]:
просто в свойствах фреймов сделайте значение visible false
(т.е. в списке копонентов первой формы находите например frame51 и ставите visible false )
|
|
Violina (статус: Посетитель), 17 августа 2008, 13:22 [#23]:
О... ну теперь все - разобралась... огромное просто спасибо! Вот еще один тогда вопрсоик - такое - чисто декоративного характера - можно сделать так, что бына последней странице становилась неактивной кнопка вперед - а на первой назад?
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 13:35 [#24]:
Можно.
Просто добвьте на форму компонент Timer
В его обработчик впишите:
if frame41.Visible=true then // тут нужно указать мя последнего фрайм
begin
button2.Enabled:=false;
end
else
button2.Enabled:=true;
if frame21.Visible=false then // а тут первого
begin
button1.Enabled:=false;
end
else
button1.Enabled:=true;
и в свойствах компонента поставте interval равный 1 (1000 по умолчанию)
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 13:36 [#25]:
А про что книга то кстати?
|
|
Violina (статус: Посетитель), 17 августа 2008, 14:02 [#26]:
Все прекрасно - большое спасибо - книга - это типа Strategy Guide для игры - можно сказать "плагиатом" занимаюсь - америкосы по 6 баксов продают - но дают 5-ти минутную пробную версию - я наскринила и решила сделать тоже самое - конечно не в корыстных целях - так - для коллекции 8) Ладно - с этим покончено - останется просто сесть и сделать! Огромное еще раз спасибо!
А вот второй проект у меня немного под вопросом - делаю автозапуск для сериала - но на кнопки не помещаются названия серий - хочу сделать так, чтобы - при наведении на кнопку Эпизод 1 где-то появлялось название этого эпизода - в событии OnMove ставила - но там порнография получается какае-то! Картинка с названием дергается как на новогодней вечеринке... Вот я и думаю - может как-то можно сделать - что бы при наведении на кнопк 1 раз присваивалось значение картинке - ато прока проведешь по кнопке курсором - оно 300 раз поставится меняется!
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 14:03 [#27]:
хм...а всплывающие подсказки не подойдут?
|
|
Violina (статус: Посетитель), 17 августа 2008, 14:09 [#28]:
А как это будет выглядить?
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 14:13 [#29]:
Ну..не очень красиво..сами попробуйте..у компонента (любого) в свойство Hint впишите что угодно, а свойство ShowHint измените на true навелите курсор на компонент и посмотрите.
|
|
Violina (статус: Посетитель), 17 августа 2008, 14:23 [#30]:
Да.. не сильно конечно.. 8( А цвет и шрифт менять нельзя этой подсказки? Может еще как-то можно сделать...?
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 14:30 [#31]:
Вроде нельзя... но можно в интернете поискать компоненты которые этим занимаются...
|
|
Violina (статус: Посетитель), 17 августа 2008, 14:35 [#32]:
Эх - я как вспомню, как я устанавливала PNGButton - аж дурно становится - так что тут лучше уступить мне)... ну все равно - огромное Вам спасибо за помощь! 8)
|
|
Violina (статус: Посетитель), 17 августа 2008, 16:05 [#33]:
Dron, большое Вам спасибо! Работает на ура!
|
|
Dron (статус: Студент), 17 августа 2008, 16:30 [#34]:
Всегда рад помочь
С уважением.
|
|
Вадим К (статус: Академик), 17 августа 2008, 17:05 [#35]:
Почитал я всю вашу ребята переписку - волосы дыбом стали. И если на Блазера я даже и не надеялся, что он предложит красивое решение, то Dron должен был бы.
Теперь дальше. Каждая страница "книги" на самом деле это картинка (с TImage) и пару кнопок вперёд/назад)? и ничем, кроме картинки они не отличаются???
Тогда зачем делать 70 форм/фреймов. можно сделать всё в одной форме.
Теперь по поводу таймера, который применяется для блокирования кнопок. Это решение не то что, через одно место, за предлагание такого решение бить по пальцам надо. Ну почему в конституции ни Украины, не России нет статьи о "рекомендации заведомо плохого решения". Хотя её не будет. Много людей садить прийдётся.
Таймер в данном случае не надо. если уж вы сделали на каждую страницу фрейм и перейти с одной страницы на другую можно только нажатием на кнопку, то кто мешает проверять, какая страница будет отображена и блокировать кнопки? если же кнопки находяться на каждом фрейме (о ужос! я представил себе, если надо будет поднять все кнопки на 5 пикселей выше), то кто мешает их сразу в редакторе заблокировать?
Жду объяснений от кажой из сторон.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Dron (статус: Студент), 17 августа 2008, 17:21 [#36]:
Я прочитал только 3-ую и 4-ую страницы мини-форума, после чего дал ответ. Читать, о чём говорили раньше, не было ни особого желания, ни времени. А тут смотрю - просто OnMouseMove говорится - вот и решил ответить. Разговор про фреймы не видел вообще - только ответ Блазера на первый из вопросов.
Ну собственно, делать столько фреймов - это действительно бред... Неужели ни разу не возникло мысли о том, чтобы сделать как-то проще? Представляю, если в каждом фрейме ещё вставить тот код, который дал я... Ну вообще ужас.
С уважением.
|
|
Аксион (статус: 4-ый класс), 17 августа 2008, 19:11 [#38]:
И вообще вопрос стоял о 70 формах (на который я ответил) ...такчто фреймы и таймер это не в счёт
|
|
Вадим К (статус: Академик), 17 августа 2008, 19:14 [#39]:
а подумать, Блазер?
По поводу "А работает же"
А теперь представим, что вся виндовс так написана. (а я не сомневаюсь, что половина висты именно так и написана) и понимаем, почему всё так "хорошо" работает.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Violina (статус: Посетитель), 17 августа 2008, 19:34 [#40]:
Так, что за шум а драки нет? 8) Не - на счет таймера - то довольно мило - у меня не кнопки на 70-ти формах (у меня раньше так было) - а только на одной! А щас нормлаьно! Да ладно - я не линивая - сделаю 70 фрэймов - у меня раньше было 70 форм - и в каждой я програмировала 3 кнопки, 1 картинку а так же размеры форум и т. д. - вот это было да.. так что для меня сейчас 70 фрэймов - это рай! В общем я с мысли сбилась - у меня вопросик небольшой:
- наверное по умолчанию стоит задержка в смене фрэймов - то у меня медленно как-то их меняет - это можно как-то исправить?
|
Страницы: [« Предыдущая] [1] [2] [3] [4] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|