912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
1 | |
События при наведении курсора на различные компоненты формы01.03.2010, 20:35. Показов 25669. Ответов 15
Метки нет (Все метки)
Цель такова. На форме есть несколько Панелек. Необходимо, чтобы при наведении курсора на каждую отдельную Панель она меняла цвет(например), при Клике мыши Панель утапливалась(например) и происходило запрограммированное событие, а при уводе курсора принимала исходное состояние.
Спасибо если кто - то мне поможет.
0
|
01.03.2010, 20:35 | |
Ответы с готовыми решениями:
15
Окрашивание формы при наведении курсора dbEdit при наведении курсора Подсвечивание кнопки при наведении курсора Появление лабел при наведении курсора |
46 / 38 / 3
Регистрация: 14.12.2009
Сообщений: 272
|
|
01.03.2010, 20:48 | 2 |
Это событие называеться OnMouseMove
2
|
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
01.03.2010, 21:16 [ТС] | 3 |
У меня около 30 Панелек (считай кнопок). Для каждой создавать все вышеуказанные события слишком громоздко. Как бы сделать все это более компактно но универсально?
0
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
|
01.03.2010, 21:23 | 4 |
А обработчик должен делать одинаковые действия для каждой панельки (кнопки)?
1
|
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
01.03.2010, 21:28 [ТС] | 5 |
На каждой Панельке будет буква. При нажатии на Панель эта буква будет дописываться к содержимому Edit.Text. Но кроме этого с панельками должны происходить все визуальные эффекты, которые я описывал выше. С ними у меня и проблема.
0
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
||||||
01.03.2010, 21:39 | 6 | |||||
Тебе надо:
1. Написать несколько процедур "спецэффектов". 2. сделать рандомны счетчик по кол-ву написанных процедур. 3. "Пробежаться" по всем компонентам (панелькам) формы и отследить на какой было выбрано действие. 4. Обратиться к рандомно выбранной процедуре и передать ей sender панели. Усё) Добавлено через 3 минуты вот как пробежаться по компонентам
1
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
||||||
01.03.2010, 21:40 | 7 | |||||
а можно вот так:
2
|
714 / 402 / 33
Регистрация: 04.10.2009
Сообщений: 1,686
|
|
01.03.2010, 21:40 | 8 |
а панели лучше создавай динамически (т.е. массив панелек)
1
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
|
01.03.2010, 21:42 | 9 |
незабыв указать Panel1MouseMove() как обработчик события OnMouseMove для всех панелек
1
|
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
01.03.2010, 22:09 [ТС] | 10 |
Спасибо. Попробую.
Добавлено через 10 минут Oleg! Извини но опиши подробнее фразу "незабыв указать Panel1MouseMove() как обработчик события OnMouseMove ДЛЯ ВСЕХ ПАНЕЛЕЙ". В Делфи я пока не очень....
0
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
||||||
01.03.2010, 22:41 | 11 | |||||
Евгений В, есть такое окошко в твое IDE Delphi, Object Inspector называется, так вот в нем есть две вкладки properties и Events, в которых соответственно свойства и события для выделенного Контрола. Для первой панельки, выделяешь ее (кликаешь по ней один раз), в Object Inspector вибираешь вкладку Events. Ищещь OnMouseMove и кликаешь по комбобоксу (справа) от надписи выпадающий список, вот по нему
Автоматом создасться обработчик
1
|
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
01.03.2010, 23:32 [ТС] | 12 |
Oleg! Спасибо! Получилось все и с MouseMove и с PanelClick с записью в edit1.Text букв 'а' или 'б' и т.д. по принципу edit1.Text = edit1.Text+panel.Caption (если panel1.Caption=а и panel2.Caption=б и т.д.). Но если я кликну по одной Панельке относительно быстро 2 раза то второй раз не пропечатывается. А вот если водить курсором по Панели и одновременно кликать, то можно печатать как угодно быстро. Если мне придется так набирать определенный текст при помощи кнопок-панелек то это вызовет некоторые не удобства.
Что у меня не так?
0
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
||||||
02.03.2010, 01:02 | 13 | |||||
Евгений В, код покажи
Добавлено через 29 минут подумав, можно предложить и вот такую версияю
1
|
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
|
|
02.03.2010, 01:10 | 14 |
или вот бинарник мой
1
|
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,273
|
|
02.03.2010, 11:34 [ТС] | 15 |
Все работает. Только в procedure TForm1.FormCreate(Sender: TObject) вместо lastPanel := nil написал lastPanel := Panel . Иначе, если сразу навести курсор на первую Панель то ничего не произойдет.Если же сразу навести на любую другую - то все в норме, и первая Панель начинает работать. Но в общем ПРИНЦИП понятен. СПАСИБО!
0
|
0 / 0 / 0
Регистрация: 22.02.2015
Сообщений: 15
|
|
07.03.2015, 20:15 | 16 |
schdub, нашел вашу подсказку( у меня такое же задание), хотел спросить насчет вкладки events в Object inspector. Вопрос такой
Как правильно задать OnMouseMove в ней? При нажатии не получается вывести ниспадающий список Добавлено через 45 минут Евгений В, А как создаются сами панели?
0
|
07.03.2015, 20:15 | |
07.03.2015, 20:15 | |
Помогаю со студенческими работами здесь
16
При наведении курсора сменить картинку При наведении курсора сменить картинку Увеличивать кнопки при наведении курсора Изменить картинку при наведении курсора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |