Красивые кнопки

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DIMzone
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 10.12.2005 (Сб) 14:28

Красивые кнопки

Сообщение DIMzone » 12.12.2005 (Пн) 10:10

Подскажите, возможно ли организовать красивую кнопку на основе элемента image, чтобы при наведении курсора и при нажатии на элемент, он менял свойство picture?
Если да, то как?
Метод MouseMove не проканывает, т.к. он блокирует метод Click.

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 12.12.2005 (Пн) 10:24

LoadPicture, правда я не телепат...

Метод MouseMove не проканывает, т.к. он блокирует метод Click.
:shock:
это как?

Все равно вам ответят - юзай готовые контролы, между прочим где-то месяц назад мне кидали контрол-кнопку с кучей настроек (ищи в форуме), все ограничивается вашей фантазией (которой, судя по цитате, у вас полно)...
Пора уже всем хорошим людям собраться и убить всех плохих людей.

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 12.12.2005 (Пн) 17:59

приёмы как это сделать в любом учебнике по VB есть. Вообщем чтобы менялась картинка при наведение используешь событие mouse_move (как программно поменять картинку думаю догадаешься) для того чтобы она возращалась в прежнее состояние после того как курсор уходит нужно использовать событие mouse_move но только уже формы. Ну ясень, событие click имейджа для программирования того что должно произойти при нажатии на кнопку.
У каждой сложной задачи есть множество простых для понимания, но неправильных решений.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.05.2006 (Вт) 16:35

А ты попробуй подумать.
Lasciate ogni speranza, voi ch'entrate.

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 02.05.2006 (Вт) 17:07

УУ, некрофилы...
А как это откомпилировать и в проект засунуть ?

Попробуй наоборот
Пора уже всем хорошим людям собраться и убить всех плохих людей.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.05.2006 (Вт) 17:11

Сначала надо картинку загрузить. Загрузить. Загрузить картинку. Load Picture. Load_Picture. LoadPicture.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.05.2006 (Вт) 17:14

RusoTerroristo, слово "Ресурсы" о чем-нибудь говорит? Если нет, в поиск по форуму по этому слову.

И еще. Скоро будет замечание за безграмотность. Думай быстрее, чем набирай.

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 02.05.2006 (Вт) 17:47

Вообще-то не мешало бы в маусмуве проверку делать, какая картинка загружена, чтоб лишний раз не грузить.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 02.05.2006 (Вт) 17:52

Вообще-то не мешало бы освоить сабклассинг и TrackMouseEvent :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 03.05.2006 (Ср) 3:59

RusoTerroristo писал(а):Если не сложно то скажи как проверку делать ? А то лишний раз грузить это правдо ненужно.

А хоть немного подумать? Програмист ты или оператор машинного копирования? :evil: Я про сабкласинг и TrackMouseEvent даже и не заикаюсь, но разве банальную проверку через IF продумать - пустяковое дело. Если это черезчур сложно то тогда не понимаю зачем оно тебе...
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.05.2006 (Ср) 9:14

PSC. Search (Visual Basic). LaVolpe Button Control. Недовольных нет. Плюс еще не менее 200 результатов при поиске "Button" :D
Моду создают модоки, а распространяют модозвоны.

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 03.05.2006 (Ср) 9:21

Последний раз редактировалось Al Khamid 18.11.2007 (Вс) 0:54, всего редактировалось 1 раз.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 12:09

(Прежде всего хотелось бы узнать уровень знаний задающего вопрос)
Знает ли он что такон:
- timer
- handle (hDC, hWnd)
- RECT structure
- subclassing
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 03.05.2006 (Ср) 12:24

Последний раз редактировалось Al Khamid 17.11.2007 (Сб) 15:09, всего редактировалось 1 раз.
"Время пришло..." ©

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 12:29

и действительно, об чем речь? Зачем автору знать все вышеперечисленное? Оно ему при решении этой задачи совершенно не нужно. Правда может пондобиться при решении других задач, но это выходит за рамки данного топика
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 14:02

Если юзать готовый контрол, то естественно не нужно. Если же не юзать, то можно и без этого, но для автора вопроса это будет слищлком сложно.

