Debug.Print iCount

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Debug.Print iCount

Сообщение vvs_adm » 21.05.2006 (Вс) 12:13

Что-то я недопонимаю, что за глюк :oops: Создаем пустой проект, в нем две формы Form1 и MDIForm1. Соответственно Form1.MDIChild=True. В модуле MDI-формы
Код: Выделить всё
Option Explicit

Dim lngCount As Long

Private Sub MDIForm_Load()
    Form1.Show
    lngCount = 1
End Sub

Private Sub MDIForm_Resize()
    If (lngCount < 3) Then
        Me.Width = Me.Width - 45
        Me.Height = Me.Height - 45
        lngCount = lngCount + 1
        DoEvents
        Debug.Print lngCount
    End If
End Sub
Если DoEvents закомментировать, то успевает пропечатать аж до 35 примерно (если заданные размеры позволяют не вылететь по отрицательной высоте\ширине) , соответственно столько же раз уменьшится. А если не комментировать, то вообще виснет. :(
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение alibek » 21.05.2006 (Вс) 13:54

А что непонятного то?
При изменении Me.Width/Me.Height естественно будет рекурсивно вызывать Form_Resize.
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 21.05.2006 (Вс) 13:57

alibek писал(а):А что непонятного то?
If (lngCount < 3) Then
то успевает пропечатать аж до 35 примерно
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 21.05.2006 (Вс) 13:58

alibek писал(а):естественно будет рекурсивно вызывать Form_Resize.
Ну я того и хотел :(
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение alibek » 21.05.2006 (Вс) 14:25

Хм... А заведи-ка ты флаговую переменную, проверяемую вначале Form_Resize.
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 21.05.2006 (Вс) 14:54

alibek писал(а):Хм... А заведи-ка ты флаговую переменную, проверяемую вначале Form_Resize.
Не понял... если так
Код: Выделить всё
Public Sub MDIForm_Resize()
    If bFlag Then
        Me.Width = Me.Width - 45
        Me.Height = Me.Height - 45
        lngCount = lngCount + 1
        If (lngCount > 3) Then bFlag = False
        'DoEvents
        Debug.Print lngCount
    End If
End Sub
то не работает (т.е. работает также)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

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

Сообщение alibek » 21.05.2006 (Вс) 15:07

Код: Выделить всё
Option Explicit
...
Private fBusyResize As Boolean
Public Sub MDIForm_Resize()
  If fBusyResize Then Exit Sub
  fBusyResize = True
  Me.Width = ...
  ...
  fBusyResize = False
End Sub
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 22.05.2006 (Пн) 23:34

alibek писал(а):Хм... А заведи-ка ты флаговую переменную, проверяемую вначале Form_Resize.
Нет что б прямо сказать, в чем дело. (Тогда мне было некогда вникать совсем, потому что это возникло не в моем проекте, а я одновременно занимался своим... )Меня утром в метро осенило, почему так получается :) Хотя думал сидел уже давно о другом. Ты хотя бы выделил ключевое слово "вначале" :lol:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!


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

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

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

    TopList  
cron