procedure TForm1.Timer1Timer(Sender: TObject); Var I:integer; Begin timer1.Enabled := false; for i := 1 to 100 do {går til slutning af progressbar, 50 vil gå til midt på progressbar} begin progressbar1.StepIt; Sleep(50); label1.Caption:=\'Filerne er overført\'; end; end; procedure TForm1.FormCreate(Sender: TObject); begin progressbar1.step := 1; progressbar1.max := 100; timer1.Interval := 1000; {1000 svarer til 1 sekund} timer1.Enabled := true; begin end; end; end.
Den mest sofistikerede måde at gøre det på er nok at lave en ekstern datafil, hvori du samler filnavnene + indhold, og derefter laver ProgressBar\'en til at vise hvor langt den er med at behandle datafilen.
Dette er dog lidt besværligt at lave, da det kræver meget forarbejde med at konstruere den datafil.
Jeg bruger en RES fil hvor jeg så bruger {$R files.RES} til at få den ind i EXE filen. Og så bruger jeg koden nedenunder til at extracte filerne med. ExtractRes(\'EXEFILE\',\'FilNavn\',\'c:\\FilNavn.exe\');
Jeg vil bare gerne havde et eks. som jeg kan bruge.
Altså...:
Bruger Gauge1, Button1, Label1;
Når jeg trykker på Button1 skal den så starte installationen hvor den så ligger filerne i C: drevet. Og Gauge1 skal så vise progressen for hvor langt den er og Label1 skal vise den fil som den er ved at ligge ind!
Det er så bare den optimale måde jeg gerne vil bruge. Men hvis jeg gør på min eller \"stone\'s\" måde kan man ikke bruge programmet før den er færdig med at installere.
Hvordan kan man det ?
Hvis du vil have flere point, så kan jeg da godt ligge nogle flere til.
Den metode lyder smart, jeg havde ikke lige overvejet vedhæftelse af filer i EXE\'en.
Den metode du nævner antager jeg at den bare gemmer filen i den mappe du angiver. Hvis det er rigtigt, bliver du sandsynligvis nødt til at lave din egen metode og extracte filen manuelt, hvis du vil have en ProgressBar til at vise status.
Jeg har stort set ingen erfaring med vedhæftelse af ressourcer, så jeg kan ikke hjælpe dig med dette.
Jeg kan godt selv finde ud af at vedhæfte ressourcer og extracte dem.
Det er bare hvordan man bruger en Gauge eller ProgressBar rigtigt !
Sådan her ville jeg gøre det : var I: Integer; begin For I:=0 to 100 do begin Progress.Progress := I; ExtractRes(\'EXEFILE\',\'FilNavn\',\'c:\\FilNavn.exe\'); end; Progress.Progress := 0; end;
Men det gør bare sådan at jeg ikke kan bruge programmet før det er færdig !
Har du en anden måde som man rigtigt kan gøre det på, eller er det den rigtige måde ???
Du kan jo gøre som i ovenstående eksempel, hvor du blot laver en Repeat løkke i stedet for, og så sætter du en Variabel Stop f.eks. Altså: var i: integer; begin i:=0 {eller 1} Repeat i:=i+1; Progress.Progress:=i; ExtractRes(\'EXEFILE\',\'FilNavn\',\'c:\\FilNavn.exe\'); end; Progress.Progress := 0; end;
Og så kan du jo bruge en Array af strings, til at definere filnavnene!
Undskyld! Min kode var ikke helt færdig! Her er den så, og husk at lave den globale BOOL-variabel Stop! //------------------- var i: integer; begin i:=0 {eller 1} Repeat i:=i+1; Progress.Progress:=i; ExtractRes(\'EXEFILE\',\'FilNavn\',\'c:\\FilNavn.exe\'); end; Until Stop; Progress.Progress := 0; end; ;-------------------- Procedure CancelButton1.Click(Sender: TObjekt); begin Stop:=True; end; ;-------------------- P.S: Jeg har ikke chekket min kode da jeg ikke har Delphi installeret lige i øjeblikket...Ret småfejl!
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.