А простой способ, для него ИМХО, по таймеру, брать позицию курсора и смотреть, не попадает ли он в WindowRect кнопки, если да, то если у кнопки всё ещё обычная картинка, то менять её на ХОТ-картинку, иначе, если у кнопки всё ещё ХОТ-кортинка, менять её на обычную...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 14:10

может все-таки проще юзать события MouseMove для формы и для "кнопки". Плюс пара проверок чтобы не перезагружать картинку при каждом смещении мыши?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 14:10

Видимо он по делал так
Код: Выделить всё

dim buffer as byte

open "gigabyte.dat" for binary as 1
open "gig2.dat" for binary as 2

For i = 1000 to len(1)
get #1,i,buffer
put #1,i-999,buffer
next i
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 14:12

что это было?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 14:16

Ой :oops: ... это должно было пойти сюда:

http://bbs.vbstreets.ru/viewtopic.php?t=25157



ЗЫ. :) :) :) :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 14:22

Промахнулся, так промахнулся....

А там http://bbs.vbstreets.ru/viewtopic.php?t=25157 все гораздо хуже чем можно было предположить
Весь мир матрица, а мы в нем потоки байтов!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 16:16

2RusoTerroristo и собственно чем был порожден сей шедевр изящной словесности? Особенно если учесть, что автор вопроса молчит?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 16:32

А самое интересное, как то что написал RusoTerroristo похоже на "крик" других, когда они, только начиная что-то соображать в программировании, требуют, чтобы им дали код ОС. :D

2RusoTerroristo ,
Думал среди программистов все нормальные люди... дак нет видно несудьба...

ну дам я тебе код, только не говори что-ничего не понял. Я же пытаюсь как лучше: спрашиваю, на каком ты уровне, чтобы объяснять понятным для тебя языком. И кто из нас ненормальный :? Щас, 5 сек,...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.05.2006 (Ср) 17:12

Вот, без трэкэйвентов и без сабклассинга, ибо это для тебя вообще видимо тёмный лес, просто с проверкой, на попадание в рект окна кнопки:
Вложения
for rt.rar
(3.14 Кб) Скачиваний: 84
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.05.2006 (Ср) 18:28

Строчек не совсем три%
Код: Выделить всё

Private bSetNoSelect As Boolean
Private bSetSelect As Boolean
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Not bSetNoSelect Then
        imgButton.Picture = pictNoSelect.Picture
        bSetNoSelect = True
    End If
End Sub
Private Sub imgButton_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Not bSetSelect Then
        imgButton.Picture = pictSelect.Picture
        bSetSelect = True
    End If
End Sub
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.05.2006 (Чт) 15:34

!Viper!, ИМХО это плохой способ, вот смотри, есть у нас две кнопки
(10,10)-(40,20) и
(10,30)-(40,40).

Пошевелили мы внутри первой button мышкой - сработал MouseMove- кнопка подсветилась, потом мы нажали WinKey - появилось меню Пуск и перекрыло наше окошечко.

Пока у нас активно меню Пуск, а форма не активна и находится под менюхой, мы можем спокойно переместить мышку на тот пункт меню, под которым у нас лежит вторая кнопка. При этом MouseMove на форме не сработает. Теперь мы нажмём Esc и закроем тем самым меню Пуск, напоминаю: мышка у нас стоит уже внутри второй кнопки, а первая всё ещё горит, ведь событие MouseMove на форме не происходило. Теперь когда меню пуска нет, и наша форма снова стала активна, чуть-чуть двинем мышь внутри второй кнопки - она тоже подсветится. ИТАК мы имеем уже 2 подсвеченных кнопки...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.05.2006 (Чт) 15:40

Согласен, зерно разумности в этом есть.

Но для начала пойдет и такой простой код как у меня. В большинстве ситуаций он будет работать. Если добавить например обработку потери фокуса, то будет работать еще более надежно. А писан он минуты за три...
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 04.05.2006 (Чт) 20:13

Код: Выделить всё
Private bSetNoSelect As Boolean
Private bSetSelect As Boolean


Можно было обойтись одной переменной.

__________
ЗЫ. А можно было вообще без этого...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 176

    TopList  
cron