Синхронное выполнение кода сразу в двух формах - VB

Узнай цену своей работы

Формулировка задачи:

Form1 выполняет определенные задачи а Form2 вторичные. Вопрос: Как сделать так, что бы бы форма1 по началу запустила форму2. после того, форма 1 и 2 будет работать одновременно. как так сделать?
попробовал Form2.Show он выполняет только форму 2. но код который далее написан на форме 1 не выполняется.
И еще пацаны, в одной форме используется постоянный цикл. поэтому он не переходит к следующий форме, как можно сделать так. что бы использовались все формы одновременно с постоянным циклом, чтобы программа не ждала пока там цикл у нее закончится. ?

Решение задачи: «Синхронное выполнение кода сразу в двух формах»

textual
Листинг программы
'Обработчик "тиков" таймера. - Это функция обратного вызова.
'Вызывается при обработке сообщения WM_Timer, посылаемого таймером.
'В эту процедуру следует вставить свой код, который будет выполняться
'каждый раз, когда срабатывает таймер.
Public Sub ProcOnTimer( _
  ByVal hWnd As Long, ByVal Msg As Long, _
  ByVal idEvent As Long, ByVal TimeSys As Long _
)
  'Код, который должен быть выполнен при "тике" таймера:
  'Начало.
  '...
  '...
  '...
  'В качестве примера, в окне "Immediate" печатаются строки.
  Debug.Print "Таймер ", Cnt, "HWnd = " & CStr(hWnd)
  '...
  'Конец.
  
  'Код, приведённый ниже - необязательный. Он показан в качестве примера случая, когда
  'есть потребность в формулировке некоторого условия, по которому процедура-обработчик
  '"тика" таймера сама должна принять решение об уничтожении таймера.
  Cnt = Cnt + 1
  If Cnt >= 10 Then KillTimer 0&, idEvent
End Sub
 
'Создание таймера. Эту процедуру надо запустить для создания таймера.
'Сразу после создания таймер начнёт работать.
'В этой процедуре сделана защита от создания нового таймера при неуничтоженном прежнем таймере.
'Если такой код не добавить, то через вызов подобной процедуры можно создавать один за другим множество
'таймеров. При этом, все созданные таймеры продолжат работу. 
'Причём доступ к ним, кроме последнего, будет потерян, так как при создании последнего таймера,
'в переменную IdTimer будет записан его системный идентификатор. И ID других таймеров
'окажутся неизвестными. Если требуется создавать несколько одновременно работающих таймеров - в этом
'случае требуется доработка кода.
Public Sub CreateTimer()
  If IdTimer <> 0 Then
    MsgBox _
      "Таймер уже создан ранее! Уничтожить существующий таймер" _
      + " вы можете, вызвав процедуру DelTimer()."
    Exit Sub
  End If
  
  Cnt = 0
  'Здесь параметр 1000& задаёт интервал срабатываний таймера в миллисекундах.
  'В данном случае этот интервал равен 1000 миллисекунд = 1 секунда.
  IdTimer = SetTimer(0&, 0&, 1000&, AddressOf ProcOnTimer)
End Sub
 
'Уничтожение таймера. Эту процедуру надо запустить для уничтожения таймера.
Public Sub DelTimer()
  If IdTimer = 0 Then Exit Sub
  KillTimer 0&, IdTimer
  IdTimer = 0
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы