2008-10-01 Dokumentacja do programowania przy użyciu serii Q-Line 3000 QBS >> Elementy standardowe Q-Line 3000 >> Podręcznik QL-QCON

Podręcznik do języka projektowania QL-QCON

Strona ta przeznaczona jest dla programujących przy użyciu serii Q-Line 3000. Zamieszczamy na niej opis obiektów definiowanych w plikach konfiguracyjnych *.qcon.


1. Wstęp

Projektanci Q-Line 3000 stanęli przed problemem potrzeby szybkiego i efektywnego sposobu konstruowania baz danych. Tworzenie za każdym razem od początku do końca całego programu zupełnie mija się z celem, ponieważ klienci "nie lubią czekać na produkt". Wolą, by program był już gotowy i by, w miarę potrzeb, można było dokonać szybko zmian.

Dlatego powstał system, dzięki któremu możliwe jest tworzenie programów wykorzystując gotowe elementy standardowe takie jak np. moduły i klocki ("klocki" to wewnętrzne pojęcie naszej firmy - takie mniejsze moduły).

Programista wykorzystując gotowe elementy standardowe jest w stanie szybko stworzyć produkt odpowiadający klientowi. Do konfigurowania programów opracowaliśmy QCONL - język konstruowania programów.
Podstawą konstrukcyjna każdego programu serii 3000 są pliki konfiguracyjne *.qcon. Podstawę *.qcon'ów stanowią obiekty opisane poniżej. Dzięki całkowitej parametryzacji w wielu przypadkach programistom udaje się bez zbędnego głebokiego wnikania zaimplementować określone rzeczy. Na przykład do każdej tabeli w programie można podłączyć moduł wydruków etykietowych QM-Labels samego podłączenia dokonuje się poprzez wpisanie słowa kluczowego "LABELSARRANGER" w odpowiedniej rubryce.

Definiowane obiekty w plikach konfiguracyjnych mają swoje określone znaczenie w programie np. menu, okno przeglądu danych, czy też okno edycji rekordów. Obiekty te są ściśle opisane poprzez szereg parametrów i atrybutów.

2. Słowa kluczowe-rodzaje obiektów w pliku konfiguracyjnym *.qcon

W serii Q-Line 3000 występuje kilkanaście słów kluczowych, za pomocą których definiuje się obiekty. Obiekty to elementy standardowe, z których buduje się program.

Lista słów:


3. Struktura definiowanych obiektów

Spośród wielu możliwych struktur projektanci Q-Line 3000 wybrali strukturę nazwaną przez nich ListoMacierz. Struktura taka posiada m.in. zalety:

Dzięki tak prostej strukturze możliwe jest stworzenie dowolnego obiektu programu w szybki sposób. Poniżej przedstawiamy ListoMacierz w postaci ogólnej:

*Słowo kluczowe* < ident >
Ident linii_1 = Wartość linii_1
Ident linii_2 = Wartość linii_2
Ident linii... = Wartość linii...
Ident linii... = Wartość linii...
Ident linii... = Wartość linii...
Ident linii_k = Wartość linii_k
{
Ident kolumny_1 Ident kolumny_2 ... ... Ident kolumny_m ;
1 Wartość kolumny_11 Wartość kolumny_12 ... ... Wartość kolumny_1m ;
2 Wartość kolumny_21 Wartość kolumny_22 ... ... Wartość kolumny_2m ;
... Wartość kolumny_...1 Wartość kolumny_...2 ... ... Wartość kolumny_...m ;
... Wartość kolumny_...1 Wartość kolumny_...2 ... ... Wartość kolumny_...m ;
n Wartość kolumny_n1 Wartość kolumny_n2 ... ... Wartość kolumny_nm ;
}

< ident > stanowi identyfikator tekstowy - nazwę danego obiektu. Pierwsza tabela stanowi opis macierzowy parametrów danego obiektu. Każdy wiersz to oddzielny parametr wraz z przypisaniem wartości. I tak mamy :

