|
|
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Ну например? Рисование да, канвасы надо блокировать вручную. А вот большинство команд над окнами и соответственно контролами выполняются через SendMessage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 17:28 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
25.06.2019 17:28, Василий 2 пишет: > большинство команд над окнами и соответственно контролами выполняются через SendMessage. в букварь. читать про очереди сообщений WinAPI, как и кем они создаются, кем и как обрабатываются. зы: в дальнейшем "диспуте" участвовать не намерен. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2019, 17:42 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийзы: в дальнейшем "диспуте" участвовать не намерен. И правильно, потому что толку от тебя в нем ноль целых шиш десятых ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2019, 10:45 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Доброго дян господа ! Реализован 1-й вариант В второстепенный поток передан и в поле потока зафиксирован указатель на TProgrsssBar основной формы В цикле потока работаю с ним Код: pascal 1. 2. Вопросов и замечаний нет Реализован 2-й вариант В второстепенный поток передан и в поле потока зафиксирован указатель на TProgrsssBar основной формы В цикле потока работаю с Handle окна Код: pascal 1. Вопросов и замечаний нет (adoRead - это TADOQuery) Процедуру Synchronize - НЕ (!!!!!!!!) использовал в обоих случаях В чем прелесть последнего варианта .... ? Исключил системную библиотеку VCL и взял по собственный контроль "Position+1" (так системщики все равно пишут лучше....) Или я неверно понял и применил Ваше предложение ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 09:46 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
HOME_X, да куча, оба варианта могут привести к проблемам pbMain.Handle, смотрел на код .GetHandle ? особенно с условием на FWindowHandle = 0. аналогично с pbMain.Position если не знаешь как внутрях крутится лучше пользуй рекомендованный synchronize или что практичнее, таймер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:26 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), " а таймер - это НЕ отдельный поток " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:41 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), насчет Synchronize(Моя процедура) - здесь надо использовать с осознанием дела, если после каждой итерации wbrkf второстепенного потока, делать Synchronize - "погасите" (обездвижите) основную форму. Планирую использовать если два потока МЕНЯЮТ значение ресурса А если один меняет и второй читает - наверное не стоит... Господа гуру - что на это скажите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:47 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
HOME_Xkealon(Ruslan), насчет Synchronize(Моя процедура) - здесь надо использовать с осознанием дела, если после каждой итерации цикла второстепенного потока, делать Synchronize - "погасите" (обездвижите) основную форму. Планирую использовать если два потока МЕНЯЮТ значение ресурса А если один меняет и второй читает - наверное не стоит... Господа гуру - что на это скажите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:50 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
HOME_Xkealon(Ruslan), насчет Synchronize(Моя процедура) - здесь надо использовать с осознанием дела, если после каждой итерации wbrkf второстепенного потока, делать Synchronize - "погасите" (обездвижите) основную форму. Необязательно. Все определяется количеством итераций и временем их выполнения. Если очень много, и они короткие, нужно задуматься над возможностью основного потока выполнять какие-то другие задачи кроме перерисовки ProgressBar-а, например делать это по таймеру, а в обработке сообщения просто инкрементировать счетчик. Если итераций мало и они длинные можно делать как угодно, разницы не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 10:59 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
27.06.2019 10:26, kealon(Ruslan) пишет: > pbMain.Handle, смотрел на код .GetHandle ? особенно с условием на FWindowHandle = 0. аналогично с pbMain.Position не надо заранее изобретать проблемы там где их нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:00 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Handle у VCL контролов ненадежен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:04 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий27.06.2019 10:26, kealon(Ruslan) пишет: > pbMain.Handle, смотрел на код .GetHandle ? особенно с условием на FWindowHandle = 0. аналогично с pbMain.Position не надо заранее изобретать проблемы там где их нет. вам тоже советую посмотреть этот исходник, особенно интересный момент, когда CreateWindow выполнится в вашем потоке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:09 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
HOME_Xчто на это скажите ? Возьми обертку над потоком: https://github.com/wadman/wthread Примерный код на выходе: Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:10 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
елы-палы, проблема - промитивная. А столько копий вокруг этого сломано. зы. у меня уже попкорн закончился... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:11 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Василий 2Handle у VCL контролов ненадежен Не слишком ли много Джордж толкует о том, что мы перевернемся? Готовиться к путешествию на лодке с таким настроением – последнее дело (с) Handle персистентного окна может стать невалидным, ЕМНИП, только при перезапуске проводника. Городить ради этого сложную архитектуру... по мне так не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:15 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисВасилий 2Handle у VCL контролов ненадежен Не слишком ли много Джордж толкует о том, что мы перевернемся? Готовиться к путешествию на лодке с таким настроением – последнее дело (с) Handle персистентного окна может стать невалидным, ЕМНИП, только при перезапуске проводника. Городить ради этого сложную архитектуру... по мне так не стоит.пипец сложность: в потоке записал переменную, в таймере вывел но конечно лучше наложить, а потом искать кто накосячил, при каком-то изменении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:26 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)пипец сложность: в потоке записал переменную, в таймере вывел Предлагаю поискать в коде TTimer реакцию на пересоздание окна и после ответа обосновать, чем это надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:34 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, сложно представить случай в котором имплементированная им абстракция не будет работать. Кто убьёт окно таймера, созданное по всем правилам VCL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:41 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Соколинский Борис, сложно представить случай в котором имплементированная им абстракция не будет работать. Кто убьёт окно таймера, созданное по всем правилам VCL? Тот же, кто потенциально может грохнуть окно персистентной формы, не вижу принципиальной разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 11:47 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Соколинский Борис, неисполнение контракта(OnTimer) это уже серьёзный глюк базовых компонентов, причём скорее всего причина будет на уровне ОС, а абъюз внутренних особенностей реализации - это непрофессиональность программиста. Я в своей практике, правда, встречал дурней, которые на таймер вешали лимит на время работы программы, но это уже совсем другая история. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:03 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)неисполнение контракта(OnTimer) это уже серьёзный глюк базовых компонентов, причём скорее всего причина будет на уровне ОС, а абъюз внутренних особенностей реализации - это непрофессиональность программиста. Использование глючных базовых/сторонних компонентов - такой же признак непрофессионализма. А абсолютно уверен, что подавляющее большинство более-менее сложных десктопных приложений в таких форс-мажорных ситуациях либо просто упадет, либо будет глючить по самым разным причинам. Посему нет смысла бороться с перхотью если почки отказали. Если, разве что, софт не предназначен для управления баллистическими ракетами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:20 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
ну вот, скатились до того, что дельфи гамно, а потом идут вопросы "почему не работает что-то у очередного пионера" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:29 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
вындовс - говно. хотя, и линукс-GUI, говно не меньшее. в последнее время сижу под Цынамоном. оно конечно работает вполне прилично. но, то там косячок, то сям косячок... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 12:36 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисВасилий 2Handle у VCL контролов ненадежен Не слишком ли много Джордж толкует о том, что мы перевернемся? Готовиться к путешествию на лодке с таким настроением – последнее дело (с) Handle персистентного окна может стать невалидным, ЕМНИП, только при перезапуске проводника. Городить ради этого сложную архитектуру... по мне так не стоит. Не слишком. Пробегись по Vcl.Forms и посмотри, сколько там вызовов RecreateWnd. TApplication.Handle по идее более устойчив, т.к. на нем нет этой обвязки от TWinControl, а создается он через честный CreateWindowEx(WS_EX_TOOLWINDOW). Но я в итоге просто создаю невидимое окно сам через AllocateWnd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 14:53 |
|
||
|
TThread -> ProgressBar -> Основная форма
|
|||
|---|---|---|---|
|
#18+
Василий 2Не слишком. Пробегись по Vcl.Forms и посмотри, сколько там вызовов RecreateWnd. Пробежался. Всего два обобщенных варианта: а) изменение стиля окна (FormStyle, Position etc) и изменение параметров винды типа BiDiMode. Это проблема даже не уровня перхоти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2019, 15:20 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39831011&tid=2039315]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 453ms |

| 0 / 0 |
