recipe

Funkce

Přístroj recipe (receptura) je jednoduchý editor záznamů standardního databázového souboru ve formátu dBase III Plus. Umožňuje záznamy v databázi editovat, přidávat, vkládat i mazat. Obsah každé položky záznamu může být zapsán na přiřazený datový element nebo je možné položku naplnit vyčíslením nadefinovaného výrazu. Režim zápisu nebo načítání dat lze řídit i programově.


Syntax

  recipe recipe_name;
    rem = string;
    bubble = string;
    timer = timer_name;
    owner = owner_name;
    position = integer, integer, integer, integer;
    win_disable = [ identifier, . . . ];
    win_title = string;
    access = integer;
    tab_select = integer;
    send_same_data;
    driver_exception = driver_name;
    data_file = string;
    pane_file = string;
    dv_id = string;
    font = font_identifier, integer, style_identifier;
    record_number = real_expression;
    create_record = boolean_expression;
    delete_record = boolean_expression;
    record_set = real_dataelement;
    records_count = real_dataelement;
    data_update = boolean_expression;
    data_updated = boolean_dataelement;
    file_update = boolean_expression;
    file_updated = boolean_dataelement;
    input_mode = boolean_expression;
    receivers = [ identifier, ... ];
    item
      name = string;
      type = identifier;
      length = integer;
      dec_places = integer;
      range_from = real;
      range_to = real;
      position = integer, integer, integer, integer;
      label_pos = integer, integer;
      label_text = string;
      input = any_expression;
      output = any_dataelement;
      protect;
    end_item;
    item
      ...
    end_item;
    colors
      text = color;
      background = color;
      ink = color;
      paper = color;
      selected_ink = color;
      selected_paper = color;
      top_shadow = color;
      bottom_shadow = color;
    end_colors;
  end_recipe;

Specifické parametry přístroje


Poznámky

Vstupní mód

  1. Pokud byl nadefinován výraz file_update a byl vyhodnocen jako true, uloží data z receptury do souboru a nastaví file_update podle výsledku operace se souborem na true nebo na false.
  2. Vyhodnotí výraz record_number
  3. Provede se jedna z následujicích akcí:
    1. Pokud je výraz data_update vyhodnocen jako true, zobrazí záznam record_number, vyhodnotí všechny výrazy input a získané hodnoty zapíše do záznamu, nastaví datový element data_updated na true, zadá požadavek na obeslání uvedených receiverů
    2. Pokud neplatí předchozí bod a výraz create_record vyhodnocen jako true, pak pokud je record_number menší nebo roven počtu záznamů v databázi receptury, tak na číslo záznámu record_number je vložen a zobrazen nový záznam. Je-li record_number větší než počet záznamů v databázi receptur, přidá jeden nebo record_number - records_count nových záznamů a záznam record_number je zobrazen. Pak nastaví datový element records_count na celkový počet záznamů v databázi receptur a zadá požadavek na obvolání uvedených receiverů.
    3. Pokud neplatí žádný z předchozích bodů a výraz delete_record je vyhodnocen jako true a současně je record_number menší nebo roven celkovému počtu záznamů v databázi receptur, smaže záznam record_number. Pokud by po smázání tohoto záznamu byla databáze receptur prázdná, přidá jeden záznam. Potom zobrazí záznam record_number nebo record_number - 1, nastaví datový element records_count na celkový počet záznamů v databázi receptur a zadá požadavek na obvolání uvedených receiverů.
    4. Pokud neplatí žádný z předchozích bodů, je pouze zobrazen záznam record_number.

Výstupní mód

  1. Pokud byl nadefinován výraz file_update a byl vyhodnocen jako true, načte data ze souboru do receptury a nastaví file_update podle výsledku operace se souborem na true nebo na false.
  2. Vyhodnotí výraz record_number.
  3. Provede se jedna z následujicích akcí:
    1. Pokud je výraz data_update vyhodnocen jako true, zobrazí záznam record_number, nastaví data receptury na výstupní datové elementy, nastaví datový element recipe_set na hodnotu record_number, datový element data_updated na true, zadá požadavek na obeslání uvedených receiverů.
    2. Viz body bd u vstupního módu.

Ovládání receptury

DataView

Menu okna přístroje má následující položky:

Soubor

Nový – vytvoří nový soubor typu DBF (beze jména).
DataView Otevřít... – Otevře soubor typu DBF.
DataView Uložit – Uloží nastavená data do souboru typu DBF.
Uložit jako... – Pomocí dialogového okna souborů dovolí uložit soubor pod libovolným jménem.

Záznam

DataView Další – Nastaví hodnoty receptury na další záznam souboru.
DataView Předchozí – Nastaví hodnoty receptury na předchozí záznam souboru.
Jdi na... – Otevře dialogové okno, pomocí kterého lze nastavit číslo žádaného záznamu:
DataView
Vyhledat... – Otevře dialogové okno, pomocí kterého lze nalézt záznam podle položky daného jména a podle její hodnoty (i bez ohledu na velikost písmen):
DataView
DataView Přidat – Přidá nový záznam.
DataView Vložit – Vloží nový záznam na pozici aktuálního záznamu.
Smazat – Smaže záznam na aktuální pozici.
DataView Kopírovat data – Je–li tato volba zadána, pak vždy při vytvoření nového záznamu se okopírují hodnoty položek z naposled nastaveného záznamu.
Výpis – Zobrazí všechny záznamy receptur pomocí databázového DataView.

Receptura

