powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возможно ли создать экземпляр формы, находящийся в другом проекте?
6 сообщений из 31, страница 2 из 2
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105075
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvn75
Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку на инстанс формы из проекта А, буду рад услышать.

ну ты хоть пример упрощенный выложи с парой mdb...
типа в первом mdb в форме вычисляется Поле1 + Поле2
тогда во втором mdb что примерно нужно от первого?
kvn75
Смотря на сколько...
Я только в начале этого пути...

Вопрос не праздный однако...
Так-то можно в любом проекте повесить скрытую дежурную форму, которая каждые 10 сек будет читать возможные инструкции, например из txt файла (что нужно делать) и делать что угодно, а инструкции будут даваться из первого проекта...
...
Рейтинг: 0 / 0
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105083
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvn75
Спасибо большое, что пытаешься помочь.
Про указания имя Проекта я в курсе. Но в этом случае

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function InstForm_B()
   Dim frm As Form
   
   Set frm = New ProjectA.Form_frmTest
   
   frm.Visible = True
   
   Set frm = Nothing
   
End Function



оно не работает.

И не будет.
Ты пытаешься присвоить переменной с типом Form класс
не соответствие типов однако

kvn75
Работоет только в таком варианте
Код: vbnet
1.
2.
3.
Public Sub Test_A()
    ProjectB.OpenForm_B
End Sub




Модуль в проекте "Б"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Compare Database
Option Explicit

Public Function OpenForm_B()
    Const cFrm  As String = "frmTest"
    DoCmd.OpenForm cFrm
End Function

Public Function InstForm_B()
   Dim frm As Form
   
   Set frm = New Form_frmTest
   
   frm.Visible = True
   
   Set frm = Nothing
   
End Function


доработай функцию.
передавай в функцию имя формы в качестве параметра.
...
Рейтинг: 0 / 0
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105205
kvn75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag
kvn75
Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку на инстанс формы из проекта А, буду рад услышать.

ну ты хоть пример упрощенный выложи с парой mdb...
типа в первом mdb в форме вычисляется Поле1 + Поле2
тогда во втором mdb что примерно нужно от первого?
kvn75
Смотря на сколько...
Я только в начале этого пути...

Вопрос не праздный однако...
Так-то можно в любом проекте повесить скрытую дежурную форму, которая каждые 10 сек будет читать возможные инструкции, например из txt файла (что нужно делать) и делать что угодно, а инструкции будут даваться из первого проекта...



Наверное, я действительно всех уже запутал, что мне нужно.
Выкладываю пример. Может теперь будет понятней, что я хочу получить в итоге.
...
Рейтинг: 0 / 0
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105260
kvn75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ROI
kvn75
Спасибо большое, что пытаешься помочь.
Про указания имя Проекта я в курсе. Но в этом случае

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function InstForm_B()
   Dim frm As Form
   
   Set frm = New ProjectA.Form_frmTest
   
   frm.Visible = True
   
   Set frm = Nothing
   
End Function



оно не работает.

И не будет.
Ты пытаешься присвоить переменной с типом Form класс
не соответствие типов однако


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

Код: vbnet
1.
 Set frm = New Form_frmTest



И никакой ошибки несоответствия типов не возникает. Так как данный модуль находится в данном проекте.
А я пытаюсь узнать, можно ли как-то извернуться, чтобы этого же добиться из другого, «подчинённого», проекта.

ROI

Код: vbnet
1.
2.
3.
Public Sub Test_A()
    ProjectB.OpenForm_B
End Sub



Модуль в проекте "Б"
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Compare Database
Option Explicit

Public Function OpenForm_B()
    Const cFrm  As String = "frmTest"
    DoCmd.OpenForm cFrm
End Function

Public Function InstForm_B()
   Dim frm As Form
   
   Set frm = New Form_frmTest
   
   frm.Visible = True
   
   Set frm = Nothing
   
End Function


доработай функцию.
передавай в функцию имя формы в качестве параметра.


А зачем её дорабатывать, это просто пример.
Я пытался показать, что я умею вызывать функции из другого проекта с указанием имени проекта. И это работает для вызова функций, но не подходит для указания в конструкции

Код: vbnet
1.
Set frm = New ProjectA.Form_frmTest
...
Рейтинг: 0 / 0
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105279
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvn75
... Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку ...

В начальной постановке задачи, про ссылку упоминания не было, было только про создание экземпляров форм. :)

Есть экзотический вариант:

Проект А, бэк модуль формы frmWorks:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function GetInstanceByName(formname As String) As Access.Form
    Dim obj As Object
    Select Case formname
        Case Is = "frm1"
            Set obj = New Form_frm1
        Case Is = "frm2"
            Set obj = New Form_frm2
        Case Else
            'I don't know
            Set obj = Me
    End Select
    Set GetInstanceByName = obj.Form
End Function



Проект В, любое место:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub Test1()
    Dim frm As Access.Form
    
    DoCmd.OpenForm "frmWorks", , , , , acHidden
    Set frm = Forms("frmWorks").GetInstanceByName("frm2")
    DoCmd.Close acForm, "frmWorks"
    frm.Visible = True
End Sub
...
Рейтинг: 0 / 0
Возможно ли создать экземпляр формы, находящийся в другом проекте?
    #40105284
kvn75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared
kvn75
... Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку ...

В начальной постановке задачи, про ссылку упоминания не было, было только про создание экземпляров форм. :)

Есть экзотический вариант:

Проект А, бэк модуль формы frmWorks:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function GetInstanceByName(formname As String) As Access.Form
    Dim obj As Object
    Select Case formname
        Case Is = "frm1"
            Set obj = New Form_frm1
        Case Is = "frm2"
            Set obj = New Form_frm2
        Case Else
            'I don't know
            Set obj = Me
    End Select
    Set GetInstanceByName = obj.Form
End Function



Проект В, любое место:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Public Sub Test1()
    Dim frm As Access.Form
    
    DoCmd.OpenForm "frmWorks", , , , , acHidden
    Set frm = Forms("frmWorks").GetInstanceByName("frm2")
    DoCmd.Close acForm, "frmWorks"
    frm.Visible = True
End Sub



Это я и искал!!!
Похоже, что это решает мою задачу.
Спасибо большое!

И спасибо всем кто пытался помочь.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Возможно ли создать экземпляр формы, находящийся в другом проекте?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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