Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сформировать табличку в Clipboard / 5 сообщений из 5, страница 1 из 1
02.03.2007, 12:17
    #34366253
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать табличку в Clipboard
Кто нибудь может предложить простейший способ как программно сформировать примитивную табличку в Clipboard, чтобы по Ctrl+V ее потом можно было вставить в Word?
...
Рейтинг: 0 / 0
02.03.2007, 12:23
    #34366278
Бенедикт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать табличку в Clipboard
AndrF,
как RTF?
...
Рейтинг: 0 / 0
02.03.2007, 12:31
    #34366319
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать табличку в Clipboard
БенедиктAndrF,как RTF?

Возможно, но как правильно будет выглядеть табличка скажем 3x2 без разных там излишеств? Все же целиком перекапывать на эту тему описание формата долго, а будучи скопированной из Word-a выдается излишне много тэгов... :( Так что хотелось бы примитивный пример...
...
Рейтинг: 0 / 0
02.03.2007, 12:45
    #34366387
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать табличку в Clipboard
Пока удалось сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Dim s As String
    
    s = "{\rtf1\par " _
        & "\trowd \trgaph30\trleft-30\trrh262\cellx980\cellx1991\cellx3001 " _
        & "\intbl \qr \f0\fs20 \cf Проверка\cell \qr 2\cell\qr 3\cell \intbl \row " _
        & "\trowd \trgaph30\trleft-30\trrh262\cellx980\cellx1991\cellx3001 " _
        & "\intbl \qr \f0\fs20 \cf 4\cell \qr 5\cell\qr 6\cell \intbl \row} "

    Clipboard.Clear
    Clipboard.SetText s, vbCFRTF
...
Рейтинг: 0 / 0
02.03.2007, 14:28
    #34366861
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сформировать табличку в Clipboard
И окончательно (что мне и нужно было):

Код: plaintext
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.
65.
66.
67.
68.
69.
70.
Public Sub SetClipboardTableRTF(r As ADODB.Recordset)
    Dim sb As New StringBuilder, f As ADODB.Field, sr As String, _
        s As String, ss As String, b As Boolean, sf As String, i As Long

    sb.AppendLine "{\rtf1\par "
    
    For Each f In r.Fields
        Select Case f.Type
            Case adCurrency
                i = i +  1500 
            Case adTinyInt, adSmallInt, adInteger
                i = i +  1200 
            Case adSingle, adDouble
                i = i +  1500 
            Case adDate, adDBTimeStamp
                i = i +  1500 
            Case adBoolean
                i = i +  700 
            Case Else
                i = i +  2500 
        End Select
        sr = sr & "\cellx" & i
    Next f
    sr = "\trowd \trgaph30\trleft-30\trrh262" & sr & " "

    Do Until r.EOF
        sb.AppendLine sr
        b = True
        For Each f In r.Fields
            Select Case f.Type
                Case adCurrency
                    s = "r": sf = "#,##0.00"
                Case adTinyInt, adSmallInt, adInteger
                    s = "r": sf = "#,##0"
                Case adSingle, adDouble
                    s = "r": sf = "#,##0.000"
                Case adDate, adDBTimeStamp
                    s = "c": sf = "Short Date"
                Case adBoolean
                    s = "c": sf = "b"
                Case Else
                    s = "l": sf = vbNullString
            End Select
            If IsNull(f) Then
                ss = "\cell"
            Else
                If Len(sf) Then
                    If sf = "b" Then
                        ss = IIf(f, "Да", "Нет") & "\cell"
                    Else
                        ss = Replace(Format$(f, sf), "\", "\\") & "\cell"
                    End If
                Else
                    ss = Replace(f, "\", "\\") & "\cell"
                End If
            End If
            If b Then
                sb.Append "\intbl \q" & s & " \f0\fs20 \cf " & ss: b = False
            Else
                sb.Append "\q" & s & " " & ss
            End If
        Next f
        sb.AppendLine " \intbl \row "
        r.MoveNext
    Loop
    sb.AppendLine "}"
    
    Clipboard.Clear
    Clipboard.SetText sb.Value, vbCFRTF
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Сформировать табличку в Clipboard / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]