Вызов формы через форму

Для неординарных вопросов. Если вы опытный программист, попавший в трудную ситуацию, — вам сюда.

Модератор: gaidar

Правила форума
Этот раздел не предназначен для того, чтобы вы адресовали свою проблему профессионалам.
Этот раздел предназначен для профессионалов, которые столкнулись с проблемой и не могут решить ее самостоятельно.
Если вы считаете себя профессионалом, а свою проблему сложной — вам сюда.
Если модератор посчитает, что вы ошиблись, то на первый раз он перенесет ваше сообщение в основной раздел без последствий для автора. Во второй раз тема будет закрыта, а автору будет выписано нарушение. В третий раз автор будет забанен.
mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Вызов формы через форму

Сообщение mZone » 07.02.2007 (Ср) 9:49

Суть вопроса: Есть две формы со своими Event-ми.
1. Вызываем форму Form1, затем по WithEvents as Form2 открываем вторую форму (Form2).
2. В Form2 снова же по WithEvents as Form1 необходимо открыть новую Form1.
В итоге от компилятора получаем: "Circular dependencies between modules" :cry:
Подскажите как решит эту проблемму!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.02.2007 (Ср) 9:56

А что тебе надо?
Lasciate ogni speranza, voi ch'entrate.

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 07.02.2007 (Ср) 10:21

Так описал же вроде. Вызываем из открытой вормы, другую, имеющую ссылку на первую форму, которая, в свою очередь, имеет ссылку на вторую и т.д. .......
Последний раз редактировалось mZone 07.02.2007 (Ср) 10:24, всего редактировалось 2 раз(а).

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.02.2007 (Ср) 10:23

Тогда непонятно, чего ты ожидаешь.
Тебе английским языком пишут, что циклические ссылки не допускаются.

Напиши, что тебе надо получить в итоге, а не как ты это хочешь сделать.
Lasciate ogni speranza, voi ch'entrate.

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 07.02.2007 (Ср) 10:31

Так я понимаю, что не допускаются. Просто не хочется загромождать проект многочисленными формами.
Делаем так:
Есть форма - справочник (список), со свойством, в зависимости от которого в нем выводятся тот или иной список. В этой форме объявлены с событиями ряд других форм - карточки для просмотра и редактирования элементов списка. Так вот, в одной из этих форм-карточек требуется открыть первую форму-список (эже с другим списком) для выбора.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.02.2007 (Ср) 10:33

А зачем нужно WithEvents?
Lasciate ogni speranza, voi ch'entrate.

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 07.02.2007 (Ср) 10:38

Потому как при редактировании формы-карточки я обновляю в соответствии с введенными данными элементы формы-списка (при нажатии на кнопик "Применить" например)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.02.2007 (Ср) 10:45

Тогда покажи, как ты это делаешь.
Lasciate ogni speranza, voi ch'entrate.

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 07.02.2007 (Ср) 11:02

frmList
Код: Выделить всё
Option Explicit

Private WithEvents EmptyInsideMove As frmInsideMove

Dim pFormType As ListFormType
Dim pFormCode As Long

Dim strCaption As String

Public Event Choose(ChooseCode As Long, ChooseText As String)

Public Property Let FormType(NewFormType As ListFormType)
    pFormType = NewFormType
    Select Case pFormType
.......
    Case ListFormType.EmptyInsideMove
        strCaption = ""
        Set EmptyInsideMove=New frmInsideMove
    End Select
End Property

Private Sub cmdChoose_Click()
......
    RaiseEvent Choose(pFormCode, tmpStr)
End Sub

Private Sub EmptyInsideMove_ChildSaved(ChildDocCode As Long)
    grdList.Refresh ChildDocCode
End Sub


frmInsideMove
Код: Выделить всё
Option Explicit

Public Event ChildSaved(ChildDocCode As Long)

Private WithEvents ListForm As frmList

Private Sub txtOperName_ButtonClick()
    Set ListForm = New frmList
    ListForm.FormType = ListFormType.Operations
    ListForm.Show 1, Me
End Sub

Private Sub cmdApply_Click()
    RaiseEvent ChildSaved .....
End sub

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 08.02.2007 (Чт) 22:58

mZone писал(а):frmList


Ты эта... Если хочешь чтобы другим была понятней твоя проблема не делай им ребус - сделай простейший примерчик с твоими двумя формами и высылай его - чтобы сразу можно было запустить, а не гадать на кофейной гуще или собирать из кусков...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 09.02.2007 (Пт) 9:15

Andrey Fedorov писал(а):
mZone писал(а):frmList


Ты эта... Если хочешь чтобы другим была понятней твоя проблема не делай им ребус - сделай простейший примерчик с твоими двумя формами и высылай его - чтобы сразу можно было запустить, а не гадать на кофейной гуще или собирать из кусков...


Круто!!! Что еще может быть понятней чем реальный код! (работающий, хочу заметить) А кофе я пью каждое утро!!! Только решение проблеммы так и не вижу!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.02.2007 (Пт) 10:43

mZone писал(а):
Andrey Fedorov писал(а):
mZone писал(а):frmList


Ты эта... Если хочешь чтобы другим была понятней твоя проблема не делай им ребус - сделай простейший примерчик с твоими двумя формами и высылай его - чтобы сразу можно было запустить, а не гадать на кофейной гуще или собирать из кусков...


Круто!!! Что еще может быть понятней чем реальный код! (работающий, хочу заметить) А кофе я пью каждое утро!!! Только решение проблеммы так и не вижу!


Автор серьезно считает, что приведенного куска кода, выдранного из двух форм достаточно для понимания?
Весь мир матрица, а мы в нем потоки байтов!

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 09.02.2007 (Пт) 13:15

!Viper! писал(а):
mZone писал(а):
Andrey Fedorov писал(а):
mZone писал(а):frmList


Ты эта... Если хочешь чтобы другим была понятней твоя проблема не делай им ребус - сделай простейший примерчик с твоими двумя формами и высылай его - чтобы сразу можно было запустить, а не гадать на кофейной гуще или собирать из кусков...


Круто!!! Что еще может быть понятней чем реальный код! (работающий, хочу заметить) А кофе я пью каждое утро!!! Только решение проблеммы так и не вижу!


Автор серьезно считает, что приведенного куска кода, выдранного из двух форм достаточно для понимания?

Каюсь, - думал что и этого достаточно :oops: Не видя смысла отсылать весь проект (!!!) разрабатываемый мной на протяжении уже пяти лет (!!!) состряпал простейщий пример. Я ведь действительно прошу помощи, а не ехидных замечаний. Суть самой программы в учете и радиоточек на предприятии проводного вещания (проводных радиоточек - есть еще такие :lol: ) и ведении всяческой связанной с этим документации. Включая расчеты с клиентами и с банком. Скомпилированный файл занимает порядка 2 мегабайт (!!!). Поэтому, сами понимаете, кода в нем немеряно (пять лет все-таки).
Вложения
Project.rar
(4.05 Кб) Скачиваний: 307

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.02.2007 (Пт) 14:39

Проект из аттача у меня нормально запускается и работает.
Что не так?
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.02.2007 (Пт) 14:50

В примере вроде бы нечему работать неправильно.

Но, если реализовать обработчики событий у форм, то естественно выплавыет сообщение

"Circalar dependencies between modules"

что, собственно, и требовалось доказать
Весь мир матрица, а мы в нем потоки байтов!

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 09.02.2007 (Пт) 14:53

tyomitch писал(а):Проект из аттача у меня нормально запускается и работает.
Что не так?

:shock: Неужели. Может это только у меня не запускается. Я писал в VB5. :wink:

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 09.02.2007 (Пт) 14:57

!Viper! писал(а):В примере вроде бы нечему работать неправильно.

Но, если реализовать обработчики событий у форм, то естественно выплавыет сообщение

"Circalar dependencies between modules"

что, собственно, и требовалось доказать

Да если и не обрабатывать события, пример выскочит с вышеуказанной надписью! Вопрос в том, можно ли это обойти (есесно не добавляя дополнительных форм)

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.02.2007 (Пт) 15:02

mZone писал(а):Не видя смысла отсылать весь проект (!!!) разрабатываемый мной на протяжении уже пяти лет (!!!)


И не вздумай - это другая крайность.
Никому не нужны мегабайты чужого кода - кому охота в них копаться?

mZone писал(а):состряпал простейщий пример.


А так и надо - минимум всего, только по существу вопроса.
Иногда и сам при этом умудряешься найти ответ.

Так что если действительно так - у кого будет время глянут.
Если уже не посмотрели, конечно.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.02.2007 (Пт) 15:07

mZone писал(а):
!Viper! писал(а):В примере вроде бы нечему работать неправильно.

Но, если реализовать обработчики событий у форм, то естественно выплавыет сообщение

"Circalar dependencies between modules"

что, собственно, и требовалось доказать

Да если и не обрабатывать события, пример выскочит с вышеуказанной надписью! Вопрос в том, можно ли это обойти (есесно не добавляя дополнительных форм)


Отнюдь. Пример в первозданном виде нормально компилируется, запускается и работает...
Весь мир матрица, а мы в нем потоки байтов!

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 09.02.2007 (Пт) 15:27

!Viper! писал(а):
mZone писал(а):
!Viper! писал(а):В примере вроде бы нечему работать неправильно.

Но, если реализовать обработчики событий у форм, то естественно выплавыет сообщение

"Circalar dependencies between modules"

что, собственно, и требовалось доказать

Да если и не обрабатывать события, пример выскочит с вышеуказанной надписью! Вопрос в том, можно ли это обойти (есесно не добавляя дополнительных форм)


Отнюдь. Пример в первозданном виде нормально компилируется, запускается и работает...

Может я чего-то не понимаю, но у меня он не запускается! Кому интересно, - скрин в атаче.
Вложения
Run.jpg
Run.jpg (15.08 Кб) Просмотров: 7524

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.02.2007 (Пт) 18:34

mZone писал(а):Я писал в VB5. :wink:

Это телепаты должны были сами угадать? :roll:
По крайней мере, один способ решения проблемы найден -- перейти на VB6.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 09.02.2007 (Пт) 19:36

И чё?.. На VB6 тоже не работает, я проверял вчера.
Если в коде форм есть обработчики событий друг друга - не только не компилируется, но даже перестаёт работать часть функционала редактора кода, а именно списки объектов и их событий. Если убрать сами обработчики, оставив остальное, всё работает. Может быть в старом MSDN есть ответ на вопрос почему, но у меня сейчас нет его под рукой.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 09.02.2007 (Пт) 19:48

GSerg писал(а):И чё?..


Так как он выложил - работает.
Моделировать за него неработающий код - просто влом.
Ему надо - пускай сделает и выложит то что не работает, а не целиком работающий проект...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 12.02.2007 (Пн) 9:35

Andrey Fedorov писал(а):
GSerg писал(а):И чё?..


Так как он выложил - работает.
Моделировать за него неработающий код - просто влом.
Ему надо - пускай сделает и выложит то что не работает, а не целиком работающий проект...

Да не работает он, и не в 5-ом и не в 6-ом. И ничего за меня моделировать не надо, просто попытаться запустить, а не строить умозрительные заключения.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.02.2007 (Пн) 9:46

Дык. Пытались ужо...
Весь мир матрица, а мы в нем потоки байтов!

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 12.02.2007 (Пн) 9:57

!Viper! писал(а):Дык. Пытались ужо...

И неужели работает!? Ну я тогда ничего вообще не понимаю. Для меня-то проблемма остается!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 12.02.2007 (Пн) 11:00

Весь мир матрица, а мы в нем потоки байтов!

mZone
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 07.02.2007 (Ср) 9:17

Сообщение mZone » 12.02.2007 (Пн) 11:12

Я уж и не знаю о чем думать. Знатоки, подскажите, может в настройках самого VB что не так? :cry:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.02.2007 (Пн) 12:12

Я бы сделал по другому.
Например, в первой форме объявил бы публичную процедуру RefreshForm, а из дочерней формы вызывал бы ее (при нажатии кнопки Apple).
Либо завел бы какого-нибудь диспетчера-посредника, управляющего событиями.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 12.02.2007 (Пн) 12:49

mZone писал(а):
!Viper! писал(а):Дык. Пытались ужо...

И неужели работает!? Ну я тогда ничего вообще не понимаю. Для меня-то проблемма остается!


Ну смотри скриншот твоей программы.
Что там не работает??? Все прекрасно...
Вложения
IsOK.rar
(29.08 Кб) Скачиваний: 277
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

След.

Вернуться в Раздел для Профессионалов

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList