Как сделать из Label ссылку (всмысле Hyperlink)

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

Как сделать из Label ссылку (всмысле Hyperlink)

Сообщение Perf2k2 » 07.09.2005 (Ср) 10:19

Еще раз привет.

Знаете в Винде ХР есть такие менюшки слева - там сделаны ссылки на другие разделы (типа "Создание нового подключения" в "Сетевых подключениях"). При наводе на ссылку она подчеркивается, а при нажатии он открывает новое окно.

Вот как это реализовать в ВБ (ссылки). Я сначала повесил на MouseMove такую строчку: link1.FontUnderline = True. А какже тогда сделать, чтобы подчеркивание пропадало? Ведь на Лэйбле нету LostFocus, прально?

Или может есть какой-нибудь спец. контрол? :)

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 07.09.2005 (Ср) 10:27

вообще на сайте http://www.vbrussian.com есть то что те надо

лостфокус не пойдет
надо проверять где находится мыша (x и y)
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 07.09.2005 (Ср) 10:31

надо проверять где находится мыша (x и y)

Блин, жалко - так и думал. Гимор просто...

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 07.09.2005 (Ср) 10:36

Perf2k2 писал(а):
надо проверять где находится мыша (x и y)

Блин, жалко - так и думал. Гимор просто...


не вижу ничего гиморного
Код: Выделить всё

if x = 0 or y = 0 or y = 100 or x = 100 then
......................
end if
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 07.09.2005 (Ср) 10:46

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

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Command1.FontUnderline = True
If X <= 0 + 70 Or Y <= 0 + 70 Or X >= Command1.Width - 70 Or Y >= Command1.Height - 70 Then Command1.FontUnderline = False
End Sub
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 07.09.2005 (Ср) 10:57

вот как я сделал

Спасибо! Но может я конечно и очень тупой, просто не понятно что означает "70". Это расстояние от чего до чего?

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

Сообщение alibek » 07.09.2005 (Ср) 11:09

Рамка. Только это неправильно, должно быть 60 или 85.
Lasciate ogni speranza, voi ch'entrate.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 07.09.2005 (Ср) 14:24

alibek писал(а):Рамка. Только это неправильно, должно быть 60 или 85.


просто при 50, если быстро двинуть мышкой, у меня не успевает сработать маус мув, поэтому от балды поставил 70 :)
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Perf2k2
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 07.02.2005 (Пн) 12:10

Сообщение Perf2k2 » 08.09.2005 (Чт) 15:20

просто при 50, если быстро двинуть мышкой, у меня не успевает сработать маус мув, поэтому от балды поставил 70

У меня, честно говоря, и так и так не успевает сработать. Ни при 70, на при 60, ни при 85. Ни при 160 даже... Может поставить таймер, который будет каждые пол секунды сбрасывать подчеркивание :?:

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 08.09.2005 (Чт) 15:28

тогда если у тебя не двигается мыша, текст не будет подчеркиваться
можешь выложить проект?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 08.09.2005 (Чт) 16:01

на MouseMove по Label underline делай тру, а на самой ворме при маусмув поставь false и все.
ХЎ

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 08.09.2005 (Чт) 16:25

d3drm писал(а):на MouseMove по Label underline делай тру, а на самой ворме при маусмув поставь false и все.


во блин, голова
а я не додумался :(
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

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

Сообщение Amed » 08.09.2005 (Чт) 19:02

Не идеальное решение. Попробуйте выставить сенсу мышки на максимум и очень резко дернуть с лейбла на область вне формы. Маусмув не сработает.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 08.09.2005 (Чт) 19:26

Amed, а ты не критикуй, ты научи как надо =)
ХЎ

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

Сообщение Amed » 08.09.2005 (Чт) 19:58

По таймеру проверяем координаты курсора. Если курсор внутри элемента управления, то выполняем соответственные действия.

См. GetCursorPos, CreateTimerQueue, CreateTimerQueueTimer.

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

Сообщение SHURUP » 08.09.2005 (Чт) 20:05

Amed писал(а):Не идеальное решение. Попробуйте выставить сенсу мышки на максимум и очень резко дернуть с лейбла на область вне формы. Маусмув не сработает.

Мой вариант:
Вместо Лейбла использовать заLOCKченный TextBox без границы и цвета фона (это позволит выделить/скопировать текст ссылки)
Затем по таймеру проверять, является ли окно под курсором - нужным текстбоксом (API) и если ДА - подсвечивать.
Это удобно если на форме по мимо ссылки имеется еще и куча других контролов - тогда отследить резкий переход с лейбла на другой контрол весьма гемороидально.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.09.2005 (Чт) 20:44

Опять все проблемы решаются таймером? :-?
А как же WM_MOUSELEAVE?
Изображение

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

Сообщение Amed » 08.09.2005 (Чт) 20:53

А если надо лейбл выцепить?

Народ не гуглит вообще. На форуме уже много раз писали.


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

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

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

    TopList