Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
Приветствую многоуважаемый All! Поделитесь опытом, как отобразить процесс выполнения проги во время обращения к базе и каких либо вычислений, если этот процесс занимает некоторое время, а юзеру кажется что прога зависла. Как вариант выводить ProgressBar по циклу в окне типа "Ждите ответа ...". Но как это организовать, если главный поток программы занят работай над процессом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 02:15 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
CreateThread и ctrl-f1 на него. Там все понятно но вот маленький пример var boolMustStopThread; procedure yourproc(p:pointer); begin while not(boolMustStopThread) do somthing();//here you do what you want end; var ht,tid:integer; begin boolMustStopThread:=false; ht:=CreateThread(nil,0,@yourproc,nil,0,tid); DoYourWork; //if youw work has done then stop do something() boolMustStopThread:=true; end; есть меожество всяческих но, но сам разберешся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 06:35 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
2alex_k\r Вариант с пококом я уже пробовал сделать, но что-то не выходит:\r \r /topic/20335 \r \r или я чего-то недопонимаю.\r \r Возможно надо сам процесс работы в отдельный поток выделять, а в\r основном производить прорисовку ProgressBarа.\r Вот и хотел услышать совет, кто как делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 06:56 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
попробуйте без потоков типа type TForm1 = class(TForm) ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; BitBtn1: TBitBtn; ProgressBar1: TProgressBar; Timer1: TTimer; procedure BitBtn1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} {запуск запроса и Sleep(1) имитирует работу с базой - замените на ваш реальный запрос} procedure TForm1.BitBtn1Click(Sender: TObject); begin Caption := 'Start'; Timer1.Enabled := true; ADOQuery1.Open; while not ADOQuery1.Eof do begin Application.ProcessMessages; sleep(1); ADOQuery1.Next; end; Caption := 'Stop'; Timer1.Enabled := false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin ProgressBar1.StepIt; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 07:46 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
2LexusR Идея понятна. Я примерно так и пробовал, но что делать если ADOQuery1.Open работает долго. Тогда опс... и подвис как-бы. и вставлять Application.ProcessMessages в каждое место кода как бы не совсем правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 09:01 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
попробуй чтонибудь типа такого Код: 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. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 13:57 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
Проще курсор менять screen.cursor:=hourglass; .. screen.cursor:=default; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2003, 15:38 |
|
||
|
Как показать юзеру что прога работает и не повисла
|
|||
|---|---|---|---|
|
#18+
2All Пришел к выводу что для показа работы проги во время (долгого) обращения к базе лучше показать анимационную картинку (Идет обрашение к серверу) на форме а не обновлять ProgressBar. Кто может подскажет где взять или кинет по мылу если есть такая. Стандартными виндовскими (процесс поиска файлов) пользоваться не очень охото. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2003, 02:08 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2068&tid=2119266]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 463ms |

| 0 / 0 |
