Выполнить предопр. процедуру др. формы из контекста другой

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ahilesul
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.02.2011 (Пт) 11:03

Выполнить предопр. процедуру др. формы из контекста другой

Сообщение ahilesul » 30.05.2011 (Пн) 9:38

Как выполнить код предопределенной процедуры Form_Load() формы Form1 "находясь" в контексте другой формы Form2 т.е понажатию кнопки на форме Form2 вызвать выполнение процедуры Form_Load() формы Form1? или только копированием кода процедуры в процедуру-обработчик нажатия кнопки?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Хакер » 30.05.2011 (Пн) 9:42

ahilesul писал(а):предопределенной процедуры Form_Load()

Не существует никаких предопределённых процедур нигде, кроме твоей фантазии.

ahilesul писал(а):формы Form1 "находясь" в контексте другой формы Form2

Не существует никакого «нахождения» в контексте другой формы нигде, кроме твоей фантазии.

ahilesul писал(а):т.е понажатию кнопки на форме Form2 вызвать выполнение процедуры Form_Load() формы Form1?

Контрольный вопрос: при нажатии на упомянутую кнопку, метод (Form_Load) какого из экземпляров формы Form1 должен выполниться?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ahilesul
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.02.2011 (Пт) 11:03

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение ahilesul » 30.05.2011 (Пн) 10:15

Form1 дочерняя mdi форма - у нее всегда один экземпляр.

на form1 есть грид, по дв. нажатию гружу модальную форму form2 - форма изменения записи, после изменения записи нужно обновить грид - код обновления грида в процедуре Form_load формы Form1

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Хакер » 30.05.2011 (Пн) 10:16

ahilesul писал(а):- у нее всегда один экземпляр.

С чего бы ради?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ahilesul
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.02.2011 (Пт) 11:03

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение ahilesul » 30.05.2011 (Пн) 10:27

логика моей программы не подразумевает наличия более 1 го экземпляра, поэтому он будет всегда один.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Хакер » 30.05.2011 (Пн) 10:28

Значит ссылка на него есть?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ahilesul
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.02.2011 (Пт) 11:03

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение ahilesul » 30.05.2011 (Пн) 10:36

наверно есть - не вкурсе что ты имеешь ввуду, дескриптор окна формы form1 имеешь ввиду?
в mdi форме есть меню, по нажатию одного пункта грузиться форма form1 с гридом, запись редактируем на модальной форме form2

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

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение alibek » 30.05.2011 (Пн) 11:18

ahilesul писал(а):наверно есть - не вкурсе что ты имеешь ввуду, дескриптор окна формы form1 имеешь ввиду?

Имеется ввиду, что ты не понимаешь код, который используешь.
Если у тебя при выборе пункта меню выполняется что-то вроде Load form1, то ты не можешь говорить, что у тебя только один экземпляр.
Если логика программы подразумевает, что окно может быть только одно, код должен быть другим. Примерно таким:
Код: Выделить всё
Private frmMainForm As Form1
...
Private Sub Menu1_Click
  If frmMainForm Is Nothing Then
    Set frmMainForm = New Form1
    Load frmMainForm
    frmMainForm.Show
  Else
    frmMainForm.Show
  End If
End Sub


И тогда вопрос по вызову публичных методов из frmMainForm станет неактуальным.
Lasciate ogni speranza, voi ch'entrate.

ahilesul
Начинающий
Начинающий
 
Сообщения: 21
Зарегистрирован: 18.02.2011 (Пт) 11:03

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение ahilesul » 30.05.2011 (Пн) 12:40

ясно, спасибо

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Vi » 31.05.2011 (Вт) 8:15

ahilesul писал(а):Как выполнить код предопределенной процедуры Form_Load() формы Form1 "находясь" в контексте другой формы Form2 т.е понажатию кнопки на форме Form2 вызвать выполнение процедуры Form_Load() формы Form1? или только копированием кода процедуры в процедуру-обработчик нажатия кнопки?

VB является событийно-ориентированным, поэтому всегда есть возможность подписаться на события и обрабатывать их в обработчике. Я уже здесь приводил код эмуляции модальности без модальности http://bbs.vbstreets.ru/viewtopic.php?f=1&t=38852&p=6714272&hilit=%D0%BC%D0%BE%D0%B4%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C#p6714272, где процедуры slvfrm_Load и slvfrm_Unload одной формы вызываются "в контексте" другой. И не нужно ничего куда-то копировать.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Хакер » 31.05.2011 (Вт) 12:43

В данном случае автору не подписаться на событие нужно, и даже не инициировать само событие, а просто вызвать один из существующих обработчиков события.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: Выполнить предопр. процедуру др. формы из контекста друг

Сообщение Zenitchik » 12.06.2011 (Вс) 9:00

просто вызвать один из существующих обработчиков события

Как я понял, вопрос только в области видимости.

Подрисовать Form1 метод, который будет вызывать Form_Load()

А ещё лучше - убрать из Form_Load() код, который нужен не только при загрузке формы, и вынести его в отдельный метод.
Знание английского языка - затрудняет понимание кода


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: AhrefsBot и гости: 60

    TopList  
cron