Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 71

Воспроизведение из объекта OLE кодом

22.05.2016, 16:53. Показов 3877. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Как заставить с помощью кода (а не двойным кликом) выполняться мультимедиа из обекта OLE?
В целом задача заключается в том, чтобы воспроизводить файл "внутри" программы, без ссылки на внешние источники, например С:\... Чтобы не изменяя программу, проигрывать этот файл на разных устройствах. Из-за этого пришлось отказаться о MMControl.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2016, 16:53
Ответы с готовыми решениями:

Почему закрывается окно объекта OLE при открытии другого объекта?
Добрый день! Есть таблица, одно из полей которой - Поле объекта OLE. При двойном нажатии открывается окно приложения (в данном случае...

Освобождение OLE - объекта
На форме имеется OLE - контейнер, в котором я открываю лист Маткада: OleContainer1.CreateObjectFromFile('f:\MathCAD\123.xmcd', false); ...

Присоединение OLE объекта
Здравствуйте. Разобрался с присоединением Ole объекта - спасибо. Но есть новый вопрос. Подскажите, пожалуйста: как можно автоматически...

59
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
22.05.2016, 17:46
API-функция ShellExecute
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 71
22.05.2016, 18:47  [ТС]
Но это же запуск приложения?

Добавлено через 6 минут
Я к тому, что там также нужно указывать адрес файла на конкретном устройстве, а именно от этого мне нужно уйти.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
22.05.2016, 22:13
Посмотри.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38203 / 21135 / 4310
Регистрация: 12.02.2012
Сообщений: 34,741
Записей в блоге: 14
23.05.2016, 11:03
Цитата Сообщение от Al_SB Посмотреть сообщение
там также нужно указывать адрес файла на конкретном устройстве
- а откуда тогда будет браться объект мультимедиа? Даже в изощренном коде The trick (если я верно понял) данные извлекаются из файла и сохраняются (как файл) во временной директории.

Добавлено через 1 минуту
Так что, в принципе, можно не отказываться от MMControl, хранить данные в ресурсах, при необходимости извлекать во временную директорию и подставлять на вход MMControl
0
 Аватар для Kogb
367 / 128 / 28
Регистрация: 17.07.2011
Сообщений: 253
Записей в блоге: 1
23.05.2016, 18:30
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Visual Basic
1
OLE1.Action = 7
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
29.05.2016, 07:40
А может воспользоваться MediaPlayer ?

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Option Explicit
'
'Mp3-Player Micro
'by the Fever Brain
'
Option Compare Text
Dim WithEvents CB As CommandButton, WithEvents vl As CommandButton
Dim WithEvents CBX As ComboBox, WithEvents pb As PictureBox
Dim CD As Object, MPlayer As Object
Dim File$, InitD$, mVol&, i&, v
 
Private Sub vl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static yy&, Vol&
    If Button = 1 Then
        Vol = yy + Y - 90
        If Vol > 0 And Vol < 390 Then
            vl.Top = yy + Y - 90
            mVol = -((Vol - 390) * 20 + 7500)
            MPlayer.Volume = mVol
        End If
    End If
    yy = vl.Top
End Sub
 
Sub PlayerAction(Optional Action$)
    Debug.Print MPlayer.Volume
    On Error Resume Next
    Static s$, ps
    ps = MPlayer.PlayState
    Select Case Action
    Case "Open"
        If CBX.ListCount = 0 Then s = "000"
        If CD.ShowOpen Then
            File = CD.FileName
            CD.InitialDir = Left(File, InStrRev(File, "") - 1)
            Select Case Right$(File, 4)
            Case ".mp3", ".wav"
                CBX.AddItem File, 0
                s = "001":
                CBX.ListIndex = 0
            End Select
            MPlayer.Volume = mVol
        End If
    Case "Стоп": MPlayer.Open "": s = "001"
    Case "Пауза": MPlayer.Pause: s = "001"
    Case "Воспр"
        If ps = 6 Or CBX.Text <> MPlayer.FileName Then
            MPlayer.Open CBX.Text
        ElseIf ps = 0 Or ps = 1 Then
            MPlayer.Play
        End If
        s = "110"
    End Select
    For i = 1 To 3: Controls("cb" & i).Enabled = Mid$(s, i, 1): Next
End Sub
 
Private Sub CBX_Click()
    CBX.SelStart = 255
    Call PlayerAction("Воспр")
End Sub
 
Private Sub CB_Click()
    PlayerAction (CB.Caption)
End Sub
 
Private Sub Form_Load()
    Set MPlayer = CreateObject("MediaPlayer.MediaPlayer.1")
    MPlayer.AutoStart = 1
    Const w = 900
    
    Set CD = CreateObject("UserAccounts.CommonDialog")
    Const mz = "*.mp3;*.wav"
    CD.Filter = "Музыка " & mz & "|" & mz & "|Все файлы (*.*)|*.*"
    CD.FilterIndex = 1
    Set CBX = Controls.Add("vb.ComboBox", "CBX"): With CBX
        .Move 0, 0, w * 4
        .Visible = 1
    End With
    
    For Each v In Array("Open", "Стоп", "Пауза", "Воспр")
        With Controls.Add("vb.CommandButton", "cb" & i)
            .Caption = v
            .Move i * w, CBX.Height, w, 300
            .Enabled = (i = 0)
            .Visible = 1
        End With
        i = i + 1
    Next
    Set pb = Controls.Add("vb.picturebox", "pb"): With pb
        .Move w * 4, 0, 300, CBX.Height * 2
        .BackColor = vbWhite
        .Visible = 1
    End With
    Set vl = Controls.Add("vb.CommandButton", "vl", Controls("pb")): With vl
        .Move 0, 180, 260, 30
        .Visible = 1
    End With
    mVol = MPlayer.Volume
    Caption = "Mp3-Player micro"
    Width = CBX.Width + vl.Width: Width = Width + (Width - ScaleWidth)
    Height = CBX.Height * 2: Height = Height + (Height - ScaleHeight)
End Sub
 
Private Sub CB_LostFocus()
    Set v = ActiveControl
    Select Case TypeName(v)
    Case "CommandButton"
        If v.Name <> "vl" Then Set CB = v
    End Select
End Sub
Private Sub vl_LostFocus(): CB_LostFocus: End Sub
Private Sub pb_LostFocus(): CB_LostFocus: End Sub
Private Sub CBX_LostFocus(): CB_LostFocus: End Sub
Private Sub CBX_KeyPress(KeyAscii As Integer): KeyAscii = 0: End Sub
Private Sub Form_Unload(Cancel As Integer): PlayerAction "Стоп": End Sub
Миниатюры
Воспроизведение из объекта OLE кодом  
2
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 71
29.05.2016, 16:28  [ТС]
А существует возможность поместить мелодию, которая будет проигрываться в этом плеере, в exe?
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
29.05.2016, 17:01
Зачем Вам exe, скомпилируйте это окно, и будет уже своё exe
или продумайте возможность в фильтре диалога выбора файла открывать exe
но тогда в обработчике событий нажатия кнопки воспроизведения нужно делать чтото другое
например запускать эту программу
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 71
29.05.2016, 17:31  [ТС]
Может я неправильно выразился... мне нужно, чтобы при запуске программы (например Вашего плеера) не нужно было выбирать мелодию с диска. Также нужно, чтобы эту мелодию, при запуске программы на других компьютерах, не нужно было копировать туда отдельно.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
29.05.2016, 17:33
Сделал эту программу еще лучше, теперь названия кнопок будут константами, все значимые константы
аккуратно расположил в начале модуля, сделал проще для понимания
а также программа будет помнить настройку звука, при желании можно еще добавить возможность
считывать плейлист

Вот эта версия:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Option Explicit
'
'Mp3-Player Micro
'by the Fever Brain
'
Option Compare Text
Const r = 90, rr = r * 3, w = r * 10, AppKey = "Mp3-Player Micro"
 
Const pFilter = "*.mp3;*.wav"
Const pOpen = "Файл"
Const pStop = "Стоп"
Const pPause = "Пауза"
Const pPlay = "Воспр"
Const bCount = 4 'Количество кнопок
 
Dim WithEvents CB As CommandButton, WithEvents vS As VScrollBar
Dim WithEvents CBX As ComboBox, WithEvents pb As PictureBox
Dim CD As Object, MPlayer As Object
Dim File$, InitD$, i&, v
 
Private Sub vS_Scroll()
    MPlayer.Volume = -vS.Value
End Sub
 
Sub PlayerAction(Optional Action$)
    Debug.Print MPlayer.Volume
    On Error Resume Next
    Static s$, ps&
    ps = MPlayer.PlayState
    Select Case Action
    Case pOpen
        If CBX.ListCount = 0 Then s = "000"
        If CD.ShowOpen Then
            File = CD.FileName
            CD.InitialDir = Left(File, InStrRev(File, "") - 1)
            Select Case Right$(File, 4)
            Case ".mp3", ".wav"
                CBX.AddItem File, 0
                s = "001":
                CBX.ListIndex = 0
            End Select
        End If
    Case pStop: MPlayer.Open "": s = "001"
    Case pPause: MPlayer.Pause: s = "001"
    Case pPlay
        If ps = 6 Or CBX.Text <> MPlayer.FileName Then
            MPlayer.Open CBX.Text
        ElseIf ps = 0 Or ps = 1 Then
            MPlayer.Play
        End If
        s = "110"
    End Select
    For i = 1 To 3: Controls("cb" & i).Enabled = Mid$(s, i, 1): Next
End Sub
 
Private Sub CBX_Click()
    CBX.SelStart = 255
    Call PlayerAction(pPlay)
End Sub
 
Private Sub CB_Click()
    PlayerAction (CB.Caption)
End Sub
 
Private Sub Form_Load()
    Set MPlayer = CreateObject("MediaPlayer.MediaPlayer.1")
    MPlayer.AutoStart = 1
    Set CD = CreateObject("UserAccounts.CommonDialog")
    CD.Filter = "Музыка " & pFilter & "|" & pFilter & "|Все файлы (*.*)|*.*"
    CD.FilterIndex = 1
    Set CBX = Controls.Add("vb.ComboBox", "CBX"): With CBX
        .Move 0, 0, w * bCount
        .Visible = 1
    End With
    For Each v In Array(pOpen, pStop, pPause, pPlay)
        With Controls.Add("vb.CommandButton", "cb" & i)
            .Caption = v
            .Move i * w, CBX.Height, w, CBX.Height
            .Enabled = (i = 0)
            .Visible = 1
        End With
        i = i + 1
    Next
    Set pb = Controls.Add("vb.picturebox", "pb"): With pb
        .Move w * bCount, 0, rr + 60, CBX.Height * 2
        .BackColor = vbWhite
        .Visible = 1
    End With
    Set vS = Controls.Add("vb.VScrollBar", "vS", pb): With vS
        .Move 0, -rr, rr, r * 12
        .Min = 0
        .Max = 9000
        .Value = GetSetting(AppKey, "vs", 0, .Max \ 2)
        .Visible = 1
    End With
    MPlayer.Volume = -vS.Value
    Caption = AppKey
    Width = CBX.Width + pb.Width: Width = Width + (Width - ScaleWidth)
    Height = CBX.Height * 2: Height = Height + (Height - ScaleHeight)
End Sub
 
Private Sub CB_LostFocus()
    Set v = ActiveControl
    Select Case TypeName(v)
    Case "CommandButton"
        If v.Name <> "vS" Then Set CB = v
    End Select
End Sub
 
Private Sub vS_LostFocus(): CB_LostFocus: End Sub
Private Sub pb_LostFocus(): CB_LostFocus: End Sub
Private Sub CBX_LostFocus(): CB_LostFocus: End Sub
Private Sub CBX_KeyPress(KeyAscii As Integer): KeyAscii = 0: End Sub
Private Sub Form_Unload(Cancel As Integer):
    SaveSetting AppKey, "vs", 0, vS.Value
    PlayerAction pStop
End Sub
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
29.05.2016, 17:41
Цитата Сообщение от Al_SB Посмотреть сообщение
не нужно было выбирать мелодию с диска
Открываете "Мой Компьютер" и выбираете любой источник кто вам не даёт ?
Миниатюры
Воспроизведение из объекта OLE кодом  
0
0 / 0 / 0
Регистрация: 03.01.2016
Сообщений: 71
29.05.2016, 18:35  [ТС]
Мелодия должна запускаться по событию.
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.05.2016, 08:33
Готовые решения и полезные коды на Visual Basic 6.0

Но лично я бы присмотрелся к замечательному ЯП PureBasic вот этод замечательный код в 7 строк решает задачу воспроизведения звука целиком и полностью из памяти, не используя временные папки компьютера:
PureBasic
1
2
3
4
5
6
7
InitSound()
CatchSound(0, ?Music)
PlaySound(0, #PB_Sound_Loop)
DataSection
    Music: 
      IncludeBinary "Sound.wav"
EndDataSection
Можно использовать PureBasic совершенно легально и бесплатно для целых 800 строк кода. Тут всего 7 строк, в общем рекомендую!
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.05.2016, 09:36
PlaySound(0, #PB_Sound_Loop)
Это функция API, она считывает только WAV
а вы попробуйте семью строчками написать мультимедийный проигрыватель
с более-менее адекватным интерфейсом.

В моём же случае есть интерфейс, есть возможность выбора любого медийного файла
в фильтре выбора у меня только 2, мне просто лень было проверять все совместимые ассоциации
а вообщето при наличии кодеков моя программа может считывать всё то-же
что и все известные плейера

Вот списал из ассоциаций такого плейера, далеко не всё !

audio .wav,
Cd-audio .cd, .cda
Dvd-audio - .ac4, .dts
FLAC Audio .flac
MIDI .mid .midi .rmi
MP3 ! ! !
MPEG .mpa .mp2 .m1a .m2a

И так далее, и так далее ...

Добавлено через 11 минут
Да и вот еще, на этом форуме, не отображаеться косая линия (слэш)
отображается если написать не одну а две (\\) - отображается одна.
Так вот, если не трудно, замените в 36 строчке последнего моего кода
Цитата Сообщение от fever brain Посмотреть сообщение
CD.InitialDir = Left(File, InStrRev(File, "") - 1)
Пустые кавычки "" на это выражение Chr(92)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
30.05.2016, 10:28
Цитата Сообщение от fever brain Посмотреть сообщение
В моём же случае есть интерфейс, есть возможность выбора любого медийного файла
Ну и в чем сила, Брат? У меня есть Total Commander, кликаешь на любом файле и он запуститься. Вот и интерфейс и масок не надо, всё по ассоциациям в системе.
На PureBasic это те же 7 строчек кода (Бро, всего семь!)
PureBasic
1
2
3
4
5
6
7
 InitMovie()
MovieName$ = OpenFileRequester("Choose the movie to play", "", "Movie files|*.avi;*.mpg|All Files|*.*", 0)
 LoadMovie(0, MovieName$)
    OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "PureBasic - Movie")
    PlayMovie(0, WindowID(0))
    Repeat
    Until WaitWindowEvent() = #PB_Event_CloseWindow
Причем PlayMovie играет всё, что угодно, и видео, и музыку
Если Вы всё же решитесь отойти от древнего VB6, то увидите, что есть ЯП поновее. 13 Кб играет всё, что угодно!
Вложения
Тип файла: zip play.zip (13.3 Кб, 7 просмотров)
1
30.05.2016, 10:53

Не по теме:

Наверное Вы прикалываетесь.
Ваша программа совсем микроскопическая получилась

Только выбор файла и всё

Юмор оценил ))

0
30.05.2016, 12:39

Не по теме:

Цитата Сообщение от fever brain Посмотреть сообщение
Только выбор файла и всё
Что, разве не играет звук или там видиофайлы? Сочувствую Вашему компу...

0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
30.05.2016, 17:36
Да читать-то читает, более того указанный Вами код я запустил в среде разработки PB, так-что
не такой уж я и далёкий, я к тому что в моей программе на VB, предусмотренно мало-мальское управление
от того и строчек больше, хотя если так ставить вопрос, то я тоже бы вполне уложился в 7 строчек
да что там в 7, в 5 ! если еще не объявлять переменные и прочее
Миниатюры
Воспроизведение из объекта OLE кодом  
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
30.05.2016, 21:21
Цитата Сообщение от Pro_grammer Посмотреть сообщение
PureBasic вот этод замечательный код в 7 строк решает задачу воспроизведения звука целиком и полностью из памяти, не используя временные папки компьютера:
Visual Basic
1
2
3
4
5
6
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByRef lpszSoundName As Any, ByVal uFlags As Long) As Long
Private Sub Form_Load()
    Dim d() As Byte
    d = LoadResData(101, "CUSTOM")
    sndPlaySound d(0), 4
End Sub
Тот же код на VB6 - 6 строчек кода, если не считать автоматически сгенерированные строки обработчика Load - то 4, если заюзать win32.tlb - 3 строчки.

Добавлено через 59 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Причем PlayMovie играет всё, что угодно, и видео, и музыку
В vb6 тоже самое можно делать:
Visual Basic
1
2
3
4
5
Private Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
 
Private Sub Form_Load()
    mciExecute "play C:\Temp\Project007.avi"
End Sub
А вот через DirectShow:
Visual Basic
1
2
3
4
5
Private Player As New FilgraphManager
Private Sub Form_Load()
    Player.RenderFile "D:\Толик\Фильмы\I ROBOT.flv"
    Player.Run
End Subb
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2016, 21:21
Помогаю со студенческими работами здесь

Поле объекта OLE
Добрый вечер! Уже задавал вопрос, но у меня ничего не получилось. Как сделать так, чтобы в форме отображалась сама картинка, а не путь к...

Файлы в поле объекта OLE
в поле объекта OLE файл хранится в виде шестнадцатеричного кода?(HEX)

Нет ответа от OLE объекта
работаю с Word 2010 через GreateObject(Word.Application) на одних ПК работает нормально а на одном макрос зависает(ждет ответа), а...

Проводник при создании Ole объекта
Господа решил модернизировать свою программу. Смысл ее состоит в том, чтобы из папки, где jpg файлы, грузить их в word. В конце каждого...

Тип данных "Поле объекта OLE"
Здравствуйте! Такая проблема: Нужно через С++Builder создать базу данных Access. В этой базе один столбец должен иметь тип данных...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru