Myklebust89 Skrevet 21. mai 2003 Del Skrevet 21. mai 2003 Yoo... Har mekka til en splash screen.... men på den skal det være en progress bar... splashen varer i 3 sekunder... derfor må progressen våre på 100% når den er ferdig....hehe... *logisk* hvordan gjør jeg dette? har satt inn et timer komponent og en progress bar! hva er resten av "formelen"? Lenke til kommentar
Superchez Skrevet 22. mai 2003 Del Skrevet 22. mai 2003 Hvis du vil ha en progressbar som viser hvor lenge splashen skal vises, 0%-100%, kan du f.eks bruke en Ttimer. Der 3 000 millisekunder (3 sekunder) skal ha 100 poster, dvs 30 millisekunder per prosent. Sett en timer1 enabled = false, interval = 30 Progressbar1.position = 0 (designtime) fra splashscreen viser, f.eks formens on show, kan du ha koden: If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 1; end else timer1.enabled := false; // nå er baren 100% - ergo splash er ferdig. Håper det hjalp mvh Sean S. Lenke til kommentar
Myklebust89 Skrevet 23. mai 2003 Forfatter Del Skrevet 23. mai 2003 Det funka ikke... skreiv inn dette i TTimer komponentet... og prøvekjørte... Det skjedde ingenting! procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 1; end else timer1.enabled := false; end; end. hva er galt? Lenke til kommentar
Superchez Skrevet 24. mai 2003 Del Skrevet 24. mai 2003 Du kan ikke bare prøve kjøre uten at du har f.eks splash formens show til å kjøre timer1.enabled := true: Lenke til kommentar
Myklebust89 Skrevet 24. mai 2003 Forfatter Del Skrevet 24. mai 2003 procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 1; end else timer1.enabled := true; end; end. skjer ikke noe nå heller! Lenke til kommentar
Superchez Skrevet 25. mai 2003 Del Skrevet 25. mai 2003 Nei nei NEI!! Du skal ikke endre den opprinnelige koden jeg ga deg. Men for at Timer1 skal gjøre sin jobb, må du enable den først, men ikke i designtime, du må sette timer1.enabled := true når du vil at progressbar skal begynne. Lenke til kommentar
Myklebust89 Skrevet 25. mai 2003 Forfatter Del Skrevet 25. mai 2003 jeg forstår ikke helt... jeg er helt ny på dette med Delphi... kan du plz forklare litt lettere? Lenke til kommentar
Superchez Skrevet 25. mai 2003 Del Skrevet 25. mai 2003 Greit, det skal jeg gjøre. Lag en splashform, på formens onshow, legger du til : timer1.enabled; så tar du å gjør det jeg sa aller først: klikk på Ttimer1, så tar du i objectinspektoren (den til venstre med alle de fine knappene), og setter enabled til false. Så skriver du inn 30 som interval (det vil nok stå 1000 der som default). Så gjør du sikker på at progressbaren du bruker er på position 0. etter det tar du å endrer om Ttimer1 sin ontimer til: procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 1; end else timer1.enabled := false; end; end. Lenke til kommentar
Myklebust89 Skrevet 25. mai 2003 Forfatter Del Skrevet 25. mai 2003 procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled; end; end. [Error] splash.pas(49): Statement expected, but expression of type 'Boolean' found hva er galt nå da? Lenke til kommentar
abcd423417984 Skrevet 25. mai 2003 Del Skrevet 25. mai 2003 prøv timer1.enabled := true; ellernoe sånt. Jeg kan ikke delphi, men bare gjetter Lenke til kommentar
Superchez Skrevet 25. mai 2003 Del Skrevet 25. mai 2003 prøv timer1.enabled := true; ellernoe sånt. Jeg kan ikke delphi, men bare gjetter Det er veldig teit å villede han, spesielt hvis du ikke kan Delphi. burner89, prøv det jeg sa.. ignore invictus Lenke til kommentar
kilogram Skrevet 25. mai 2003 Del Skrevet 25. mai 2003 Det er veldig teit å villede han, spesielt hvis du ikke kan Delphi. Superchez, dessverre så må du nok innrømme at invictus har rett her. Timer1.Enabled er eit boolsk uttrykk, Timer1.Enabled := True setter timeren igang. Lenke til kommentar
Myklebust89 Skrevet 25. mai 2003 Forfatter Del Skrevet 25. mai 2003 nå skal jeg bare paste inn hele uniten til splash formen... sånn at du kan sjekke hva som er galt for meg! unit splash; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; type TForm4 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GroupBox1: TGroupBox; ProgressBar1: TProgressBar; Timer1: TTimer; procedure Timer1Timer(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 1; end else timer1.enabled := false; end; procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; end; end. kommer ikke noen feilmelding eller no... men det skjer bare ikke noe i progressbaren! Lenke til kommentar
Superchez Skrevet 26. mai 2003 Del Skrevet 26. mai 2003 Superchez, dessverre så må du nok innrømme at invictus har rett her. Timer1.Enabled er eit boolsk uttrykk, Timer1.Enabled := True setter timeren igang. Kilogram, jeg vet at det er boolsk uttrykk, men timer1.enabled := false skal settes i koden jeg ga, når timer1'en ikke lenger trenger å gjøre sin jobb. Det betyr at når progressbar1.position = 100, kan timer1 disables. Ergo, timer1.enabled := false skal fortsatt stå i program kode jeg ga. Jeg kan ikke innrømme at inviticus har rett fordi hans setning sier dessverre burner89 svært litt, hvis du tar i betrakning at han er ganske grønn i språket. Burner89, jeg må nesten ha all programkode for å finne ut hva du har gjort galt, men beklager det har jeg dessverre ikke tid til. Lykke til videre! Du finner sikkert ut av det (Det er hvis du smører deg med tålmodighet). Du kan jo spørre noen andre, eventuelt søke etter lignende på www.google.com ; det er sikkert noe andre som har hatt det samme spørsmålet før Lenke til kommentar
abcd423417984 Skrevet 26. mai 2003 Del Skrevet 26. mai 2003 vel jeg bare synes det virker logisk at hvis du bruker timer1.enabled := false; for å stoppe timern, at timer1.enabled := true; virker for å starte den (spesielt ettersom han fikk feilmelding på linjen du ga han). Dette går litt på generell/logisk syntax synes jeg og ikke bare ren delphi. Jeg er ikke "grønn" i språket som du påstår superchez, jeg har programmert litt i delphi, men er ikke særlig god. I denne sammenhengen skrev jeg et svar som virka mest logisk i håp om at brukeren får ting til å virke. Hvis det virker så virker det, og hvis det ikke virker så var det verdt forsøket. Ikke noen vits å lynje meg av den grunn :-? Hvis det du skulle frem til var at du kunne mer delphi enn meg (noe som det kunne virke som) så må jeg nok innrømme dette EDIT: tror kanskje du misforstod hva jeg foreslo superchez... jeg refererte til følgende: Greit, det skal jeg gjøre. Lag en splashform, på formens onshow, legger du til : timer1.enabled; IKKE at han skulle endre timer1.enabled := false; til timer1.enabled := true; slik som det kanskje kunne virke. Lenke til kommentar
Myklebust89 Skrevet 26. mai 2003 Forfatter Del Skrevet 26. mai 2003 Nå har jeg fått det til delvis... procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; If progressbar1.position < 100 then begin progressbar1.position := progressbar1.position + 100; end else timer1.enabled := false; end; nå er det sånn at med en gang splash formen starte, er den på 100% Det var ikke poenget! Den skal gå fra 0% til 100% på 3 sekunder! Noen forslag? Lenke til kommentar
kilogram Skrevet 26. mai 2003 Del Skrevet 26. mai 2003 Nå har jeg fått det til delvis... procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; timer1.interval := 30; // 3000 ms / 100 iterasjonar = 30 ms/iterasjon end; procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then progressbar1.StepIt else begin timer1.enabled := false; Form4.Hide; end; end; Prøv om dette virkar. Det skal virke. Lenke til kommentar
Myklebust89 Skrevet 26. mai 2003 Forfatter Del Skrevet 26. mai 2003 Det kom noen feil når jeg gjorde d! [Fatal Error] mp3playa2.dpr(8): Could not compile used unit 'splash.pas' [Error] splash.pas(20): Unsatisfied forward or external declaration: 'TForm4.FormCreate' [Error] splash.pas(46): Undeclared identifier: 'timer1' [Error] splash.pas(42): 'THEN' expected but identifier 'position' found [Error] splash.pas(42): Undeclared identifier: 'progressbar1' [Error] splash.pas(40): ';' expected but '(' found [Error] splash.pas(40): Undeclared identifier: 'Timer1Timer' Kan jo bare paste hele unit'en her... Sånn at du (om du gidder) kan sjekke hva som er galt! unit splash; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; type TForm4 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GroupBox1: TGroupBox; ProgressBar1: TProgressBar; Timer1: TTimer; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; timer1.interval := 30; // 3000 ms / 100 iterasjonar = 30 ms/iterasjon end; procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then progressbar1.StepIt else begin timer1.enabled := false; Form4.Hide; end; end; end. Lenke til kommentar
kilogram Skrevet 26. mai 2003 Del Skrevet 26. mai 2003 Det kom noen feil når jeg gjorde d! Fikset kode: unit splash; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; type TForm4 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GroupBox1: TGroupBox; ProgressBar1: TProgressBar; Timer1: TTimer; procedure FormShow(Sender: TObject); procedure Timer1Timer(Sender: TObject); // ENDRA!! private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; timer1.interval := 30; // 3000 ms / 100 iterasjonar = 30 ms/iterasjon end; procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then progressbar1.StepIt else begin timer1.enabled := false; Form4.Hide; end; end; end. Du kan ikkje berre paste inn kode kvar som helst. Du må deklarere funksjonar, og det gjer Delphi automatisk for deg når du legg dei inn på rett måte. No er du nødt til å sette OnTimer-eventen til Timer1 til Timer1Timer. Då vil det virke 100% bra. mvh., Vegard Lenke til kommentar
Myklebust89 Skrevet 26. mai 2003 Forfatter Del Skrevet 26. mai 2003 Sorry... Men jeg er helt grønn ass! Nå gikk det heller ikke.... Jeg tok all den koden du skreiv å satt den inn istedenfor den som var der... bare at jeg fjerna bold greine du satt inn ... Hva har jeg gjort feil nå? unit splash; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls; type TForm4 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GroupBox1: TGroupBox; ProgressBar1: TProgressBar; Timer1: TTimer; procedure FormShow(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.FormShow(Sender: TObject); begin timer1.enabled := true; timer1.interval := 30; // 3000 ms / 100 iterasjonar = 30 ms/iterasjon end; procedure TForm4.Timer1Timer(Sender: TObject); begin If progressbar1.position < 100 then progressbar1.StepIt else begin timer1.enabled := false; Form4.Hide; end; end; end. Takk for all tålmodighet! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå