|
| Newbie: ProgressBar Fra : Kasper Okkels |
Dato : 07-04-03 22:04 |
|
Undskyld min uvidenhed og (dumme) spørgsmål. Men hvorfor virker nedenstående
ikke?
/Kasper
------------------
unit uProgressBar;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
progressbar1: Tprogressbar;
implementation
{$R *.DFM}
procedure procedure1;
var
i : integer;
begin
for i := 1 to 1000 do begin;
ProgressBar1.Position := i;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
progressbar1.Min := 1;
progressbar1.max := 1000;
procedure1;
end;
end.
| |
Uffe Kousgaard (07-04-2003)
| Kommentar Fra : Uffe Kousgaard |
Dato : 07-04-03 22:34 |
|
Procedure1 er defineret som en almindelig procedure og så har du selv
tilføjet yderligere en progressbar1 variabel, som ikke er den samme, som
den du har på skærmen (som del af TForm1). Evt. kan du få et crash med
den kode, du har her.
Tilføj "procedure procedure1;" lige efter "{ Public declarations }" og
slet så den globale progressbar1 variabel, du selv har tilføjet. Ved
implementeringen af procedure skal der også stå "procedure
Tform1.procedure1;"
Og uden en pause kan du selvfølgelig ikke se, at "baren" flytter sig, så
en Sleep(10) i dit loop ville også gøre underværker. Så ville den samlet
være 10*1000 ms = 10 sek. om at bevæge sig.
"Kasper Okkels" <okkelsFJERN_DETTE@wanadoo.dk> wrote in message
news:3e91e769$0$42583$edfadb0f@dread11.news.tele.dk...
> Undskyld min uvidenhed og (dumme) spørgsmål. Men hvorfor virker
nedenstående
> ikke?
>
> /Kasper
>
> ------------------
> unit uProgressBar;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs,
> ComCtrls, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> ProgressBar1: TProgressBar;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
> progressbar1: Tprogressbar;
>
> implementation
>
> {$R *.DFM}
>
> procedure procedure1;
> var
> i : integer;
> begin
> for i := 1 to 1000 do begin;
> ProgressBar1.Position := i;
> end;
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> progressbar1.Min := 1;
> progressbar1.max := 1000;
> procedure1;
> end;
>
> end.
>
>
| |
Kasper Okkels (08-04-2003)
| Kommentar Fra : Kasper Okkels |
Dato : 08-04-03 21:11 |
|
"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3e91eea7$0$148$edfadb0f@dtext01.news.tele.dk...
> Procedure1 er defineret som en almindelig procedure og så har du selv
> tilføjet yderligere en progressbar1 variabel, som ikke er den samme, som
> den du har på skærmen (som del af TForm1). Evt. kan du få et crash med
> den kode, du har her.
>
> Tilføj "procedure procedure1;" lige efter "{ Public declarations }" og
> slet så den globale progressbar1 variabel, du selv har tilføjet. Ved
> implementeringen af procedure skal der også stå "procedure
> Tform1.procedure1;"
Tusind tak for hjælpen. Det virker fint og har givet en anelse mere klarhed
over hvordan man bygger koden op i Delphi.
/Kasper
| |
|
|