kicko Posted February 21, 2005 Share Posted February 21, 2005 kicko дай ми линк за quick reportite plsssssssssss!!! <{POST_SNAPBACK}> ето Link to comment Share on other sites More sharing options...
Harbachek Posted March 2, 2005 Author Share Posted March 2, 2005 Poneje mi se skaraha 4e otvarqm nova tema sled kato taq e zabata4ena i edvam q otkrih zadavam sledniq vapros: Zna4i kato pusna v edna procedura cikal ot nqkakav primeren buton oba4e cikala e baven kak da napravq kato se natisne drugg buton da spira cikala v parviq buton 10x predvaritelno nadqvam se 4e me razbrahte Link to comment Share on other sites More sharing options...
tedy Posted March 2, 2005 Share Posted March 2, 2005 Poneje mi se skaraha 4e otvarqm nova tema sled kato taq e zabata4ena i edvam q otkrih zadavam sledniq vapros: Zna4i kato pusna v edna procedura cikal ot nqkakav primeren buton oba4e cikala e baven kak da napravq kato se natisne drugg buton da spira cikala v parviq buton 10x predvaritelno nadqvam se 4e me razbrahte <{POST_SNAPBACK}> Трябва периодично в цикъла да извикваш Application.ProcessMessages; примерно така: if (i mod 100) = 0 then Application.ProcessMessages; където i е управляващата променлива. И натискайки бутона за спиране, този бутон ще сетва променлива, която може да се проверява в цикъла в този if: if (i mod 100) = 0 then бегин Application.ProcessMessages; if terminatecycle = true then exit (ili kakvoto reshish za izlizane ot cikyla); енд; Има и други начини, но този на пръв поглед става. Link to comment Share on other sites More sharing options...
Harbachek Posted March 2, 2005 Author Share Posted March 2, 2005 Am moje li malko po podrobno 4e mnogo ne shvanah koe kade trqbva da sloagam pls EDIT: Ne ne az si go opravih 10x za pomo6tta a moje li o6te edin vapros eto: moje li dokato sam pusnal media player componenta da sviri da se izvar6vat drugite deistviq ? Link to comment Share on other sites More sharing options...
tedy Posted March 2, 2005 Share Posted March 2, 2005 Am moje li malko po podrobno 4e mnogo ne shvanah koe kade trqbva da sloagam pls <{POST_SNAPBACK}> Ето ти примерен код, сложи два бутона и два лейбъла във формата без да ги преименуваш и се убеди, че в съответните им handlers за onClick събитията има това: procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption:= inttostr(strtoint(label1.Caption)+1); end; procedure TForm1.Button2Click(Sender: TObject); var i:longint; begin for i:= 0 to 100000 do begin label2.Caption:= inttostr(strtoint(label2.Caption)+1); if (i mod 100) = 0 then Application.ProcessMessages; end; end; Първия сложен от теб бутон просто увеличава стойността на първия лейбъл с единица при всяко натискане. Втория бутон пуска цикъл, който брои до 100 000. Не го натискай повече от веднъж за всяко стартиране на цикъла докато не свърши цикъла иначе ще се чудиш защо се бави докато завърши. Идеята е, че докато цикъла брои, можеш да натискаш първия бутон, който съвсем независимо си работи и увеличава първия лейбъл. Това е идеята, в евент-а за първия бутон можеш да сложиш примерно trmcycle:= true, и тази променлива да се проверява по начина който ти казах, в блока if (i mod 100) = 0. Ако и от това обяснение не схванеш, явно се захващаш с нещо, което не разбираш и по-добре не се захващай. Смисълът на ProcessMessages е, че когато се извика, обработва messages, които са в опашката за приложението, като натискане на бутон например, или draw на формата при нужда. Ако не сложиш този оператор, докато цикъла работи, приложението ти ще изглежда все едно е блокирало, освен ако цикъла не си го сложил в нишка. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.