| 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 |
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)
//---------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
// 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
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
// 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.