Замена стандартному Label

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

Замена стандартному Label

Сообщение tofik » 30.07.2004 (Пт) 10:27

Кто нибудь подскажет контрол, который был бы заменой стандартному Label и имел бы такие свойства:
1. При наезде мышью - изменение свойства!
2. Многострочный ToolTips

TEH3OP
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 12.12.2003 (Пт) 20:19
Откуда: Москва

Re: Замена стандартному Label

Сообщение TEH3OP » 30.07.2004 (Пт) 11:05

tofik писал(а):Кто нибудь подскажет контрол, который был бы заменой стандартному Label и имел бы такие свойства:
1. При наезде мышью - изменение свойства!

MouseMove есть и у стандартного Label.
tofik писал(а):2. Многострочный ToolTips

Хм... не знаю. Я б сам написал UserControl. Там ничего приактически не надо... для писания текста на Extender'е можно Апёвую TextOut использовать, а для ToolTip'а создавать окно "Static" и посать на ём всё тем же TextOut.

PS: так, на всякий случай...
Код: Выделить всё
Option Explicit
Const TA_BASELINE = 24
Const TA_BOTTOM = 8
Const TA_CENTER = 6
Const TA_LEFT = 0
Const TA_NOUPDATECP = 0
Const TA_RIGHT = 2
Const TA_TOP = 0
Const TA_UPDATECP = 1
Const TA_MASK = (TA_BASELINE + TA_CENTER + TA_UPDATECP)
Private Declare Function SetTextAlign Lib "gdi32" (ByVal hdc As Long, ByVal wFlags As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Const mStr = "www.allapi.net"
Private Sub Form_Paint()
    'set the form's scalemode to pixels
    Me.ScaleMode = vbPixels
    'set the forecolor to white
    Me.ForeColor = vbWhite
    'draw some lines to show where our TextOut-x- and y-parameters are
    Me.Line (100, 0)-(100, 100)
    Me.Line (100, 100)-(0, 100)
    Me.Line (150, 0)-(150, 150)
    Me.Line (150, 150)-(0, 150)
    'set the forecolor back to black
    Me.ForeColor = vbBlack
    'call textalign to align to the right
    SetTextAlign Me.hdc, TA_RIGHT Or TA_TOP Or TA_NOUPDATECP
    'show some text
    TextOut Me.hdc, 100, 100, mStr, Len(mStr)
    'call textalign to align to the left
    SetTextAlign Me.hdc, TA_LEFT Or TA_TOP Or TA_NOUPDATECP
    'show some text
    TextOut Me.hdc, 150, 150, mStr, Len(mStr)
End Sub

tofik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 102
Зарегистрирован: 30.04.2004 (Пт) 13:18

Сообщение tofik » 30.07.2004 (Пт) 12:06

Спасибо огромное!
Я извиняюсь, но я не правильно написал 1 свойство
Мне нужно чтобы при наезде мышью на этот LABEL он менял цвет ну на типа как это делает гипперссылка!

natcap
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 234
Зарегистрирован: 25.06.2003 (Ср) 13:15
Откуда: Москва

Сообщение natcap » 30.07.2004 (Пт) 12:21

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = &H0&
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.ForeColor = &HFF&
End Sub
Медленно переезжаю с 6.0 на 2008 .... задавая тонны глупых вопросов :)

tofik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 102
Зарегистрирован: 30.04.2004 (Пт) 13:18

Сообщение tofik » 30.07.2004 (Пт) 13:28

Спасибо!
А может стандартный Label позволяет еще и многострочный ToolTips сделать?

ToT
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 124
Зарегистрирован: 10.06.2002 (Пн) 11:56
Откуда: Russia, Taganrog

Сообщение ToT » 01.08.2004 (Вс) 2:48

To natcap & tofik
Не все так просто, убрать мышь с label можно и не вызвав Form_MouseMove, например быстрым движением перевести курсор на другой контрол или за границу формы, так что это нужно отлавливать. А когда на форме много контролов, код становиться не очень красивым. Красиво можно с помощью API ф-ции TrackMouseEvent, только у label нету hwnd, можно попробывать вместо нее импользовать что-нибудь другое... эка куда меня занесло с такой фигни, короче хватит на сегодня.
Keyboard not found. Press any key.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 01.08.2004 (Вс) 3:44

Можно воспользоватся WindowFromPoint, нет нельзя у него нет hwnd, ну тогда делай таймер который будет включатся после MouseMove и отключатся когда мышь наведена на него сюда по координатам мыши и координатах лейбла.
الفيجوال بيسك الرابح

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.08.2004 (Вс) 15:07

Multiline Tooltip

Вот только не знаю, как ты его будешь к Label привязывать... :roll:
Вложения
Multiline tooltip.rar
Многострочный ToolTip
(2.99 Кб) Скачиваний: 125

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 01.08.2004 (Вс) 15:27

А не проще написать свой контрол, в котором это будет не лэйбл, а текст непосредственное на самом UserControl.hDC? Впрочем, думаю, такие уже есть, надо только найти...

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Сообщение Emzari » 03.08.2004 (Вт) 10:49

Посмотри мой контролл в месте с исходниками она меняет цвет и проподнимается при наведении миши думаю пригодится
8) 8) 8)
Вложения
CuustomLabelOcx.zip
(24.52 Кб) Скачиваний: 98


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 90

    TopList