Спецам - Порядок событий при загрузке форм

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

Спецам - Порядок событий при загрузке форм

Сообщение MiGan » 15.06.2005 (Ср) 18:00

Как написано в MSDN - Initialize, потом Load, потом Activate... Если до первой загрузки формы вызываешь ее проперт, то в том же порядке.

проблема в том, что у меня почему-то некоторые из этих событий проскакивают:) т.е. допустим, при загрузке формы в событии Load идет вызов другой процедуры, в которой происходят изменения в элементах управления формы (блокировка, отображение информации и др.), так вот при вызове формы эти изменения не происходят!! Самое ужасное!!!!!!! Если расставить в этих местах брейкпоинты то все будет выполнено как надо!!!:( :( :( Как можно обойти эту проблему??? Неужели циклы задержки придется писать????

Опришник
Обычный пользователь
Обычный пользователь
 
Сообщения: 78
Зарегистрирован: 09.01.2005 (Вс) 0:48
Откуда: localhost

Сообщение Опришник » 15.06.2005 (Ср) 18:33

Для начала сделай так(если нифига не изменится, то в коде проблема):
Код: Выделить всё

Private Sub Form_Load()
    Me.Show
    ...
    ...
    ...
End If

А потом выложи исходник, а то так нифига не понятно, всегда всё работало... :D
А здесь могла бы быть ваша реклама...)

Александр80
Bonachón
Bonachón
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 16.06.2005 (Чт) 23:04

MiGan, покажите Ваш код... Так хоть что-то можно будет понять. Какие изминения не происходят? Что именно не изменяется?

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

Сообщение Andrey Fedorov » 17.06.2005 (Пт) 9:08

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

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 17.06.2005 (Пт) 9:16

я делаю проще (в некотором роде):
1. создаю в форме глобальную функцию, допустим Load_Me
2. загружаю форму: Load frmMain
3. вызываю функцию из формы (frmMain.Load_Me)
4. показываю форму: frmMain.Show

всё работает отлично

MiGan
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 02.05.2005 (Пн) 13:27

Сообщение MiGan » 17.06.2005 (Пт) 10:08

Пардон, я нашел уже ошибку - там дело не в порядке событий а в кривых ручках:) Всем большой respect за отзывы!!!

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Спецам - Порядок событий при загрузке форм

Сообщение caa2000 » 24.09.2011 (Сб) 5:18

To MiGan и ко всем остальным:
Абсолютно такая-же байда,слово в слово:
Как написано в MSDN - Initialize, потом Load, потом Activate... Если до первой загрузки формы вызываешь ее проперт, то в том же порядке.

проблема в том, что у меня почему-то некоторые из этих событий проскакивают:) т.е. допустим, при загрузке формы в событии Load идет вызов другой процедуры, в которой происходят изменения в элементах управления формы (блокировка, отображение информации и др.), так вот при вызове формы эти изменения не происходят!! Самое ужасное!Я идиот! Убейте меня, кто-нибудь!! Если расставить в этих местах брейкпоинты то все будет выполнено как надо!!!:( :( :( Как можно обойти эту проблему??? Неужели циклы задержки придется писать????

MiGan,поделись,пожалуйста,откуда кривые руки растут?
Пардон, я нашел уже ошибку - там дело не в порядке событий а в кривых ручках:) Всем большой respect за отзывы!!!


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

В форме есть:
MonthView1
Text1
Label1-5
Command1-2

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

Dim CRLF As String
Dim DtClick As Date
Dim DataPath As String

Private Sub Form_Activate()
ChckDate                                                       'Это работает только в процессе отладки
End Sub

Private Sub Form_Click()                                 'Это работает!
ChckDate
End Sub

Private Sub MonthView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
   Dim iResult As Integer
   Dim dtMyDate As Date
   Dim DateString As String
   iResult = MonthView1.HitTest(x, y, dtMyDate)
   DateString = DatePart("d", dtMyDate) & " " & WeekdayName(DatePart("w", dtMyDate, vbUseSystemDayOfWeek)) & "," & MonthName(DatePart("m", dtMyDate))
   MonthView1.ToolTipText = DateString & ":  " & Text1.Text
   Label1.Caption = dtMyDate
   Label2.Caption = DateString
   End Sub

Private Sub Form_Load()
DataPath = "c:\program files\calendar\cdata.txt"
CRLF = Chr(13) & Chr(10)
MonthView1.Value = Date
'Form1.Height = 2745
Me.Show                                               'Попробовал- ноль эмоций
ChckDate                                               'Вот тут должно происходить событие
End Sub

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Dim DtText As String
DtClick = DateClicked
'Form1.Height = 4440
DtText = DatePart("d", DateClicked) & " " & WeekdayName(DatePart("w", DateClicked, vbUseSystemDayOfWeek)) & "," & MonthName(DatePart("m", DateClicked))
Label3.Caption = "DateClicked   = " & DateClicked
Label4.Caption = DtText
End Sub

Private Sub Command1_Click()  'Submit
'Form1.Height = 2745
Dim txLen As Integer
txLen = Len(Text1.Text)
MonthView1.DayBold(DtClick) = txLen
Open DataPath For Append As #1
Write #1, DtClick, Text1.Text
Close #1
End Sub

Private Sub Command2_Click()  'Delete
Text1.Text = ""
MonthView1.DayBold(DtClick) = False
Form1.Height = 2745
End Sub

Private Sub ChckDate()       'Ставлю BreakPoint ,затем пошагово-всё красиво! Даты выделяются в соответствии с датафайлом!
                                     ' УбираюBreakPoint-запускается календарь без выделеных дат. Куда эту процедуру  всунуть?
Dim FileDate As Date
Dim FileEntry As String

Open DataPath For Input As #1
    While Not EOF(1)
        Input #1, FileDate, FileEntry
        MonthView1.DayBold(FileDate) = True
       
    Wend
Close #1
End Sub



Надеюсь,описал проблему подробно.
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

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

Re: Спецам - Порядок событий при загрузке форм

Сообщение alibek » 24.09.2011 (Сб) 9:05

Есть понимание того, что такое Activate?
Lasciate ogni speranza, voi ch'entrate.

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Спецам - Порядок событий при загрузке форм

Сообщение caa2000 » 24.09.2011 (Сб) 14:01

Есть понимание того, что такое Activate?

Если честно то не очень.Всунул суб в порядке эксперимента(метод научного тыка).Но при пошаговом режиме отладки-работает
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование

caa2000
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 14.05.2009 (Чт) 4:50

Re: Спецам - Порядок событий при загрузке форм

Сообщение caa2000 » 25.09.2011 (Вс) 15:00

Срасибо,Опришник! "Me.Show" поставил вначале суба.Чтой-то не допёр сразу.Всё заработало.
Код: Выделить всё
Private Sub Form_Load()
    Me.Show
    ...
    ...
    ...
End Sub

Спасибо всем.
Имеющий уши, да услышит.. (с) Новый Завет От Матфея святое благовествование


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 24

    TopList