Refresh на формата
3 отговора
0 прегледа
Refresh на формата
Делфи 7. ВИН XP.
Програмчето е изключително просто:
има форма на която има progressbar. Цикъл се върти и се сменя позицията с индекса на прогрессбара. В цикъла се добавят записи в някакъв празен файл.
Progressbar-а си работи перфектно, ако има лако записи ... При по продължително време - запира. Слагам Refresh и на формата и на прогрессбара (за всеки случай) - все таа. Всеки път на различно място.
Хващам формата за заглавието и я мърдам настрани. Под нея излиза същата дорма - ама си работи както трябва. (Т.е. на екрана има 2 форми. Едната замръзнала, другата работеща /върти се/). Когато свърши работа и се затвори едната - затваря се и другата с нея...
Това го забелязвам в няколко вече програмчета при които има дискови операции - отваряне,запис,четене,затваряне на файл...
Чудя се дали не е от версията на делфи? Или има някакъв друг лек....
Програмчето е изключително просто:
има форма на която има progressbar. Цикъл се върти и се сменя позицията с индекса на прогрессбара. В цикъла се добавят записи в някакъв празен файл.
Progressbar-а си работи перфектно, ако има лако записи ... При по продължително време - запира. Слагам Refresh и на формата и на прогрессбара (за всеки случай) - все таа. Всеки път на различно място.
Хващам формата за заглавието и я мърдам настрани. Под нея излиза същата дорма - ама си работи както трябва. (Т.е. на екрана има 2 форми. Едната замръзнала, другата работеща /върти се/). Когато свърши работа и се затвори едната - затваря се и другата с нея...
Това го забелязвам в няколко вече програмчета при които има дискови операции - отваряне,запис,четене,затваряне на файл...
Чудя се дали не е от версията на делфи? Или има някакъв друг лек....
Re: Refresh на формата
Предполагам, че не могат да се обработят съобщенията за прерисуване, защото главната ти нишка е заета с цикъла. Най-добре е това нещо да го правиш в тред или в краен случай можеш да закърпиш положението като след Refresh викнеш и едно Application.ProcessMessages.
Linux isn't free, it's worthless.
Linux isn't free, it's worthless.
Re: Refresh на формата
Благодаря за съвета. Работи перфектно (каквото и да означава тази дума)...
Само още един въпрос (стига да не съм нахален). Понеже съм начинаещ в програмирането и някой жаргони не са ми познати - какво означава "правене в тред"? Това да не би да е нещо дето е "вързано" с часовника?
Само още един въпрос (стига да не съм нахален). Понеже съм начинаещ в програмирането и някой жаргони не са ми познати - какво означава "правене в тред"? Това да не би да е нещо дето е "вързано" с часовника?
Re: Refresh на формата
Не. Тред е английският термин. Може да си го чувал в превод на български като "нишка". В общи линии (опростено казано) тредовете ти дават възможност да изпълняваш няколко неща наведнъж (едновеременно изпълнение на две или повече нишки). В твоя случай единия тред ще ти се занимава с файловете, а другия тред (който е основен за програмата и е създаден от Делфи) ще се грижи за обновяването на интерфейса на програмата.
За повече информация виж класа TThread и примерите за използването му в папката Demos\Threads.
Linux isn't free, it's worthless.
За повече информация виж класа TThread и примерите за използването му в папката Demos\Threads.
Linux isn't free, it's worthless.