| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Delphi | Image | OnMouseMove |
| Автор: ReZuS 12.7.2010, 12:32 |
| Народ подскажите пожалуйста как сделать чтобы при наведении курсора на компоненту image она исчезала, или при убирание корсара появлялась! Или наоборот при наведении курсора в определенные координаты появлялась и исчезала! Я вот думал с помощью свойства visibla и события OnMouseMove! Но что-то не выходит... P.S. Только если можно поподробнее пожалуйста!!! |
| Автор: Keeper89 12.7.2010, 14:13 |
| 1) Запомнить координаты и размеры изображения. 2) В MouseMove у Image убирать картинку, В MouseMove у объекта, на котором она находится проверять координаты для ее отобажения. |
| Автор: ReZuS 12.7.2010, 14:20 |
| 1) Ну вот допустим размер изображенииея 89х89,а координаты 0,360! 2) А здесь бы поподробнее пожалуйста! А то я совсем новичок:( |
| Автор: Frees 12.7.2010, 14:36 | ||
|
| Автор: PsiMagistr 12.7.2010, 14:37 | ||
Ну например так:
Х - переменная хранящая горизонтальную координату мышки. Таким образом, если горизонталь превысит 200 единиц, картинка исчезнет. Во всех других случаях будем ее показывать. |
| Автор: Frees 12.7.2010, 14:40 |
| ~FoX~, если Image виден и возить над ним мышкой то MouseMove форме не будет приходить |
| Автор: ~FoX~ 12.7.2010, 14:45 |
| Frees, Сори, я думал наобарот надо... )))) Удалил пост... |
| Автор: ReZuS 12.7.2010, 14:51 |
| Frees, все сделал как ты мне написал, но рекации ни какой:( |
| Автор: Frees 12.7.2010, 14:54 |
Image у тебя непосредственно на форме лежит? если нет то FormMouseMove должен быть у того контрола на котором лежит Image Добавлено @ 14:55 эффект от моего примера такой - наводишь на левый верхний угол мышь картинка исчезла, убираешь мышь появляется |
| Автор: ReZuS 12.7.2010, 15:06 |
| Хм...чтоб не путаться у себя в коде, даже создал новую чистую форму, добавил картинку в верхний левый угол и прописал твой код, и всё равно ни чего:(:( |
| Автор: PsiMagistr 12.7.2010, 15:10 | ||||
Вот. Если я правильно понял, что вы хотите. Теперь если мышь будет попадать в площадь картинки, она будет становиться видимой. Иначе - нет. Можно даже так сделать:
|
| Автор: PsiMagistr 12.7.2010, 16:07 |
| Вот еще один вариант. теперь если: Навести мышь на картинку - она исчезает. Убрать мышь из координатной "зоны" невидимой картинки - она появляется. |
| Автор: ReZuS 12.7.2010, 16:54 |
| Вообщем все полусилось, спасибо за помощь! Но появилась проблема, у меня на форме три компонента image, одна на всю форму и две других маленькие одинаковых размеров, и одна компонента под другой! И вот чтобы при наведение курсора верхняя компонента image исчезала, но я делаю все как надо но она почему то не исчезает!!! Посмотрите и помогите еще пожалуйста!!! |
| Автор: PsiMagistr 12.7.2010, 17:23 |
| Погодите немного. Я постараюсь Вам помочь. Просмотрите этот вариант. Так же я убрал из описания один модуль. В дельфи 6 он не открывается. Итак: При наведении мыши на картинку она исчезает. При убирании указателя с зоны невидимой картинки она появляется RezuS, скачайте исполняемый файл со второй страницы. |
| Автор: ReZuS 12.7.2010, 17:35 | ||
А почему архив такой маленький? Он у меня не открывается:( |
| Автор: PsiMagistr 12.7.2010, 17:47 |
| Давайте сделаем так. Запустите этот исполняемый файл. Просмотрите как ведет себя картинка. Если Вас устроит я дам Вам код. |
| Автор: ReZuS 12.7.2010, 18:12 | ||
Ага устраивает, если я правильно понимаю то моя затея получится!!! Вроде... Выложи код я проверю! И спасибо за помощь!!! |
| Автор: PsiMagistr 12.7.2010, 18:24 | ||||||||
Хорошо. Итак приступим. Найдите у себя в проекте то изображение которое должно исчезать. В инспекторе объектов отыщите обработчик для этого изображения OnMouseMove. Туда запишите:
Таким образом должно получиться:
Теперь отыщите OnMouseMove изображения фона. (обратите внимание, не формы (!) а самого изображения-фона, с единорогом которое!) и впишите туда:
У вас должно получится:
Надеюсь все у Вас получится. Отпишитесь в любом случае. |
| Автор: ReZuS 12.7.2010, 18:31 |
| PsiMagistr, да, да, да, да, всё получилось |
| Автор: PsiMagistr 12.7.2010, 18:34 |
| Всего Вам доброго! Обращайтесь. |
| Автор: ReZuS 12.7.2010, 18:41 | ||
А если мне еще нужно аналогичную картинку добавить я в изоброжение фона добавляю?
|
| Автор: PsiMagistr 12.7.2010, 18:47 |
| Если Вам нужны аналогичные операции для второй картинки и если эта вторая я картинка лежит на изображении-фоне, то да. |
| Автор: ReZuS 12.7.2010, 18:51 | ||||||
Что я не так делаю? Он на этой строке ругается
|
| Автор: PsiMagistr 12.7.2010, 19:00 | ||
| Для начала проверьте есть ли у Вас картинка с именем (Name) img3. Скорей всего у Вас нет картинки с таким именем. В конце каждой строки должен стоять оператор точка с запятой. Немного подправил код.
|
| Автор: ReZuS 12.7.2010, 19:11 | ||
Да нет все на месте, имж имеется Вот какие ошибки выдает: [Error] Unit1.pas(71): Undeclared identifier: 'y' [Error] Unit1.pas(78): Missing operator or semicolon [Error] Unit1.pas(22): Unsatisfied forward or external declaration: 'TForm1.Img3MouseMove' [Fatal Error] Project2.dpr(7): Could not compile used unit 'Unit1.pas' |
| Автор: PsiMagistr 12.7.2010, 19:12 |
| Шлите исходник - посмотрю. |
| Автор: ReZuS 12.7.2010, 19:21 | ||
В исходнике там лишние вещи прошу на них внимания не обращать! |
| Автор: ReZuS 12.7.2010, 19:28 |
| Ага)) спасибо, тупанул! А изображение3 проподает но почему то не появляется! |
| Автор: PsiMagistr 12.7.2010, 19:32 |
| Проверьте лежит ли это изображение именно на фоне (картинка единорог) или на каком нибудь другом изображении. Это очень важно. |
| Автор: ReZuS 12.7.2010, 19:39 | ||
Ну я так понимаю на фоновой картинке оно лежит: |
| Автор: PsiMagistr 12.7.2010, 19:50 | ||||||
|
| Автор: ReZuS 12.7.2010, 19:56 |
| Все робит! еще раз спасибо за помощь |
| Автор: PsiMagistr 13.7.2010, 08:04 |
| а что хоть пишешь то? |
| Автор: ReZuS 14.7.2010, 13:04 |
| Тест в делфи по делфи |
| Автор: RedFire 5.5.2011, 14:20 | ||
Привет всем, пробую по вашему коду написать кнопки ток чет не получается((
что тут не так, первая кнопка нормально при наведении пропадает появляется другая, а вторая даже пропадать не хочет... |