13. november 2005 - 12:56Der er
14 kommentarer og 1 løsning
Hvorfor stepper min progressbar ikke?
Jeg har en form med en progressbar på, men den viser ikke når den stepper, i stedet "hænger" min form bare indtil den har steppet færdig og viser slut resultatet.. Min kode er :
Label1.Caption := 'Scanner ' + rose.Form1.DBEdit1.Text + ' poster i databasen'; Application.ProcessMessages; rose.Form1.ADOQuery1.First; Progressbar1.Max := StrToInt(rose.Form1.DBEdit1.Text); Progressbar1.Step := Progressbar1.Max div 10; while not rose.Form1.ADOQuery1.Eof do begin Progressbar1.StepIt; rose.Form1.ADOQuery1.Next; end;
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
rose.Form1.ADOQuery1.First; Progressbar1.Max := StrToInt(rose.Form1.DBEdit1.Text); Progressbar1.Step := Progressbar1.Max div 10; while not rose.Form1.ADOQuery1.Eof do begin Progressbar1.StepIt; Application.ProcessMessages; rose.Form1.ADOQuery1.Next; end;
Kommandoen Refresh skulle gerne gennemtvinge en opdatering af formen. Ellers har du ret i at tråde er den rigtige vej, at gå. Det vil også give brugeren mulighed for at afbryde din proces...
Hvad mener du i øvrigt med linjen Progressbar1.Step := Progressbar1.Max div 10;
Umiddelbart ser det ud til at du vil fastholde den samme position i progressbar hele tiden, da Progressbar1.Max er en statisk værdi...
Problemet er at jeg simpelthen ikke kan huske hvordan man leger med tråde, det er 6 år siden jeg sidst har pillet med delphi, så... et eksempel ville være nice til at friske mig op.
Med hensyn til Refresh; så kan det godt genere, hvis du kører programmet fra Delphi og har indsat breakpoints m.m.
Jeg har ikke adgang til Delphi lige nu, men med hensyn til tråde, så kan jeg huske, at man skal vælge en Thread unit under Files|New og derefter benytte en wizard. Det giver det nemmeste resultat ;-)
Jeg kan ikke huske fremgangsmåden på stående fod, men man skal have tungen lige i munden, når man programmerer med tråde!
Jeg har skam checket at progressbar'en har de data den skal bruge, det er ikke der fejlen ligger, hele min application hænger mens den kører min lykke. Men jeg kan ikke teste det lige nu, er ikke ved min delphi computer. Vallemanden, hvad er det du har skrevet?? Med den kode du har skrevet, hvordan vil du så bruge den samme progressbar funktion til at scanne 10 poster som til at scanne 8731?
Hvis du bruger Application.ProcessMessages; på det rigtige sted så vil din app. ikke hænge, men det bedste løsning ville være at bruge en tråd, om du skal bruge en tråd eller Application.ProcessMessages; kommer nok an på hvor længe din while-lykke tager, hvis det kun er nogle sekunder kan Application.ProcessMessages; fint bruges men hvis det er flere minutter er en tråd løsningen.
Synes godt om
Ny brugerNybegynder
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.