<< Seznam jmen | Cvičení - obsah | Jednoduchý textový editor >>
Zadání
- vytvořte program pro vystavení objednávky na nákup notbooku s funkcemi :
- zadání osobních dat objednavatele
- konfigurace typu, RAM a HDD notebooku
- zadání servisních podmínek a dopravy
- zobrazuje ceny pro vybrané parametry
- průběžně zobrazuje celkovou cenu objednávky
- vygeneruje a zobrazí v novém okně textový soubor objednávky s možností uložení a vytištění
- umožní opakované zadání a ukončení
Příklad grafického řešení programu
Ukázky kódu
unit form; // Okno hlavního formuláře
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Objed;
type
TOknoForm = class(TForm)
PopisekJmeno: TLabel;
PopisekPrijmeni: TLabel;
PopisekAdresa: TLabel;
PopisekParametry: TLabel;
PopisekCeny: TLabel;
PopisekDoprava: TLabel;
PoleJmeno: TEdit;
PolePrijmeni: TEdit;
PoleAdresa: TEdit;
ComboTyp: TComboBox;
ComboRam: TComboBox;
ComboHdd: TComboBox;
RadioOsobni: TRadioButton;
RadioBalik: TRadioButton;
RadioPpl: TRadioButton;
TlacitkoObjednat: TButton;
TlacitkoUkoncit: TButton;
PopisekCenaTyp: TLabel;
PopisekCenaRam: TLabel;
PopisekCenaHdd: TLabel;
PopisekTyp: TLabel;
PopisekRam: TLabel;
PopisekHdd: TLabel;
Panel1: TPanel;
PopisekCenaCelkem: TLabel;
Label1: TLabel;
procedure Cena(Sender: TObject);
procedure ComboTypChange(Sender: TObject);
procedure TlacitkoUkoncitClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboRamChange(Sender: TObject);
procedure ComboHddChange(Sender: TObject);
procedure RadioOsobniClick(Sender: TObject);
procedure RadioBalikClick(Sender: TObject);
procedure RadioPplClick(Sender: TObject);
procedure TlacitkoObjednatClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
OknoForm: TOknoForm;
CelkovaCena, CenaTyp, CenaRam, CenaHdd, CenaCelkem, CenaDopravy : integer;
Jmeno, Prijmeni, Adresa, Doprava, Typ, Hdd, Ram, Tisk : string;
implementation
{$R *.dfm}
// Nastavení formuláře při vytvoření
procedure TOknoForm.FormCreate(Sender: TObject);
begin
ComboTyp.Style:=csDropDownList; // Zlepšené rozbalení seznamů
ComboHdd.Style:=csDropDownList;
ComboRam.Style:=csDropDownList;
ComboTyp.ItemIndex:=0; // Výchozí položka seznamu
ComboRam.ItemIndex:=0;
ComboHdd.ItemIndex:=0;
PopisekCenaTyp.Caption:= '10000 Kč'; // Výchozí ceny do seznamu - string
PopisekCenaRam.Caption:= '1200 Kč';
PopisekCenaHdd.Caption:= '1600 Kč';
PopisekCenaCelkem.Caption:= '12800 Kč';
CenaTyp:=10000; // Výchozí ceny do proměnné - integer
CenaRam:=1200;
CenaHdd:=1600;
CenaDopravy:=0;
CenaCelkem:=12800;
end;
// Vlastní procedura pro přepočet celkové ceny při změně parametru
// nutno deklarovat jako type : procedure Cena(Sender: TObject);
// zde to ušetří jen asi 10 řádků programu
procedure TOknoForm.Cena(Sender: TObject);
begin
CenaCelkem := (CenaTyp+CenaRam+CenaHdd+CenaDopravy); // vložení do proměnné
PopisekCenaCelkem.Caption:=IntToStr(CenaCelkem)+' Kč';// vložení do popisku
end;
// Volba TYP
procedure TOknoForm.ComboTypChange(Sender: TObject);
begin
if ComboTyp.ItemIndex = 0 then CenaTyp:=10000;
if ComboTyp.ItemIndex = 1 then CenaTyp:=12000;
if ComboTyp.ItemIndex = 2 then CenaTyp:=14500;
if ComboTyp.ItemIndex = 3 then CenaTyp:=17200;
PopisekCenaTyp.Caption:=IntToStr(CenaTyp)+' Kč';
Cena(PopisekCenaCelkem);
end;
//Volba RAM
procedure TOknoForm.ComboRamChange(Sender: TObject);
begin
if ComboRam.ItemIndex = 0 then CenaRam:=1200;
if ComboRam.ItemIndex = 1 then CenaRam:=2000;
if ComboRam.ItemIndex = 2 then CenaRam:=2600;
if ComboRam.ItemIndex = 3 then CenaRam:=3400;
PopisekCenaRam.Caption:=IntToStr(CenaRam)+' Kč';
Cena(PopisekCenaCelkem);
end;
// Volba HDD
procedure TOknoForm.ComboHddChange(Sender: TObject);
begin
if ComboHdd.ItemIndex = 0 then CenaHdd:=1600;
if ComboHdd.ItemIndex = 1 then CenaHdd:=2500;
if ComboHdd.ItemIndex = 2 then CenaHdd:=3200;
if ComboHdd.ItemIndex = 3 then CenaHdd:=4000;
PopisekCenaHdd.Caption:=IntToStr(CenaHdd)+' Kč';
Cena(PopisekCenaCelkem);
end;
// Nastavení a otevření okna objednávky
procedure TOknoForm.TlacitkoObjednatClick(Sender: TObject);
var
OknoObjed : TOknoObjed;
begin
Typ:=ComboTyp.Items.Strings[ComboTyp.ItemIndex]; // Vybrané parametry do proměnných
Ram:=ComboRam.Items.Strings[ComboRam.ItemIndex];
Hdd:=ComboHdd.Items.Strings[ComboHdd.ItemIndex];
Jmeno:=PoleJmeno.Text;
Prijmeni:=PolePrijmeni.Text;
Adresa:=PoleAdresa.Text;
if (Jmeno='') or (Prijmeni='') or (Adresa='') then // Kontrola vyplnění
begin
application.Title:='Objednávka notebooku';
ShowMessage('Chybí některé důležité údaje!')
end
else
begin
OknoObjed:= TOknoObjed.Create(Self); // Vytvoření a zobrazení okna objednávky
OknoObjed.Show;
end;
end;
// Doprava
procedure TOknoForm.RadioBalikClick(Sender: TObject);
begin
CenaDopravy:=100;
Doprava:='Poštovní balík';
Cena(PopisekCenaCelkem);
end;
procedure TOknoForm.RadioOsobniClick(Sender: TObject);
begin
CenaDopravy:=0;
Doprava:='Osobní odběr';
Cena(PopisekCenaCelkem);
end;
procedure TOknoForm.RadioPplClick(Sender: TObject);
begin
CenaDopravy:=150;
Doprava:='Služba PPL';
Cena(PopisekCenaCelkem);
end;
// Konec
procedure TOknoForm.TlacitkoUkoncitClick(Sender: TObject);
begin
close;
end;
end.
Odevzdání
- pokud student neodevzdá na cvičení - zasílá výsledek mailem takto :
- předmět mailu : Třída_Příjmení_Objednavka
- příloha mailu : Objednavka.RAR ( komprimovaná složka se soubory projektu )
- adresa mailu : Ucitel@spsnome.cz
- termín odevzdání - 29.9.2010



