journal

Funkce

Pořizuje záznamy o všech sledovaných změnách v aplikaci a archivuje je do standardního databázového souboru nebo do libovolného databázového systému přes rozhraní ODBC. Strukturu záznamu lze uživatelsky podle potřeby upravovat. Archivní soubory mohou vznikat jednorázově nebo periodicky podle časového období zachyceného v jednom archivním souboru.


Syntax

  journal journal_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;
    driver_exception = driver_name;
    file_name = string;
    file_type = identifier;
    file_length = integer;
    file_start = integer, integer, integer, integer;
    file_history = integer;
    file_name_type = identifier;
    file_mask_expression = real_expression;
    file_delete = boolean_expression;
    cache = integer;
    date_item
      name = string;
      expression = real_expression;
      disable;
    end_date_item;
    time_item
      name = string;
      expression = real_expression;
      disable;
    end_time_item;
    record_structure = [ identifier, ... ];
    odbc
      enable;
      dsn = string;
      user_name = string;
      password = string;
      file_extension = string;    
    end_odbc;
    condition = boolean_expression;
    initialize = boolean_expression;
    register_login;
    item
      text = string;
      expression = any_expression;
      condition = boolean_expression;
      plus_hysteresis = real;
      minus_hysteresis = real;
      text_for_true = string;
      text_for_false = string;
    end_item;
    item
      ...
    end_item;
    mask_item
      text = string;
      expression = any_data_element;
      condition = boolean_data_element;
      plus_hysteresis = real_data_element;
      minus_hysteresis = real_data_element;
      text_for_true = string;
      text_for_false = string;
    end_mask_item;
    mask_item
      ...
    end_mask_item;
    array_item
      index_range = integer, integer;	
      text = string;
      expression = any_array_data_element;
      condition = boolen_array_data_element;
      plus_hysteresis = real_array_data_element;
      minus_hysteresis = real_array_data_element;
      text_for_true = string;
      text_for_false = string;
    end_array_item;
    array_item
      ...
    end_array_item;
    colors
      text = color;
      background = color;
      top_shadow = color;
      bottom_shadow = color;
      select = color;
      button_up_background = color;
      button_up_top_shadow = color;
      button_up_bottom_shadow = color;
      button_down_background = color;
      button_down_top_shadow = color;
      button_down_bottom_shadow = color;
    end_colors;
  end_journal;


Specifické parametry přístroje

Podrobný popis parametrů pro definici archivních souborů je uveden v kapitole Databáze a archivace dat.


Poznámky

Vzhled a ovládání přístroje

Při vložení samotného přístroje journal do aplikace se zobrazí v podobě uvedené na obrázku:

DataView

Bude mít tlačítko a prostor pro zobrazování názvu právě aktuálního archivního souboru. Kliknete-li myší na tlačítko (ikona pro otevření souboru), zobrazí se dialogové okno, ve kterém jsou zobrazeny dostupné archivní soubory. Data vybraného souboru lze prohlížet nebo zpracovávat dostupnými DataView nebo soubor zkopírovat do jiného adresáře nebo jej uložit pod jiným jménem.

Některé parametry mají implicitní nastavení

  position = 0, 0,150, 28;
    access = <none>
    tab_select = <none>
    file_type = relative;
    file_length = hour;
    file_start = 0, 0, 1, 1;
    file_history = 10;
    file_access = 4294967295;
    file_name_type = new_code;
    date_item
      name = 'DATE';
    end_date_item;
    time_item
      name = 'TIME';
    end_time_item;
    record_structure = text, old_value, new_value, operator;

Příklad

Příklad definice parametrů přístroje

journal Journal;
  timer = 1;
  owner = background;
  position = 10, 20, 174, 28;
  access = 0;
  file_type = relative;
  file_length = day;
  file_name = 'DJ_';
  file_history = 7;
  record_structure = text, old_value, new_value, operator;
  condition = WriteToJournal;
  initialize = JournalInitialize;
  item
    text = 'Změna parametru X12';
    expression = value_X12;
  end_item;
  item
    text = 'Otevření/Zavření ventilu V2';
    expression = ValveV2State;
  end_item;
end_journal;

Nativní procedury přístroje

Initialize()

Inicializace srovnávacích hodnot, neboli srovnávací hodnoty nastaví na srovnávané hodnoty.

Notify( Text : string; OldValue, NewValue : value; PlusHysteresis, MinusHysteresis : number; DifferentOnly : boolean )

Přidá záznam o události do archivního souboru.
Popis parametrů:
Text - textový popis události
OldValue - původní (stará) hodnota
NewValue - aktuální (nová) hodnota
PlusHysteresis - plus hystereze pro numerickou veličinu
MinusHysteresis - minus hystereze pro numerickou veličinu
DifferentOnly - záznam bude přidán jen tehdy, pokud jsou hodnoty OldValue a NewValue různé.

Show()

Zobrazení skrytého přístroje.

Hide()

Skrytí viditelného přístroje.

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

OnChange( Text, NewValue, OldValue : string )

Procedura je volána při vyhodnocené změně.

Text - textové hlášení spojené s touto změnou
NewValue - nová hodnota
OldValue - předchozí hodnota