Avatar billede jisch Mester
23. februar 2006 - 02:21 Der er 4 kommentarer og
1 løsning

Kald og aktivering af en form med timer i en applikation.

Jeg har følgender kode i mit program (Delphi 7):

MainForm.Hide;
WaitForm:=TWaitForm.Create(Self);
WaitForm.Show;
WaitForm.Update;
.
. her udføres KODE
.
WaitForm.Close;
WaitForm.Free;
MainForm.Show;

Alt er Ok, men WaitForm indeholder en timer der skal udføre en blinkende tekst mens KODE udføres. Dette sker ikke. Hvorfor? Hvordan?

Hej.
Avatar billede pidgeot Nybegynder
23. februar 2006 - 09:32 #1
Et bud: Har du prøvet at sætte Application.ProcessMessages ind i din OnTimer i WaitForm?
Avatar billede tolderlund Nybegynder
23. februar 2006 - 14:59 #2
Det er ret elementært.
En tråd i windows kan kun gøre en ting ad gangen.
Når din KODE udføres er der ikke noget andet der kan køre. Heller ikke en timer.
Det vil derfor ikke virke at kalde Application.ProcessMessages i OnTimer, for OnTimer bliver aldrig udført!
Der er et par måder at løse det på:
1. For at timeren kan virke mens KODE udføres, er du nødt til at kalde Application.ProcessMessages ind i mellem i din KODE. Det er en løsning jeg stærkt vil fraråde da det kan nemt kan medføre reentrance problemer.
2. Bedre: Flyt din KODE til en sekundær tråd. Så kan timeren i WaitForm fungere normalt helt af sig selv.
Avatar billede jisch Mester
23. februar 2006 - 19:08 #3
>>pidgeot & tolderlund:
Har prøvet Application.PocessMessages i alle varianter (med varieret timer.interval). Ingen respons (NB! timer.enabled:=true).
>tolderlund: 2. Hvad mener du med en anden Tread? Hvordan?
Tak for jeres svar!
Avatar billede tolderlund Nybegynder
24. februar 2006 - 09:46 #4
Application.ProcessMessages virker. Hvis den bliver udført.
Du har jo undladt at vise din KODE så vi kan ikke fortælle dig hvad du gør forkert.

Jeg fornemmer at du ikke kender til tråde i dag.
Hvis du vil bruge tråde skal du have en god forståelse for hvordan man arbejder med tråde.
Tutorials om Thread programmering i Delphi:
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
http://www.sklobovsky.com/community/index.html
http://sklobovsky.nstemp.com/community/threadmare/threadmare.htm
http://sklobovsky.nstemp.com/community/threadmare/perks.htm
http://sklobovsky.nstemp.com/community/threadmare/fixes.htm
How to handle exceptions in TThread objects - by Borland Developer Support Staff:
http://community.borland.com/article/0,1410,10452,00.html
Avatar billede jisch Mester
24. februar 2006 - 11:32 #5
>tolderlund: Du har så evig ret. Jeg har fundet de rigtige steder i KODE til ProcessMessages, men vil studere Threads indgående. Tak for din indsats.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester