Nieiwme jak to nazwac

0

<font color="darkblue">Chce napisac program ktory po uruchomieniu liczy % od 0 do 100 po prostu chce taki mprogram napisca by przestraszyl siostre ze formatuje dysk i mam taki kod: </span>

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
x:integer;
begin
Timer1.Interval:=2000;
Timer1.Enabled:=true;
Brush.Color:=clblack;
Brush.Style:=bsSolid;
Font.Color:=clwhite;
Font.Size:=15;
for x:=0 to 100 do
Canvas.TextOut(10,10,IntToStr(x)+'%');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color:=clblack;
end;

end.

<font color="darkblue">I jak zrobic by to pokazywalo Od razu po wlaczeniu programu a nie dopiero po 2 s jesli minie ten czas w intervalu i by ten procenty przeskakiwaly co 2
Prosze o pomoc i z gory dziekuje</span>

0

Po pierwsze... Użyj komponentu gauge z karty samples.

I wtedy dodajesz timera:

procedure onTimer;
begin
gauge1.position:=gauge1.position+1;
end;

(nie pamiętam dokładnie, czy to właściwość position, ale raczej tak).

Po drugie daj enabled Timera na FALSE, a w formShow zmień na true:

procedure FormShow;
begin
timer1.enabled:=true;
end;

0

ale ja chce by to sie pokazywalo w TextOut co 2sekundy o 1 % wiecej

0

Może spróbuj bez Timera.
Napisz sobie taką procedurkę:

procedure TForm1.Licznik;
var
I: Integer;
begin
for I := 0 to 100 do
begin
Canvas.TextOut(20, 20, IntToStr(I) + ' %');
Sleep(2000);
end;
end;

I gdzieś ją wywołaj.

0

<font color="darkblue">Chce napisac program ktory po uruchomieniu liczy % od 0 do 100 po prostu chce taki mprogram napisca by przestraszyl siostre ze formatuje dysk i mam taki kod: </span>

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
x:integer;
begin
Timer1.Interval:=2000; // można ustawić w ob. insp.
Timer1.Enabled:=true; // NIE MA sensu (żeby ta instrukcja była wykonywana i to wcześniej musi być już true)
Brush.Color:=clblack;
Brush.Style:=bsSolid;
Font.Color:=clwhite;
Font.Size:=15;
for x:=0 to 100 do // co 2 sekundy się wykonuje (i wyświetla zawsze 100%)
Canvas.TextOut(10,10,IntToStr(x)+'%');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Color:=clblack; // ustaw w objekt inspektorze
end;

end.

<font color="darkblue">I jak zrobic by to pokazywalo Od razu po wlaczeniu programu a nie dopiero po 2 s jesli minie ten czas w intervalu i by ten procenty przeskakiwaly co 2
Prosze o pomoc i z gory dziekuje</span>

możesz to zrobić tak:
ustaw w objekt inspektorze kolor formy na czarny
interwał dla timera 2000

unit Unit1;

interface

uses
Windows, Classes, ExtCtrls, Forms, Graphics, SysUtils;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

var
x:integer = -1; // nie przejmuj się że to jest tu, będzie działać
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Brush.Color:=clblack;
Brush.Style:=bsSolid;
Font.Color:=clwhite;
Font.Size:=15;
inc(x) ;
Canvas.TextOut(10,10,IntToStr(x)+'%');
IF x = 100 then
begin
timer1.Enabled:=false ;
Canvas.TextOut(10,30,'Formatowanie dysku C: zakonczone');
End;
end;

end.

ale to jest bardzo, bardzo kiepska symulacja formatowania.
powinieneś to zrobić tak aby wyglądało tak samo jak w systemie, a dysk powinien pracować bez przerwy.

kiedyś pod dosem taki zrobiłem, jak go po jakimś roku odpaliłem, to sam zbladłem.

0

ale ja chce by to sie pokazywalo w TextOut co 2sekundy o 1 % wiecej

A widziałeś w ogóle komponent gauge?
Jak ustawisz sobie długość na 100 i będziesz dodawał pozycję o jeden, wtedy będzie Ci się zwiększało o 1 procent...
Po co sobie życie canvasami utrudniać, jak można to zrobić 3 linijkami kodu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1