|
Вопрос # 1 808/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Хочу задать такой вопрос - я хочу сделать "анимацию" кнопки - тоесть при наведнии на нее курсором что бы она была другим цветом - это я знаю как сделать, а вот чего я не знаю, это как сделать, что бы при отведении курсора она становилась прежнего цвета! Это наврноем можно сделать так: на заднем плане у меня рисунок - Image1 - я меняю цвет для Image2 - кнопки на этом рисунке - тоесть нужно в событии OnMouseMove для Image1 присвоить значение первоначальной картинки для Image2 - но вот только я не знаю, как это сделать - не одскажите, пожалуста! Заранее спасибо!
 |
Вопрос задала: Violina (статус: Посетитель)
Вопрос отправлен: 7 августа 2008, 11:58
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Аксион
Здравствуйте, Violina! Не мучайтесь :) используйте лучше компонент PNGButton, который входит в пакет pngimage ( http://delphi-coder.ru/files/Components/PNGimage/pngimage.rar ), просто указываете в свойствах 2 картинки (png) в обычном состоянии и когда курсор поверх компонента и .... всё :)
 |
Ответ отправил: Аксион (статус: 4-ый класс)
Время отправки: 7 августа 2008, 13:33
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Feniks
Здравствуйте, Violina!
Вариантов может быть море. Мне как-то надо было сделать компонент аналог линков в браузере, т.е. что бы при наведении мышки на текст он менял цвет, а при отведении - цвет менялся обратно. Решение было простым. Сделал компонент потомок от TLabel и у него добавил два события OnMouseLeave и OnMouseEnter. Далее кладем этот компонент себе на форму и обрабатываем эти два события как нам хочется.
Тоже самое можно сделать и с вашей кнопкой.
Пример кода в приложении.
Приложение: Переключить в обычный режим- (*///////////////////////////////////////////////////////*)
- (*//
- (*// Author: Bird Feniks
- (*// Company: Group of Developers Software
- (*//
- (*////////////////////////////////////////////////////////*)
- unit EMailLabel;
-
- interface
-
- uses
-
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls;
-
- type
-
- TEMailLabel = class(TLabel)
- private
- { Private declarations }
- FOnMouseLeave: TNotifyEvent;
- FOnMouseEnter: TNotifyEvent;
- procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
- procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
- protected
- { Protected declarations }
- public
- { Public declarations }
- published
- { Published declarations }
- property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
- property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
- end;
-
- procedure Register;
-
- implementation
-
- procedure Register;
- begin
- RegisterComponents('GoD Software', [TEMailLabel]);
- end;
-
- { TEMailLabel }
-
- procedure TEMailLabel.CMMouseEnter(var Message: TMessage);
- begin
- if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
- end;
-
- procedure TEMailLabel.CMMouseLeave(var Message: TMessage);
- begin
- if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
- end;
-
- end.
 |
Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 11 августа 2008, 14:24
|
Мини-форум вопроса
Всего сообщений: 11; последнее сообщение — 8 августа 2008, 12:15; участников в обсуждении: 3.
|
Вадим К (статус: Академик), 7 августа 2008, 12:17 [#1]:
есть такие события WM_MOUSE_ENTER и WM_MOUSELEAVE, которые посылаются объекты при наведении указателя мыши и при уходе. правда делать два Image - несколько странный подход, лучше сделать свой компонент.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Violina (статус: Посетитель), 7 августа 2008, 12:47 [#2]:
А можно, пожалуйста, немного поподробнее - опишу проект - тоесть фон - Image - и на этом фоне кнопки - тоже Image - тоесть пишу на них события и они у меня за батоны работают... Если не трудно, подскажите мне код, что бы при наведении менялась картинка (я использую на onMouseMove :
TImage(Sender).Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'\above.bmp'); )
а код при уходе курсора я не знаю... спасибо
|
|
Violina (статус: Посетитель), 7 августа 2008, 14:23 [#3]:
Блазер, большое Вам спасибо - я скачала - а не могли бы Вы мне вкратце рассказать куда, то, что я скачала пихать и как им пользоваться? Спасибо 8)
|
|
Аксион (статус: 4-ый класс), 7 августа 2008, 14:45 [#4]:
В свойствах компонета есть пункты Imagenormal и Imageover, 1 - это обычная артинка (т.е. когда курсор на компонент не наведён), а 2 - это картинка когда курсор над компонентом, картинки загружаются только формата png ( скачать их можно например от сюда http://allday.ru/desktop/desktop_icons/ или сделать самому ) На счёт установки в архиве есть файл pngimage его надо запустить и установить, нажав в строке меню делфи component-install component ( подробнее тут https://expert.delphi-int.ru/question/1792/ )
|
|
Violina (статус: Посетитель), 7 августа 2008, 14:50 [#5]:
Большое спасибо - сейчас буду пробовать - а на какой вкладкеон должен появиться у меня?
|
|
Violina (статус: Посетитель), 7 августа 2008, 15:21 [#6]:
Не знаю, ничего у меня абсолютно не получается с этими компонентами... все равно огромное Вам, Блазер, спасибо! Но какие-то ошибки выдает и не добавляет... может я что-то не так делаю - но факт тот, что ничего пока не получилось у меня...
Вадим К, если Вам не трудно, расскажите мне, как я могла бы использовать события WM_MOUSE_ENTER и WM_MOUSELEAVE, если не трудно - ато я уже н знаю, что и делать... спасибо!
|
|
Вадим К (статус: Академик), 7 августа 2008, 15:45 [#7]:
надо писать компонент-наследник
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Violina (статус: Посетитель), 7 августа 2008, 15:46 [#8]:
Короче и это я сделать не смогу 8( - эх - ладно - все равно болшое спасибо...
|
|
Аксион (статус: 4-ый класс), 7 августа 2008, 18:35 [#9]:
Ёклмн.....Виолина.........вы хоть компонент установили? Или нет?
|
|
Violina (статус: Посетитель), 7 августа 2008, 21:56 [#10]:
Блазер, эх - 3 часа спустя я все-таки поставила... вообще нереально - что Вы дали ссылку - я скачала - добавляла, добавляла - но 0 - наверное я так добавляла - начала искать в интете - сайт, типа официальный сайт этого чуда - на нем переадресация на черт знает что стоит - начала лазить по форумам и поисковикам - короче доустанавливала сякого бреда, что 2 раза Delphi переустанавливала... но потом наконец на одном наткнулась на ссылку - там для таких умных как я 8) все подробно показано на примере и рабочее все - короче тока запустила я этот компонент! Так что спасибо Вам, без Вас, я бы через OnMove думала как ту фигню сделать - а там такое получается... убится об монитор легче! Фух! Спасиюбо 8)
|
|
Аксион (статус: 4-ый класс), 8 августа 2008, 12:15 [#11]:
х_Х Янемного не понял.... вы задачу то свою этим компонентом ршили?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|