Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Timer в классе / 10 сообщений из 10, страница 1 из 1
11.08.2010, 10:14
    #36785332
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
День добрый. В обычном классе нужен Timer. Визуальной формы нет. Как можно создать класс Timer и обработать его событие без формы?
...
Рейтинг: 0 / 0
11.08.2010, 10:16
    #36785340
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
> Автор: myaucha
> Как можно создать класс Timer и обработать его событие без формы?

Как обычно, добавить форму в проект, на форму таймер, форму никому не показывать, а в классе завести переменную типа
таймер c WithEvents и спокойно пользоватся :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2010, 10:17
    #36785343
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
Да это понятно, что с формой можно... мне бы без нее :)
...
Рейтинг: 0 / 0
11.08.2010, 10:27
    #36785369
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
> Автор: myaucha
> Да это понятно, что с формой можно... мне бы без нее :)

Не, без неё нельзя. Таймер с формы тикает в отдельном потоке, не мешая всем остальным. Можно ещё сделать эмитацию
таймера через ActiveX EXE. Там прописать интерфейс с событием тика, и по запуску просто делать Sleep на нужный
промежуток времени, по просыпанию генерить событие тика, которое перехватывать в основном приложении и производить
обработку. Но это может быть проблемно. Все остальные способы это "жалкое подобие левой руки" (с) . Поэтому советую
завести форму.

P.S. А кстати, почему такая стойкая неприязнь к формам?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2010, 10:34
    #36785386
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
> Автор: Игорь Горбонос

Вот пример:
У меня проект ActiveX Dll. В нем модуль класса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Private Frm As Form
Private WithEvents Tmr As Timer
Private mCol As New Collection

Event Done(result As Boolean)

Public Function StartPrint()
    mCol.Add  1 
End Function

Private Sub Class_Initialize()
    Set Frm = New frmTimer
    Load Frm
    Set Tmr = Frm.Timer1
End Sub

Private Sub Class_Terminate()
    Tmr.Enabled = False
    Set Tmr = Nothing
    Unload Frm
    Set Frm = Nothing
End Sub

Private Sub Tmr_Timer()
If mCol.Count =  0  Then Exit Sub
mCol.Remove mCol.Count
Call PrintDoWord
End Sub

Private Sub PrintDoWord()
If Not ActivateWord Then
    RaiseEvent Done(False)
    Exit Sub
End If
On Error Resume Next
WordObj.Visible = True
'Set WordDoc = WordObj.Documents.Add(App.Path & "\Offer.dot")
Set WordDoc = WordObj.Documents.Add(Template:= _
        App.Path & "\Offer.dot", NewTemplate:=False, DocumentType:= 0 )
WordObj.Run "Splash" ', PathF & mvarNameZakazForFileName & ".txt"
Set WordDoc = Nothing
Set WordObj = Nothing
RaiseEvent Done(False)
End Sub

Private Function ActivateWord() As Boolean
On Error GoTo labGetObj
Set WordObj = GetObject(, "Word.Application")
If WordObj Is Nothing Then
    ActivateWord = False
    Exit Function
Else
    ActivateWord = True
    Exit Function
End If
labGetObj:
Set WordObj = CreateObject("Word.Application")
Resume Next
End Function
и форма с таймером. Таймер настроен на тик каждые пол минуты. По тику проверяется, если добавили в очередь вывода в
ворд, обрабатываем задание и по окончании обработки генерим событие Done. Вот так-же нужно сделать и тебе.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2010, 10:38
    #36785402
myaucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
:)) Слишком просто. В моем случае все-таки придется задействовать API и SendMessage
...
Рейтинг: 0 / 0
11.08.2010, 10:41
    #36785416
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
> Автор: myaucha
> :)) Слишком просто. В моем случае все-таки придется задействовать API и SendMessage

А чем не подходит с формой? Мне уже стало интересно, потому, что я не могу придумать случая, когда эта схема не
сработает

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2010, 13:18
    #36785869
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
Игорь Горбонос,

ну какое-нить приложение без формы.
...
Рейтинг: 0 / 0
11.08.2010, 13:21
    #36785884
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
...
Рейтинг: 0 / 0
11.08.2010, 14:06
    #36786000
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer в классе
> Автор: big-duke
> ну какое-нить приложение без формы.

Да завсегда пожалуйста, я сам приводил пример ActiveX Dll, от туда форму тоже показывать нельзя, и что? чем это мешает
сделать форму с таймером и пользоватся стандартным таймером?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Timer в классе / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]