-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Функция преобразования однострочного текста в многострочный

Среда, 08 Октября 2014 г. 23:25 + в цитатник
с параметрами по умолчанию заточена под My_Edit_Control.ControlTipText
---
столкнулся с ситуацией: на форме много текстовых полей, в некоторых длина текста превышает 300 знаков,
в то время, как видимая на экране - 70-80 знаков. решил реализовать проблему следующей функцией.
---
CrLfText() - возвращает строку
-
Входные параметры:
- Обязательный
-- LongText - однострочный тект
- Не обязательные
-- ShortTextLen - длина блоков (35 по умолчанию)
-- OnlyEndText - Правая(True) или левая(False) часть возвращаемого текста (True по умолчанию)
-- MaxReturnLen - максимальная длина возвращаемого текста (255 по умолчанию)
-- TextTerminator - терминатор обрезаемой части ("..." по умолчанию)
---
Пример вызова:
например Поле1 содержит текст:
-
это длинный текст который содержится в поле номер один и состоит из нескольких слов разделенных пробелами в одну длинную строку составленных без других разделителей
-

' Модуль формы
Private Sub Поле1_AfterUpdate()
    Поле1.ControlTipText = CrLfText(Поле1, 20, , 100)
End Sub

теперь всплывающая подсказка к Поле1 содержит:
-
... разделенных пробелами
в одну длинную строку
составленных без других
разделителей
-

Public Function CrLfText(LongText As Variant, Optional ShortTextLen As Long = 35, Optional OnlyEndText As Boolean = True, Optional MaxReturnLen As Long = 255, Optional TextTerminator As String = "...") As String
    Dim n As Long, s As String, r As String, i As Long, ii As Long, j As Long
    s = Nz(LongText, ""): n = Len(s): i = 1: ii = ShortTextLen: j = InStr(1, s, " ")
    While j < n And j > 0
        While j < ii And j > 0
            j = InStr(j + 1, s, " ")
        Wend
        If j > 0 Then r = r & Mid(s, i, j - i) & vbCrLf Else r = r & Mid(s, i)
        i = j + 1
        ii = i + ShortTextLen
    Wend
    If Len(r) > MaxReturnLen Then
        n = MaxReturnLen - Len(TextTerminator)
        If OnlyEndText Then
            r = Right(r, n)
            j = InStr(r, " ")
            If j Then r = TextTerminator & Mid(r, j)
        Else
            r = Left(r, n)
            j = InStrRev(r, " ")
            If j Then r = Left(r, j) & TextTerminator
        End If
    End If
    CrLfText = r
End Function

http://www.sql.ru/forum/1119955/funkciya-preobrazovaniya-odnostrochnogo-teksta-v-mnogostrochnyy


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку