KĄCIK DELPHI


Witam w pierwszej części kursu (jak to oficjalnie brzmi :)) Delphi. Po pierwsze, chciałbym poinformować, że kurs jest dla tych, którzy wiedzą czym jest Delphi, jak stworzyć pętle i procedury. Jeśli ktoś o Delphi nie ma pojęcia to będzie miał problem (przynajmniej przez jakiś czas), ale na pewno załapie o co chodzi. Na początek coś prostego... Na pewno wielu z was ma Internet, a duża część internautów posiadają modemy. Ci którzy liczą minuty, aby nie doszło do konfliktu miedzy TPSA o zawyżone rachunki na pewno korzystają z liczników internetowych, które można ściągnąć z wielu miejsc w Internecie. Dla bardziej ambitnych stworzenie licznika nie powinno być problemem i właśnie od tego zaczniemy...

1. CZĘŚĆ WIZUALNA

Tworzymy nową aplikację i umieszczamy na formatce 3 komponenty "edit", 2 komponenty "label", 1 komponent button i 1 timer. Komponenty "edit" i "label" ustawiamy na zmianę (E L E L E) i kasujemy tekst w nich zawarty. W właściwości "text" komponentów "edit" wpisujemy "0", a w komponentach label zmieniamy właściwość "caption" na ":". Aby nie było problemów należy zmienić również właściwość "readonly" komponentów "edit" na "true".

2. KOD PROGRAMU

Na początek klikamy na nasz przycisk i przed słowem begin wpisujemy coś takiego:

var
sec : integer;
min : integer;
h : integer;

Teraz trochę wyjaśnię sytuację. Jako, że czas jest przedstawiany w liczbach, musimy określić sekundy, minuty i godziny jako liczby. Sekundy to będzie zawartość komponentu "Edit3", minuty "Edit2", a godziny "Edit1", więc między wyrazami begin a end wpisujemy:

sec:=strtoint(edit3.text);
min:=strtoint(edit2.text);
h:=strtoint(edit1.text);

Następnie trzeba "poruszyć" nasz zegar. W tym celu pod ostatnim wpisem umieszczamy procedurę:

sec:=sec + 1;

Teraz, aby nasz zegar działał klikamy na komponent "timer" i na zakładce "events" zmieniamy właściwość "ontimer" na "button1click". Gdy to uczynimy musimy jeszcze pokazać, że wszystko działa. W tym celu pod ostatnią procedurą wpisujemy:

edit3.text:=inttostr(sec);

Kiedy uruchomimy nasz program na pewno zauważyliście, że sekundy naliczane są w nieskończoność, a minuty i godziny ani drgną. By to poprawić wpisujemy te linie kodu:

if edit3.text = '60' then
begin

sec := 0;
edit3.text:=inttostr(sec);
min := min + 1;
edit2.text:=inttostr(min);
end;
if edit2.text = '60' then
begin

min := 0;
edit2.text:=inttostr(min);
h := h + 1;
edit1.text:=inttostr(h);
end;

Wyjaśnijmy. Pierwsza klauzula przedstawia uaktywnia się, jeżeli licznik sekund wybije 60. Wtedy sekundy zostaną wyzerowane a do minut zostanie doliczona jedna. Druga wygląda tak samo lecz przedstawia minuty i godziny. Można by rzec, że to koniec programu, ale... zrobimy tak, by licznik nie włączał się razem z programem, a po naciśnięciu przycisku "button1". W tym celu zmieniamy właściwość "enabled" komponentu "timer" na "false", a na początku procedury kliknięcia przycisku wpisujemy:

Timer1.Enabled := true;

Możemy już tylko zmienić wyświetlaną nazwę na przycisku z "button1" na "START". Jeśli ktoś nie jest pewny czy nie popełnił błędu to całość pisanego kody powinna wyglądać tak:


------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
sec : integer;
min : integer;
h : integer;
begin
Timer1.Enabled := true;
sec:=strtoint(edit3.text);
min:=strtoint(edit2.text);
h:=strtoint(edit1.text);
sec:=sec + 1;
edit3.text:=inttostr(sec);
if edit3.text = '60' then
begin

sec := 0;
edit3.text:=inttostr(sec);
min := min + 1;
edit2.text:=inttostr(min);
end;
if edit2.text = '60' then
begin

min := 0;
edit2.text:=inttostr(min);
h := h + 1;
edit1.text:=inttostr(h);
end;
end;

-----------------------------------------------------------------------------

W razie jakichś problemów, wszystkich zainteresowanych kursem proszę o kontakt: adrian.slowik@wp.pl . Na dzisiaj to koniec. Za miesiąc postaram się przedstawić jak stworzyć konfigurację swojego programu tak, aby program ją zapamiętywał.

[na górę]