[DELPHI] 1. podstawy + kalkulator

Dzia³ po¶wiêcony programowaniu

Moderators: Frost, Luigi, HQTM-Team

User avatar
Maxoff
HQTM-Team
Posts: 3434
Joined: 2004-07-06, 18:28
Location: Poland
Contact:

[DELPHI] 1. podstawy + kalkulator

Post by Maxoff »

Najpierw sprawy ogranizacyjne.

Zaczniemy tutaj od prostych rzeczy, więc jeśli ktoś to wie, to niech nawet nie czyta, nie warto. Proponuję założyć temat dla bardziej zaawansowanych, gdzie możecie zadawć pytania a ja będę w ramach możliwości na nie odpowiadał. Tytaj polecimy z takim prostym kursem Delphi. Nie będę uczył składni Pascala (zapraszam do książek), gdyż nie mam ochoty przepisywać ksiązki. Pokaże jedynie elementy, które będziemy używać. Tam samo nie będę wykładał teorii programowania obiektowego, gdyż:
1. istnieje wiele publikacji, które to robia lepiej niż ja
2. znajmość technik programowania obiektówego nie jest potrzebna do pisania prostych programów w Delphi (wiem, bo sam tak robiłem)
Oczywiście wyjaśnie zgrubnie o co w tym wszystkich chodzi, pokaże też najważniejsze elementy środowiska, wszystko w swoim czasie.

Jeśli macie jakieś pytania, coś jest nie zrozumiałe, coś przeoczyłem, źle wyjaśniłem to piszcze.

A więc, najpierw trochę niezbędnych czynności:
1. uruchamiamy Delphi
2. klikamy Tools -> Enviroment Options
3. następnie zaznaczamy Edit files w sekcji Autosave options (automatyczne zapisywanie to podstawa)
4. klikamy OK

5. kilkamy Tools -> Editor Options
6. przechodzimy na zakładkę Source Options
7. włączamy Smart tab - powzoli to łatwiej pisać i formatować kod
8. klikamy OK

Narzędzie mamy skonfigurowane wstępnie, teraz musimy stworzyć sobie na dysku jakiś katalog dla naszych eksperymentów. Powiedzmy C:\MyPrograms

Wracamy do Delphi. Jak widać standardowo został stworzony project1, czyli standardowa okienkowa aplikacja. Pierwsze co zrobimy, to zapiszemy ją. Klikamy File -> Save all. Zapisze to dwa pliki:
1. Unit1.pas - plik z informacją o okienku
2. Project1.dpr - konfiguracja aplikacji

Teraz aby udowodnić, że tworzenie aplikacji w Delphi nie jest trudne, stworzmy swoją pierwszą prostą aplikację. Mając otwary i zapisany projekt klikamy na klawiatyrz F9 i... oto nasza aplikacja. Prawda, że proste ?? Ma to na celu przekonać sceptyków i pokazać, że naprawdę nie trzeba dużo wiedzieć o mechanizmie działania Windows aby móc stworzyć aplikacje :D

Gdy to wykonacie, to dajcie znać, pójdziemy dalej...
Last edited by Maxoff on 2006-05-01, 15:55, edited 1 time in total.
... You only have to know how to prepare query, google will do the rest ...
... My software ...
... Guide to Punctuation ...
Gdynianek
HQTM-Team
Posts: 1834
Joined: 2004-07-21, 17:33
Location: Kraina Szczê¶cia
Contact:

Post by Gdynianek »

Wykonalem ;)
Why am I fighting to live, if I'm just living to fight..
User avatar
[*CzApLa*]
Fantastic Order Of Lords
Posts: 1169
Joined: 2004-07-15, 19:12
Contact:

Post by [*CzApLa*] »

Wykonane :)
Nie dyskutuj nigdy z głupcem - najpierw Cię sprowadzi do swojego poziomu, a potem wykończy doświadczeniem.
KCP-Zmieniamy świat na plus.
KCP-(Nie)Umiemy opowiadać bajek.
Gdynianek
HQTM-Team
Posts: 1834
Joined: 2004-07-21, 17:33
Location: Kraina Szczê¶cia
Contact:

Post by Gdynianek »

No to moze, nam podpowiesz co dalej ?
Why am I fighting to live, if I'm just living to fight..
User avatar
[*CzApLa*]
Fantastic Order Of Lords
Posts: 1169
Joined: 2004-07-15, 19:12
Contact:

Post by [*CzApLa*] »

Ci co przyjdą dopiero to będą mieli napisane to przeczytają i dalej przejdą, bo jak by na nich czekać to ..
Nie dyskutuj nigdy z głupcem - najpierw Cię sprowadzi do swojego poziomu, a potem wykończy doświadczeniem.
KCP-Zmieniamy świat na plus.
KCP-(Nie)Umiemy opowiadać bajek.
User avatar
Maxoff
HQTM-Team
Posts: 3434
Joined: 2004-07-06, 18:28
Location: Poland
Contact:

