Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
vmag
Member

Откуда: MP
Сообщений: 4229
kvn75
Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку на инстанс формы из проекта А, буду рад услышать.

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

Вопрос не праздный однако...
Так-то можно в любом проекте повесить скрытую дежурную форму, которая каждые 10 сек будет читать возможные инструкции, например из txt файла (что нужно делать) и делать что угодно, а инструкции будут даваться из первого проекта...
17 окт 21, 23:56    [22384855]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 2262
kvn75
Спасибо большое, что пытаешься помочь.
Про указания имя Проекта я в курсе. Но в этом случае

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


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

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

kvn75
Работоет только в таком варианте
Public Sub Test_A()
    ProjectB.OpenForm_B
End Sub



Модуль в проекте "Б"
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

доработай функцию.
передавай в функцию имя формы в качестве параметра.
18 окт 21, 05:37    [22384871]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
kvn75
Member

Откуда: Москва
Сообщений: 32
vmag
kvn75
Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку на инстанс формы из проекта А, буду рад услышать.

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

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



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

К сообщению приложен файл (Experement01.zip - 61Kb) cкачать
18 окт 21, 15:42    [22385078]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
kvn75
Member

Откуда: Москва
Сообщений: 32
ROI
kvn75
Спасибо большое, что пытаешься помочь.
Про указания имя Проекта я в курсе. Но в этом случае

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


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

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


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

 Set frm = New Form_frmTest


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

ROI

Public Sub Test_A()
    ProjectB.OpenForm_B
End Sub


Модуль в проекте "Б"
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

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


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

Set frm = New ProjectA.Form_frmTest
18 окт 21, 17:55    [22385184]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
Predeclared
Member

Откуда: And God I know I'm one
Сообщений: 1031
kvn75
... Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку ...

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

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

Проект А, бэк модуль формы frmWorks:
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


Проект В, любое место:
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
18 окт 21, 20:49    [22385228]     Ответить | Цитировать Сообщить модератору
 Re: Возможно ли создать экземпляр формы, находящийся в другом проекте?  [new]
kvn75
Member

Откуда: Москва
Сообщений: 32
Predeclared
kvn75
... Но если есть идеи как из функций в проекте Б, что-то дёргать в А, и это что-то вернёт мне ссылку ...

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

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

Проект А, бэк модуль формы frmWorks:
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


Проект В, любое место:
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


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

И спасибо всем кто пытался помочь.
18 окт 21, 22:23    [22385252]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft Access Ответить