Ident linii_1 = Wartość linii_1

gdzie Ident linii_1 jest identyfikatorem tekstowym(nazwą) parametru, a np.Wartość linii_1 jest wartością na przecięciu pierwszego wiersza i kolumny. Może być zarówno w postaci tekstu, liczb całkowitych lub też szeregu liczb. Takich parametrów możemy wpisać dowolną ilość - k, w zależności od potrzeb. Tę swobodę zapewnia nam interpreter struktury plików konfiguracyjnych. Przykład :

TITLE = "Dane osoby wprowadzanej do książki adresowej"
BASE = ADRESY
BASETYPE = SEP
POS = 50 50
SIZE = 120 100
BROWSER_ACTIONS = +FULL_SET +F10MENU
RECEDIT = ADRESY_EDIT

Wyjaśnienie : Okno BROWSER'a będzie miało tytuł "Dane adresowe". Dane są przechowywane w pliku ADRESY, na serwerze SEP. Okno wyświetlone zostanie w pozycji X=50 Y=50 i będzie miało rozmiar X=120 Y=100. ADRESY_EDIT jest obiektem typu EDIREC. BROWSER_ACTIONS stanowi spis dostępnych w BROWSER'ze akcji, jakie możemy wykonać na danych, itp. .

Dalszą część stanowi ciało obiektu, które jest umieszczone między nawiasami klamrowymi {}. Podobnie jak w przypadku parametrów mamy tu opis macierzowy, jednak o wiele bardziej rozbudowany. Taka macierz może mieć wiele kolumn - m i może zawierać wiele wierszy - n. Nazwa każdej kolumny - Ident kolumny stanowi oddzielny atrybut. Atrybut może przyjmować wiele wartości lub tylko pojedyńczą Wartość kolumny. Przykład :

ID NAME VIS ;
IDENT "Id" HIDE ;
IMIE "Imię" SHOW ;
NAZWISKO "Nazwisko" SHOW ;
ULICA "Ulica" SHOW ;
MIASTO "Miasto" SHOW ;
KOD_POCZTOWY "Kod pocztowy" SHOW ;

Wartością parametrów i atrybutów mogą być także inne obiekty zdefiniowane w pliku konfiguracyjnym, tak jak w przykładzie parametr RECEDIT ma wartość TABELA_EDIT - obiekt TAB będący obiektem potomnym obiektu TABELA poszerzonym o edycję danych. Budowanie obiektów opiera się na zasadzie rozbudowywania. Rozpoczyna się od obiektu bazowego i poprzez rozszerzanie(dziedziczenie) buduje się nowe obiekty, dodając odpowiednie elementy i parametry.

2.1. Opis dodatkowych możliwości struktury definiowania obiektów

W momencie kiedy tworzymy określony obiekt musimy się zastanowić, które atrybuty występują we wszystkich wierszach. Jeśli w takim przypadku wybierzemy n atrybutów dla m wierszy, powstaje macierz n x m. Jednak interpreter struktury plików konfiguracyjnych umożliwia dodanie atrybutów do określonego wiersza, mimo iż nie występują w pozostałych. Daje nam to możliwość wstawiania dowolnej liczby atrybutów dla danego wiersza. I tak :

ID NAME ;
IDENT "Id" VIS=HIDE ;
IMIE "Imię" ;
NAZWISKO "Nazwisko" ;
ULICA "Ulica" ATTRIB=(CAPITAL) ;
MIASTO "Miasto" ;
KOD_POCZTOWY "Kod pocztowy" ;

mamy macierz 6x2 z kolumnami ID i NAME, dodatkowo dla ID=IDENT mamy atrybut VIS=HIDE, a dla ID=ULICA mamy ATTRIB=(CAPITAL) - nawiasy oznaczają, że możemy wprowadzić więcej niż jedną wartość. W całości obiekt typu TAB może być zdefiniowany jak niżej:

TAB TABELA
TITLE = "Dane osoby wprowadzanej do książki adresowej"
BASE = ADRESY
BASETYPE = SEP
POS = 50 50
SIZE = 120 100
BROWSER_ACTIONS = +FULL_SET +F10MENU
RECEDIT = ADRESY_EDIT










{
ID NAME ;
IDENT "Id" VIS=HIDE ;
IMIE "Imię" ;
NAZWISKO "Nazwisko" ;
ULICA "Ulica" ATTRIB=(CAPITAL) ;
MIASTO "Miasto" ;
KOD_POCZTOWY "Kod pocztowy" ;











}

4. Dokładny opis parametrów obiektów MENU

Lista parametrów obiektu MENU : TITLE POS

TITLE - nazwa wyświetlana w nagłówku menu

POS - pozycja na ekranie wyświetlanego menu, przykład : POS=50 50
Lista atrybutów obiektu MENU : ID SHORTCUT NAME HELP ACTION

ID - identyfikator tekstowy menu

SHORTCUT - skrót klawiszowy np. A,D,h itp

NAME - nazwa pozycji wyświetlana w menu

HELP - wyświetla określony tekst po najechaniu myszką na daną pozycję menu

ACTION - słyży do podczepienia akcji pod daną pozycję menu.Dostępne akcje:
  • MENU - otwiera inne menu
  • BROWSER - otwiera BROWSER
  • LABELS_ARRANGER - otwiera LABELS ARRANGER
  • RECEDIT - okno edycji rekordu
  • LINE - wstawia linię
  • INSERT - powoduje wstawianie danych
  • ICON - ustawia ikonę wyświetlaną przy pozycji menu
  • PRINT -
  • EMAIL_SENDER - uruchamia moduł wysyłania emaili
  • THTML - otwiera dokument THTML
  • QTENBERG - otwiera moduł QTENBERG

PRZYKŁAD:

I KOD W PLIKU *.qcon:

MENU MainMenu
    TITLE="To jest główne menu programu"
    POS=75 20
{
    ID          ACTION                          NAME                    ;   
    POZYCJA_1   MENU Menu_1                     "Pozycja pierwsza"      ;
    POZYCJA_2   BROWSER TABELA_BROW1;           "Pozycja druga"         ;
    LINIA       LINE                            "Linia"                 ;
    POZYCJA_3   RECEDIT TAB=TABELA_EDIT;        "Pozycja trzecia"       ;
}

MENU Menu_1
    TITLE="To jest rozwijane menu"
{
    ID     ACTION                  SHORTCUT    NAME;
    POZ1   BROWSER TABELA_BROW1;   W           "Pozycja pierwsza menu rozwijanego";
    POZ2   BROWSER TABELA_BROW2;   E           "Pozycja druga menu rozwijanego"   ;
    POZ3   BROWSER TABELA_BROW3;   R           "Pozycja trzecia menu rozwijanego" 
                                                HELP="To jest pomoc wyświetlana po 
                                                najechaniu myszką"                ;
}

Tabele TABELA_BROW1,TABELA_BROW2,TABELA_BROW3,TABELA_EDIT są przykładowe, ich definicje są nie istotne w tym przykładzie.

5. Dokładny opis parametrów obiektów TAB

Lista parametrów obiektu TAB tabeli bazowej: BASE BASETYPE ORDERS

BASE - przypisuje się wartość w postaci tekstowej, jest to nazwa na serwerze, poprzez którą odwołujemy się do tabeli. BASE musi koniecznie posiadać wartość dla tabel bazowych, nie ma wartości domyślnej.

BASETYPE - określa czy dana tabela jest tabelą bazową. Może przyjmować tylko określone wartości:
  • DEFAULT - oznacza, że tabela jest tworzona na domyślnym serwerze, dane w pliku qline.txt
  • SEP - tabela tworzona na serwerze SEP
  • MEMORY - tabela istnieje tylko w pamięci
  • LOCAL - tabela tworzona lokalnie
  • POSTGRES - tabela tworzona na serwerze PostgresSQL

ORDERS - określa uporządkowanie na tabeli, format jak w ciele tabeli, mamy następujące kolumny:
  • ID - identyfikator tekstowy uporządkowania(nazwy inne niż w ciele tabeli)
  • FIELDS - lista identyfikatorów wierszy z tabeli wg. których następuje uporządkowanie
  • LABEL - nazwa uporządkowania
  • VIS - czy widoczny, wartości SHOW(tak) lub HIDE(nie), domyślnie SHOW
  • UNIQUE - ustawia czy klucz dany w atrybucie FIELDS ma być kluczem unikalnym, wartości YES i NO


Nazwy kolumn tabeli bazowej(atrybuty): ID LEN TYPE

ID - identyfikator tekstowy wiersza w ciele tabeli

LEN - liczba bajtów do przechowywania wartości danego pola, dla typów INT i DOUBLE ma być 8

TYPE - typ wartości, mamy 3 typy:
  • STRING - pole typu znakowego
  • INT - pole typu liczba całkowita
  • DOUBLE - pole typu zmiennoprzecinkowego


Tabela bazowa sama w sobie nie stanowi obiektu wizualnego, ale w rozszerzeniu jako BROWSER tak. W praktyce nie stosuje się samych tabel bazowych. Najczęściej tabela bazowa jest już uzupełniona o atrybuty BROWSER'a czy też EDIREC'a, a tabele BROWSER'a i EDIREC'a są tworzone przez dziedziczenie i dodanie BROWSER_ACTIONS dla BROWSER'a i LAYOUT dla EDIREC'a. Poniższy przykład pokazuje nam połączenie tabeli bazowej, BROWSER'a i EDIREC'a. Natomiast w punkcie 5.1 i 5.2 są opisane parametry i atrybuty obiektów BROWSER i EDIREC.

Przykład BROWSER'a:


Przykład EDIREC'a:



W kodzie wygląda to następująco :

TAB TABELA
TITLE="Przeglądanie danych osobowych"
BASE=TABELA
BASETYPE=SEP
POS=50 50
ORDERS=
{
    ID          FIELDS            LABEL                         VIS  ;    
    NAZW        (NAZWISKO)        "Porządkowanie po nazwisku"   SHOW ;  
}
{
    ID          TYPE        LEN     NAME                ;
    ID  		INT         8	    "Id"                VIS=HIDE;
    DATA_WPR    INT         8       "Data wprowadzenia" MASK=DATE AUTFUN=curr_date();
    IMIE 		STRING	    20	    "Imię"              ATTRIB=(FCAPITAL);
    NAZWISKO    STRING      40      "Nazwisko"          ATTRIB=(FCAPITAL);
    DATA_UR     INT         8       "Data urodzin"      MASK=DATE;
    ULICA       STRING      40      "Ulica"             ATTRIB=(FCAPITAL);
    KOD         STRING      6       "Kod pocztowy"      MASK=MASK("00\\-000");
    MIASTO      STRING      20      "Miasto"            ATTRIB=(CAPITAL);
    TELEFON     STRING      15      "Telefon"           ;
    EMAIL       STRING      30      "Adres email"       ;
    PRACA       INT         3       "Czy pracuje?"      MASK=LLIST("TAK" "NIE");     
    OPIS        STRING      60      "Opis osoby"        ;
}
TAB TABELA_BROW extends TABELA;
BROWSER_ACTIONS=+FULL_SET +F10MENU
RECEDIT=TABELA_EDIT
{;}

TAB TABELA_EDIT extends TABELA;
TITLE="Edycja danych osobowych"
LAYOUT=HPAN(GRP("Data wprowadzenia danych" TCP(DATA_WPR)) 
            GRP("Imię i Nazwisko" TCP(IMIE NAZWISKO) )
            GRP("Adres i kontakt" TCP(ULICA KOD MIASTO TELEFON EMAIL) )
            GRP("Inne dane" TCP(DATA_UR PRACA OPIS) ) )
{;}

5.1. Przeglądanie danych jako rozszerzenie tabeli bazowej - BROWSER


Parametry obiektu TAB jako BROWSER'a:
TITLE POS SIZE RECEDIT BAROFF BROWSER_ACTIONS FIELDORDER LINE_ATTRIB ORDERSBAR

TITLE - jest to nazwa wyświetlana na głównym pasku BROWSER'a.

POS - pozycja wyświetlenia BROWSER'a liczona w procentach, wartość 50 50 jest wartością domyślną i powoduje wyświetlenie okna na środku ekrany, przykład: POS = 75 30

SIZE - rozmiar wyświetlanego BROWSER'a w znakach dla X i w liniach dla Y, przykład: SIZE=100 25

RECEDIT - określa jaki obiekt będzie używany do edycji rekordów, przykład: RECEDIT=TABELA_EDIT, gdzie TABELA_EDIT jest edycją rekordów

BAROFF - wyłączanie paska narzędziowego, wartości TRUE i FALSE, domyślnie FALSE

BROWSER_ACTIONS - określa nam jakie akcje są dostępne na pasku narzędziowym.Wartość tego parametru definiujemy jako listę wartości odpowiednio dodając znak "+" przed wartością gdy chcemy dodać akcję lub znak "-" zabierając ją. Lista dostępnych akcji:
  • VIEW - przeglądanie rekordu : ENTER
  • CHANGE - zmiana uporządkowania : F3
  • SEARCH - wyszukiwanie : F6
  • FILTER - filtrowanie : f/F
  • F2MENU - menu pod F2 : F2
  • LINEPRINT - wydruk wierszowy : F8
  • INSERT - dodanie rekordu : INS
  • MODIFY - modyfikacja rekordu : m
  • DELETE - usuwanie rekordu : DEL
  • F10MENU - operacje na zaznaczonych pozycjach : F10
  • COUNT - zliczanie pozycji : F7
  • SELMODE - wyświetlenie tylko zaznaczonych : F4
  • ALLMODE - wyświetlenie wszystkich : F5
  • INVERTALL - odwrócenie zaznaczonych : *
  • SELALL - zaznaczenie wszystkich : +
  • UNSELALL - odznaczanie wszystkich : -
  • SELECT - zaznaczenie bieżącej pozycji : SPACE
  • SELUP - zaznaczenie wszystkich pozycji powyżej bieżącej : u
  • SELDOWN - zaznaczenie wszystkich pozycji poniżej bieżącej : d
  • UNSELUP - odznaczenie wszystkich pozycji powyżej bieżącej : U
  • UNSELDOWN - odznaczenie wszystkich pozycji poniżej bieżącej : D
Dodatkowo całe zestawy akcji:
  • FULL_SET - ( wszystko poza F10 ) - VIEW SEARCH CHANGE FILTER F2MENU LINEPRINT INSERT MODIFY DELETE COUNT SELMODE ALLMODE INVERTALL SELALL UNSELALL SELECT SELUP SELDOWN UNSELUP UNSELDOWN
  • READ_SET - ( tylko odczyt ) - VIEW SEARCH CHANGE F2MENU LINEPRINT COUNT
  • MODIFY_SET - ( modyfikacja ) - INSERT MODIFY DELETE
  • SELECTION_SET - ( zaznaczenia ) - COUNT FILTER SELMODE ALLMODE INVERTALL SELALL UNSELALL SELECT SELUP SELDOWN UNSELUP UNSELDOWN

FIELDORDER - zmiana domyślnej kolejności wyświetlania,przypisuje się wartość ABSOLUTE() wraz z listą identyfikatorów w nawiasie

