Kurs Delphi


Lekcja 1

Witam moje drogie dzieci :). Na pierwszej lekcji zapoznamy sie z interfejsem programu:

0x01 graphic

Zazwyczaj kursy rozpoczynają się od pierwszej aplikacji o treści "Hello Word", my nie będziemy gorsi.

Pierwszy program
1. Utwórz nową aplikację, wybierając z menu File---->New Application
2. Na formę wstaw przycisk (z zakładki Standard) i umieść go w dowolnym miejscu
3. Kliknij dwukrotnie na przycisk i pomiędzy słowami begin i end wpisz:

ShowMessage('Hello Word');

4. Kliknij na zielony trójkąt (przycisk uruchomienia)
Jeżeli wszystko zrobiłeś jak należy twoim oczom ukaże sie skąpilowany program.
Od teraz moĹźesz cieszyc sie pierwszą aplikacją napisaną w pascalu :)

<<<|ciekawostka|>>>

W zakładce properties, właściwości caption możemy zmieniać nazwy formy jak i komponętów.

Lekcja 2

W lekcji drugiej dowiemy się jak zakończyć działanie aplikacji.
1. Na formę wstawiamy przycisk (zupełnie tak samo jak na poprzedniej lekcji).
2. Własciwość caption zmieniamy na: "Zamknij program".
3. Przydatną własciwością jest HINT czyli komentarz
Wpiszmy np. Zakończ
4. Aby komentarz zadziałał musimy go uaktywnić wlaściwością Show Hint wpisując True
5. Czas na kod, klikając dwukrotnie na przycisk miedzy słowami begin a end wpisujemy:

close;

Możemy jeszcze bardziej upiększyc program dodając "MessageBox"

MessageBox jest to funkcja slużąca do wyświetlania okien dialogowych. W porownaniu do ShowMessage która wyśiwetla tylko przycisk OK, MessageBox potrafi wyświetlić różne przyciski, innym nagłówkiem i z ikonami. Jest to lepsza metoda niż tworzenie nowej formy. Oto przykład użycia MessageBox:

MessageBox(Handle,'Napis','Tytul',MB_OKCANCEL + MB_IconExclamation);

Hmmm a co to jest? Już tłumacze :)
Pierwszy parametr to uchwyt okna, drugi to napis w oknie, trzeci nagłówek okna. Ostatni parametr to tzw. Flagi-określa jakie mają zostać wyświetlone przyciski i ikona jaka ma zostać wyświetlona(oddzielone znakiem + )Możliwe parametry to:

Parametr

Wyświetlane przyciski

MB_AbortRetry

Przerwij, Ponów próbę, Ignoruj

MB_OK

OK

MB_OKCancel

OK, Anuluj

MB_RetryCancel

Ponów próbę, Anuluj

MB_YesNo

Tak, Nie

MB_YesNoCancel

Tak, Nie, Anuluj

Parametr

Wyświetlane ikony

MB_IconExclamation

Ikona ze znakiem !

MB_IconQuestion

Ikona ze znakiem ?

MB_IconStop

Ikona ze znakiem X

Jak widać angielski czasami się przydaje :)

Lekcja 3

Na tej lekcji pobawimy się zegarem i datą. Zapowiada się fajnie prawda?
Zaczynamy!!!

1. Na formę wstaw komponent Timer(System).
2. Następnie daj Label(Standard).
3. Sprawdzamy czy komponent Timer ma ustawioną właściwość Enabled na True
oraz czy właściwosc Interval równa się 1000.

W events do zdarzenia Onclick dopisujemy:

label1.caption:=Timetostr(Time); //Program pobiera godzinę z systemu

Czas zająć się datą.

Dopisujemy to do poprzedniego kodu

label2.Caption:=datetostr(date); //Program pobiera date z systemu

Data oraz godzina powinna wyświetlić się na labelach

Zapomniałem o komętarzach czyli o "//"
Możemy dopisać do kodu jeśli chcemy opisać jakąś funkcje, komentarz nie jest czytamy przez program
oczywiście jeśli zawiera //

Lekcja 4

Myślę, że czas na zabawę z kolorami :) no to jedziem.

Większość komponentów (np. tło na panelu i etykiecie), a także forma programu posiadają właściwość Color. Właściwość tę można ustawiać w edytorze kolorów w oknie ObjectInspector dla komponentu; można ją również zmieniać w oknie modułu, podstawiając pod nią jedną z wartości stałych, które reprezentują kolor.

1. Utwórz aplikację, która będzie zmieniać kolor formy. Umieść w oknie programu dwa przyciski. Pierwszy z nich będzie zmieniał kolor na niebieski, a drugi na biały.

Dla pierwszego przycisku dodaj instrukcję

Form1.Color:=ClBlue;

Dla drugiego:

Form1.Color:=ClWhite;

Myślę, że wiadomo co oznacza white i blue
Blue-niebieski
White-biały
Tak wygląda całość

0x01 graphic

Lekcja 5

Zacznijmy od prostego edytora tekstu.

1.Na formę wrzuć komponent MainMenu z zakładki Standard.

0x01 graphic

2. W polu Caption okna ObjectInspector wprowadź odpowiednie dane:
Plik--->Nowy a niżej Zakończ.
3. Wstaw jeszcze komponent Memo.
4. Dla Nowy wpisz:

Memo1.clear;

5. Dla Zakończ

close;

Można dodać Messagebox jak w lekcji 2.

Lekcja 6

Stworzymy bardziej zaawansowany edytor :)).

1. Wstaw komponety:

TMemo (Standard)
4x TSpeedButton (Additional)
TPanel (Standard)
TOpenDialog (Dialogs)
TSaveDialog (Dialogs)
TColorDialog (Dialogs)
TFontDialog (Dialogs)
Zaczynamy!!
Na TPanel połóż 4 SpeedButtony.

SpeedButton1 - Otwieranie pliku

a oto kod

if OpenDialog1.Execute then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);//jesli wcisniesz przycisk nastapi zaladowanie zawartosci pliku

SpeedButton2 - Zapisywanie pliku

if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName);//jesli wcisniesz to zawartosc memo zapisze sie do pliku

SpeedButton3 - Zmiana czcionki

if FontDialog1.Execute then Memo1.Font:=FontDialog1.Font;

Działania chyba nie musze tłumaczyć :)

SpeedButton4 - Zamiana koloru tła

if ColorDialog1.Execute then Memo1.Color:=ColorDialog1.Color;//zmienia kolor w komponentu

To by było na tyle. Oczywiście to nie oznacza, że nie możecie sami czegoś wymyślić. :)

Teraz tylko wystarczy poukładać wszystko żeby miało ręce i nogi.

Dla ułatwienia podam cały kod:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
Memo1: TMemo;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
FontDialog1: TFontDialog;
ColorDialog1: TColorDialog;
PrintDialog1: TPrintDialog;
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var

implementation

{$R *.dfm}

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if SaveDialog1.Execute then
Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if FontDialog1.Execute then
Memo1.Font:=FontDialog1.Font;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if ColorDialog1.Execute then
Memo1.Color:=ColorDialog1.Color;
end;

end.

Powiedzmy co nieco o właściwościach:

DefaultExt - domyślne rozszerzenie. Z takim rozszerzeniem będą otwierane/zapisywane pliki. Oczywiście, jeśli użytkownik go nie zmieni...

Filter - bardzo fajna rzecz. :) Tutaj przechowujemy wszystkie rozszerzenia i ich opisy rozpoznawane przez nasz program.

Np. otwórz choćby głupiego notatnika. Wybierz opcję: Zapisz jako. Otworzy Ci się okienko SaveDialog. Będziesz na dole miał:

Zapisz jako typ" i tam plik tekstowy, a poniżej wszystkie pliki.
To robimy właśnie w Filter. W następujący sposób:

Plik tekstowy (*.txt)|*.txt|Wszystkie pliki(*.*)|*.*

Filter Name |Filter
------------------------
Plik txt (*.txt) |*.txt

W pierwszej kolumnie mamy to, co widzi użytkownik w liście wyboru. Druga natomiast mówi programowi, jakiego typu pliki mają być pokazane (lub jako jaki typ ma zapisać).

FilterIndex - LICZONY OD 1. Gdy mamy kilka filtrów, to to oznacza, który ma być "aktywny" A także zwraca index wybranego filtra. Pamiętajcie, że liczony jest od 1.
InitialDir - katalog, który będziemy widzieli po wykonaniu metody Execute. Czyli taki jakby katalog startujący. Np. w Notatniku jest to katalog: Moje Dokumenty.
Options - tutaj się przyjrzyjmy trochę bliżej:

ofReadOnly - tylko do odczytu,
ofOverwritePrompt - gdy próbujemy zapisać plik o nazwie pliku już istniejącego, to gdy ta opcja jest ustawiona na True, to program najpierw wyświetli okienko z pytaniem, czy na pewno chcemy nadpisać plik.
Jeśli opcja jest ustawiona na False, to program bez pytania go nadpisze...
ofHideReadOnly - ukrywa pliki tylko do odczytu,
ofNoChangeDir - gdy opcja jest na True, to wtedy gdy wybierzemy jakiś plik,
a po jakimś czasie chcemy kolejny, to wtedy open/saveDialog otworzy nam się w folderze, w którym wybraliśmy ostatni plik.
ofShowHelp - pokazuje przycisk pomocy,
ofAllowMultiSelect - można wybierać więcej niż jeden plik, jeśli opcja jest na TRUE,
ofForceShowHidden - pokazuje ukryte pliki.

Więcej opcji nie ma sensu przedstawiać, bo albo nazwy mówią same za siebie, albo należy samemu trochę pokombinować. :) To były te najważniejsze i najczęściej używane.
Title - tytuł okienka, np: "Wybierz plik do odczytu", lub "Zapisz se plika" Pojawi się ten tytuł w okienku dialogowym.

Lekcja 7

No to czas na zmienne :). Kto zetknął sie z jakimś językiem programowania takim jak np. rodzina jezykow C na pewno mial do czynienia z deklaracją zmiennych.
Zakładam, że to twój pierwszy raz a wiec wytłumacze na czym to wszystko polega.

Zmienne

Zmienne to miejsce w pamięci, które przechowuje jakąś wartość ( tekst, znaki, cyfry ). Zmienne deklaruje się przy użyciu słowa var. Po tym słowie możesz napisać swoją zmienną. Oto przykład deklaracji zmiennej typu Integer, czyli takiej, która przechowuje wartości liczbowe:

var
MojaZmienna : Integer;

Zmienne możesz deklarować w dowolnym miejscu programu poza blokiem begin..end. Po lewej stronie piszesz unikalną nazwę zmiennej, a po znaku dwukropka wpisujesz typ zmiennej. Typów tych jest duzo więcej. Np. typ. który przechowuje tekst to typ String. Oto deklaracja kilku zmiennych:

var
Liczba : Integer;
Tekst : String;

Możesz zadeklarować kilka zmiennych danego typu - np:

var
I, Z, Y : Integer;

Albo:

var
I : Integer;
Z : Integer;
Y : Integer;

Oczywiącie to nie wszystko. Musisz bowiem przypisać tej zmiennej jakąś wartość, prawda? Robi się to w bloku begin..end i dokonuje się to za pomocą operatora := Oto przykład wypełnienia zmiennej.

procedure MojaProcedura;
var
I : Integer;
begin
I := 29;
end;
W tym momencie nastąpiło do zmiennej I przypisanie wartości liczbowej, a konkretnie cyfry 29. Jeżeli chcesz do zmiennej przypisać tekst to robisz to za pomocą znaków ' i '. Np:

procedure MojaProcedura;
var
I : Integer;
S : String;
begin
I := 29;
S := 'Jakią tam tekst';
end;

Każda zmienna ma swoje ograniczenia:

Integer -2147483648..2147483647
Cardinal -0..4294967295
Shortint -128..127
Smallint -32768..32767
Longint -2147483648..2147483647
Int64 -2^63..2^631
Byte 0..255
Word 0..65535
Longword 0..4294967295

Jak więc widzisz chyba nie będziesz miał problemów z za małym zakresem zmiennej? :) Pewnie sobie myślisz: "A co mi tam, zawsze będę używał zmiennej typu Int64 bo ma największy zakres". Tak, ale też najwięcej zajmuje w pamięci komputera. Typ Integer zamuje 8 bajtów, a typ Int64 już 10 bajtów. Myślisz sobie, że to nie dużo, ale jeżeli masz kilkadziesiąt zmiennych???. Czy przy małych obliczeniach nie lepiej używać typu Byte, który zajmuje jedynie 1 bajt???

Na następnej lekcji omówie funkcje i procedury :).

Lekcja 8

Na ósmej lekcji pokaże jak deklarować procedury. Nie jest to trudne ponieważ my używamy Delphi,
w którym wystarczy dać komponent na forme a po kliknięciu procedura zostaje utworzona. No dobra teraz teaoria.

Procedury

Procedury to wydzielony blok kodu, który wykonuje określoną czynność. Procedury deklaruje się za pomocą kluczowego słowa - procedure. Oto przykłady:

interface

procedure MojaProcedura;
procedure Moja2Procedura;

implementation

