Помогнете!!!
6 отговора
253 прегледа
Помогнете!!!
цял ден се мача и нищо не успях да постигна!
Става въпрос за приложение, което съм написал на VB 6.0, което през ODBC се сварзва към DB сървър на Oracle и от там се изпълняват заявки, което може да отнеме до 2-а часа. Има ли някой представа как мога да накарам формата на моето приложение през това време да се изчертава, а не да стажа бяля например след излизането на някой екран върху нея. Добавил съм върху формата ProgressBar и StatusBar, които до някъде внасят яснота до къде всъшност е стигнала обработката, но пак си изглежда грозно
10x
Re: Помогнете!!!
Защо не пробваш с Form1.Refresh или RedrawWidnow на определени секунди. Щом ProgressBar-а ти показва някаква стойност значи би трябвало да можеш да изпълниш и друг код при промяна на стойността на ProgressBar-a. Или направо във Form_Paint да сложиш някакъв код от рода на Form1.Refresh.
Експериментирай.
Експериментирай.
Re: Помогнете!!!
Вече съм пробвал и за съжаление не става, аз нямам проблем с изпълнението на код, който да каже на формата да се изчертае наново като: Form1.Refresh
А всъшност проблемът е, че аз и казвам, а тя не се изчертава и според мен се дължи на тежката обработка, като системни обекти на ProgressBar и StatusBar са с по-голям приоритет на изпълнение от формата и те се изчертават под влиянието на кода ми, но формата не иска, какво ли не пробвах и таймер слагах и не иска
Ако някой се е сблъсквал с подобна ситуация моля да ми каже как да излезна от нея 
А всъшност проблемът е, че аз и казвам, а тя не се изчертава и според мен се дължи на тежката обработка, като системни обекти на ProgressBar и StatusBar са с по-голям приоритет на изпълнение от формата и те се изчертават под влиянието на кода ми, но формата не иска, какво ли не пробвах и таймер слагах и не иска
Re: Помогнете!!!
Оооо, мен, ти просто си забравил да сложиш едно "DoEvents" във циклите, където става многото обработка. Така се разрешава изпълнението на другите процеси, по време на връткане на циклите.
Препоръчвам обновяването на ProgressBar да става през таймер, който да трака през 500 милисекунди например... така ще си спестиш доста напразни за процесора инструкции. ;о)
Айде дерзай, а ако не става - постни малко от кода тука, да мислиме.
----------------------------------
помислих, хареса ми, помислих пак...
Препоръчвам обновяването на ProgressBar да става през таймер, който да трака през 500 милисекунди например... така ще си спестиш доста напразни за процесора инструкции. ;о)
Айде дерзай, а ако не става - постни малко от кода тука, да мислиме.
----------------------------------
помислих, хареса ми, помислих пак...
Re: Помогнете!!!
Blagodaria, 6te opitam........
Nesamneno sam siguren, 4e ne6to propuskam, a ne 4e niama na4in da se napravi
Ot skoro vlizam tuka, no moga da kaja, 4e sam s mnogo dobri vpe4atlenia ot kluba vi i smeia da kaja, 4e v moe lice ste namerili o6te edin 4len na kluba!
Nesamneno sam siguren, 4e ne6to propuskam, a ne 4e niama na4in da se napravi
Ot skoro vlizam tuka, no moga da kaja, 4e sam s mnogo dobri vpe4atlenia ot kluba vi i smeia da kaja, 4e v moe lice ste namerili o6te edin 4len na kluba!
Re: Помогнете!!!
За мен, като подстрекател за създаването на клуба, и сега като модератор, това мнение просто ме издига във собствените ми очи. ;о)
Благодаря много. Всички ще се постараем да направим този клуб да е едно свястно кътче, където да се срещаме, да работим върху уменията си, и евентуално може да заформим екип, пък няма да е излишно, ако напишем и нещо, което да носи малко пари, а?... ;о))))
----------------------------------
помислих, хареса ми, помислих пак...
Благодаря много. Всички ще се постараем да направим този клуб да е едно свястно кътче, където да се срещаме, да работим върху уменията си, и евентуално може да заформим екип, пък няма да е излишно, ако напишем и нещо, което да носи малко пари, а?... ;о))))
----------------------------------
помислих, хареса ми, помислих пак...
Re: Помогнете!!!
хехе
съгласен съм с теб, ако искате да направим някакъв проектче заедно, няма да е никак лоша идея, дори и ей така за наш кеф!
А относно мойта програмка, мога гордо да заява, че се СПРАВИХ
успешно!!!
Та какво и беше всашност, моите наблюдения показаха, че в момент на тежка обработка докъто тече изпълнението на SQL-а няама начин да се изчертае наново формата ако ще не таймери а незнам какво да се слага(ще се радвам ако някой е намерил решение). Значи вмъкнах ж цикъла DoEvents и наистина се оправи Refresha....хехехе.......чудя се как не се бях сетил, но както и да е!
А другата ми болка беше, че като издарпам и наплна някое MDB, след това го обработвам, индексирам и компактвам, се налагаше и да го архивирам с WinZip. Ето това си беше проблем!!! Като му каже да архивира файла с Winzip, програмата ми го изпълняваше, но проблемът беше, че не чакаше да свърши с архивацията, а продължаваше да изпълнява по-нататъка кода, което си е нормално!!!
Дир-а тогава се беше бъгнал тотално, както и продължава да се бъгва. Бих си тука главата и решение намерих, с API функции създавам събитиеа, от него извиквам WinZip и след като съм създал събитие имам му ProcessID и почвам да госледя в цикъл с Loop и пак естесвтено добавих DoEvents, за да избекна зацикляне на формата. Това беше всичко, благодаря ви и на вас за помощта
съгласен съм с теб, ако искате да направим някакъв проектче заедно, няма да е никак лоша идея, дори и ей така за наш кеф!
А относно мойта програмка, мога гордо да заява, че се СПРАВИХ
Та какво и беше всашност, моите наблюдения показаха, че в момент на тежка обработка докъто тече изпълнението на SQL-а няама начин да се изчертае наново формата ако ще не таймери а незнам какво да се слага(ще се радвам ако някой е намерил решение). Значи вмъкнах ж цикъла DoEvents и наистина се оправи Refresha....хехехе.......чудя се как не се бях сетил, но както и да е!
А другата ми болка беше, че като издарпам и наплна някое MDB, след това го обработвам, индексирам и компактвам, се налагаше и да го архивирам с WinZip. Ето това си беше проблем!!! Като му каже да архивира файла с Winzip, програмата ми го изпълняваше, но проблемът беше, че не чакаше да свърши с архивацията, а продължаваше да изпълнява по-нататъка кода, което си е нормално!!!
Дир-а тогава се беше бъгнал тотално, както и продължава да се бъгва. Бих си тука главата и решение намерих, с API функции създавам събитиеа, от него извиквам WinZip и след като съм създал събитие имам му ProcessID и почвам да госледя в цикъл с Loop и пак естесвтено добавих DoEvents, за да избекна зацикляне на формата. Това беше всичко, благодаря ви и на вас за помощта