On-line: Andrey, MIKHAIL, Haz, гостей 1. Всего: 4 [подробнее..]
АвторСообщение



Пост N: 347
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 18.06.15 09:11. Заголовок: Картинка "ожидания"


Кто чем изображает ожидание выполнения процесса (напр.коннекта) ?
Удобно использовать анимированный gif. У меня есть какой-то, крутящуюся
шестеренку изображает. Все нормально, но иногда может пуститься в инверсном режиме

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 62 , стр: 1 2 3 4 All [только новые]


постоянный участник




Пост N: 4298
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.15 16:49. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй http://plugring.farmanager.com/plugin.php?pid=578&l=ru


А как его прикрутить к Far 3.0
Там же: Arc, Far 1.x, x86

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4944
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.06.15 17:16. Заголовок: я и не пытался , но ..


я и не пытался , но там есть avixtr.exe , он тебе и нужен

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4300
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.06.15 18:56. Заголовок: Коряво он как то дел..


Коряво он как то делает ....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4307
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 04:08. Заголовок: Dima пишет: Считать..


Dima пишет:

 цитата:
Считать в массив имена извлеченных фреймов и затем выводить их в цикле
в потоке средствами Минигуи , можешь ?



Отдельный вывод получился - пример demo3.prg
А в потоке не получается - пример demo4.prg ( окно висит без прелодера и время не показывает )
Что не так делаю ?
Проекты тут - https://cloud.mail.ru/public/BrN3/d4atak4Rv

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4308
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 13:35. Заголовок: Выспался и кажись по..


Выспался и кажись понял в чём дела... Исправлю сейчас...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4975
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 14:08. Заголовок: Пример 4 , ну во пер..


Пример 4 , ну во первых надо собрать с ключем /MT
Далее , переделал FUNCTION WaitingProcess()
 
FUNCTION WaitingProcess()
LOCAL nI, cMsg, nTime
Local Th
PRIVATE aBegin
PRIVATE lexit:=.t.

aBegin := WaitWinCreate( "Working..." )

// Запускаем в отдельном потоке (preloding)
th:=hb_threadStart(HB_THREAD_INHERIT_MEMVARS, @WaitWinTimer(), @aBegin)

nTime := SECONDS()

FOR nI := 1 TO 10

Form1.Label_1.Value := 'For nI := ' + HB_NtoS(nI)

// final waiting
INKEYGUI(500)

DO EVENTS

NEXT

//DoMethod(aBegin[1],'Release') // убить окно ожидания
lexit:=.f.
hb_threadDetach(th)
WaitWinClose(aBegin) // убить окно ожидания

cMsg := "Elapsed processing time - " + SECTOTIME( SECONDS() - nTime )
MsgInfo(cMsg)

RETURN NIL



+

 
FUNCTION WaitWinTimer(aDim)
LOCAL cFormName := aDim[1], aPict := aDim[2], nTime := aDim[3]
LOCAL cTime := "Time passed " + SECTOTIME( SECONDS() - nTime )
LOCAL cPict
do while lexit
M->nILogoWait ++ // номер показа картинки
M->nILogoWait := IIF( M->nILogoWait > LEN(aPict), 1, M->nILogoWait )
cPict := aPict[M->nILogoWait]
cTime := "Time passed " + SECTOTIME( SECONDS() - nTime )
SetProperty( cFormName, "Label_1", "Value", cTime )
SetProperty( cFormName, "Image_1", "Picture", cPict )
InkeyGui(100)
DO EVENTS
enddo

RETURN NIL



При чем часики показывают а вот картинок нет.......
Упс ))) Надо завести demo4.rc

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4976
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 14:24. Заголовок: Dima пишет: th:=hb..


Dima пишет:

 цитата:
th:=hb_threadStart(HB_THREAD_INHERIT_MEMVARS, @WaitWinTimer(), @aBegin)


Хотя тут можно конечно как и было
hb_threadDetach(hb_threadStart(HB_THREAD_INHERIT_MEMVARS, @WaitWinTimer(), @aBegin))

Dima пишет:

 цитата:
lexit:=.f.
hb_threadDetach(th)


hb_threadDetach(th) уже не нужен , но тогда в WaitWinTimer нужно делать проверку а есть ли форма


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4310
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 15:41. Заголовок: Dima пишет: При чем..


Dima пишет:

 цитата:
При чем часики показывают а вот картинок нет.......
Упс ))) Надо завести demo4.rc



У меня то же самое... Может ресурсы не подтягиваются в отдельный поток ?

Dima пишет:

 цитата:
hb_threadDetach(th) уже не нужен , но тогда в WaitWinTimer нужно делать проверку а есть ли форма



Лучше сделать автоинкремент окна cFormName := "WaitWin_" + HB_NtoS( _GetId() ), а поток убивать.
Иначе потоки будут засорять память ! Или я неправ ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4978
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 15:42. Заголовок: я могу выложить рабо..


