QBS >> Q-Line 3000 Szybki Start >> Wydruki Chcę zapytać

Tworzenie programu

Czas ćwiczenia:
 45 min
Cel:
  Stworzenie programu Q-Godzinka 3000
Kroki:
  Pobranie źródeł
  Tworzenie potrzebnych tabel
  Zapoznanie z makrami

Pierwsze kroki przy tworzeniu programu

Pierwszym krokiem, który należy wykonać przy tworzeniu nowego programu to zaopatrzenie się w źródła. Do tego celu posłuży nam program Q-Szkielet 3000. Jego wersja instalacyjna powinna znajdować się na dysku (jeżelli nie mamy tej wersji opis jak ją uzyskać i zainstalować znajduje się w pierwszym rozdziale ćwiczeń punkt A.1)

Gdy program mamy już na dysku proszę zmienić jego nazwę na Q-Godzinka 3000 przy okazji możemy ustawić także nazwy pilków kopii bezpieczeństwa (opis wykonania tego zadania można znaleźć w ćwiczeniach w punkcie B.1)

Tabele w programie

Gdy mamy ustawione podstawowe parametry naszego programu, możemy zająć się dodawaniem potrzebnych tabel do programu. Dokładniejczy opis w jaki sposób należy wykonać te zadanie można znaleźć w ćwiczeniach w punkcie A.4-7. W pliku struct.qcon należy wykasować (oprócz wywołania menu) całą zawartość i wpisać poniższe wywołania tabel
  1. SYSED_MOJE_DANE - standardowa tabela przechowująca dane o użytkowniku programu

    //---------------------------------------------------------------------------
    // POCZĄTEK:  Tabela SYSED_MOJE_DANE
    //---------------------------------------------------------------------------
    TAB SYSED_MOJE_DANE
        TITLE="Moje dane"
        LAYOUT= HPAN(
                     GRP("Dane osobiste" TCP(NAZWA ULICA PNA MIASTO NIP))
                     GRP("Logo użytkownika" VPAN(TCP(FILENAME) TCP(LOGO)))
                    )
    {
    ID            LEN     TYPE      ATTRIB      NAME     ;
    ID            8       INT       -           "Id"          VIS=HIDE   ;
    NAZWA        30       STRING    (FCAPITAL)  "Nazwa"  ;
    ULICA        30       STRING    (FCAPITAL)  "Ulica"  ;
    PNA           6       STRING    -           "Kod pocztowy" MASK=MASK("00\\-000");
    MIASTO       30       STRING    (CAPITAL)   "Miejscowość"  ;
    NIP          13       STRING    (CAPITAL)   "NIP"   MASK=MASK("000\\-000\\-00\\-00");
    LOGO          8       INT           -       "  " MASK=IMAGE RESIZABLE(11 5) AUTFUN=filedata(FILENAME);
    FILENAME      60      STRING        -       "Nazwa pliku"    
                                                MASK=FILE (APIC="Pliki graficzne (*.jpg; *.gif; *.png;)"
                                                           BALL="Wszystkie pliki (*.*;)")
                                                EDILEN=15
                                                ANCHOR="imageName";
    }
    //---------------------------------------------------------------------------
    // KONIEC:  Tabela SYSED_MOJE_DANE
    //---------------------------------------------------------------------------
    

  2. GODZINKI - tabela główna przechowująca wpisane godziny

    //---------------------------------------------------------------------------
    // POCZĄTEK:  Tabela GODZINKI
    //---------------------------------------------------------------------------
    
    TAB GODZINKI
            TITLE="Spis przepracowanych godzin"
            BASE=GODZINKI
            BASETYPE=SEP
            SIZE=120 25
            BROWSER_ACTIONS=+FULL_SET +F10MENU
            RECEDIT=GODZINKI_EDIT
        	ORDERS=
            {
            ID          FIELDS          LABEL      VIS ;
            ID          ( ID )          "Id"       HIDE;
            }
    {
    ID            LEN     TYPE     NAME            ;
    ID            8       INT      "Id"            VIS=HIDE;
    LINK          8       INT      -               VIS=HIDE;
    DATA          8       INT      "Data"          MASK=DATE;
    MIES_SPR      8       INT      -              ;
    MIES          15      STRING   "Miesiąc"       VIS=SHOW;
    OD            8       INT      "Od godziny"    MASK=TIME;
    DO            8       INT      "Do godziny"    MASK=TIME;
    OPIS          50      STRING   "Zadanie"       ATTRIB=(SUFFLE);
    SUMA          8       INT      "Liczba godzin" MASK=TIME;
    DLA_KOGO      8       STRING   "Dla kogo"      ATTRIB=(SUFFLE);
    }
    //---------------------------------------------------------------------------
    // KONIEC:  Tabela GODZINKI
    //---------------------------------------------------------------------------
    
    //---------------------------------------------------------------------------
    // POCZĄTEK:  Tabela GODZINKI_EDIT
    //---------------------------------------------------------------------------
    
    TAB GODZINKI_EDIT  extends GODZINKI;
    
        TITLE="Edycja przepracowanych godzin"
        LAYOUT = TCP(DATA MIES OD DO OPIS DLA_KOGO SUMA)
    {;}
    
    TAB GODZINKI_BRO extends GODZINKI;
            BROWSER_ACTIONS=+FULL_SET +F10MENU
            RECEDIT = GODZINKI_EDIT
    {;}
    //---------------------------------------------------------------------------
    // KONIEC:  Tabela GODZINKI_EDIT
    //---------------------------------------------------------------------------
    

  3. MIESIACE - tabela miesięcy

    //---------------------------------------------------------------------------
    // POCZĄTEK:  Tabela MIESIACE
    //---------------------------------------------------------------------------
    
    TAB MIESIACE
        TITLE="Miesiące"
        BASE=MIESIACE
        BASETYPE=DEFAULT
        RECEDIT=MIECHY_EDIT
        BROWSER_ACTIONS=+MODIFY_SET+VIEW+SELECTION_SET
        ORDERS=
        {
         ID          FIELDS            LABEL              ;
         ID          ( ID )            "Id"         VIS=HIDE UNIQUE=YES;
        }
    {
    ID      LEN     TYPE     NAME   ;
    ID      8       INT      ""     VIS=HIDE;
    MIES_O  15      STRING   "Miesiące";
    }
    
    TAB MIESIACE_EDIT extends MIESIACE;
        TITLE="Edycja miesięcy"
        LAYOUT = TCP(MIES_O)
    {;}
    
    //---------------------------------------------------------------------------
    // KONIEC:  Tabela MIESIACE
    //---------------------------------------------------------------------------
    

  4. DLA_KOGO - tabela przechowująca naszych zleceniodawców

    //---------------------------------------------------------------------------
    // POCZĄTEK:  DLA KOGO
    //---------------------------------------------------------------------------
    TAB DLA_KOGO
        TITLE="Opis zleceniodawcy"
        BASE=DLA_KOGO
        BASETYPE=DEFAULT
        RECEDIT=DLA_KOGO_EDIT
        BROWSER_ACTIONS=+MODIFY_SET+VIEW+SELECTION_SET-FILTER
        POS=40 10
        SIZE=36 10
        ORDERS=
        {
         ID          FIELDS            LABEL              ;
         ID          ( ID )             "Id"  VIS=HIDE UNIQUE=YES;
        }
    {
    ID            LEN     TYPE           NAME               ;
    ID            8       INT            "Id"    VIS=HIDE   ;
    KOD_OS        3       STRING         "Kod zlecającego"  ATTRIB=(CAPITAL);
    OPIS_OS       50      STRING         "Opis zlecającego" ;
    }
    
    TAB DLA_KOGO_EDIT extends DLA_KOGO;
        TITLE="Nowy zleceniodawca"
        LAYOUT= TCP( KOD_OS OPIS_OS )
    {;}
    //---------------------------------------------------------------------------
    // KONIEC:  DLA KOGO
    //---------------------------------------------------------------------------
    

  5. OPISY - tabela z opisami wykonywanych zadań

    //---------------------------------------------------------------------------
    // POCZĄTEK:  OPISY
    //---------------------------------------------------------------------------
    TAB OPISY
        TITLE="Opisy wykonanych zadań"
        BASE=OPISY
        BASETYPE=DEFAULT
        RECEDIT=OPISY_EDIT
        BROWSER_ACTIONS=+MODIFY_SET+VIEW+SELECTION_SET-FILTER
        POS=40 10
        SIZE=36 10
        ORDERS=
        {
         ID          FIELDS            LABEL              ;
         ID          ( ID )            "Id"  VIS=HIDE UNIQUE=YES;
        }
    {
    ID            LEN     TYPE           NAME             ;
    ID            8       INT            "Id"    VIS=HIDE ;
    OPIS_Z        50      STRING         "Opis zadania"   ;
    }
    
    TAB OPISY_EDIT extends OPISY;
        TITLE="Nowe zadania"
        LAYOUT= TCP( OPIS_Z )
    {;}
    //---------------------------------------------------------------------------
    // KONIEC:  OPISY
    //---------------------------------------------------------------------------
    