DataView Nastavení – Nastaví data z aktuálního záznamu na definované výstupy.
DataView Načtení – Naplní aktuální záznam hodnotami získanými vyčíslením definovaných výrazů.

Některé parametry mají implicitní nastavení

  position = 0, 0, 100, 100;
  access = <none>
  tab_select = <none>
  colors
    text = black;
    background = lgray;
  end_colors;

Příklad

Příklad nastavení parametrů přístroje

  recipe Receptura;
    owner = Recipe_Sample;
    position = 339, 120, 260, 150;
    data_file = RECIPE.DBF;
    pane_file = RECIPE.PCX;
    record_number = RecipeNumber;
    create_record = CreateRecipe;
    delete_record = DeleteRecipe;
    record_set = ActiveRecipe;
    records_count = RecipeCount;
    data_update = UpdateRecipeData;
    data_updated = RecipeDataUpdated;
    file_update = UpdateRecipeFile;
    file_updated = RecipeFileUpdated;
    input_mode = InputRecipeMode;
    receivers = V_X1, G_X1, V_X2, G_X2;
    item
      name = VALUE_X1;
      type = numeric;
      length = 5;
      dec_places = 1;
      position = 45, 50, 75, 17;
      label_pos = 25, 53;
      label_text = 'X1';
      input = VR1;
      output = OutRealCh1;
    end_item;
    item
      name = COMMENT;
      type = character;
      length = 1;
      position = 70, 115, 165, 17;
      label_pos = 25, 117;
      label_text = 'Note';
    end_item;
  end_recipe;

Nativní procedury přístroje

NewFile()

Smaže všechny záznamy v receptuře a připraví ji pro zadávání nových dat.

OpenFile( Filename : string; &Result : boolean )

Načte databázový soubor specifikovaný v parametru Filename do receptury. V parametru Result vrací výsledek operace.

SaveFile( Filename : string; &Result : boolean )

Uloží záznamy receptury do databázového souboru specifikovaného v parametru Filename. V parametru Result vrací výsledek operace.

AppendRecord( &Result : boolean )

Přidá nový záznam. V parametru Result vrací výsledek operace.

InsertRecord( &Result : boolean )

Přidá nový záznam. V parametru Result vrací výsledek operace.

DeleteRecord( &Result : boolean )

Smaže právě aktuální záznam receptury. V parametru Result vrací výsledek operace.

DeleteAllRecords( &Result : boolean )

Smaže všechny záznamy receptury. V parametru Result vrací výsledek operace.

GetRecordNumber( &RecordNumber : number )

Vrací v parametru RecordNumber číslo právě zobrazeného záznamu.

GoPrevRecord( &Result : boolean )

Přechod na předchozí záznam. V parametru Result vrací výsledek operace.

GoNextRecord( &Result : boolean )

Přechod na následující záznam. V parametru Result vrací výsledek operace.

GoToRecord( RecordNumber : number; &Result : boolean )

Přechod na záznam RecordNumber. V parametru Result vrací výsledek operace.

FindRecord( Itemname, ValueStr : string; IgnoreCase, FindSubStr, &Result : boolean; &RecordNumber : number )

Pokud je parametr FindSubStr nastaven na hodnotu false, pak hledá záznam, jehož položka Itemname je rovna ValueStr. Pokud je parametr FindSubStr nastaven na hodnotu true, pak hledá záznam, jehož položka Itemname obsahuje řetězec uvedený v parametru ValueStr. Pokud je parametr IgnoreCase nastaven na hodnotu true, pak ignoruje velikost písmen. Výsledek operace vrací v parametru Result. Pokud je záznam splňující zadané podmínky nalezen, parametr RecordNumber obsahuje číslo nalezeného záznamu.

FindNextRecord( &Result : boolean; &RecordNumber : number )

Hledá další záznam, splňující podmínky zadané pomocí metody FindRecord. Výsledek operace vrací v parametru Result Pokud je záznam splňující zadané podmínky nalezen, parametr RecordNumber obsahuje číslo nalezeného záznamu.

SetRecipe( RecordNumber : real; &Result : boolean )

Nastaví hodnoty ze záznamu receptury RecordNumber na definované výstupy receptury. V parametru Result vrací výsledek operace.

GetRecipe(RecordNumber : number; &Result : boolean )

Vyhodnotí nadefinované vstupní výrazy a vysledky nastaví do záznamu RecordNumber. V parametru Result vrací výsledek operace.

Hide()

Skrytí viditelného přístroje.

Show()

Zobrazení skrytého přístroje.

Minimize()

Minimalizuje přístroj v okně do ikony.

Restore()

Obnoví přístroj (pokud je v okně) z ikony do pracovní plochy.

Událostní procedury přístroje

Přístroj může volat standardní událostní procedury:

OnActivate()
OnMouseDown( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) 
OnMouseDoubleClick( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) 
OnMouseUp( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) 
OnMouseMove( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean ) 
OnSelect() 
OnDeselect() 
OnShow() 
OnHide() 
OnNewPosition( RectX, RectY, RectW, RectD : integer ) 
OnWindowMinimize() 
OnWindowMaximize() 
OnWindowRestore( WasMinimized, WasMaximized : boolean ) 
OnWindowClose() 

Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.

Specifické událostní procedury přístroje

OnGetRecipe( RecordNumber : real )

Procedure je volána před naplněním hodnot získaných vyčíslením přiřazených výrazů do položek záznamu RecordNumber.

OnSetRecipe( RecordNumber : real )

Procedure je volána před zápisem hodnot z položek záznamu RecordNumber na přiřazené datové elementy.