LINE_ATTRIB - ustawienie atrybutów linii w BROWSER'ze, dostępne wartości:
  • BGCOLOR - kolor tła
  • FONTNAME - nazwa czcionki
  • FONTSIZE - rozmiar czcionki
  • FONTSTYLE - styl czcionki

ORDERSBAR - wyłączenie uporządkowania na pasku narzędzi, wartości TRUE i FALSE, domyślnie FALSE


Kolumny BROWSER'a to te będące atrybutami tabeli bazowej(ID LEN TYPE) i poza tym:
AUTFUN ATTRIB EDILEN LOOK MASK NAME

AUTFUN - służy do wyliczenia dynamicznie kolumny, której nie ma zdefiniowanej w tabeli, jako wartość możemy ustawiać to co zwracają, następujące funkcje:
  • filedata(expr_filename) - odczytuje plik o określonej nazwie
  • money2words(expr_amount) - zamienia kwotę na postać słowną
  • copy(expr_string,long,long) - wycina w ciagu znaków od określonego indeksu określoną liczbę znaków
  • curr_date() - zwraca bieżącą datę
  • curr_time() - zwraca bieżący czas
  • edit_mode() - zwraca status edycji pola : 0 NULL 1 VIEW 2 INSERT 3 MODIFY
  • isNULL() - zwraca czy pole jest Null
  • length(expr_string,expr_long1,expr_long2) - zwraca długość ciągu znaków
  • login_name() - zwraca identyfikator użytkownika
  • login_group_name() - zwraca identyfikator grupy użytkownika
  • sysfield(expr_tabname,expr_fieldname) - zwraca wartość pola fieldname z tabeli tabname
  • trim(expr_string) - wycina białe znaki
  • weekday() - zwraca dzień tygodnia(0-PO,1-WT)
  • internalDate(expr_date) - zamienia datę na string w formacie YYYY.MM.DD
  • min(expr_num1,expr_num2) - zwraca minimum dwóch liczb
  • max(expr_num1,expr_num2) - zwraca maximum dwóch liczb
  • parentVal(expr_fieldId) - zwraca wartość pola głowy
  • color(color) - zwraca kolor
  • parse() - ???
  • zero_number(expr_num,expr_len) - zamienia liczbę na string dopełniony zerami na określonej długości
  • JoinAutFun(tab1,tab2,tab3,...) - zwraca (String-ową) sumę elementów z tabel tab1,tab2,tab3,... (formatowanie można ustalić za pomocą JOINTAB. Domyślnie wszystko jest formatowane "do Lewej")
Dodatkowo atrybut służy do wyliczeń gdzie jako wartość ustawiany jest wynik operacji numerycznej na polach tabeli. Przykład:
Jeśli w tabeli mamy zdefiniowane pola PO1,PO2,PO3,PO4 to może być
AUTFUN=(PO1-PO2)*PO3/PO4

ATTRIB - atrybut ten służy do ustawiania różnego rodzaju właściwości. Dla samego BROWSER'a dostępna jest tylko jedna właściwość:
  • BGCOLOR - służy do ustawiania tła, kolory możemy ustawiać w następujący sposób:
    • RGB(red,green,blue) - podaje się składowe koloru
    • INT(int) - podaje się wartość int zwracaną przez RGB
    • SIMPLE(identifier) - podaje się jeden ze standardowych kolorów
  • JOINTAB - służy to ustalenia formatowania odpowiednio tab1,tab2,... przez funkcję JoinAutFun(tab1,tab2,...). Możliwe opcje:
    • R - do prawej (Right)
    • L - do lewej (Left)
    • C - wycentrowanie (Center)
    Przykład:
    ID;
    NEWTAB LEN=50 TYPE=STRING NAME="WicedTab" AUTFUN=JoinAutFun(TAB1,TAB2,TAB3) ATTRIB=(JOINTAB=RC);

    TAB1 będzie formatowana do prawej, TAB2 będzie centrowa, TAB3 (domyślnie, bo nie podano) będzie formatowana do lewej.

EDILEN - pełni tą samą funkcję co LEN w tabeli bazowej

LOOK - służy do wyciągania danych z innych baz, jako wartość ustawia się makro EVH. Możemy dodać do browsera pola wyciągane w locie z innej bazy. Lookupy są realizowane przez serwer (SEP), w związku z tym narzut czasowy jest mały ale zauważalny. Jeden lookup definijue tylko sposób wypełninia pól (nie zaś kolumny), kolumny trzeba jawnie zadeklarować jako kolumny tabelki BROWSER. Co więcej jeden Lookup może wypełniać kilka kolumn za jednym zamachem. (np wyciągane z innej bazy imię i nazwisko). Takie łączenie jest zalecane efektywnościowo, gdyż serwer wykonuje wtedy jedną operację wyszukania dla kilku pól. Zmniejsza to niestety czytelność tabelki. Dlatego jeżeli nie jest to wymagane, lepiej by każde pole lookup było definiowane oddzielnym makrem lookup zdefiniowanym przy tym właśnie polu.

MASK - Sposób wyświetlania kolumny w browserze jest definiowany przez tą kolumnę, zaś jeżeli tej kolumny brak, to wtedy wartość domyślna brana z kolumny TYPE. Wszystkie wartości numeryczne zostaną wyrównane do prawej strony, pozostałe do lewej. Maski są zdefiniowane tutaj

NAME - nazwa pola w BROWSER'ze

5.2. Okno edycji rekordu jako rozszerzenie tabeli bazowej - EDIREC



Parametry edycji rekordu poza POS TITLE, które są tak jak w tabeli bazowej :
AER_CONDITION AER_WARNING ASCESC BUTTONS COPY2HIST_FIELDS F10LOOKUPS LAYOUT

AER_CONDITION - opisuje warunki zatwierdzenia rekordu, tutaj możemy wymusić wypełnienie pewnych pól lub też zadać warunek na wzajemną zależność pół np A > B Jako wartość podaje się listę : <condition_element> .... <condition_element> gdzie każdy condition_element to jeden z tych :
  • MBF(fieldId,....,fieldId) - (Must Be Filled) - musi być wypełnione, określa pola , które muszą być wypełnione
  • COND(cond) - podany warunek musi być prawdziwy

AER_WARNING - działanie podobne do AER_CONDITION, lecz w przypadku AER_WARNING użytkownik może powrócić do edycji rekordu lub zaakceptować zmiany mimo niespełnienia podanych warunków. Składnia taka sama jak AER_CONDITION.

ASCESC - Ustawiając ten parametr na wartość YES przy każdej próbie porzucenia edycji rekordu (ESC) program się zapyta czy na pewno chcemy wyjść. Jest to szczególnie pożądane dla rekordów z historiami. Domyślna wartość to NO.

BUTTONS - Tu podajemy zawartość paska (belki) z guzikami pojawiającej się na dole pod edycją rekordu. Możemy wprowadzić następujące wartości:
  • DEFAULT - standardowy pasek z przyciskami OK i CANCEL
  • NONE - wyłaczony pasek z guzikami
  • EXPLICITE(buttonid,...,buttonid) - podaje się listę przycisków np. OK, CANCEL lub identyfikator pola, w którym musi być zdefiniowana maska BUTTON z podaną akcją "ButtonFieldAction"

COPY2HIST_FIELDS - Tu możemy określić dla jakich historii wykonywane będzie kopiowanie do historii. Podajemy rodzaj kopiowania a następnie w nawiasach listę pól, do których mamy podpięte historie z kopiowaniem do historii czyli w makrze musi być BROWSER_INS_. Pola które nie są wyszczególnione, a mają takie makra nie będą kopiowane. Kopiowanie do historii wykonane jest po F10 po sprawdzeniu poprawności i po Triggerze. Dla serwerów SQL można to mocno przyśpieszyć. Jako wartość podajemy listę c2h_element,...,c2h_element; gdzie każdy z c2h_element to jeden z poniższych:
  • HARD(fieldId,...,fieldId)- twarde kopiowanie, czyli zawsze
  • SOFT(fieldId,...,fieldId)- miękkie kopiowanie, czyli tylko w puste pola

