ZMĚNY VE SKRIPTOVÁNÍ MEZI VERZEMI 14.51(XE2) A VERZEMI PŘEDCHOZÍMI (14.02 A NIŽŠÍMI)



Podobné dokumenty
NOVINKY v PROGRAMU DOCHÁZKA ADS

Konvertor diakritiky 3. Instalace

Maturitní otázky z předmětu PROGRAMOVÁNÍ

UniLog-D. v1.01 návod k obsluze software. Strana 1

INISOFT UPDATE - SLUŽBA AUTOMATICKÝCH AKTUALIZACÍ Uživatelská příručka

Postupy práce se šablonami IS MPP

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

M4 PDF rozšíření. Modul pro PrestaShop.

O datových typech a jejich kontrole

Novinky ISÚI a VDP verze (aktualizováno dne 18. července 2017)

Základní popis Toolboxu MPSV nástroje

Importy a exporty KLIENTSKÝ DOPLNĚK PRO PODPORU IMPORTŮ VERZE 3.2.0

Programovací jazyk Pascal

APS Administrator.OP

Základní popis Toolboxu MPSV nástroje

1. Podmínky chodu aplikace

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

Reliance 3 design OBSAH

Předpoklady správného fungování formulářů

Práce s textovými proměnnými v DetStudiu

DLS V v1.2. Nové funkce. Používání programu DLS V

Přechod na Firebird 3. Popis migrační utility

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Úvod do programovacích jazyků (Java)

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Příprava dat v softwaru Statistica

Uživatelský manuál aplikace. Dental MAXweb

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Dotykova obrazovka v programu TRIFID

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

SKLAD ODPADŮ modul EKO-KOM

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze

Projekt. Sestavení projektu

dovolují dělení velkých úloh na menší = dekompozice

Modul Outlook2Money.

Aplikace a služba Money Dnes Publisher v deseti krocích

Archiv elektronických dokumentů Zela

Technologické postupy práce s aktovkou IS MPP

Návod pro práci s aplikací

MS Excel makra a VBA

Řízení toku programu Programátor musí být schopen nějak ovlivňovat běh programu a k tomu má několik možností:

Dotyková obrázovká v prográmu TRIFID

Studijní skupiny. 1. Spuštění modulu Studijní skupiny

Zpravodaj. Uživatelská příručka. Verze

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Envis LIMS Klient distribučního portálu

Modul IRZ návod k použití

ŘÍZENÍ POHLEDÁVEK A AUTOMATICKÉ UPOMÍNKY. Katalogový doplněk ABRA Gen

Uživatelská příručka

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Dotyková obrázovká v prográmu TRIFID

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Úprava naměřených stavů

1 Webový server, instalace PHP a MySQL 13

Generování žádosti o certifikát Uživatelská příručka

Výčtový typ strana 67

PŘÍKAZ K ZADÁNÍ SEPA PLATBY V APLIKACI MULTICASH KB

Lukáš Peterka vedoucí projektu. Registr hnojiv na eagri - uživatelská příručka , Brno

Instalace a první spuštění Programu Job Abacus Pro

Postup práce v KDS 1

Jednoduchý návod k použití programu Vinotéka 2007, v 2.2.1

POPIS DRIVERU pro připojení modulu měření spotřeby EATON/Moeller k systému Control4

Práce s velkými sestavami

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

43 HTML šablony. Záložka Šablony v systému

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

Kontingenční tabulky v MS Excel 2010

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Asistivní technologie a dohledové systémy Dyslexie čtení pomocí okénka

EMBARCADERO DATASNAP. OBSAH Úvod... 2 DataSnap a DBExpress... 2 Serverová část... 2 VCL Klient... 6 Nasazení... 7

Instalace pluginů pro formuláře na eportálu ČSSZ

Kanboard Documentation. The Kanboard Authors

Nová áplikáce etesty Př í přává PC ž ádátele

Používání programu DLS V

46 Objekty a atributy

2.1.2 V následujícím dialogovém okně zvolte Instalovat ze seznamu či daného umístění. stiskněte tlačítko Další

Outdoor Expert. Uživatelský manuál. Verze aplikace: OutdoorExpert_Manual.docx 1 /

Demoprojekt Damocles 2404

Jednoduchý návod k použití programu Vinotéka 2006, v 2.0

Export tabulky výsledků

Příprava prostředí pro výuku PHP a MySQL

Recognoil RRW Manager rychlý návod k obsluze

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

SPC Měřicí stanice Nastavení driverů

UŽIVATELSKÁ PŘÍRUČKA K INTERNETOVÉ VERZI REGISTRU SČÍTACÍCH OBVODŮ A BUDOV (irso 4.x) VERZE 1.0

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

CNC Blocks Utility 3. Instalace

Software602 FormApps Server

Novinky AutoCAD Plant 3D/AutoCAD P&ID 2015

UniLog-L. v0.81 návod k obsluze software. Strana 1

Instalace programu ProVIS

STUDIJNÍ MATERIÁL PRO TECHNICKOU CERTIFIKACI ESET Business Edition, ESET Remote Administrator

Národní elektronický nástroj. Import profilu zadavatele do NEN

KOMPONENTY APLIKACE TreeINFO. Petr Štos ECM Business Consultant

Transkript:

ZMĚNY VE SKRIPTOVÁNÍ MEZI VERZEMI 14.51(XE2) A VERZEMI PŘEDCHOZÍMI (14.02 A NIŽŠÍMI)

1. Obsah 1. OBSAH... 2 2. ZMĚNY VE SKRIPTOVÁNÍ OD VERZE ABRA GX 14.51... 3 2.1 ZASTARALÉ SKRIPTY Z PŘEDCHOZÍCH VERZÍ... 3 2.2 ZAVEDENÍ UNICODE - ŘETĚZCŮ... 3 2.2.1 KÓDOVÁNÍ UNICODE... 3 2.2.2 ODSTRANĚNÍ TYPU ANSISTRING... 4 3. ATRIBUTY PRVKŮ SKRIPTOVÁNÍ... 6 3.1 DEPRECATED... 6 3.2 ÚPRAVA SKRIPTŮ ZA POMOCI NOVÝCH ATRIBUTŮ... 6 4. NÁSTROJ PRO ZJIŠTĚNÍ ZMĚN DEFINIC SKRIPTOVÁNÍ MEZI VERZEMI (DEFSCOMP)... 7 5. DÍLČÍ ZMĚNY VE SKRIPTOVÁNÍ... 8 5.1 PŘETYPOVÁNÍ... 8 5.2 TŘÍDA TENCODING... 8 5.3 FUNKCE ENCODEBASE64, DECODEBASE64... 9 5.4 ZMĚNY VE STREAMECH... 10 5.5 ZMĚNY V TISKU A EXPORTU... 10 5.5.1 FUNKCE PRO TISK A EXPORT... 10 5.5.2 UKONČENÍ PODPORY FORMÁTU ARP... 11 5.6 ODSTRANĚNÍ TCUSTOM- KOMPONENT... 11 5.7 PROPERTY DATAFIELD A DATASOURCE... 11 5.8 TŘÍDA TCOMBOBOX... 11 5.9 TŘÍDA TLABEL JAKO NÁHRADA ZA TDBTEXT A TNXDBTEXT... 11 5.10 VÝČTOVÉ TYPY... 12 5.11 POUŽITÍ FUNKCE NXGETSITEAPPFORM... 12 5.12 POUŽITÍ TŘÍDY TZIPFILE (NÁHRADA ZA TZIPMASTER19)... 12 5.13 ZRUŠENÍ FUNKCE NXFINDCHILDCONTROLBYCLASS... 13 5.14 REST WEBOVÉ SLUŽBY... 13 5.15 METODA SHOW TŘÍDY TCONTROL A JEJÍCH POTOMKŮ... 16 5.16 ZMĚNY V METODÁCH PRO KOMUNIKACI S EXTERNÍMI KNIHOVNAMI DLL... 16 5.17 ZMĚNA POUŽITÍ ENCODINGU V TŘÍDĚ TNXSCRIPTINGXMLWRAPPER... 16 5.18 POZNÁMKY K PRÁCI S FORMULÁŘI VE SKRIPTOVÁNÍ... 17 5.19 PROPERTA FONT.COLOR V ABRA-VZHLEDU... 17 6. BINÁRNÍ DATA VS. STRING... 18 7. PŘÍLOHA Č. 1: PŘEHLED ODSTRANĚNÝCH POLOŽEK K VERZI 14.51.08... 19 Stránka 2 z 22

