<< 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

Zvětšit
Zvětšit
Zvětšit

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

Vyzkoušejte výsledek

RSS