F10LOOKUPS - służy do liczenia lookup'ów, jeśli ustawimy ten atrybut na TRUE to lookup'y zostaną ponownie policzone po F10. Można dzięki temu wyciągać do głowy jakieś wartości np. z historii.

LAYOUT - Tym parametrem budujemy opis wyglądu karty edycji, podając layout_element, najprostszym ułożeniem jest TCP czyli ułożenie pól jedno pod drugim. Można też składać elementy z innych elementów. Opis wszystkich elementów wraz z przykładami tutaj.

Atrybuty okna edycji rekordu poza MASK EDILEN AUTFUN:
ATTRIB BASEFUN DEFVALUE ENABLED

ATTRIB - ustawia się tu różne atrybuty pola edycji. Dostępne wartości:
  • CAPITAL - wymuszenie wszystkich dużych liter
  • FCAPITAL - wymuszenie tylko pierwszej dużej litery
  • COLOR - kolor czcionki, określany tak jak w ATTRIB
  • FONTNAME - nazwa czcionki
  • FONTSIZE - wielkość czcionki
  • FONTSTYLE - styl czcionki: BOLD - wytłuszczona, PLAIN -zwykła, ITALIC-pochyła
  • SUFFLE - włączenie dopełniaczki słownikowej (tylko dla słów słownikowych)

BASEFUN - Możemy zdefiniować pole które sumuje jakieś wyrażenie przeglądając bazę zewnętrzną oraz jest na bieżąco uaktualniane (również w trakcie dopisywania rekordów). Pola te są bardzo wygodne to obliczania sum jakiegoś pola w historii lub ilości rekordów itp.... Jako wartość sumowaną dla każdego rekordu podajemy wyrażenie UWAGA!!!! Na razie pole to przelicza się za każdym razem jak otwieramy kartę rekordu (docelowo będzie to opcja).Możliwości :
  • SUM(<fieldid>,<expression>) - Sumuje wartość gdzie <fieldid> to identyfikator pola z podpiętym makrem historii, zaś <expression> to wyrażenie typu AutFun liczone dla REKORDU HISTORII i sumowane.
  • COUNT(<fieldid>) - liczy ilość pozycji gdzie <fieldid> to identyfikator pola z podpiętym makrem historii.Jest to samo co SUM(<fieldid>,1), ale ponieważ jest często używane to zostało wydzielone.

DEFVALUE - Dzięki temu pole możemy zdefiniować wartości domyślne, podając czym pole ma się wypełnić, przy dodawaniu nowej pozycji. Ta kolumna może być też użyta do innych celów. Np. możemy wstawić identyfikator użytkownika wporwadzającego pozycję, albo jakąś wartość z par. systemowych... i pewnie jest jeszcze parę innych zastosowań. Jako wartość można wstawiać wyrażenia te same co są w AUTFUN.

ENABLED - Można tu określić warunkiem kiedy pole ma być do edycji, a kiedy nie. Warunek ten możemy uzależnić od wartości innych pól tego samego rekordu, w trakcie edycji włączając i wyłączając pola. Warunek, który podajemy (jeśli jest prawdziwy to pole jest do edycji) jest wyrażeniem typu AutFun, więc zastosowań tego jest dużo. UWAGA!!! Wyrażenia w tej kolumnie przeliczają się na podstawie tzw. parametrów kontrolek. Jeśli chcemy reagować dopiero po wyjściu z pola to przed Autfun'em trzeba podać modyfikator REC_PARAMS. Dlatego można przełączyć wyrażenie w tej kolumnie na parametry rekordu pisząc przed wyrażeniem identyfikator REC_PARAMS. Przydaje się to jeśli chcemy np. uzależnić pole od BASEFUN'a.