|
Вопрос # 321/ вопрос открыт / |
|
Здравствуйте. С кнопками у меня нечего не получилось, ну и
ладно. Я хочу задать вопрос, а с Image1 может так получится.
Я постараюсь правильно сформулировать вопрос.
На форму ложу Image1 и Image2, одну на другую.
Открываю в них две иконки в Image1 32*32, а в Image2 64*64.
Вопрос? Как мне сделать так, что бы наведя на иконку мышкой
(32*32 т.е Image1),появлялась иконка(64*64 т.е Image2),
а, убрав мышку с Image2(64*64), опять появлялась Image1(32*32), так
как это сделано с иконками в программах Talisman, Aston, StileXP,
ну и так далее.
А вот с окнами у меня подошёл один код, который отправил
Сергей Устинов. Спасибо ещё раз всем. Так как я начинающий,
поэтому информацию черпнул не плохую. Ну а если вернутся к окнам
то и здесь маленький нюанс, мне надо, что бы все окна сворачивались,
а моё (главной формы) не сворачивалось. Можно так сделать? И в
заключении ещё раз поблагодарю всех, кто помогает тем, кто в этом ещё
не силён. Большое спасибо.
 |
Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 17 февраля 2007, 23:07
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Николай Рубан
Вам достаточно будет написать такие обработчики:
//реагирует на движение мыши на Image1
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Image1.Visible:=false;
Image2.Visible:=true;
end;
//реагирует на движение мыши на форме
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (x<Image2.Left) or (x>Image2.Left+Image2.Width) or
(y<Image2.Top) or (y>Image2.Top+Image2.Height)
then
begin
Image1.Visible:=true;
Image2.Visible:=false;
end;
end;
Еще я Вам рекомендую при создании формы сделать такие дополнительные настройки объектов:
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.AutoSize:=true;
Image2.AutoSize:=true;
Image2.Top:=Image1.Top;
Image2.Left:=Image1.Left;
Image2.Visible:=false;
end;
Good Luck!!!
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 17 февраля 2007, 23:45
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Матвеев Игорь Владимирович
Здравствуйте, Толков Геннадий Викторович!
Бростьте заниматься ерундой!
Ваши сообщения CM_MOUSEENTER / CM_MOUSELEAVE.
При попадании курсора на контрол приходит CM_MOUSEENTER, при покидании - CM_MOUSELEAVE.
Например, TLabel (точнее TCustomLabel) ловит их и вызывает обработчики OnMouseEnter / OnMouseLeave. Посмотрите как это реализованно в StdCtrls.pas и добавьте для своего наследника TImage.
Дело 10 минут.
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|