Гиперссылки и RTB

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

Гиперссылки и RTB

Сообщение Eugenio » 23.12.2004 (Чт) 23:32

Хотелось бы сделать что-то вроде гиперссылки в тексте - в RichTextBox.
Подскажите идею?
Ограничить текст, являющий гиперссылкой, какими-то служебными/ неотображаемыми (непечатными :) ) символами?
А какими - чтобы они там сохранялись, но не отображались?
Ничего не помню, что может быть в RTB, кроме символов возврата каретки и начала строки (chr(13)+chr(10). Другого контрола для нормального редактирования текста - тож не знаю.
Есть ли у меня вопрос? У меня всегда есть вопрос

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 24.12.2004 (Пт) 0:52

Пошли RTB'шке сообщение с EM_AUTOURLDETECT и wParam равному единице.. И никаких "непечетаемых символов" :wink:

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 24.12.2004 (Пт) 9:20

Я когда-то делал, вот посмотри здесь: http://bbs.vbstreets.ru/viewtopic.php?t=7593&highlight=

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.12.2004 (Пт) 15:06

Sirik писал(а):Я когда-то делал...

Спасибо за пример с SendMessage. Я этого сообщения (EM_CHARFROMPOS) не использовал никогда. Это я поюзаю обязательно.Но:
1. Ограничение вот это - не нравится
нельзя переходить по ссылке когда в textarea выделенный фрагмент.

2. Мне не подходит использование атрибутов текста
(SelUnderline, SelBold, etc) -
вид ссылок хотелось бы оставить настраиваемым
------
Вот потому и спрашиваю, чем бы таким ограничить гиперссыку.
Чтобы видать символа не было, но методом RTB Find, например, он возвращался (как, скажем, возврат каретки Find'ом возвращается)
Запоминать, где ссылка находится - неохота тоже, чтобы не пришлось еще отслеживать её "перемещение", когда юзер плющит текст -
при каждом _Change (еще вопрос, как это делать, чтобы прога не зависала ощутимо при нажатии любой алфавитной клавиши).
попробую, как вернусь к своему компу, вставлять в текст все подряд, что к алфавиту не относится :lol:
Последний раз редактировалось Eugenio 24.12.2004 (Пт) 16:03, всего редактировалось 1 раз.
Есть ли у меня вопрос? У меня всегда есть вопрос

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.12.2004 (Пт) 15:09

xolod писал(а):Пошли RTB'шке сообщение с EM_AUTOURLDETECT и wParam равному единице.. И никаких "непечетаемых символов" :wink:

Беда-то в том, что это не будут "правильные URL'ы".
А не расскажешь про "CFE_LINK effect"? Это может и что-то знакомое (под другим именем), но я не понимаю :(
Есть ли у меня вопрос? У меня всегда есть вопрос

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 24.12.2004 (Пт) 17:04

Eugenio писал(а):
xolod писал(а):Пошли RTB'шке сообщение с EM_AUTOURLDETECT и wParam равному единице.. И никаких "непечетаемых символов" :wink:

Беда-то в том, что это не будут "правильные URL'ы".
А не расскажешь про "CFE_LINK effect"? Это может и что-то знакомое (под другим именем), но я не понимаю :(

Почему не правильные?
По ним же ведь можно без изменений попасть по адресу?

Код: Выделить всё
Private Sub MsgTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   Dim retval As Long
    Dim Link As String
    Dim Pos As Long
    Dim pt As POINTAPI
    Dim i As Long
    Dim StartPos As Integer
    Dim s As String
Select Case Button
    Case vbLeftButton
          With MsgTextBox
            s = ""
            Link = ""
            pt.X = X \ Screen.TwipsPerPixelX
            pt.Y = Y \ Screen.TwipsPerPixelY
            Pos = SendMessage(.hwnd, EM_CHARFROMPOS, 0&, pt)
            If Pos = 0 Then Exit Sub
       
            For i = Pos - 1 To 1 Step -1
                  s = Mid$(.Text, i, 1)
                If s = Chr(10) Or s = "," Or s = Chr(32) Then
                    Exit For
                Else
                    Link = s & Link
                End If
            Next i
            If IsEmpty(StartPos) Then Exit Sub
            For i = Pos To Len(.Text)
                s = Mid$(.Text, i, 1)
                If s = "," Or s = Chr(13) Or s = Chr(32) Then
                    Exit For
                Else
                    Link = Link & s
                End If
            Next i
            End With
            Link = Replace$(Link, "(", "")
            Link = Replace$(Link, ")", "")
            If InStr(1, UCase$(Link), "WWW.") <> 0 Or _
                InStr(1, UCase$(Link), "HTTP:") <> 0 Or _
                InStr(1, UCase$(Link), "FILE:") <> 0 Or _
                InStr(1, UCase$(Link), "MAILTO:") <> 0 Or _
                InStr(1, UCase$(Link), "FTP:") <> 0 Or _
                InStr(1, UCase$(Link), "HTTPS:") <> 0 Or _
                InStr(1, UCase$(Link), "GOPHER:") <> 0 Or _
                InStr(1, UCase$(Link), "NNTP:") <> 0 Or _
                InStr(1, UCase$(Link), "PROSPERO:") <> 0 Or _
                InStr(1, UCase$(Link), "TELNET:") <> 0 Or _
                InStr(1, UCase$(Link), "NEWS:") <> 0 Or _
                InStr(1, UCase$(Link), "WAIS:") <> 0 Then
                sbrStatus.Panels(1).Text = "Запуск: " & Link
                retval = ShellExecute(Me.hwnd, "open", Link, vbNullString, gAppPath, SW_SHOWNORMAL)
                sbrStatus.Panels(1).Text = ""
            End If
End Select
End Sub
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 24.12.2004 (Пт) 20:33

2 Ruslan Demidow
:) Пардон, если выразился неясно.
1. Сам текст не будет содержать текста ссылки. Просто ЛЮБЫЕ несколько слов (например: представляющих понятие, расшифрованное в другом месте этого ж документа. Эти слова должны служить, типа, гиперссылкой для перехода к тому месту, где понятие раскрывается). Причем, куда они ведут, определяет пользователь (выделяет и назначает ссылку).
2. Эти ссылки не будут ссылками для перехода по всем обысным протоколам: они должны работать только внутри только ТАКИХ документов. Структура у документа "спессфисськая" - это текст с особой разметкой. Прога отображает его, "как надо"
3. А предложенный вариант, кстати, чем лучше посылки EM_AUTOURLDETECT?

2 all:
Люди, расскажите про "CFE_LINK effect"!! Что такое?
Есть ли у меня вопрос? У меня всегда есть вопрос

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 24.12.2004 (Пт) 21:35

Eugenio писал(а):2 Ruslan Demidow
:) Пардон, если выразился неясно.
3. А предложенный вариант, кстати, чем лучше посылки EM_AUTOURLDETECT?

В смысле? У меня в форме к RTB как раз применяется EM_AUTOURLDETECT. Но вот не обрабатывается клик на ссылке. Вот я и обрабатываю сам.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 25.12.2004 (Сб) 9:00

Ruslan Demidow писал(а):В смысле? У меня в форме к RTB как раз применяется EM_AUTOURLDETECT. Но вот не обрабатывается клик на ссылке. Вот я и обрабатываю сам.

Теперь дошло (лыжи не ехали :) - я почему-то думал, что при включенном EM_AUTOURLDETECT клик тоже должен обрабатываться).
Но все равно - в тексте никаких URL'ов не будет. И слова, под к-рыми должна быть ссылка могут быть любыми.
Есть ли у меня вопрос? У меня всегда есть вопрос


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

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

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

    TopList