Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
1

Текст, как ссылка)

21.07.2013, 01:26. Показов 1306. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли сделать так, чтобы по нажатию на какую либо строчку в текстовом поле, открывалась новая форма?и чтобы эта форма всегда была поверх всех окон?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.07.2013, 01:26
Ответы с готовыми решениями:

Как преобразовать текст из формата RTF в обычный текст?
Как преобразовать текст из формата RTF в обычный текст?

Текст как ссылка
Уважаемые форумчане делаю Help к дипломному проекту и возник такой вопрос: Можно ли текст в Memo...

Чем заменить функцию ссылка на текст-текст на этой же странице на Wordpress 4.6.1
Доброго времени суток. Нужно сделать страницу на сайте вот в таком виде...

Как перенести продублировать данные из справочника.ЕдиницыИзмерения.Ссылка в справочник КлассификаторЕдиницИзмерения.Ссылка
Ну вапрос таков есть два справочника 1)КлассификаторЕдиницИзмерения и 2) ЕдиницыИзмерения нужна...

6
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
21.07.2013, 03:20 2
Visual Basic
1
2
3
4
5
6
7
8
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Sub Command1_Click()
    Const HWND_TOPMOST = -1
    Const SWP_NOMOVE = 2
    Const SWP_NOSIZE = 1
    SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
Какой объект Вы именуете текстовым полем?
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
21.07.2013, 07:00 3
Лучший ответ Сообщение было отмечено The trick как решение

Решение

В примере используется идентификация по слову, разделителем являются символы с кодом < 33, по желанию можно добавить другой. А вообще правильнее для таких целей использовать Rich TextBox
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Option Explicit
 
Private Const EM_CHARFROMPOS& = &HD7
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
 
Private Const IDC_HAND = 32649&
Private Const IDC_IBEAM = 32513&
Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
 
Private Sub txtText_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim Pos As Long, Wrd As String
    x = ScaleX(x, vbTwips, vbPixels): y = ScaleY(y, vbTwips, vbPixels)
    Pos = CLng(x) + (CLng(y) * &H10000)
    Wrd = LCase(GetWord(txtText, Pos))
    Select Case Wrd
    Case "first", "second"
        SetCursor LoadCursor(0, IDC_HAND)
        lblMsg.Caption = Wrd
    Case Else
        SetCursor LoadCursor(0, IDC_IBEAM)
        lblMsg.Caption = vbNullString
    End Select
End Sub
Private Sub txtText_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    Dim Pos As Long
    x = ScaleX(x, vbTwips, vbPixels): y = ScaleY(y, vbTwips, vbPixels)
    Pos = CLng(x) + (CLng(y) * &H10000)
    Select Case LCase(GetWord(txtText, Pos))
    Case "first"
        SetTopMost frmFirst
        frmFirst.Show
    Case "second"
        SetTopMost frmSecond
        frmSecond.Show
    End Select
End Sub
Private Function SetTopMost(Form As Form) As Boolean
    SetTopMost = SetWindowPos(Form.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
End Function
Private Function GetWord(Text As TextBox, Pos As Long) As String
    Dim ptChar As Long, PtLine As Long
    Dim ptStart As Long, ptEnd As Long
    ptChar = SendMessage(Text.hwnd, EM_CHARFROMPOS, 0, ByVal Pos)
    PtLine = ptChar \ &H10000
    ptChar = ptChar And &HFFFF&
    If ptChar <= 0 Then Exit Function
    ptStart = ptChar
    Do Until ptStart <= 0
        If Mid$(Text.Text, ptStart, 1) <= " " Then Exit Do
        ptStart = ptStart - 1
    Loop
    ptEnd = ptChar
    Do Until ptEnd > Len(Text.Text) Or Mid$(Text.Text, ptEnd, 1) <= " "
        ptEnd = ptEnd + 1
    Loop
    If ptStart = ptEnd Then Exit Function
    GetWord = Mid$(Text.Text, ptStart + 1, ptEnd - ptStart - 1)
End Function
Вложения
Тип файла: rar Char from pos.rar (2.5 Кб, 11 просмотров)
1
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
21.07.2013, 09:23  [ТС] 4
Dragokas, TextBox, а что этот код делает??

Добавлено через 4 минуты
The trick, Можете объяснить пожалуйста
0
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
21.07.2013, 11:28 5
Функция GetWord возвращает слово в элементе редактирования текста, исходя из его позиции в клиентских координатах окна; позиция в старшем слове содержит координату по оси Y, соответственно в младшем X. Разделителем слов, как написано выше, я использовал все символы с ASCII кодом меньшим 33 (знаки припинания и т.п. не учитываются и считаются как одно слово), модификацией строк 55 и 59 можно добавить и другие символы (правильно создать функцию IsLetter или CharType которая будет определять класс символа). Остальное впринципе все и так понятно. Код содержит один недочет заключающийся в том, что если мышь будет находится за строкой, то она вернет слово находящееся в конце строки, но это можно легко исправить измерив длину строки используя GetTextExtentPoint32
1
Модератор
9724 / 3685 / 871
Регистрация: 22.02.2013
Сообщений: 5,530
Записей в блоге: 78
21.07.2013, 14:54 6
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Вот вариант с использованием RichTexBox'а
Вложения
Тип файла: rar RichHyperLink.rar (3.0 Кб, 10 просмотров)
1
0 / 0 / 0
Регистрация: 07.03.2013
Сообщений: 327
23.07.2013, 10:32  [ТС] 7
ясно, спасибо
0
23.07.2013, 10:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2013, 10:32
Помогаю со студенческими работами здесь

текст ссылка
подскажите какой компонент нужно скинуть на форму что бы при нажатии его можно было перейти на...

Ссылка на текст
Всем привет! В ворде можно сделать оглавление в виде ссылок на разделы документа! Как сделать тоже...

Как проверить - есть ли обратная ссылка ссылка?
Добрый вечер! Есть сайт. Обменялся год назад с другими сайтами ссылками. Сейчас хочу проверить...

Текст(ссылка)на картинке
Доброе утро! можно как то написать текст(ссылка) на картинке?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru