Objekt App: Porovnání verzí
m |
m |
||
(Není zobrazeno 6 mezilehlých verzí od stejného uživatele.) | |||
Řádek 1: | Řádek 1: | ||
− | Pomocí připraveného objektu App lze spouštět libovolnou funkci dané aplikace, která je dostupná z hlavního menu programu. Je tak možné automatizovaně spouštět třeba různé výpočty, převody, exporty či importy dat. Dostupné nejsou pouze funkce, které vyžadují interakci uživatele v grafickém prostředí (např. práce s grafy, QR2 sestavy, práce dokumenty apod.).<br/> | + | Pomocí připraveného objektu App lze ve [[Skriptovací programovací jazyk|skriptovacím programovacím jazyku]] spouštět libovolnou funkci dané aplikace, která je dostupná z hlavního menu programu. Je tak možné automatizovaně spouštět třeba různé výpočty, převody, exporty či importy dat. Dostupné nejsou pouze funkce, které vyžadují interakci uživatele v grafickém prostředí (např. práce s grafy, QR2 sestavy, práce dokumenty apod.).<br/> |
K dispozici je sada objektů, které jsou dostupné v různých standardních částech aplikace (při práci s menu, seznamy, ve vstupních dialozích apod.). | K dispozici je sada objektů, které jsou dostupné v různých standardních částech aplikace (při práci s menu, seznamy, ve vstupních dialozích apod.). | ||
Řádek 6: | Řádek 6: | ||
TKAPCustomAppControl = class | TKAPCustomAppControl = class | ||
property OnMenu: TfsDoMenuEvent; | property OnMenu: TfsDoMenuEvent; | ||
− | property OnInputDlg: | + | property OnInputDlg: TfsDoInputDlgEvent; |
property OnViewDlg: TfsDoViewDlgEvent; | property OnViewDlg: TfsDoViewDlgEvent; | ||
property OnWaitForKey: TfsDoWaitForKeyEvent; | property OnWaitForKey: TfsDoWaitForKeyEvent; | ||
Řádek 17: | Řádek 17: | ||
procedure PressChars(Keys: string); | procedure PressChars(Keys: string); | ||
procedure PressFnKeys(Keys: string); | procedure PressFnKeys(Keys: string); | ||
− | function ActiveWindowCaption: string; | + | function ActiveWindowCaption: string; // nadpis aktuálního okna |
+ | property Left: Integer; // pozice vlevo aktuálního okna | ||
+ | property Top: Integer; // pozice nahoře aktuálního okna | ||
+ | property Width: Integer; // šířka aktuálního okna | ||
+ | property Height: Integer; // výška aktuálního okna | ||
+ | property PaletteNum: Integer; // číslo palety (0..3) aktuálního okna | ||
end; | end; | ||
Řádek 25: | Řádek 30: | ||
TKAPAppControlMenuInfo = class(TKAPAppControlCustomInfo) | TKAPAppControlMenuInfo = class(TKAPAppControlCustomInfo) | ||
+ | // zděděná property Caption obsahuje text aktuální položky menu | ||
+ | property ActiveMenuItem : byte; // vrací aktuální číslo položky menu (od 1) | ||
+ | property MenuItemsCount : byte; // vrací počet aktivních položek v menu | ||
+ | property SelectedMenuItem: byte; // umožňuje nastavit výslednou položku menu (hodnota od 1 do MenuItemsCount) | ||
+ | property MenuItemText[Index: integer]: string; // vrací text položky menu (Index od 0 do MenuItemsCount-1) | ||
end; | end; | ||
TKAPAppControlInputDlgInfo = class(TKAPAppControlCustomInfo) | TKAPAppControlInputDlgInfo = class(TKAPAppControlCustomInfo) | ||
+ | property InputItemsCount : integer; // vrací počet editačních položek v dialogu | ||
+ | property CurrentIndex : integer; // vrací pořadové číslo editačního prvku | ||
+ | property CurrentID : integer; // vrací ID editačního prvku | ||
+ | property CurrentValue : string; // vrací textovou hodnotu editačního prvku | ||
+ | // změnou této hodnoty je možné změnit zadávanou hodnotu | ||
end; | end; | ||
TKAPAppControlViewDlgInfo = class(TKAPAppControlCustomInfo) | TKAPAppControlViewDlgInfo = class(TKAPAppControlCustomInfo) | ||
+ | property Sorted: Boolean; // určuje, zda je databázová tabulka zobrazena v režimu třídění dle indexu | ||
+ | property ViewKey: integer; // číslo indexu databázové tabulky (Sorted=true) | ||
+ | property ViewName: String; // jméno vieweru | ||
+ | property IsFirst: Boolean; // vrací, zda je viewer na prvním záznamu | ||
+ | property IsLast: Boolean; // vrací, zda je viewer na posledním záznamu | ||
+ | property LinesOnPage: integer; // vrací počet řádků na zobrazené stránce | ||
+ | property BtrFileName: String; // jméno prohlížené databázové tabulky | ||
end; | end; | ||
Řádek 37: | Řádek 59: | ||
− | Žádný z těchto objektů se nesmí vytvářet přímo. Třída TKAPAppControl je dostupná prostřednictvím již vytvořené instance objektu App a tento objekt je možné přímo používat. Je také možné připravit obslužné procedury, které se musí prostřednictvím vlastností OnMenu, OnInputDlg, OnViewDlg, OnWaitForKey objektu App. Tyto obslužné procedury se volají v okamžiku, kdy aplikace je v dané situaci (tj. v menu, ve vstupním dialogu, při listování v seznamu) a čeká na vstupní klávesu. Úkolem obslužné procedury je podle aktuální situace zareagovat "stisknutím" odpovídající klávesy. | + | Žádný z těchto objektů se nesmí vytvářet přímo. Třída TKAPAppControl je dostupná prostřednictvím již vytvořené instance objektu App a tento objekt je možné přímo používat. Je také možné připravit obslužné procedury, které se musí volat prostřednictvím vlastností OnMenu, OnInputDlg, OnViewDlg, OnWaitForKey objektu App. Tyto obslužné procedury se volají v okamžiku, kdy aplikace je v dané situaci (tj. v menu, ve vstupním dialogu, při listování v seznamu) a čeká na vstupní klávesu. Úkolem obslužné procedury je podle aktuální situace zareagovat "stisknutím" odpovídající klávesy. |
{| border=1 style="background:#ddddff; color:black" class = "wikitable" | {| border=1 style="background:#ddddff; color:black" class = "wikitable" | ||
Řádek 60: | Řádek 82: | ||
|-valign=top | |-valign=top | ||
|''procedure PressKeys(Keys: String)'' ||Kombinace funkcí PressChars a PressFnKeys. Písmena, které je třeba stisknout se mohou psát do uvozovek - pak je program nebude zkoušet překládat jako funkční klávesu. Jinak ale vše, co nelze přeložit jako funkční klávesa, pošle jako znak - kromě mezer, uvozovek a znaků pod #32 | |''procedure PressKeys(Keys: String)'' ||Kombinace funkcí PressChars a PressFnKeys. Písmena, které je třeba stisknout se mohou psát do uvozovek - pak je program nebude zkoušet překládat jako funkční klávesu. Jinak ale vše, co nelze přeložit jako funkční klávesa, pošle jako znak - kromě mezer, uvozovek a znaků pod #32 | ||
− | |||
− | |||
|} | |} | ||
+ | |||
+ | Viz příklad [[Příklady PASCAL]] |
Aktuální verze z 15. 2. 2015, 14:42
Pomocí připraveného objektu App lze ve skriptovacím programovacím jazyku spouštět libovolnou funkci dané aplikace, která je dostupná z hlavního menu programu. Je tak možné automatizovaně spouštět třeba různé výpočty, převody, exporty či importy dat. Dostupné nejsou pouze funkce, které vyžadují interakci uživatele v grafickém prostředí (např. práce s grafy, QR2 sestavy, práce dokumenty apod.).
K dispozici je sada objektů, které jsou dostupné v různých standardních částech aplikace (při práci s menu, seznamy, ve vstupních dialozích apod.).
Objekt TKAPCustomAppControl
TKAPCustomAppControl = class property OnMenu: TfsDoMenuEvent; property OnInputDlg: TfsDoInputDlgEvent; property OnViewDlg: TfsDoViewDlgEvent; property OnWaitForKey: TfsDoWaitForKeyEvent; end;
TKAPAppControl = class (TKAPCustomAppControl) constructor Create; procedure RunMenu(MenuCode1, MenuCode2, AccessRight: byte; Keys: string); procedure PressKeys(Keys: string); procedure PressChars(Keys: string); procedure PressFnKeys(Keys: string); function ActiveWindowCaption: string; // nadpis aktuálního okna property Left: Integer; // pozice vlevo aktuálního okna property Top: Integer; // pozice nahoře aktuálního okna property Width: Integer; // šířka aktuálního okna property Height: Integer; // výška aktuálního okna property PaletteNum: Integer; // číslo palety (0..3) aktuálního okna end;
TKAPAppControlCustomInfo = class property Caption: string; end;
TKAPAppControlMenuInfo = class(TKAPAppControlCustomInfo) // zděděná property Caption obsahuje text aktuální položky menu property ActiveMenuItem : byte; // vrací aktuální číslo položky menu (od 1) property MenuItemsCount : byte; // vrací počet aktivních položek v menu property SelectedMenuItem: byte; // umožňuje nastavit výslednou položku menu (hodnota od 1 do MenuItemsCount) property MenuItemText[Index: integer]: string; // vrací text položky menu (Index od 0 do MenuItemsCount-1) end;
TKAPAppControlInputDlgInfo = class(TKAPAppControlCustomInfo) property InputItemsCount : integer; // vrací počet editačních položek v dialogu property CurrentIndex : integer; // vrací pořadové číslo editačního prvku property CurrentID : integer; // vrací ID editačního prvku property CurrentValue : string; // vrací textovou hodnotu editačního prvku // změnou této hodnoty je možné změnit zadávanou hodnotu end;
TKAPAppControlViewDlgInfo = class(TKAPAppControlCustomInfo) property Sorted: Boolean; // určuje, zda je databázová tabulka zobrazena v režimu třídění dle indexu property ViewKey: integer; // číslo indexu databázové tabulky (Sorted=true) property ViewName: String; // jméno vieweru property IsFirst: Boolean; // vrací, zda je viewer na prvním záznamu property IsLast: Boolean; // vrací, zda je viewer na posledním záznamu property LinesOnPage: integer; // vrací počet řádků na zobrazené stránce property BtrFileName: String; // jméno prohlížené databázové tabulky end;
TKAPAppControlWaitForKeyInfo = class(TKAPAppControlCustomInfo) end;
Žádný z těchto objektů se nesmí vytvářet přímo. Třída TKAPAppControl je dostupná prostřednictvím již vytvořené instance objektu App a tento objekt je možné přímo používat. Je také možné připravit obslužné procedury, které se musí volat prostřednictvím vlastností OnMenu, OnInputDlg, OnViewDlg, OnWaitForKey objektu App. Tyto obslužné procedury se volají v okamžiku, kdy aplikace je v dané situaci (tj. v menu, ve vstupním dialogu, při listování v seznamu) a čeká na vstupní klávesu. Úkolem obslužné procedury je podle aktuální situace zareagovat "stisknutím" odpovídající klávesy.
Funkce | Popis |
---|---|
property OnMenu | Určuje jméno obslužné procedury volané v okamžiku, kdy je program v menu a čeká na vstup klávesy. Parametrem obslužné procedury je objekt typu TKAPAppControlMenuInfo, který může obsahovat dodatečné informace o menu. Objekt může být ale i nulový (nil). |
property OnInputDlg | Určuje jméno obslužné procedury volané v okamžiku, kdy je program ve vstupním dialogu a čeká na vstup klávesy. Parametrem obslužné procedury je objekt typu TKAPAppControlInputDlgInfo, který může obsahovat dodatečné informace o vstupním dialogu. Objekt může být ale i nulový (nil). |
property OnViewDlg | Určuje jméno obslužné procedury volané v okamžiku, kdy je program v seznamu (např. v databázovém seznamu) a čeká na vstup klávesy. Parametrem obslužné procedury je objekt typu TKAPAppControlViewDlgInfo, který může obsahovat dodatečné informace o seznamu. Objekt může být ale i nulový (nil). |
property OnWaitForKey | Určuje jméno obslužné procedury volané v okamžiku, kdy program čeká na vstup klávesy (jde o obecné volání, které se volá i po OnMenu, OnInputDlg, OnViewDlg). Parametrem obslužné procedury je objekt typu TKAPAppControlWaitForKeyInfo, který může obsahovat dodatečné informace o aktuálním stavu programu. Objekt může být ale i nulový (nil). |
constructor Create | Konstruktor se nesmí volat přímo, je třeba využít již existující objekt App |
procedure RunMenu(MenuCode1, MenuCode2, AccessRight: byte; Keys: string) | Spustí funkci z hlavního menu aplikace s určeným kódem menu a danou úrovní přístupových práv (0..9). Funkce může obsahovat seznam kláves, které se mají "stisknout" po vyvolání této funkce. Další klávesy pak mohou dodat obslužné funkce. Pokud program vyčerpá klávesy ze zásobníku a obslužná procedura nestiskne další klávesu, pak program funkci automaticky ukončuje pomocí ESC. |
procedure PressChars(Keys: String) | Funkce "stiskne" znaky předané prostřednictvím parametru Keys. Znak s kódem #13 se převede na Enter. Znaky s kódem #1 až #26 se převedou na Ctrl+A až Ctrl+Z. Ostatní klávesy se chápou jako znaky. |
procedure PressFnKeys(Keys: String) | Funkce "stiskne" funkční klávesy. Text poslaný v parametru Keys musí obsahovat seznam funkčních kláves oddělený mezerami (např. PressFnKeys('Tab F2 Down Enter ESC') |
procedure PressKeys(Keys: String) | Kombinace funkcí PressChars a PressFnKeys. Písmena, které je třeba stisknout se mohou psát do uvozovek - pak je program nebude zkoušet překládat jako funkční klávesu. Jinak ale vše, co nelze přeložit jako funkční klávesa, pošle jako znak - kromě mezer, uvozovek a znaků pod #32 |
Viz příklad Příklady PASCAL