2. Změny ve skriptování od verze ABRA Gx 14.51 Změna prostředí, kódování, komponent atd., k níž došlo v této verzi v rámci přechodu na nové vývojové prostředí RAD studio XE2 (z původního Delphi7), se dotýká i skriptování. Je třeba převést všechny používané balíčky skriptů, tj. zkontrolovat je, dle potřeby upravit a nově zkompilovat. Tento dokument se věnuje popisu nejčastějších obtíží při přechodu skriptů na novou verzi. 2.1 Zastaralé skripty z předchozích verzí Došlo ke zcela zásadním změnám v definicích různých prvků skriptování a způsob jejich použití se v určitých případech může velice podstatně lišit od předchozích verzí ABRA Gx. Hrozí tedy nebezpečí, že stávající skripty by bez řádné kontroly a kompilace na nové verzi 14.51 (a novějších) mohly mít fatální následky pro uživatele (nemožnost použití funkcí, chybové hlášky, hrozba porušení konzistence dat, atd.). Není proto možné tyto původní skripty ze starších verzí ponechat funkční do verze 14.51. Všechny původní skripty ze starších verzí ABRA Gx (před verzí 14.51), jsou při procesu update automaticky nastaveny jako zastaralé a je zamezeno jejich spuštění. Při pokusu o spuštění zastaralých skriptů se objevuje chyba Verze kompilace je zastaralá. Balíček již není platný a je třeba jej znovu zkompilovat, aby byl funkční. Pokud je zastaralý skript spojen s agendou, objevuje se při otevření takové skriptované agendy chyba Tohoto zástupce již nelze spustit. Otázka: Jak správně ošetřit zastaralý skript, aby byl zase funkční? Každý existující skript zkompilovaný pod staršími verzemi ABRA Gx je třeba znovu zkompilovat pod novou verzí a ověřit jeho funkčnost. Kompilace odhalí většinu problémů, které plynou z rozdílů v definicích skriptování mezi verzemi. Na některé další možné problémy, které kompilace neodhalí, upozorňujeme v 5. kapitole. Po úspěšné kompilaci zastaralého skriptu tedy doporučujeme ověřit jeho funkčnost právě s ohledem na změny zmíněné v této kapitole. Tento proces může být náročnější na čas a může vyžadovat odborný zásah. Proto také doporučujeme vyhradit na proces přechodu na verzi 14.51 (a novější) z verze 13.01 (a starší) dostatek času a nejdříve skripty vyzkoušet na testovací verzi ABRA Gx před ostrým nasazením do produkčního systému. Otázka: Jak zjistím, jaké skripty v agendě Balíčky skriptů jsou zastaralé? Po update na verzi 14.51 (a novější) jsou všechny stávající skripty zastaralé. Na řádcích Balíčků skriptů (záložka Detail sub-záložka Projekt) je nový příznak Verze kompilace skriptu, který nabývá hodnot Zastaralá a Aktuální. Za tyto hodnoty lze omezovat na záložce Omezení Řádky Aktuální verze kompilace skriptu. 2.2 Zavedení Unicode - řetězců 2.2.1 Kódování Unicode V Abra Gx je od verze 14.51 implementováno kódování řetězců (typ string) Unicode, které umožňuje používat znaky různých abeced, symboly apod. současně. Oproti Ansi-kódování z předchozích verzí Abra Gx, ve kterém je znak zakódován na 1 Bytu, je kódování Unicode dvoubytové. Nyní tedy platí: funkce Length pro zjištění délky řetězce vrátí počet znaků, ale NE počet Bytů, ve kterých je řetězec uložen funkce ByteLength počet Bytů, ve kterých je řetězec uložen funkce StringElementSize vrátí počet Bytů, ve kterých je uložen (zakódován) 1 znak řetězce Stránka 3 z 22

pro převody řetězců mezi různými typy kódování slouží třída TEncoding (viz kapitolu 5.1) Uvedené změny s sebou přinášejí nutnost změny některých programovacích postupů. Nekorektní práci s řetězci neodhalí překladač a v lepším případě se projeví chybou za běhu programu. 2.2.2 Odstranění typu AnsiString Skriptování v Abra Gx od verze 14.51 již neobsahuje typ AnsiString. Z toho plyne také změna v deklaracích některých funkcí a procedur, které s tímto typem pracovaly a které nyní pracují pouze s typem string (tedy s dvoubytovým Unicodovým řetězcem). To se týká např. funkcí ReverseString(), LeftStr(), RightStr() a MidStr(). Pro zachování kompatibility byly ve skriptování funkce, které zpracovávaly AnsiStringy, zatím ponechány a označeny atributem Deprecated. Tyto funkce (zpravidla s prefixem Ansi v názvu) interně volají své ekvivalenty bez tohoto prefixu, pracující s Unicodovými řetězci. Výjimka ve třídě CfxString: Odstranění typu Ansistring nesouvisí s class-funkcemi a procedurami třídy CfxString, které zajišťují převody dat mezi textovými řetězci a bloky paměti. Třída CfxString nyní obsahuje metody dvojího typu: metody se sufixem A: kopírují řetězce po převodu na AnsiString na určené místo v paměti (např. StrPCopyA()), resp. AnsiStringový obsah paměti převedou do Unicodového řetězce (např. PStrCopyA()) metody se sufixem W: kopírují Unicodové řetězce na určené místo v paměti (např. StrPCopyW()), resp. obsah paměti převedou do Unicodového řetězce (např. PStrCopyW()) Rozdíly v práci s řetězci ukazují následující příklady: Původní chování Nové chování Zjištění délky řetězce ve znacích, resp. v Bytech s: string; s := abc ; // zobrazí se číslo 3 : ShowMessage(IntToStr(Length(s))); // funkce ByteLength ve skriptingu nebyla zavedena // počet znaků odpovídá počtu Bytů s: string; s := abc ; // zobrazí se číslo 3 (znaky): ShowMessage(IntToStr(Length(s)); // zobrazí číslo 6 (Bytů): ShowMessage(IntToStr(ByteLength(s))); Přesun dat procedurou Move s1, s2: string; p1, p2: pointer; s1 := 'abc'; s2 := '12345'; p1 := @s1; p2 := @s2; s1, s2: string; p1, p2: pointer; s1 := 'abc'; s2 := '12345'; p1 := @s1; p2 := @s2; Stránka 4 z 22

// přesun obsahu řetězce s1 do s2 Move(p1, p2, Length(s1)); // zobrazí se 'abc45' ShowMessage(s2); // CHYBNÝ (neúplný) přesun obsahu řetězce s1 do s2 Move(p1, p2, Length(1)); // zobrazí se 'ab345' ShowMessage(s2); // korektní přesun obsahu řetězce s1 do s2 Move(p1, p2, ByteLength(s1)); // zobrazí se 'abc45' ShowMessage(s2); Zápis do a čtení ze streamu s1, s2: string; p1, p2: pointer; mstream: TStream; mstream := TMemoryStream.Create; s1 := 'abc'; s2 := '12345'; p1 := @s1; p2 := @s2; // zápis obsahu řetězce s1 do streamu mstream.write(p1, Length(s1)); mstream.position := 0; mstream.read(p2, Length(s1)); // zobrazí se 'abc45' ShowMessage(s2); mstream.free; s1, s2: string; p1, p2: pointer; mstream: TStream; mstream := TMemoryStream.Create; s1 := 'abc'; s2 := '12345'; p1 := @s1; p2 := @s2; // CHYBNÝ (neúplný) zápis obsahu řetězce s1 do streamu mstream.write(p1, Length(s1)); mstream.position := 0; mstream.read(p2, Length(s1)); // zobrazí se 'ab345' ShowMessage(s2); // korektní zápis obsahu řetězce s1 do streamu mstream.write(p1, ByteLength(s1)); mstream.position := 0; mstream.read(p2, ByteLength(s1)); // zobrazí se 'abc45' ShowMessage(s2); mstream.free; Stránka 5 z 22

3. Atributy prvků skriptování Pro lepší podporu životního cyklu prvků zveřejněných v definicích skriptování byly zavedeny nové atributy, které lze použít u libovolného prvku skriptování (třída, funkce, atp.). Cílem této úpravy je dát uživatelům, kteří pracují se skripty dostatek času na přípravu na budoucí změny. Používané atributy Deprecated upozorňují na zastaralé prvky skriptování. Označení jedním z těchto atributů upozorňuje na to, že daný prvek je možné zatím ve skriptování používat, ale zároveň je třeba počítat s tím, že bude v některé z budoucích verzí úplně vyřazen. V upozornění je doporučena i náhrada daného prvku, která zpravidla také zjednodušuje práci oproti předchozím verzím. Místa, ve kterých se informace o přiřazení atributů zobrazují, jsou následující: 3.1 Deprecated ClassExplorer v agendě Balíčky skriptů zobrazuje se červený text Položka je zastaralá a je určena ke zrušení. Doporucená náhrada: XXX (platí od verze xx.xx.x) Nástroj DefsComp (viz kapitolu 4) u jednotlivých prvků se zobrazuje přímo daný atribut. Atributem Deprecated jsou zpravidla označené dílčí prvky skriptování (např. funkce, metody a property tříd apod.), se kterými se do budoucnosti nepočítá ani v kódu Abry, protože byly nahrazeny alternativním kódem. 3.2 Úprava skriptů za pomoci nových atributů Cílem těchto nových atributů skriptování je, aby správce skriptů mohl v dostatečném časovém předstihu prvky skriptování nahradit jejich aktuálními zveřejněnými verzemi. Aby takováto revize mohla proběhnout, je umožněno upravit chování skriptování ABRA Gx k těmto prvkům označeným atributy Deprecated nastavením v konfiguračním souboru ABRA Gx. POZOR!!! jakákoliv změna parametrů popsaných níže v Nexus.CFG v sekci [Scripting] automaticky znamená nutnost provedení kompilace u všech skriptů podobně jako po update na verzi 14.51!!! Důrazně ujeme, že změny parametru HideDeprecated na jiné než defaultní hodnoty nejsou určeny pro ostrou verzi, která se používá v provozu u uživatele!!! Parame lze změnit na testovací verzi a upravené a otestované skripty vyexportovat do ostré verze. Konfigurace v souboru NEXUS.CFG umožňuje skrýt prvky označené určitým atributem tak, že tento prvek není při startu ABRA Gx do skriptování zaregistrován a není tedy možné jej používat, tj. použití takového prvku skriptování vyvolá nefunkčnost skriptu nebo chybu kompilace a lze ho tedy s pomocí validačních hlášek odstranit. Nastavení skrývání prvků s atributy se provádí v sekci souboru NEXUS.CFG [Scripting]: [Scripting] HideDeprecated =1 Hodnota 1 znamená zapnutí skrývání (dané prvky se do skriptování neregistrují). Hodnota 0 znamená vypnutí (dané prvky se do skriptování registrují). Defaultní hodnoty: HideDeprecated=0 (skrývání vypnuto Deprecated prvky lze ve skriptování použít) Stránka 6 z 22