Menu programu

Po zadeklarowaniu tabel proszę uzupełnić wywołanie menu o wpis zaznaczony na czerwono. Uzyskamy możliwość wpisywania własnych danych oraz wprowadzania i przeglądania przepracowanych godzin.

//---------------------------------------------------------------------------
// POCZĄTEK:  MainMenu
//---------------------------------------------------------------------------

MENU MainMenu

    TITLE="Menu główne"
    POS=75 20

{
ID        ACTION                          NAME                    ;
GODZ      BROWSER GODZINKI_BRO;           "Przeglądanie godzin"   ;
MYDATA    RECEDIT  TAB=SYSED_MOJE_DANE;   "Moje dane"             ;
PODR      MENU PodrMenu                   "Komplet podręczników"  ;        
FunSys    MENU SysMenu                    "Operacje systemowe"    ;   
}
//---------------------------------------------------------------------------
// KONIEC:  MainMenu
//---------------------------------------------------------------------------

Próba uruchomienia programu zakończy się niepowodzeniem dokładny opis co należy wykonać w tym przypadku znajduje się w ćwiczeniach w punkcie A.5

Przy takiej konfiguracji nasz program nie wygląda zbyt okazaje. Nic się nie wylicza i nie sumuje a o zawężaniu nie ma mowy. Przejdzmy zatem do kolejnego etapu ćwiczeń gdzie pokażemy jak ustawić te wszystkie opcje.

Powrót