Post by Maxoff »

Nieźle jak na początek :> Teraz trochę teorii (będzie nudna).
Delphi to środowisko programowania typu RAD (Rapid Application Develpoment) co oznacz m.in. szybkie tworzenie programów (szczególnie interfesjów użytkownika). Ta własność jest nam bardzo na rękę :D

Każda aplikacja w systemie Windows ma okno (może być niewidoczne, ale jest). W Delphi okna nazywe są Formami. Na takich oknach możemy umieszczać elementy interfejsu użytkownika. Ograniczmy się do gotowych składników, których jest bardzo dużo. Za pomocą kilku kliknięć myszki możemy umieścić na formie (będę używał takiej formy ;) ) przyciski, jakieś pola edycjne, menu itp.

Delphi jest językiem obiektowych, czyli najprościej mówiąć używa hierarchi. Forma jest obiektem który zawiera np przycisk, która także jest obiektem i zawiera np takie właściwości jak nazwa. Po prostu zakładająć, że forma to samochód, przycisk może np. silnikiem (jest elementem samochodu) itp. Po dokładne wyjaśnienia koncepcji programowania obiektowego zapraszam do książek. Tutaj wystarczy tylko to, że elementy mają swoje własności oraz składniki, które też mają własności. Wygląda to jak struktura katalogów na dysku (mogą być katalogi obiekty oraz pliki właściwości). To tyle, jeśli idzie o obiektówkę. Powinno wystarczyć.

Koniec teorii, teraz praktyka. Interfejs Delphi składa się z 4 zasadniczych elementów: Panel z komponentami (rys), Object Inspector (rys), Forma (rys) oraz okno z kodem (rys)

Na razie interesuje nas forma oraz panel z komponentami. Forma to nasz interfejs (nasza piaskownica) a panel z komponentami to elementy, które możemy tam wstawić. Jest ich na prawdę sporo. W ramach ćwiczenia możecie przejrzeć sobie ich nazwy i sprawdzić w Helpie do czego słuszą (o pomocy napiszę później). Nas intersuje zakładka standard gdzie mamy takie komponenty jak przycisk (Button). Umieścimy teraz przycisk na formie (rys) a następnie sprawimy, aby po kliknięciu w niego wyświetlił się komunikat Witaj!.

Zanim to napiszemy to mała dygresja odnośnie pisania programu. Standardowo w Pascalu w szkole pisało się coś takiego:

Code: Select all

program Test;
begin
  WriteLn('Witaj');
end.
Tutaj jest trochę inaczej. Nie tworzymy całej aplikacji od zera, a jedynie dopisujemy brakujące funkcje i procedury (mam nadzieję, że wiecie czym się różni funkcja od procedury ;) ). Cały mechanizm programowania w oknach opiera się na mechanizmie zdarzeń. Kliknięcie w przycisk jest zdarzeniem a my piszemy reakcję na to zdarzenie. Przesunięcie okna jest zdarzeniem, naciśnięcie przycisku jest zdarzeniem, a nasze rola to po prostu napisanie obsługi (reakcji). Jest to bardzo proste i szybkie. I to zaraz zrobimy.

Mamy przycisk a dla przycisku domyślnym (najczęściej używanym) zdarzeniem jest kliknięcie. A więc napiszemy reakcję na to zdarzenie. Klimamy dwa razy w przycisk (ten umieszczony na formie) i otworzy nam się okienko z kodem a w nim:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
begin

end;

end.
Jest to automatycznie wygenerowana procedura obsługi zdarzenia, my tylko wpisujemy w środku kod. TForm1 jest to klasa (szablon dla obiektu) formularza, natomiast Button1Click jest to nazwa procedury obsługi, jest ona tworzona na podstawie nazwy przycisku (Button1) oraz nazwy zdarzenia (Click). Sender to parametr wywołania, nim się nie będziemy zajmować.

A więc, skoro chcemy aby wyświetlony został komunikat Witaj!, napiszmy tą jedną linijkę kodu. W zwykłym Pascalu byłoby to coś stylu WriteLn('Witaj!');, tutaj jest podobnie ShowMessage('Witaj!');. Czyli po wpisaniu nasza procedura będzie wyglądać tak:

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Witaj!');
end;

end.
Klimamy F9 (uruchomienie aplikacji) a następnie w przycisk Button1. W wyniku tego powinniśmy ujrzeć to.

Dajcie znać gdy to zadziała...

PS. Sorry za laga, ale napisanie tego chwilę zajmuje :>
... You only have to know how to prepare query, google will do the rest ...
... My software ...
... Guide to Punctuation ...
User avatar
ZNag
HQTM-Team
Posts: 3526
Joined: 2004-07-15, 19:20
Location: W³oc³awek [PL]
Contact:

Post by ZNag »

