powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как задать свойство "источник данных" самопальному ActiveX?
18 сообщений из 18, страница 1 из 1
Как задать свойство "источник данных" самопальному ActiveX?
    #33101002
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В приложенном файле ActiveX состоящий из одного RichTextBox. Что надо добавить в код, чтобы этот контрол можно было включать в состав формы(Аксесса) и привязывать его к полю таблицы?
Контрол должен показывать сохраненный текст и сохранять в таблице его изменения.
Если просто устанавливать на форме(Аксесса) RichTextBox, то проблем нет - привязываешь его к полю таблицы, как обычное текстовое поле.

А когда используешь его в составе самодельного ActivX, то эта возможность пропадает напрочь! Чего только не пробовал - не получается!
Кто знает и кому не лень, гляньте - что я в коде не добавил?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33101346
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробывал добавить еще элемент ADO Data. С его помощью удалось привязать RichTextBox к полю таблицы базы Аксесс, но:
- заметнее дольше происходит открытие (сравниваю с ситуацией, когда RTB просто установлен на форме Акса)
- вся эта конструкция работает только на чтение - изменения в таблице не фиксируются.
- конкретное указание имени базы, таблицы и поля лишили ActiveX универсальности
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33101977
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не задано ни одно публичное свойство! Каким местом прикажете его привязывать к источнику? Как минимум нужно указать DataSource и DataField. И почему нельзя использовать сам rtb?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33102133
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Antonariy:
авторпочему нельзя использовать сам rtb?
На самом деле там 5 стандартных ActiveX, просто только RTB нужно привязать к таблице, поэтому я его и вычленил.
авторНе задано ни одно публичное свойство
Так - не получается. Если не в лом: добавь прям в моем примере нужные строки. Понимаю, что звучит нахально, но - не получается у меня!!!
Убил все воскресенье на это. Одно получилось: привязать этот контрол к таблице с помощью элементов ADO Data или Data, о результатах см. мое предыдущее сообщение.
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33102687
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНа самом деле там 5 стандартных ActiveX, просто только RTB нужно привязать к таблице, поэтому я его и вычленил.

"Вычленить" отдельный контрол из ocx, где их несколько, нельзя. Просто вместо одного ocx с ричем придется таскать два, включая твой. На тот случай, если я не так понял см. ниже.

авторТак - не получается. Если не в лом: добавь прям в моем примере нужные строки. Понимаю, что звучит нахально, но - не получается у меня!!!
Убил все воскресенье на это. Одно получилось: привязать этот контрол к таблице с помощью элементов ADO Data или Data, о результатах см. мое предыдущее сообщение.

Ставишь ссылку на Microsoft Data Source Interfaces, далее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Property Set DataSource(rhs as MSDATASRC.DataSource)
    Set rtb1.DataSource = rhs 
End Property

Public Property Let DataField(rhs as String)
    rtb1.DataField= rhs 
End Property

...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33102768
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор"Вычленить" отдельный контрол из ocx, где их несколько, нельзя Я, наверно, невнятно объяснил: в проекте VB я использовал 5 стандартных контролов(Панель, Строка сост., Таймер, Имидж и RTB). Созданный на его основе осх оказался "кривой", я вернулся в проект и поскольку первые 4 контрола не нуждаются в связи с таблицами, изъял их из проекта, вместе с кодом. Остался один RTB. Другими словами, создал учебный пример, а "вычленил" - из проекта , а не из осх, конечно. авторСтавишь ссылку на ...а передавать что этому свойству SQL-выражение или rst?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33104271
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ни фига не выходит!
Сделал все как советывали, добавил свой контрол на форму Акса, в окне "Просмотр объектов" у контрола появились свойства DataSource и DataField, но достучаться до них не смог, перепробовал разные варианты - все одно: то "требуется объект", то "невозможно задать значение...".
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33105323
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, не пашет...
Похоже, DAO-источник можно задавать только в дизайн-тайме. Однако, выход есть! Закинь на сой контрол помимо rtb еще и Data и привяжи к нему rtb. Теперь DataSource будет выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Property Set DataSource(rhs As Object)
    Set Data1.Recordset = rhs
End Property

Public Property Get DataSource() As Object
    Set DataSource = Data1.Recordset 
End Property

И выкинь Data Source Interfaces :-)
Проверено, работает.
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33105399
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так...я ж....писал, что пробовал ADO Data. Работает, но:
- приходится фиксировать адрес таблицы и имя поля
- RTB только читает текст, если его изменить, то в таблице изменения не сохраняются(если просто закрыть форму, т.е. без каких-либо ухищрений).
- при открытии формы с контролом, заметна некоторая задержка (хотя допускаю, что это может и субъективно).
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33105421
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звиняй - про код забыл:
RTB к Data я то смогу привязать, и процедуры твои передадут элементу Data рекордсет как источник данных, а как быть с полем рекордсета, который надо указать в свойствах RTB?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33105685
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТак...я ж....писал, что пробовал ADO Data. Работает, но:


Не ADODC, а Data, из стандартных. Он быстрее.

автора как быть с полем рекордсета, который надо указать в свойствах RTB?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Property Let DataField(rhs as String)
    rtb1.DataField= rhs 
End Property

Public Property Get DataField() As String
    DataField = rtb1.DataField
End Property

И про UserControl_Read/WriteProperties не забудь.
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33106662
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ про UserControl_Read/WriteProperties не забудь.Это что?
Код: plaintext
1.
DataSourceBehavior = vbDataSource
DataBindingBehavior = vbSimpleBound
ты про это?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33106777
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал в Аксе форму, запихнул свой(наш... ) контрол. На событие Load формы пишу:
Код: plaintext
1.
Set MyActiveX.DataSource = CurrentDb.OpenRecordset("Таблица1")
MyActiveX.DataField = "Поле1"
Контрол показывает содержимое поля - уже плюс.
Правда изменения по-прежнему не сохраняются.....
Что, на закрытие формы вешать процедуру rst.Edit?
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33107141
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй поставить в Data RecordsetType = Table
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33107336
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не помогло...
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33107352
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавил контролу свойство:
Код: plaintext
1.
2.
Public Property Get DataText() As String
    DataText = RTB1.Text
End Property
и на Закрытие формы(Акса) процедуру:
Код: plaintext
1.
2.
3.
4.
Dim rst As Recordset
Set rst = Me.RecordsetClone
rst.Edit
rst!Поле1= MyActiveX.DataText
rst.Update
сохраняет!!! Спасибо!
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33107408
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправочка. Последнее свойство должно выглядеть так:
Код: plaintext
1.
2.
Public Property Get DataText() As String
    DataText = RTB1.TextRTF
End Property
иначе контрол сохраняет текст без форматирования.
...
Рейтинг: 0 / 0
Как задать свойство "источник данных" самопальному ActiveX?
    #33107583
Benzin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упростил до дальше некуда:
1. Выкинул элемент Data
2. В коде оставил только одно св-во:
Код: plaintext
1.
2.
3.
4.
5.
6.
Public Property Let DataText(strTextRTF As String)
    RTB1.TextRTF = strTextRTF
End Property

Public Property Get DataText() As String
    DataText = RTB1.TextRTF
End Property
В коде формы Акса оставил только:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Form_Load()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Таблица1")
MyActiveX.DataText = rst!Поле1
End Sub

Private Sub Form_Close()
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("Таблица1")
rst.Edit
rst!Поле1= MyActiveX.DataText
rst.Update
End Sub
и так продолжает работать!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как задать свойство "источник данных" самопальному ActiveX?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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