я могу выложить рабочий пример если ты не понял все правки что я сделал

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4311
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 16:09. Заголовок: Dima пишет: я могу ..


Dima пишет:

 цитата:
я могу выложить рабочий пример если ты не понял все правки что я сделал


Да понял я уже, разобрался. Но как всегда тянет на улучшения.
Решил сократить код. Создаю окно ожидания (прелодера) сразу в потоке.
Потом убиваю поток - окно остаётся на экране. Делаю по другому, запоминаю в статик переменную имя окна, а потом убиваю окно.
Нифига - вылет по ошибке.
Вот пример - https://cloud.mail.ru/public/GiWn/cEYHCiBVT

А в чем разница:
hb_threadStart(HB_THREAD_INHERIT_PUBLIC, @WaitWinTimer(), aBegin )
и
hb_threadStart(HB_THREAD_INHERIT_MEMVARS, @WaitWinTimer(), @aBegin) ?



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4980
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 16:14. Заголовок: Неа с LETO я не буду..


Неа с LETO я не буду смотреть пример , нет его у меня уже да и сервис ставить не хочу , давай без LETO ;)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4981
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 16:16. Заголовок: Andrey пишет: HB_TH..


Andrey пишет:

 цитата:
HB_THREAD_INHERIT_PUBLIC


Андрей есть описание в доке Александра !!!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4312
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 16:17. Заголовок: Dima пишет: Неа с L..


Dima пишет:

 цитата:
Неа с LETO я не буду смотреть пример , нет его у меня уже да и сервис ставить не хочу , давай без LETO ;)



Извиняюсь, не та ссылка. Вот правильная ссылка - https://cloud.mail.ru/public/BdQH/CiZE7Ubz1

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4982
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 16:34. Заголовок: Ну так ты конкретно ..


Ну так ты конкретно переделал ;)
В потоке окно создаешь , не знаю правильно ли это.
Вот DEMO4.pRG рабочий (не забудь DEMO4.RC)
Скрытый текст




А пример понятно чего падает ;)
Ты в начале убиваешь окно которое создано в потоке а пока оно убивается поток все еще пишет на это
окно а затем убиваешь поток в котором это же окно и создавалось.
Как то не стыкуется все для меня как новичка ;)
И я не уверен что поток увидит STATIC переменную заявленную в MAIN модуле (это догадка)
До кучи ,окно создано в потоке и я так понимаю доступа к нему из основной программы не получить.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4313
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 17:10. Заголовок: Dima пишет: Ну так ..


Dima пишет:

 цитата:
Ну так ты конкретно переделал ;)


Зато более понятный код становиться.

Dima пишет:

 цитата:
И я не уверен что поток увидит STATIC переменную заявленную в MAIN модуле (это догадка)


Переменную то видит. Можно проверить.
Вот простой код:
WaitWinClose(cStaticIdWinWait) // убить окно ожидания
......
//////////////////////////////////////////////////////////////////////
FUNCTION WaitWinClose(cFormName)

Domethod(cFormName,"Release") // строка 136

DO MESSAGE LOOP

RETURN NIL

Самое интересное что окно в потоке не видит, из-за этого наверно и ошибка:
Error MGERROR/0 Window: WaitWin_16944 is not defined. Program terminated.
Called from MSGMINIGUIERROR(94)
Called from DOMETHOD(4663)
Called from WAITWINCLOSE(136)

Как сделать (убить окно в потоке) ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4983
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 17:16. Заголовок: Наверное Минигуи (эт..


Наверное Минигуи (это предположение) ни чего не знает про окна созданные в потоке , если я не прав ,
пусть меня поправят

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4984
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 17:29. Заголовок: Можно попробовать пе..


Можно попробовать перед тем как убить окно (WaitWinClose) , средствами Минигуи получить список всех дочерних
окон , будет ли среди них окно заявленное в потоке.

И тогда все будет понятно ;)
Но по любасу если проблему с закрытием окно и решишь то на следующей строке
прога у тебя свалится так как поток будет жить и будет писать в окно которого уже нет.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4985
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.06.15 18:09. Заголовок: Вставь перед убитием..


Вставь перед убитием окна
aChild := {}
EnumChildWindows( GetFormHandle("Form1"), { |hChild| AADD( aChild, hChild ), .T. }, 0 )
там дальше я не знаю как по хендлу получить имя окна , если получишь выведи все
в MSGINFO и смотри есть ли там окно созданное в потоке
EnumChildWindows сырцы есть в примерах.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4315
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 19:11. Заголовок: Dima пишет: EnumChi..


Dima пишет:

 цитата:
EnumChildWindows сырцы есть в примерах.


Так я же его и делал...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4316
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.15 19:20. Заголовок: Вот можешь этой прог..


Вот можешь этой прогой пользоваться, я её до конца не доделал (картинки в ГРИД не поставил от окон) - но так работает.
https://cloud.mail.ru/public/FWC8/LhYGEB5R6

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 62 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 121
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет