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

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

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

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

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

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

Вот пример:
У меня проект 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
Timer в классе
    #36785402
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)) Слишком просто. В моем случае все-таки придется задействовать API и SendMessage
...
Рейтинг: 0 / 0
Timer в классе
    #36785416
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: myaucha
> :)) Слишком просто. В моем случае все-таки придется задействовать API и SendMessage

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

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

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

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

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


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