Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 10:15 10.06.24 
Компютри и Интернет
   >> Delphi
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | (покажи всички)
Тема 'Please wait...' със закъснениенови  
Автор Eventer ()
Публикувано06.08.03 11:59



При дълги операции извеждам съобщение от типа 'Prease wait...'

Обаче искам съобщението да се покаже 3 секунди след като е включено, ако не е изключено дотогава. Проблемът е, че съобщението трябва да се покаже по време на изпълнение на основния процес и въпреки него.

Някакви идеи със или без отделна нишка за просто и универсално изпълнение?
Thanks

Дали завиването на крушка е софтуерен проблем?


Тема Re: 'Please wait...' със закъснениенови [re: Eventer]  
Автор PecheniaМодератор (нема лабаво ;-)
Публикувано06.08.03 13:19



Интересно е дали ще стане с таймер и Application.ProcessMessage в основния цикъл.

чети и дишай по-леко


Тема Не, не става само с таймер...нови [re: Pechenia]  
Автор Eventer ()
Публикувано06.08.03 14:55



т.е. Application.ProcessMessage не показва съобщението.

Формата със съобщението не се показва, докато основния процес не приключи. Май трябва да бъде с разклонение, но си мислех за нещо по-елементарно.

Дали завиването на крушка е софтуерен проблем?


Тема Re: 'Please wait...' със закъснениенови [re: Eventer]  
Автор PhantomASМодератор (няма)
Публикувано06.08.03 16:12



Ами една идея - предполагам, че това което правиш е от тип цикъл ????

start_time = :Get_Start_Time; // ima si metod kojto wrasta wremeto w ms
while not EndOfOperation do
begin
blabla;
if Message_is_not_shown and (Get_Start_Time - start_time > 3000) then
ShowMessage(); // towa ti pokazwa saobstenieto i ti setwa flaga Message_is_not_shown
Application.ProcessMessages; ///tuk da ne ti zawiswa opresniawaneto na ekrana
end;
HideMessage() ;

---
Е т'ва е живот!


Тема Не е само цикълнови [re: PhantomAS]  
Автор Eventer ()
Публикувано06.08.03 16:26



Thanks, обаче не е универсално. Имам например сложни SQL реплики, които се бавят и при които нямам контрол

Необходимостта се поражда от работата на приложението върху различни по производителност компютри. При бързите това съобщение само премигва досадно, при по-бавните има опасност потребителя да се чуди дали му е зависнал компютъра

Редактирано от Eventer на 06.08.03 16:30.



Тема Re: Не е само цикълнови [re: Eventer]  
Автор PhantomASМодератор (няма)
Публикувано06.08.03 17:53



Ами ползвай TQuery в нишка ;-)))) това май е единственото решение.

---
Е т'ва е живот!


Тема Re: 'Please wait...' със закъснениенови [re: Eventer]  
Авторя ro знaм бe :) (Нерегистриран)
Публикувано06.08.03 18:30



1. Ако формата се ползва често - дръж я постоянно в паметта(не я създавай/разрушавай). Заема малко памет, но ако веднъж си започнал сложен процес времето за създаване на формата е голямо, а и може да се проследи процеса на създаване ... брррр....
2. ОСНОВНИЯ ти проблем сигурно идва от това, че се опитваш да свършиш сложна операция в основната нишка. Ако просто пуснеш невизуалната работа да се свърши във втора нишка всичко ще е по-логично (все пак основната нишка е отговорна за обновяването на интерфейса).
3. Дори и това да не се получава лесно, избягвай application.processmessages
4. Можеш да правиш .repaint на формата със съобщението от друга нишка, да кажем на всяка секунда (грозно, ама по-универсално).
няма да пиша код сега, но това трябва да те насочи...
И последно. Точно за да нямаш тия проблеми е измислен курсура. ВСИЧКИ свързват пясъчния часовник с 'pleace wait', вече е условен рефлекс на потребителите :)))



Тема Thanks на всичкинови [re: я ro знaм бe :)]  
Автор Eventer ()
Публикувано06.08.03 18:53



Стартирането на дългия процес като отделна нишка ще освободи основния да си отваря и затваря прозорците.

Идеята е добра, ще я приложа.

Дали завиването на крушка е софтуерен проблем?

Редактирано от Eventer на 06.08.03 18:56.



Тема Re: 'Please wait...' със закъснениенови [re: Eventer]  
Авторmf2hd (Нерегистриран)
Публикувано07.08.03 09:41



Здравейте на всички.
Нишките са хубаво нещо, но аз си мисля, 4е не трябва да се прекалява с тях.
Помисли си дали е удачно за твоя случай, потребителите да работят с програмата докато тя прави нещо важно ? Според мене е по-добре да изчакат. Но всичко си зависи от случая.
За таймера .. Сега нямам вазможност да пробвам , но не виждам защо няма да се покаже формата. Ето един примерен код :

procedure Long_calculation;
begin
timer1.interval := 3000; //това може и да е default;
timer1.enabled := true;
Screen.Cursor:=crHourGlass;
try
repeat
// твоя код
//Application.ProcessMessages е хубаво да се сложи да не си мислят лузерите
4е е забила програмата.

until calculation_end;

finally
timer1.enabled:=false; //ако стигне до тук преди 3 сек. формата няма да се покаже
if formPleaseWait.Showing then formPleaseWait.Hide;
Screen.Cursor:=crDefault;
end;
end;


procedure Timer1.OnTimer;
begin
enabled:=false;
formPleaseWait.Show;
formPleaseWait.Repaint; //мисля 4е това трябва да я накара да се покаже
end;


Ако пробваш и нестане пиши да знам :)))



Тема Re: 'Please wait...' със закъснениенови [re: mf2hd]  
Авторя ro знaм бe :) (Нерегистриран)
Публикувано07.08.03 11:22



mf2hd,
човече, защо смяташ че цикъл с Application.ProcessMessages е по-добър от нишка ????




Страници по тази тема: 1 | 2 | (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.