4. Nástroj pro zjištění změn definic skriptování mezi verzemi (DefsComp) Pro lepší orientaci ve změnách skriptování bude generován vždy s novou verzí soubor s definicemi skriptování dané verze s příponou ADC (ABRA Definition Compare). Pro verzi 13.01.12 byl vygenerován soubor 13.01.12.adc. Další definiční soubor bude vygenerován pro certifikovanou legislativní verzi 14.01.xx. Pro verze 14.51.xx budou s každou vydanou verzí generovány soubory 14.51.xx.adc. Tyto soubory budou dostupné v adresáři Doc\DefsComp instalace ABRA Gx. Nástroj DefsComp.exe se nachází v instalačním adresáři ABRA Gx. Pro jeho správnou funkci je tedy třeba mít k dispozici dva soubory ADC z různých verzí ABRA Gx k vlastnímu porovnání a nainstalovaný freewarový SW WinMerge (http://winmerge.org/). Po spuštění DefsComp.exe se vyberou definiční soubory verzí, které se mají porovnávat a stiskem tlačítka Další se provede výpočet porovnání definic (může trvat i déle jak 15 sec.). Objeví se výsledné okno porovnání definic, ve kterém je možné zobrazit nové, změněné, odstraněné a nezměněné definice. Omezit seznam lze pomocí pole Like podmínka. Pro zobrazení detailu změn stačí stisk CTRL-ENTER (nebo tlačítko Porovnání ve WinMerge, případně dvojklik myší na daném řádku) na zvolené definici, který změny zobrazí v aplikaci WinMerge. Dále je možné tlačítky Přehled Deprecated položek a Přehled odstraněných položek uložit do Htmlsouboru příslušný přehled. V příloze č. 1 s názvem Skriptovani_zmeny_D7_XE_priloha_1 navíc uvádíme přehled odstraněných definic vybraných tříd k verzi 14.51.06 s jejich doporučenými náhradami. Kompletní přehled odstraněných položek k verzi 14.51.06 pak obsahuje v příloha č. 2 s názvem Skriptovani_zmeny_D7_XE_priloha_2. Obrázek Nástroj DefsComp.exe Stránka 7 z 22

5. Dílčí změny ve skriptování V této kapitole budou popsány dílčí změny konkrétních prvků skriptování v ABRA Gx. 5.1 Přetypování Přetypování objektů ve skriptování má následující vlastnosti: Syntaxe: <<cílová třída>>(<<zdrojová třída>>) Při tomto zápisu je kontrolována kompatibilita cílové třídy se zdrojovou tak, jako je tomu u přetypování s operátorem AS v Delphi-kódu. Pokud tedy cílová třída není se zdrojovou kompatibilní a nelze přetypování provést, je vyvolána výjimka Invalid classes type cast <<zdrojová třída>> to <<cílová třída>> Samotný operátor AS ve skriptování k dispozici není. Kompatibilitu tříd lze otestovat pomocí operátoru IS, který naopak ve skriptování k dispozici je. Příklad procedure Test(APanel: TPanel); mcontrol: TControl; mwincontrol: TWinControl; // př. 1: // - nalezení komponenty edname typu TEdit na panelu APanel mcontrol := NxFindChildControl(APanel, edname ); // - přetypování: TEdit je potomkem třídy TWinContol ==> přetypování proběhne v pořádku mwincontrol := TWinControl(mControl); // př. 2: // - nalezení komponenty lblname typu TLabel na panelu APanel mcontrol := NxFindChildControl(APanel, lblname ); // - přetypování: TLabel není potomkem třídy TWinContol ==> přetypování vyvolá výjimku mwincontrol := TWinControl(mControl); 5.2 Třída TEncoding Třída Encoding slouží především k převádění dat mezi různými kódovými stránkami a nahrazuje tak zrušené samostatné funkce pro převody kódování řetězců, jako byly např. NxTranslateText a NxRemoveDiacritics. Třída také umožňuje převod řetězců na pole Bytů a naopak s možností definovat zdrojové a cílové kódování. Pro odstranění diakritiky z textového řetězce třída obsahuje metodu RemoveDiacritics. Třída podporuje práci s kódovými stránkami, které jsou vyjádřené následujícími konstantami: o Encoding_cp1250: Integer = 1250 (Win1250 - Ansi) o Encoding_cp852: Integer = 852 (IBM-Latin2) o Encoding_cpASCII: Integer = 20127 o Encoding_cpISO_8859_2: Integer = 28592 (ISO-Latin2) Stránka 8 z 22

o Encoding_cpKamenicky: Integer = 895 o Encoding_cpMacIntosh: Integer = 10029 o Encoding_cpUTF_8: Integer = 65001 o Encoding_cpUTF_16: Integer = 1200 (Unicode) Příklady použití // příklad převodu kódování z Win1250 (Ansi) do Unicode function ExampleConvertEncoding(AAnsiBytes: TBytes): string; municodebytes: TBytes; municodebytes := TEncoding.Convert(AAnsiBytes, Encoding_cp1250, Encoding_cpUTF_16); Result := TEncoding.Unicode.GetString(mUnicodeBytes); // příklad odstranění diakritiky function ExampleRemoveDiacrits(AValue: String): String; Result := TEncoding.RemoveDiacritics(AValue); // příklad převodu z řetězce na pole Bytů function ExampleGetBytesFromString(AValue:String): TBytes; Result := TEncoding.Unicode.GetBytes(AValue); 5.3 Funkce EncodeBase64, DecodeBase64 Tyto funkce nyní pracují s polem Bytů (TBytes) takto: function EncodeBase64(const Value: TBytes): String; function DecodeBase64(const Value: String): TBytes; Původní použití {Encode64} function Encode64(aValue:String):String; Result := EncodeBase64(aValue); Nové použití {Encode64} function Encode64(aValue: String):String; mbytes: TBytes; mbytes := TEncoding.Unicode.GetBytes(aValue); Result := EncodeBase64(aValue); Stránka 9 z 22

{Decode64} function Decode64(aValue:String):String; Result:= DecodeBase64(aValue); {Decode64} function Decode64(aValue:String):String; mbytes: TBytes; mbytes := DecodeBase64(aValue); Result := TEncoding.Unicode.GetString(mBytes); 5.4 Změny ve Streamech TStringStream byl odstraněn. Pro ukládání / načtení řetězců do / ze souborů je potřeba použít funkce přímo pro práci se soubory nebo TMemoryStream a TEncoding. U TMemoryStream byla zrušena properta Memory. Pro čtení a zápis se používají funkce Read() Write(). Případně je možné využít nové funkce GetBytes() a SetBytes(). TMapStream byl zabalen do nové obálky. TFileStream byl zabalen do nové obálky. THandleStream byl odstraněn. 5.5 Změny v Tisku a Exportu 5.5.1 Funkce pro tisk a export Tyto původní funkce pro tisk a export byly označené jako deprecated: NxGetFilterTextFromPrintExportKind NxGetFileExtensionFromPrintExportKind NxPrintByIDs NxExportByIDs NxB2BExportByIDs Dále byla odstraněna třída CFxPrintToFile a její funkce byly převedeny do nové třídy CFxReportManager, která navíc obsahuje uvedené funkce označené jako deprecated a některé další: PrintByIDsToTempFile PrintByIDsToBytes PrintIDsToSignedPDFToBytes PrintByIDs PrintByIDsWithParentForm PrintByIDsToTempFile PrintByIDsToBytes PrintByIDsToSignedPDF PrintByIDsToSignedPDFWithParentForm PrintByIDsToSignedPDFToBytes ExportByIDs B2BExportByIDs Stránka 10 z 22

GetFilterTextFromPrintExportKind GetFileExtensionFromPrintExportKind 5.5.2 Ukončení podpory formátu ARP ABRA Gx od verze 14.51 přestala podporovat formát pro tisk do souboru ARP. Při tisku pomocí skriptování jej tedy již nelze používat ani pro tisk do souboru, ani pro náhled na obrazovku. 5.6 Odstranění TCustom- komponent Z definic skriptování byly odstraněny komponenty TCustom. Tím došlo k celkovému zjednodušení hierarchie tříd zveřejněných ve skriptingu, ale také ke změnám dědičnosti. Místo Custom-tříd je třeba používat jejich potomky, kteří zveřejňují vlastnosti své i svého předka. Příklad změn v dědičnosti komponenty TreeView (posloupnost od potomka k předkům): Původní hierarchie TNxTreeView TTreeView TCustomTreeView TWinControl Nová hierarchie TTreeView TWinControl V novém modelu komponenta TTreeView plně nahrazuje původní TNxTreeView.. 5.7 Property DataField a DataSource Původní komponenty s napojením na dataset, které měly v názvu třídy DB (např. TDBEdit, TNxDBEdit), nahrazujeme jednou novou společnou komponentou, která už v názvu DB nemá (např. TEdit) a používá jak ve spojení s datasetem, tak bez něj. Napojení na dataset se realizuje prostřednictvím propert DataField a DataSource, jako tomu bylo u původních DB-komponent. Použití původních DB-komponent je tedy třeba nahradit komponentami novými. 5.8 Třída TComboBox Properta EnableValues je read only, na true ji nastavuje hodnota Values.Count > 0 (nelze ji tedy měnit přiřazením) 5.9 Třída Tlabel jako náhrada za TDBText a TNxDBText Třída TLabel kromě svého původního použití nově také nahrazuje dříve používané komponenty s obdobnými vlastnostmi TDBText a TNxDBText. Tato náhrada plyne ze změn v kódu Abry. Při nahrazování těchto komponent je třeba vést v patrnosti následující skutečnosti: TLabel je potomkem TControl a nelze jej tedy přetypovat na TWincontrol, což bylo u TDBText a TNxDBText možné, protože obě tyto komponenty byly potomky třídy TWinControl. Při pokusu o přetypování proměnné, která obsahuje TLabel, na TWinControl, je za běhu programu ohlášena chyba. Stránka 11 z 22

5.10 Výčtové typy Od verze 14.51 dochází ke změnám v některých výčtových typech, resp. v pozicích některých jejich členů. Pokud skript pracuje s pozicí členu ve výčtu, jeho překlad takovou změnu neodhalí a je třeba jej zkontrolovat. Dále uvádíme výčtové typy, u kterých k uvedeným změnám došlo (konkrétní rozdíly je možné zobrazit v nástroji DefsComp): TNxPOSExtraParams už ve verzi 13.01 se lišil výčet v kódu ABRA Gx od definice tohoto typu ve skriptování, a to nejen položkami přidávanými na konec výčtu, ale i položkou pexmacrocardbegin vloženou dovnitř výčtu TSynStateFlag na předposlední místo výčtu přibyl člen sfinsideredo TFieldType výčet byl rozšířen o nové členy. Pozor, pokud kód skriptu detekuje přítomnost fieldů různých typů v datasetu, je také třeba počítat s tím, že typy definované ve skriptech pod Abrou do verze 14.01 (resp. 14.02) jako ftstring a ftmemo, jsou nyní typu ftwidestring a ftwidememo. Pro zachován kompatibility skriptu je tedy třeba příslušnou detekci o tyto typy rozšířit. 5.11 Použití funkce NxGetSiteAppForm Funkci NxGetSiteAppForm nelze použít v háčku FormCreate_Hook, protože v metodě FormCreate není k dispozici SiteAppForm. Použití funkce v tomto místě končí výjimkou. 5.12 Použití třídy TZipFile (náhrada za TZipMaster19) Původní použití Nové použití Příklad vytvoření nového archivu s jedním zkomprimovaným souborem: mzip: TZipMaster19; mzip := TZipMaster19.Create(nil); mzip.zipfilename := '<<<zipfilearchiv>>>'; mzip.addfile('<<<filename>>>'); mzip.addfile('<<<filename>>>'); mzip.add; mzip.free; mzip: TZipFile; mzip := TZipFile.Create; mzip.open('<<<zipfilearchiv>>>', zfomwrite); mzip.addfile('<<<filename>>>'); mzip.addfile('<<<filename>>>'); mzip.free; // provede uložení na disk Příklad rozbalení archivu do zvoleného adresáře: mzip: TZipMaster19; mzip := TZipMaster19.Create(nil); mzip: TZipFile; // Extract zip Stránka 12 z 22

mzip.zipfilename := '<<<zipfilearchiv>>>'; mzip.extrbasedir := '<<<extractpath>>>'; mzip.extract; mzip.free; mzip := TZipFile.Create; mzip.open('<<<zipfilearchiv>>>', zfomread); mzip.extractall('<<<extractpath>>>'); mzip.free; 5.13 Zrušení funkce NxFindChildControlByClass Funkce NxFindChildControlByClass byla používána k vyhledání nepojmenované komponenty podle její třídy. Nyní lze komponentu vyhledávat pouze podle jména funkcí NxFindChildControl a je tedy nutné mít komponenty pojmenované. 5.14 REST webové služby Definice volané skriptovací funkce se nezměnily. procedure GET(Self: TNxWebServicesHelper; ARequest: TNxHTTPRequest; AResponse: TNxHTTPResponse); Změna nastala v objektech Request a Response. Properta Response.Content.Content je typu TBytes (dříve byla typu string). Vzorový příklad použití REST implementace procedure GET(Self: TNxWebServicesHelper; ARequest: TNxHTTPRequest; AResponse: TNxHTTPResponse); mfilename: String; if uppercase(arequest.path) = '/PDF' then AResponse.Content.Content :=getpdf(self.context); AResponse.Content.ContentType := 'Application/pdf'; AResponse.Content.ContentDisposition := ''; end else if uppercase(arequest.path) = '/ORDER' then AResponse.Content.Content := getorderinfo(self.objectspace, ARequest.Arguments); Aresponse.Content.ContentType := 'text/html'; except AResponse.Content.Content := TEncoding.ANSI.GetBytes('<B>!! Chyba!! </B> <BR>'+ExceptionMessage); Aresponse.Content.ContentType := 'text/html'; Stránka 13 z 22

function getorderinfo(aobjectspace: TNxCustomObjectSpace; Arguments: String): TBytes; margs, mres: TStrings; mid: String; morder: TNxCustombusinessObject; morderrows: TNxCustomBusinessMonikerCollection; i: Integer; margs := TStringList.Create; margs.delimiter := ','; margs.delimitedtext := Arguments; mid := margs.values['id']; if not NxIsEmptyOID(mID) then morder := AObjectSpace.CreateObject(Class_ReceivedOrder); mres := TStringList.Create; if not morder.test(mid) then Result := TEncoding.ANSI.GetBytes('<B>Špatné číslo objednávky</b>'); end else morder.load(mid, nil); morderrows := morder.getloadedcollectionmonikerforfieldcode(morder.getfieldcode('rows')); mres.add('<table border="1">'); mres.add( '<tr><th>položka</th><th>počet</th><th>jednotka</th><th>celková cena</th><th>dph</th> + '<th>datum dodání</th></tr>'); for i := 0 to morderrows.count - 1 do mres.add('<tr><td>'+nxevalobjectexprasstring(morderrows.businessobject[i], 'StoreCard_ID.Name')+'</td>'+ '<td>'+floattostr(morderrows.businessobject[i].getfieldvalueasfloat('quantity'))+'</td>'+ '<td>'+morderrows.businessobject[i].getfieldvalueasstring('qunit')+'</td>'+ '<td>'+floattostr(morderrows.businessobject[i].getfieldvalueasfloat('tamount'))+'</td>'+ '<td>'+floattostr(morderrows.businessobject[i].getfieldvalueasfloat('vatrate'))+'</td>'+ '<td>'+datetostr(morderrows.businessobject[i].getfieldvalueasfloat('deliverydate$date'))+'</td></tr>'); mres.add('</table>'); Result := TEncoding.ANSI.GetBytes(mRes.text); morder.free; Stránka 14 z 22

mres.free; end else result := TEncoding.ANSI.GetBytes('<B>Musíte zadat číslo objednávky</b>'); margs.free; function getpdf(acontext: TNxContext): TBytes; Result := PrintIssuedInvoice(AContext, '2J00000101', 'W400000001'); //Faktura vydana function PrintIssuedInvoice(AContext: TNxContext; ADocumentID: String; AReportID: String): TBytes; moleapp: Variant; mcommand: Variant; mcond: Variant; mtempdir: String; mids: TStrings; mfilename: String; mfilename := CFxGUID.CreateNew + '.pdf'; mids := TStringList.Create; mids.add(adocumentid); mtempdir := NxGetTempDir; NxPrintByIDs(AContext, mids, '40SBPEINEFD13ACM03KIU0CLP4', AReportID, rtofile, pekpdf, mtempdir, mfilename); Result := Get_PDF(NxAddSlash(mTempDir) + mfilename); DeleteFile(mTempDir + mfilename); mids.free; function Get_PDF(AFileNAme: String):TBytes; mfs: TFileStream; mss: TMemoryStream; Stránka 15 z 22

mfs := TFileStream.Create(AFileName, fmopenread); mfs.seek(0, sofrombeginning); mss := TMemoryStream.Create; mss.copyfrom(mfs, mfs.size); Result := mss.getbytes; mss.free; mfs.free; end. 5.15 Metoda Show třídy TControl a jejích potomků Pro zviditelnění vizuální komponenty na formuláři slouží jednak nastavení property Visible na True, a kromě toho také volání metody Show. Na rozdíl od Delphi D7 však v Delphi XE2 volání Show způsobí také přepnutí na záložku PageControlu, na které se daná komponenta nachází. Pokud se tedy např. komponenta nachází na záložce TabSheet2 a v okamžiku volání Show je aktivní záložka TabSheet1, po vyvolání Show bude aktivní TabSheet2. Pod D7 zůstávala aktivní záložka TabSheet1. Doporučujeme proto pro nastavení viditelnosti používat funkci NxSetVisible(). 5.16 Změny v metodách pro komunikaci s externími knihovnami DLL Původní funkce NxDllCall() a CallProcOnAddress() byly určené pro komunikaci s externími knihovnami DLL podporujícími pouze řetězce typu AnsiString. V Abra Gx od verze 14.51 je komunikace s knihovnami DLL zajištěna následujícímu funkcemi: NxDllCallA() a CallProcOnAddressA() pro komunikaci s knihovnami podporujícími řetězce typu AnsiString (= náhrada původních NxDllCall() a CallProcOnAddress()) NxDllCallW() a CallProcOnAddressW() pro komunikaci s knihovnami podporujícími řetězce typu WideString (řetězce Unicode) 5.17 Změna použití encodingu v třídě TNxScriptingXMLWrapper Pro kódování XML dokumentu je nyní k dispozici properta Encoding (read/write). Naopak z parametrů metod savetobytes(),savetofile() a savetostream() byla volba kódování odstraněna. Pokud se tedy má XML dokument uložit v jiném než aktuálním kódování, je třeba před voláním příslušné metody saveto přiřadit požadované kódování propertě Encoding. Stránka 16 z 22

Původní použití mxml: TNxScriptingXMLWrapper; mxml := TNxScriptingXMLWrapper.Create; mxml.loadfromfile('n:\!firmy.test.xml'); mxml.savetofile('n:\!firmy.test2.xml', 'UTF-8'); mxml.free; Nové použití mxml: TNxScriptingXMLWrapper; mxml := TNxScriptingXMLWrapper.Create; mxml.loadfromfile('n:\!firmy.test.xml'); mxml.encoding := 'UTF-8'; mxml.savetofile('n:\!firmy.test2.xml'); mxml.free; 5.18 Poznámky k práci s formuláři ve skriptování Formuláře vytvářené skriptem musí mít definovanou výšku a šířku pomocí propert ClientWidth a ClientHeight a tedy ne pomocí Width a Height. Doporučený postup vytváření formuláře s tlačítky ve spodním panelu v Abra vzhledu: na formulář se vloží panel se zarovnáním dolů a na něj se vkládají tlačítka. Tomuto panelu se pak nastaví properta BottomInModalDialog:= true a tím se v Abra vzhledu panel vybarví barvou aplikace. 5.19 Properta Font.Color v Abra-vzhledu V předchozích verzích bylo možné u komponent zveřejněných ve skriptování ovlivňovat a barvu pozadí nastavením property Color a barvu písma nastavením property Font.Color. Je-li v XE2-verzi nastaven styl vzhledu Abra vzhled nebo Abra vzhled - alternativní, nelze barvy u většiny komponent těmito propertami měnit. Barvu tak určuje výhradně nastavení barev v systému. Výjimkou jsou následující komponenty: TLabel, TEdit, TComboEdit, TDateEdit, TDirectoryEdit, TLabeledEdit, TNumEdit, TObjectComboEdit a TRollComboEdit. U těchto komponent barvy nastavením uvedených propert ovlivnit lze. Je-li nastaven styl vzhledu Podle Windows, jsou změny barev pomocí uvedených propert účinné. Stránka 17 z 22

6. Binární data vs. string Jak bylo vedeno výše, v Abra Gx od verze 14.51 jsou řetězce (typ string) unicodové, nejedná se tedy o prosté pole Bytů a není tedy vhodné je používat k předávání binárních dat. Pokud už je třeba binární data přenášet v řetězcích (to se může týkat např. webových služeb SOAP i REST), je třeba je ukládat v kódování Base64. Stránka 18 z 22

7. Příloha č. 1: přehled odstraněných položek k verzi 14.51.08 Odstraněná položka Náhrada Poznámka enumset AddOpts = [AddDirNames, AddRecurseDirs, AddMove, AddFreshen, AddUpdate, AddHiddenFiles, AddArchiveOnly, AddResetArchive, AddEncrypt, AddEmptyDirs, AddVolume, AddFromDate, AddSafe, AddVersion, AddNTFS] bez náhrady výčet původně použitý v odstraněné komponentě TZipMaster19 type AnsiString string přechod skriptování na Unicode řetězce class CFxPrintToFile CFxReportManager změna delphi-komponenty enumset ExtrOpts = [ExtrDirNames, ExtrOverWrite, ExtrFreshen, ExtrUpdate,ExtrTest, ExtrForceDirs] bez náhrady výčet původně použitý v odstraněné komponentě TZipMaster19 class TAnimatedImage (TRxImageControl) TAnimate změna delphi-komponenty class TContainedAction (TBasicAction) TBasicAction zjednodušení struktury komponent skriptování class TCurrencyEdit (TCustomNumEdit) TNumEdit změna delphi-komponenty class TCustomAction (TContainedAction) TBasicAction zjednodušení struktury komponent skriptování class TCustomActionList (TComponent) TActionList zjednodušení struktury komponent skriptování class TCustomCheckBox (TButtonControl) TCheckBox zjednodušení struktury komponent skriptování class TCustomCombo (TCustomListControl) TComboBox zjednodušení struktury komponent skriptování class TCustomComboBox (TCustomCombo) TComboBox zjednodušení struktury komponent skriptování class TCustomComboEdit (TCustomMaskEdit) TComboEdit zjednodušení struktury komponent skriptování class TCustomDBComboBox (TCustomComboBox) TComboBox zjednodušení struktury komponent skriptování class TCustomDBGrid (TCustomGrid) TDBGrid zjednodušení struktury komponent skriptování class TCustomDateEdit (TCustomComboEdit) TDateEdit zjednodušení struktury komponent skriptování class TCustomDrawGrid (TCustomGrid) TDrawGrid zjednodušení struktury komponent skriptování class TCustomEdit (TWinControl) TEdit zjednodušení struktury komponent skriptování class TCustomFrame (TScrollingWinControl) TFrame zjednodušení struktury komponent skriptování class TCustomGrid (TCustomControl) TDBGrid, TDrawGrid, TStringGrid zjednodušení struktury komponent skriptování class TCustomGroupBox (TCustomControl) TGroupBox zjednodušení struktury komponent skriptování class TCustomLabel (TGraphicControl) TLabel zjednodušení struktury komponent skriptování class TCustomLabeledEdit (TCustomEdit) TLabeledEdit zjednodušení struktury komponent skriptování class TCustomListBox (TCustomMultiSelectListControl) TListBox zjednodušení struktury komponent skriptování class TCustomListControl (TWinControl) TCheckListBox, TComboBox, TListBox, TListView zjednodušení struktury komponent skriptování class TCustomListView (TCustomMultiSelectListControl) TListView zjednodušení struktury komponent skriptování class TCustomMaskEdit (TCustomEdit) TEdit zjednodušení struktury komponent skriptování class TCustomMemo (TCustomEdit) TMemo zjednodušení struktury komponent skriptování class TCustomMemoryStream (TStream) TMemoryStream zjednodušení struktury komponent skriptování class TCustomMultiSelectListControl (TCustomListControl) TListBox, TListView zjednodušení struktury komponent skriptování class TCustomNumEdit (TCustomComboEdit) TNumEdit zjednodušení struktury komponent skriptování class TCustomPanel (TCustomControl) TPanel zjednodušení struktury komponent skriptování class TCustomRadioGroup (TCustomGroupBox) TRadioGroup zjednodušení struktury komponent skriptování class TCustomRichEdit (TCustomMemo) TRichEdit zjednodušení struktury komponent skriptování class TCustomSynEdit (TCustomControl) TSynEdit zjednodušení struktury komponent skriptování class TCustomTabControl (TWinControl) TTabControl zjednodušení struktury komponent skriptování class TCustomTreeView (TWinControl) TTreeView zjednodušení struktury komponent skriptování Stránka 19 z 22

class TDBCheckBox (TCustomCheckBox) TCheckBox zjednodušení struktury komponent skriptování class TDBComboBox (TCustomComboBox) TComboBox zjednodušení struktury komponent skriptování class TDBDateEdit (TCustomDateEdit) TDateEdit zjednodušení struktury komponent skriptování class TDBEdit (TCustomMaskEdit) TEdit zjednodušení struktury komponent skriptování class TDBMemo (TCustomMemo) TMemo zjednodušení struktury komponent skriptování class TDBText (TCustomLabel) TLabel zjednodušení struktury komponent skriptování class TEditButton (TRxSpeedButton) TSpeedButton zjednodušení struktury komponent skriptování class TGIFFrame (TPersistent) bez náhrady v XE-verzi není odpovídající delphi komponenta enum TGlyphOrientation = (gohorizontal,govertical) bez náhrady v XE-verzi není odpovídající delphi-výčet class THandleStream (TStream) TMemoryStream v XE-verzi není delphi-komponenta podporovaná class TMaskEdit (TCustomMaskEdit) TEdit zjednodušení struktury komponent skriptování class TMemoryRecord (TPersistent) bez náhrady v XE-verzi není delphi-komponenta podporovaná enum TMimeChar = (ISO_8859_1,ISO_8859_2,ISO_8859_3,ISO_8859_4,ISO_8 859_5,ISO_8859_6,ISO_8859_7,ISO_8859_8,ISO_8859_9, ISO_8859_10,ISO_8859_13,ISO_8859_14,ISO_8859_15,C P1250,CP1251,CP1252,CP1253,CP1254,CP1255,CP1256, CP1257,CP1258,KOI8_R,CP895,CP852,UCS_2,UCS_4,UT F_8,UTF_7,UTF_7mod,UCS_2LE,UCS_4LE,UTF_16,UTF_ 16LE,UTF_32,UTF_32LE,C99,JAVA,ISO_8859_16,KOI8_U, KOI8_RU,CP862,CP866,MAC,MACCE,MACICE,MACCRO, MACRO,MACCYR,MACUK,MACGR,MACTU,MACHEB,MA CAR,MACTH,ROMAN8,NEXTSTEP,ARMASCII,GEORGIA N_AC,GEORGIAN_PS,KOI8_T,MULELAO,CP1133,TIS620, CP874,VISCII,TCVN,ISO_IR_14,JIS_X0201,JIS_X0208,JIS _X0212,GB1988_80,GB2312_80,ISO_IR_165,ISO_IR_149, EUC_JP,SHIFT_JIS,CP932,ISO_2022_JP,ISO_2022_JP1,I SO_2022_JP2,GB2312,CP936,GB18030,ISO_2022_CN,IS O_2022_CNE,HZ,EUC_TW,BIG5,CP950,BIG5_HKSCS,EU C_KR,CP949,CP1361,ISO_2022_KR,CP737,CP775,CP853,CP855,CP857,CP858,CP860,CP861,CP863,CP864,CP865,CP869,CP1125) konstanty Encoding_cpKamenicky, Encoding_cp852, Encoding_cp1250, Encoding_cpISO_8859_2, Encoding_cpASCII, Encoding_cpMacIntosh, Encoding_cpUTF_8, Encoding_cpUTF_16 v XE-verzi je pro převody kódování řetězců použitá třída TEncoding class TNxAction (TNxCustomAction) TAction zjednodušení struktury komponent skriptování class TNxActionList (TCustomActionList) TActionList zjednodušení struktury komponent skriptování class TNxActionListController (TNxCustomActionListController) TActionListController zjednodušení struktury komponent skriptování class TNxButton (TButton) TButton zjednodušení struktury komponent skriptování class TNxCheckAction (TNxAction) TCheckAction zjednodušení struktury komponent skriptování class TNxColorDialog (TColorDialog) TColorDialog zjednodušení struktury komponent skriptování class TNxComboBevel (TNxCustomPanel) TComboBevel zjednodušení struktury komponent skriptování class TNxConditionLink (TObject) TConditionLink zjednodušení struktury komponent skriptování class TNxConditionList (TNxCustomConditionList) TConditionList zjednodušení struktury komponent skriptování class TNxConditionListItem (TNxCustomConditionListItem) TConditionListItem zjednodušení struktury komponent skriptování class TNxControlBox (TNxPanel) TControlBox zjednodušení struktury komponent skriptování enum TNxControlBoxLayoutDirection = (ldvertical,ldhorizontal,ldverticalbottom,ldhorizontalright) enum TNxControlBoxLayoutType = (ltfront,ltcenter,ltopposite,ltautosize) enum TNxCpDefinition = (cpkamenicky,cpwin31ce,cpwin1250,cpecma,cplatin2,cp UsaAnsi,cpIbm,cpSemigraph,cpMacIntosh) TLayoutDirection TLayoutType konstanty Encoding_cpKamenicky, Encoding_cp852, Encoding_cp1250, Encoding_cpISO_8859_2, Encoding_cpASCII, Encoding_cpMacIntosh, zjednodušení struktury komponent skriptování zjednodušení struktury komponent skriptování v XE-verzi je pro převody kódování řetězců použitá třída TEncoding Stránka 20 z 22

Encoding_cpUTF_8, Encoding_cpUTF_16 class TNxCustomAction (TCustomAction) TAction zjednodušení struktury komponent skriptování class TNxCustomActionListController (TComponent) TActionListController zjednodušení struktury komponent skriptování class TNxCustomComboEdit (TCustomComboEdit) TComboEdit zjednodušení struktury komponent skriptování class TNxCustomConditionList (TCustomControl) TConditionList zjednodušení struktury komponent skriptování class TNxCustomConditionListItem (TObject) TConditionListItem zjednodušení struktury komponent skriptování class TNxCustomDBComboEdit (TNxCustomComboEdit) TComboEdit zjednodušení struktury komponent skriptování class TNxCustomDirectoryEdit (TCustomComboEdit) TDirectoryEdit zjednodušení struktury komponent skriptování class TNxCustomInfoGridPanel (TNxPanel) TInfoGridPanel zjednodušení struktury komponent skriptování class TNxCustomMultiGrid (TCustomControl) TMultiGrid zjednodušení struktury komponent skriptování class TNxCustomNumEdit (TRxCustomCalcEdit) TNumEdit zjednodušení struktury komponent skriptování class TNxCustomPageControl (TPageControl) TPageControl zjednodušení struktury komponent skriptování class TNxCustomPanel (TPanel) TPanel zjednodušení struktury komponent skriptování class TNxDBCheckBox (TDBCheckBox) TCheckBox zjednodušení struktury komponent skriptování class TNxDBComboBox (TRxDBComboBox) TComboBox zjednodušení struktury komponent skriptování class TNxDBComboEdit (TNxCustomDBComboEdit) TComboEdit zjednodušení struktury komponent skriptování class TNxDBDateEdit (TDBDateEdit) TDateEdit zjednodušení struktury komponent skriptování class TNxDBDirectoryEdit (TNxDirectoryEdit) TDirectoryEdit zjednodušení struktury komponent skriptování class TNxDBEdit (TDBEdit) TEdit zjednodušení struktury komponent skriptování class TNxDBGrid (TRXDBGrid) TDBGrid zjednodušení struktury komponent skriptování class TNxDBMemo (TDBMemo) TMemo zjednodušení struktury komponent skriptování class TNxDBNumEdit (TNxCustomNumEdit) TNumEdit zjednodušení struktury komponent skriptování class TNxDBObjectComboEdit (TNxCustomDBComboEdit) TObjectComboEdit zjednodušení struktury komponent skriptování class TNxDBRadioGroup (TCustomRadioGroup) TRadioGroup zjednodušení struktury komponent skriptování class TNxDBRoundPanel (TCustomPanel) TDbRoundPanel zjednodušení struktury komponent skriptování class TNxDBText (TDBText) TLabel zjednodušení struktury komponent skriptování class TNxDirectoryEdit (TNxCustomDirectoryEdit) TDirectoryEdit zjednodušení struktury komponent skriptování class TNxFindDialog (TFindDialog) TFindDialog zjednodušení struktury komponent skriptování class TNxFontDialog (TFontDialog) TFontDialog zjednodušení struktury komponent skriptování class TNxInfoGridPanel (TNxCustomInfoGridPanel) TInfoGridPanel zjednodušení struktury komponent skriptování class TNxListView (TListView) TListView zjednodušení struktury komponent skriptování class TNxMainMenu (TMainMenu) TMainMenu zjednodušení struktury komponent skriptování class TNxMultiAction (TNxAction) TMultiAction zjednodušení struktury komponent skriptování class TNxMultiGrid (TNxCustomMultiGrid) TMultiGrid zjednodušení struktury komponent skriptování class TNxNumEdit (TNxCustomNumEdit) TNumEdit zjednodušení struktury komponent skriptování class TNxOpenDialog (TpsvOpenDialog) TOpenDialog zjednodušení struktury komponent skriptování class TNxOrderByPanel (TNxPanel) TOrderByPanel zjednodušení struktury komponent skriptování class TNxPageControl (TNxCustomPageControl) TPageControl zjednodušení struktury komponent skriptování class TNxPanel (TNxCustomPanel) TPanel zjednodušení struktury komponent skriptování enum TNxPanelColor = (pcdefault,pccustom,pcwizardwhite,pctabsheetgray) TPanelColor zjednodušení struktury komponent skriptování class TNxPrintDialog (TPrintDialog) TPrintDialog zjednodušení struktury komponent skriptování class TNxPrinterSetupDialog (TPrinterSetupDialog) TPrinterSetupDialog zjednodušení struktury komponent skriptování class TNxRadioGroup (TRadioGroup) TRadioGroup zjednodušení struktury komponent skriptování class TNxReplaceDialog (TReplaceDialog) TReplaceDialog zjednodušení struktury komponent skriptování class TNxSaveDialog (TpsvSaveDialog) TSaveDialog zjednodušení struktury komponent skriptování Stránka 21 z 22

class TNxScrollBox (TScrollBox) TScrollBox zjednodušení struktury komponent skriptování class TNxSeparatorAction (TNxCustomAction) TSeparatorAction zjednodušení struktury komponent skriptování class TNxShortCutList (TStringList) TShortCutList zjednodušení struktury komponent skriptování class TNxTreeView (TTreeView) TTreeView zjednodušení struktury komponent skriptování class TNxWebBrowser (TEmbeddedWB) TWebBrowser zjednodušení struktury komponent skriptování class TNxXHTMLEditor (TWinControl) TXHTMLEditor zjednodušení struktury komponent skriptování class TRxCalcEdit (TRxCustomCalcEdit) TNumEdit v XE-verzi není odpovídající delphi komponenta class TRxCustomCalcEdit (TCustomNumEdit) TNumEdit v XE-verzi není odpovídající delphi komponenta class TRxDBComboBox (TCustomDBComboBox) TComboBox v XE-verzi není odpovídající delphi komponenta class TRxDBGrid (TDBGrid) TDBGrid v XE-verzi není odpovídající delphi komponenta enum TRxDropDownMenuPos = (dmpbottom,dmpright) bez náhrady v XE-verzi není odpovídající delphi-výčet class TRxGIFAnimator (TRxImageControl) TAnimate v XE-verzi není odpovídající delphi komponenta class TRxImageControl (TGraphicControl) TAnimate v XE-verzi není odpovídající delphi komponenta class TRxMemoryData (TDataSet) TMemoryDataset v XE-verzi není odpovídající delphi komponenta type TRxNumGlyphs TNumGlyphs v XE-verzi není odpovídající delphi-typ class TRxSpeedButton (TGraphicControl) TSpeedButton v XE-verzi není odpovídající delphi komponenta class TStringStream (TStream) TMemoryStream v XE-verzi není delphi-komponenta podporovaná class TZipMaster19 (TComponent) TZipFile v XE-verzi není odpovídající delphi komponenta class TpsvOpenDialog (TOpenDialog) TOpenDialog v XE-verzi není odpovídající delphi komponenta class TpsvSaveDialog (TSaveDialog) TSaveDialog v XE-verzi není odpovídající delphi komponenta const favolumeid: Integer = 8 bez náhrady v XE-verzi není konstanta podporovaná enum TNxBucketEventType = (beinsert,beremove,bechangedata,bechangestate) bez náhrady výčet nemá smysl ve skriptování zveřejňovat class TNxBucket (TObject) bez náhrady třídu nemá smysl ve skriptování zveřejňovat class TNxKeyBucket (TNxBucket) bez náhrady třídu nemá smysl ve skriptování zveřejňovat class TNxContainer (TObject) bez náhrady třídu nemá smysl ve skriptování zveřejňovat class TNxCollection (TNxContainer) bez náhrady třídu nemá smysl ve skriptování zveřejňovat Stránka 22 z 22