procedure MojaProcedura;
begin
{ tresc procedury }
end;

procedure Moja2Procedura;
begin
{ tresc procedury }
end;

Nagłówki, czyli tzw. deklarację procedur wpisuje się w sekcji Interface. Definicję procedurę, czyli jej treść wpisujesz natomiast w sekcji Implementation. Treść procedury wpisuje się pomiędzy słowami begin i end. Jak wspomniałem na początku procedury nie są nam potrzebne jeśli wstawiamy komponenty. Pomyślisz pewnie po co on pisze o tych procedurach :). Otoż używamy procedur to pisania modułów ale o tym pózniej :). Jeśli używasz kompilatora zwanego free pascal kod nie zostaje ci wygenerowany, wszystko piszesz sam.

Lekcja 9

Były procedury to teraz funkcje:

Funkcje

Funkcja różni się tym od procedury, że zwraca rezultad operacji. W sekcji Interface dodaj deklarację funkcji:

function DoKwadratu(Liczba: Integer) : Integer;

Funkcję deklaruje się za pomocą słowa kluczowego function. Następnie następuje nazwa funkcji. Tak, tak, Ty także możesz w nawiasie podawać parametry, które będą wymagane przy uruchamianiu funkcji. Na samym końcu deklaracji wpisywany jest rezultad wykonanej operacji w postaci zmiennej typu Integer. Teraz w sekcji Implementation wpisz definicję funkcji:

function DoKwadratu(Liczba: Integer) : Integer;
begin
Result := Liczba * Liczba;
end;
W funkcjach możliwe jest do wykorzystania słowo kluczowe Result. Oznacza ono rezultad wykonanej operacji. W tym wypadku rezultatem jest przemnożenie zmiennej Liczba. Teraz możesz wykorzystać te funkcje:

DoKwadratu(2); // da rezultad w postaci cyfry 4

Wywoływna zostaje funkcja, w której jako parametr podawany zostaje cyfra 2. No dobrze, ale jak wyświetlić wynik wykonanej operacji??? Możesz wyświetlić ten wynik w postaci okienka - słuzy do tego polecenie ShowMessage. Oto przykład:

ShowMessage(DoKwadratu(2));

Spróbuj skompilować ten przykład. Aaaa, nie da się? :) Tak, kompilator wyświetli błąd:
[Error] Unit1.pas(36): Incompatible types: 'String' and 'Integer'
Oznacza to niekompatybilny typ. Otóż parametrem polecenia ShowMessage jest parametr w postaci zmiennej typu String - np: ShowMessage('Oto okienko, które się teraz pojawi');

Natomiast funkcja "DoKwadratu" zwraca rezultat w postaci zmiennej typu Integer. Innymi słowy kompilator nie może odpowiednio skonwertowac tych dwóch typów. Na szczęści z pomocą przychodzi polecenie IntToStr. Tak więc, aby przykład się prawidłowo skompilował musisz zrobić coś takiego: ( cały kod powinien wyglądać tak: )

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

function DoKwadratu(Liczba: Integer) : Integer;

implementation

{$R *.DFM}

function DoKwadratu(Liczba: Integer) : Integer;
begin
Result := Liczba * Liczba;

end; procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(DoKwadratu(2)));
end;

Za dużo zamieszania prawda? No ale nikt nie mówił, że będzie łatwo. Na razie nie będziemy sie tym bawić.

Kto chce może się zainteresować glębiej, gdyż jest troche stron z kursami :). Ja powracam niedlugo kiedy znajde czas na dokonczenie.



Wyszukiwarka

Podobne podstrony:
praktyczny kurs delphi(1) IQL54 Nieznany
Praktyczny kurs Delphi pkdel
Praktyczny kurs Delphi pkdel
Praktyczny kurs Delphi 2
Praktyczny kurs Delphi
Praktyczny kurs Delphi 2
(Delphi) - Delphi - Kurs, Doc01
delphi kurs Lekcja05
delphi 7 0 kurs 4GNJNMPSG24R322W2DJOTEOF4OCTOKUGOVHJMSQ
delphi kurs Lekcja03
delphi kurs Lekcja07
delphi kurs Lekcja04
delphi kurs Lekcja08
delphi kurs Lekcja06
Delphi 7 0 kurs
KURS ETYKI
kurs alergologii
Choroba hemolityczna p odu na kurs
zapotrzebowanie ustroju na skladniki odzywcze 12 01 2009 kurs dla pielegniarek (2)

więcej podobnych podstron