Wszystko zrobione :)
•ZNag - Strona domowa
•Intel Core 2 Quad Q9400 2,66GHz, 4GB DDR2 800MHz (Dual Channel), ATI Radeon HD 4850 512MB, 500GB HDD + Pendrive 4GB; Samsung SyncMaster T220
User avatar
Maxoff
HQTM-Team
Posts: 3434
Joined: 2004-07-06, 18:28
Location: Poland
Contact:

Post by Maxoff »

No to jedziemy dalej...

Jeśli klikniecie na formie (rys) a następnie na przycisku (rys) to zapewne zauważycie, że zmienia się trochę zawartość okienka Object Inspector. Okienko to zawiera wszystkie najważniejsze własności obiektów (czyli formy, przycisku) i pozwala na ich bardzo szybką i wygodną zmianę. Właśnie teraz z tego skorzystamy. Zaznaczymy przycisk i zmienimy jego opis (pole Caption) na 1, oraz nazwę (Name) na btnNum1 (nazwy ogólnie mogą być dowolne, ale jestem zwolenikiem systemu prefixowego, w którym dodaje się na początku znacznik typu obiektu, btn - Button, edt - Edit). Po naszym zabiegu powinno to wyglądać tak. Można także zmienić wielkość przycisku (po prostu najeżdzamy myszką na krwędź przycisku i zmiejszamy, tak samo jak okna). Chętni mogą zmienić nazwę okna na np MainForm oraz opis okna (Caption) na np. Mój kalkulator.

W ramach praktyki przygotujcie sobie taki interfejs. Pole tekstowe to Edit (jest na zakładce standard), tylko że zamiast Caption ma on własność Text (trzeba o tym pamiętać).

Gdy interfejs będzie gotowy, to dajcie znać... i pokażcie screeny.

Wracając do Helpa. Jeśli jesteśmy w Object Inspektorze na jakimś polu i nie wiemy, co ono oznacza, to wystarczy, że klikniemy F1 a wyświetli mam się help z informacją o danej własności. W programowanie, szczególnie w Borlandzie, Help to podstawa. Jest tam bardzo dużo wiadmości i przykładów. Można znaleźć tak wszystko, a F1 można używać w dowolnej sytuacji. Np mając zaznaczony komponent na panelu komponentów, można wywołać jego opis klikając właśnie F1 !!
Last edited by Maxoff on 2005-03-02, 21:28, edited 1 time in total.
... You only have to know how to prepare query, google will do the rest ...
... My software ...
... Guide to Punctuation ...
Gdynianek
HQTM-Team
Posts: 1834
Joined: 2004-07-21, 17:33
Location: Kraina Szczê¶cia
Contact:

Post by Gdynianek »

Ja nie moge zrobic tego z witaj :|
Why am I fighting to live, if I'm just living to fight..
User avatar
Luigi
Moderator
Posts: 475
Joined: 2004-07-15, 19:11
Location: z mm.li.pl
Contact:

Post by Luigi »

"Nie mogę zrobić" to trochę za ogólne pojęcie :)
Nie jesteśmy wróżkami niestety ;-)
Napisz z czym konkretnie masz problem -> btw. Maxoff napisał to na prawdę bardzoooo przystępnie (moje szczere gratulację).
User avatar
Maxoff
HQTM-Team
Posts: 3434
Joined: 2004-07-06, 18:28
Location: Poland
Contact:

Post by Maxoff »

Jachu -> co dokładnie nie działa ?? Może coś niedokładnie opisałem. Masz przycisk ?? Wygenerowałeś zdarzenie ?? Jeśli nie wiesz co się dzieje, to umieść screeny.
... You only have to know how to prepare query, google will do the rest ...
... My software ...
... Guide to Punctuation ...
Gdynianek
HQTM-Team
Posts: 1834
Joined: 2004-07-21, 17:33
Location: Kraina Szczê¶cia
Contact:

Post by Gdynianek »

Wrzucam kod, naciskam f9 i wyskakuje error in module unit 1 declaration of class tform1 is missing incorrect :|
Why am I fighting to live, if I'm just living to fight..
User avatar
Maxoff
HQTM-Team
Posts: 3434
Joined: 2004-07-06, 18:28
Location: Poland
Contact:

Post by Maxoff »

Wklej zawartość okna z kodem (w znacznikach [ code ]) to wspólnie go przeanalizujemy. Tak będzie najwygodniej.
... You only have to know how to prepare query, google will do the rest ...
... My software ...
... Guide to Punctuation ...
Gdynianek
HQTM-Team
Posts: 1834
Joined: 2004-07-21, 17:33
Location: Kraina Szczê¶cia
Contact:

Post by Gdynianek »

Code: Select all

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Witaj!');
end;

end.
Why am I fighting to live, if I'm just living to fight..
User avatar
Luigi
Moderator
Posts: 475
Joined: 2004-07-15, 19:11
Location: z mm.li.pl
Contact:

Post by Luigi »

Zapisałeś sobie cały program gdzieś ?
Post Reply