Jak přejít ke 4D v14" ! Část 3" ! Úvod" !
Jak jsem již řekl 4D v14 má tolik nových rysů, že je nelze odprezentovat v jedné nebo dvou sekcích. Další rysy se přidávájí každé 3 měsíce v konceptu R-verzí. To vede k tolika novým rysům, že jeden den výcviku v upgrade nemůže stačit, aby vás seznámil se všemi inovacemi.!
! Tato sekce se soustředí jen na některé rysy ze školeni Upgrade training in detail.! !
Témata! • Velká sada funkcí přichází s multi-stylovými textovými oblastmi, • 4D Write Pro, jak to funguje, a široký rozsah kompatibility, • Podepisování kódu Apple a jak má být použit v aplikacích Mac OS X, • Jak snadné je vytvořit moderní uživatelské rozhraní s novými možnostmi pro uložení geometrie formuláře. • Automatický update • Primární klíče • Kompletně mazatelná pole
! Multi stylové textové oblasti !
Multi-stylový text je text, který může mít celou řadu vlastností stylu ve stejném textovém bloku. A to nejen pro všechny znaky oblasti stejné vlastnosti, ale různé znaky mohou mít různé vlastnosti stylu.
! !
Bez použití 4D Write to nebylo předtím ve 4D nikdy možné. Nyní můžete mít vícestylový text v polích a proměnných typu string nebo text. To lze provést jednoduše nastavením možnosti v seznamu vlastností objektů podporujících vícestylový text:
!!
Volba "Vícestylový" umožňuje objektu obsahovat text s jinými styly, atributy mohou být použité i na jeden znak. Uživateli dovolíte formátovat svůj text s pomocí zaškrtnutí možnosti “Nabídka kontextu” ve vlastnostech objektu (téma Vstup). Tato volba umožňuje kontextové menu v objektu pro formátování vybraného textu pomocí pravého tlačítka myši.
1
!
K dispozici je i 3. volba “Uložit s výchozí visačku stavu style tags”. Další obrázek ukazuje, co tato volba dělá. Vidíte 2 záznamy v seznamu. Horní z nich je uložen pouze s tagy stylu, co použil uživatel, dolní i s tagy výchozího stylu z návrháře:
!
!
Uživatelské tagy jsou značky obsahující formát, jenž uživatel zvolil. V našem případě text horního záznamu "My Text" byl nastaven na tučný. Text spodního záznamu "Také můj text" byl nastaven na 14 bodů velikost písma. Jsou zde však i jiné značky, které nebyly nastavené uživatelem, jako rodina fontů, zarovnání textu a tak dále. Tyto značky pocházejí ze standardního formátování objektu ve formuláři samém v prostředí návrháře a jsou obsaženy v záznamu z důvodu zaškrtnutí této možnosti v návrhu.
!! Historie multi stylových oblastí !
Vícestylový text interně pracuje s tzv HTML rozpětím značek (span tags), které byly zavedeny v roce 1995 jako univerzální prvek pro formátování textu na webu. Podívejte se na následující ukázku zdrojového kódu:
!<span style = "atribut: value"> Můj text span> !<span style = "font-weight: bold> Můj text span> !Span tagy jsou grupovány, neboli si můžete říci jsou “spanovány” pro výběr textu. Následuje
vlastnost stylu a ta určuje, která vlastnost stylu je nastavena a v jaké hodnotě.Text může mít několik párů vlastnost / hodnota, jak již také víme, z C_OBJECT proměnných v 4D. V tomto příkladu je text převedený na tučný. Najdete v příručkách, které vlastnosti stylu jsou podporovány 4D. Buďte si vědomi toho, že v závislosti na použitém prohlížeči a použitém enginu rozboru stránky (parsing engine) se výsledné zobrazení může lišit.
! Multi stylový text ve verzi 12 ! 4D v12 představila pole a proměnné typu string a text jako multistylové oblasti textu a také 3 nové příkazy k nastavení multi stylu programátorsky. !!
!
• OBJECT SET STYLE TEXT přejmenován na ST SET TEXT: Text vložený pomocí tohoto příkazu může mít svůj vlastní span tag formátování. Pokud tomu tak není využívá se již existující formát (y) - návrhář. • OBJECT SET PLAIN TEXT přejmenován na ST SET PLAIN TEXT: Nesmí mít vlastní span tagy nebo pokud má existující formátování pomocí span tagu je odstraněno. Používá rovněž již existující formát (y) z návrháře. • OBJECT SET STYLED TEXT ATTRIBUTES přejmenován na ST SET ATTRIBUTES: Nastavuje páry vlastnost / hodnota pro formátování.
Všechny tyto 3 příkazy settery mají odpovídající protějšky pro čtení - gettery. Přejmenování příkazů bylo provedeno s v14 a do programovacího jazyku byla přidána nová specifická témata pro vícestylové textové oblasti.
2
Příklad 30-Multi_Text
! !
Podívejme se na malé demo k připomenutí začátků multi stylu.
! ! !
1. Nabídka Soubor, položka “Start demo”
Dialog obsahuje 2 textové oblasti.Horní z nich je v multi-stylu, a ukazuje formátovaný text. Spodní není multi-styl a měl by vám ukázat span tagy používané pro formátování. Žádný rozdíl není vidět, protože neexistuje žádné formátování. 2. Poklepejte “demo” v horní textové oblasti 3. Pravý klik ve vybraném slovu
Objeví se kontextové menu umožněné v návrháři v seznamu vlastností .Horní část menu jsou standardní příkazy schránky. V dolní části máte příkazy a podnabídky pro formátování textu. 4. Vyberte barvu “červená” a stiskněte tabelátor
Máme obecný span-tag přes veškerý text pocházející z návrháře. A vnitřní span tag, který definuje červenou barvu pro slovo “demo”.
!
5. Tlačítko “Nastavit styl text bez stylů”
Toto je v14, takže příkaz v12 je již přejmenován. Nahradili jsme text "demo" na “Demonstation". Vložený text nemá žádné atributy stylu. Dostane jen vlastnosti stylu z nahrazovaného textu, protože je vkládán mezi jeho span tagy.
!
!
6. Tlačítko “Nastavit styl text se styly” a tabelátor
V tomto případě vkládaný text má svůj styl. Takže nejenom text, ale i formát je v tomto případě nahrazen. Vnější stejný tag se ruší. 7. Tlačítko “Nastavit prostý” text
Zde vkládáme text, který obsahuje specielní znaky, které jsou také užívané v samotných span tagech. V tomto případě se rovnou konvertují do HTML subjektů.
! ! ! !
8. Vyberte všechen text v horní oblasti a tlačítko “Tučný”
Je přidáno formátování tučně do celého textu a je také tak nastaven span tag.
9. Tlačítko “Podtržený”
V tomto případě vidíme, že span tag může mít více než 1 pár vlastnost/hodnota.
10. Tlačítko “Storno”
11. Nabídka “Soubor” a položka “Získejte co potřebujete”
Dále vám ukážu, jak dostat to co budete potřebovat, například pokud budete muset použít text pro vyhledávání a třídění. Horní proměnná ukazuje zdrojový text, přicházející z pole databáze. Spodní proměnná ukazuje značky, pokud je text těmito značkami formátován.
! ! !
12. Tlačítko “Získat délku”
Vidíme, že není rozdíl, jestli je nebo není text formátován. Počet znaků je totožný.
13. Vyberte vše v horním textu a nastavte jinou velikost a tabelátor
Po libovolném formátování spodní text obsahuje span tagy.
14. Tlačítko “Získat délku”
Jestliže nyní určíme velikost je již jiná. Důvod je, že text nyní obsahuje formátování a span tagy, jež jsou považovány za regulérní znaky.
!
15. Vložte libovolný text + tab a tlačítko “Get edited text”
Funkce Get edited text vrací všechen text, který byl upraven, v tomto případě i se span tagy, jež přináležejí textu. To je v pořádku pokud chcete span tagy rovněž programátorsky upravovat, ale ne v případě, že potřebujete reálnou informaci o textu, například pro třídění, nebo hledání v textu.
Tento příkaz je podobný ST Get text - používá se především při událoststech On Before Keystroke, On After Keystoke.
!
3
16. Tlačítko “ST Get plain text”
V případě, že potřebujeme jen holý text použijte funkci ST Get plain text. Nyní můžete použít syrový zdrojový text pro hledání nebo operace s řetězci.
!
17. Tlačítko “ST Get text”
Tady vám funkce ST Get text pomůže získat text v multi stylu i s patřičnými span tagy.
Multi stylový text ve verzi 13/14
!
Existují velmi používané zásuvné moduly jako LineStarts od Dominique Hermsdorfa nebo Text2Array od Dave Battona. Rozdělují text do array prvků dané velikosti pro určení konce řádků pro přesný tisk. Pro tento výpočet se bere v úvahu font, styl a velikost textu,. 4D v13 představila nový příkaz pro text, TEXT TO ARRAY, který teď dělá totéž i s multi sytlovým textem.
!!
Příklad 14-TextToArray
! !
Podívejme se na malé demo pro tento nový příkaz.
!
1. Nabídka Soubor, položka “Start demo”
V horní části máte nějaký text rozdělený do array a listbox na pravé straně k zobrazení textu do array. Níže jsou 3 tlačítka k rozdělení textu. Najdete hlavní příkaz jako text pod tlačítky. Důležitým bodem je hvězdička jako poslední parametr. To určuje, zda text je zpracován jako multi-stylový text, nebo ne. Dělení se provádí po slovech a parametrem je šířka řádky v bodech. 2. Přeformátujte drobně text ve velikosti , stylu a barvě
!
3. Tlačítko “Transformuj na 100” nebo “Transformuj na 200”
Text je rozdělen do prvků pole. Všimněte si, že nepoužíváme hvězdičku. V tomto případě se celý text bere jako syrový text, i se span tagovými značkami. To není chyba, ale způsob práce.
!
!
4. Tlačítko “Multi styl”
Tady je v hvězdičce jako parametr. Pokud přejdete dolů můžete vidět, že i v tomto případě je text rozdělen do prvků pole. Jeden prvek může mít různé styly současně. Samozřejmě, listbox musí být nastaven na multi-styl zobrazení “vícestylové” zobrazení textu.
Multi stylový text ve verzi 14
! K tomu, abychom udělali vícetylové oblasti pružnější a trochu podobnější 4D Write přidali jsme některé důležité nové funkce do v14: !!
!! !!
• Pro přiřazení písma uživatel může nyní použít dialogové okno písma ze systému. • Kontextové menu obsahuje poslední použitá písma v seznamu “Nedávná písma". • Pomocí programování můžete do textu vložit / získat z něj / počítat a zmrazit v něm odkazy, jako jsou adresy URL, pole, proměnné, 4D příkazy, metody nebo výrazy. • Skupinu příkazů OBJECT SET ... lze použít s multi-stylovými textovými objekty. V předchozích verzích 4D pomocí těchto příkazů se span tagy stylu obsažené v textu přepsaly. To už není případ v14. • V neposlední řadě v14 normalizuje konce řádků. Předtím jste mohli mít ve svém obsahu různé konce řádků v závislosti na platformě, "\ r" v OS X nebo "\ r \ n" v systému Windows. Nyní mají proměnné a pole, jako objekty formuláře s prostým nebo bohatým textem pouze návratový znak "\ r" označující konec řádky. Díky tomu je mnohem snazší použít například HIGHLIGHT TEXT nezávisle na platformě. Nic se nezmění, pokud se zpracovávají textové dokumenty přicházející z různých operačních systémů.
4
!
Příklad 29-Styled_Text
! !
V dalším příkladu vám chci ukázat nejdůležitější vlastnosti, které zavedla v14. První část zobrazuje různé systémové dialogy, které teď můžete použít.
1. Nabídka Soubor, položka “Start demo”
Máme spoustu tlačítek a textovou oblast multi-stylu.
!
2. Zvolte slovo "vzorový" a klikněte pravým tlačítkem myši na slovo
Vybráním Font "Písmo ..." můžete otevřít systémový dialog pro výběr písma. Vzhled závisí na operačním systému, kde aplikace běží. Tuto položku v kontextové nabídce lze vypnout ve vlastnostech.
! !
3. Vyberte libovolné písmo a zavřete dialogové okno
4. Znovu vyberte "vzorový" a klikněte na tlačítko “Vybrat písmo"
Díky novému příkazu OPEN FONT PICKER MŮŽE BÝT dialog systémového písma také vyvolán programováním.
! ! !
5. Vyberte libovolné písmo a zavřete dialogové okno
Fungování je samozřejmě stejné.
6. Znovu otevřete kontextové menu, submenu “Nedávná písma"
Toto submenu zobrazí posledních 10 písem, která byla použita.
7. Tlačítko “Nedávná písma"
Novým příkazem SET RECENT FONTS lze nastavit nedávná písma do podnabídky, kdy chcete. Vypnutím systémového dialogu výběru písma a pomocí seznamu nedávných písem můžete ovládat, která písma může uživatel použít. Pokud nepoužíjete správný název písma, nic se neděje, žádný font se nenastaví.
!
8. Kontextové menu "Poslední písma"
Pokud si pamatujete přesypali jsme do array všechna písma. Submenu může obsahovat pouze 10 prvků. Vždy posledních 10 prvků je bráno v úvahu.
!
9. Zvolte "vzorový" a tlačítko “Barva textu"
Nyní můžete použít systémový výběr barvy s příkazem OPEN COLOR PICKER a parametrem "0" na barvu popředí.
!
1. Vyberte "vzorový" a tlačítko “Vybarvit pozadí"
S parametrem "1", nastaví barvu pozadí.
!
Druhá část tohoto dema vám ukáže, co je možné s odka
1. Umístěte kurzor mezi textovými řádky a stiskněte tlačítko "Vložit pole"
To se provádí pomocí nového příkazu ST INSERT EXPRESSION. Podobným způsobem jste vkládali odkazy do 4D Write.
!
! !
2. Tlačítko "Reference / hodnoty" zobrazí odkaz
Zde jsme vložili pole databáze a lze přepínat mezi zobrazením referencí nebo hodnot. 3. Umístěte kurzor mezi textovými řádky a stiskněte tlačítko "Vložit proměnnou"
Stejně se pracuje s proměnnými. 4. Vložte si nový řádek a stiskněte tlačítko “Vložit metodu"
A můžete vložit své vlastní metody, které vracejí text v parmetru $0. Prosím, mějte na paměti, že vše, co chcete vložit, musí být typu text. Není možné vložit obrázky.
! !
5. Vložit break a tlačítko "Vložit URL”
Můžete vložit adresu URL.
5
6. CTRL-klikněte na adresu URL
Tlačítkem CTRL-stisknuté klávesy na URL se URL automaticky otevře v prohlížeči.
! ! !
7. Vložte si nový řádek a tlačítko "Vložit 4D funkci”
Můžete také vložit 4D funkce, které vracejí hodnotu.
8. Vložte nový řádek a stiskněte tlačítko "Vložit formátované pole"
Můžete formátovat vložený výraz stejným způsobem, jak to znáte ze samotné 4D.
9. Vložte nový řádek a stiskněte tlačítko "Vložit uživatelský odkaz"
Navíc můžete vložit jakýkoliv odkaz, který chcete. To lze provést pomocí tzv “uživatelského odkazu". To není 4D výraz. Je vložen pomocí příkazu ST SET TEXT. Zdá se, že reaguje na klepnutí myši stejným způsobem, jako URL. Ale ve skutečnosti to nic nedělá. Musíte dostat událost, dostat referenční text a naprogramovat požadovanou akci, jako je otevření souboru nebo provádění metody.
!
10. Vyberte v textu text přicházející z metody / url / uživatelského odkazu a stiskněte tlačítko “Získat typ textu"
To je důležitá metoda ovládání uživatelských akcí v multi textové oblasti. Co je klepnuto, určíte pomocí ST Get context type, získáte odkaz na typ textu a provedete potřebnou akci v case of stromu. V tomto případě jsme klikli na odkaz uživatele a chceme ukázat text s span tagy v samostatném okně.
! !
11. Klikněte na tlačítko "Zmrazit"
Poslední tlačítko zmrazí všechny odkazy.
! ! ! ! !
12. Klikněte na tlačítko "Reference / hodnoty"
Všechny odkazy jsou pryč.
Poslední část tohoto dema ukazuje, co jsme přidali do multi-stylu textových oblastí pro vaše pohodlí. 1. Vytvořte nový formulář projektu 2. Otevřete knihovnu objektů
Tam byla předtím dostupná oblast multi stylového textu jako objekt knihovny. Byla to prostě proměnná typu textu s možností "vícestylové" aktivovanou. Ve v14 jsme zlepšili knihovnu objektů pomocí integrované komplexní oblasti bohatého textu. 3. Přesuňte oblast rich text do formuláře
Ten se skládá z vícestylové textové oblasti se spoustou prvků, které mohou být použity pro formátování textu. 4. Nastavte tlačítko "Init" na “viditelné jako výchozí"
Nastavujeme toto tlačítko pro viditelné pouze z demonstračních důvodů. Normálně byste to udělali programováním. 5. Spusťte formulář
A tady máme bohatý textový editor bez nutnosti programovat cokoli.
!
! !! ! !
6. Tlačítko "Init" inicializuje oblast
Musíte to udělat jednou na začátku. Nyní je oblast připravena k použití. To je to, co jsem vám chtěl ukázat. Máte-li zájem, prosím prozkoumejte si to sami. 7. Hrajte si v oblasti s bohatým textem.
To se provádí pomocí nového příkazu ST INSERT EXPRESSION. Podobným způsobem jste vkládali odkazy v 4D Write.
6
Nový 4D WRITE PRO
!! Všichni z vás ví o 4D Write, a většina z vás jej používala. Zvyšuje možnosti 4D zpracování textu a řízení správy dokumentů. 4D Write byl představen na počátku 90. let minulého tisíciletí, takže je trochu starý, více než 20 let. Jedná se o vlastní řešení, a to je založeno na staré technologii a starém kódu. Modernizace 4D Write by vyžadovala kompletní přepsání. A modernizace je nezbytná, aby vám přinesla nové funkce, vzhledem k podpoře HTML a přechodu na Cocoa.
!Vzhledem k tomu, že kompletní přepsání je příliš časově náročné a finančně náročné, rozhodli jsme se zavést nový 4D Write Pro, založený na RTF enginu, který je také používán pro multi stylové textové oblastí. Podobně jako 4D Write i 4D Write Pro potřebuje licenci, ale pracuje se stejnou 4D Write licenci, kterou právě používáte.
!Nechceme čekat s poskytnutím nového 4D Write Pro, až bude kompletně připaven za 1 či 2 roky.
Jak jsme provedli s V14 R-verzemi dáme vám to, co je v současné době připraveno a ověřeno. To znamená, že budete mít nejnovější funkce nepřetržitě každé 3 měsíce.
!Chcete-li prozkoumat další 2 dema budete potřebovat nejnovější V14 R5 verzi s 4D Write Pro v ceně nebo V15. ! ! Příklad 31-4D_Write_Pro ! ! ! http://livedoc.4d.com/4D-Write-Pro-Reference-14-R5/4D-Write-Pro-Reference. 100-1871582.en.html
Podívejme se na příklad, který ukazuje nový 4D Write Pro.
1. V adresáři "Resources" otevřete "Nice_Content.htm"
To je HTML stránka, kterou lze otevřít v libovolném prohlížeči.
! ! ! ! !
! ! !
2. Zobrazte zdroj stránky v kontextovém menu prohlížeče
Tyto stránky jsou formátovány pomocí CSS (cascading styl sheet). V těle stránky HTML máte obsah stránky a možná další formátování pomocí HTML span tagů. 3.
Menu "Soubor" položka "Spustit demo"
4. Tlačítko "Zavést HTML document"
V horní části máme 4D Write Pro oblast zobrazující obsah. 5. Změňte velikosti formuláře
Jak jsme viděli v prohlížeči, tak se text automaticky posune i zde při změně velikosti formuláře. 6. Přidejte řádek pod obrázkem a vložte další snímek
Můžeme editovat přímo v oblasti 4D Write Pro. 7. Změňte velikosti obrázku, stiskněte tlačítko "Aktualizovat HTML zdroj"
Pokud upravíte 4D Write Pro oblast, kterou lze aktualizovat zdroj HTML. Obraz byl vložen s kódováním Base64.
Schémata kódování Base64 se běžně používají v případě, že je potřeba zakódovat binární data, která mají být uložena a převedena přes média, která jsou navrženy k řešení textových dat. To má zajistit, že data zůstávají beze změny v průběhu přenosu. Base64 je běžně používán v celé řadě aplikací, včetně e-mailu prostřednictvím MIME a skladování komplexních dat ve formátu XML. 8.
Úpravte zdroj HTML, výšku obrázku "img._img1"
Stejně jako s textem v multi-stylu můžete upravit zdroj a změnit velikost obrázku.
9. Tlačítko "Update 4D Write Pro"
A můžete aktualizovat 4D Write Pro oblast, pokud jste změnili zdroj.
7
!
!
!
! !
10. Tlačítko "Save HTML document"
Upravený dokument lze zapsat do souboru na disku. 11. Otevřete kontextové menu a analyzujte podmenu
Pojďme se podívat na obsah kontextového menu, abychom viděli, co je možné v 4D Write Pro dnes. Části 1, 2 a 4 v kontextovém menu jsou přesně stejné jako v vícestylových textových oblastech. To znamená, že všechny kontroly pravopisu, akce schránky a formátování span tag fungují také pro 4D Write Pro.
Část 3 obsahuje hodně daších možností formátování 4D Write Pro, které nejsou založeny na span tagách, ale jsou specifické pro CSS styly. Chci zmínit některé z nich, jako jsou:
• Pro dokumenty: zoom, odsazení, rámečky a obrázky na pozadí
• Pro odíly: zarovnání, odsazení, definování tabulátorů a práci s CSS styly
• Vkládání obrázků do textu
• A mnohem více 12. Přepněte do prostředí návrháře, OM tlačítka "Zavést ..."
4D Write Pro oblast je vložena jako nativní 4D objekt z plug in oblasti. Jedná se o objekt typu C_OBJECT. Je ale chráněn a nemá žádný viditelný obsah v debuggeru.
Nová funkce WR New vytvoří 4D Write Pro oblast v hlavní paměti se zdrojem HTML pocházejícím z textové proměnné. Zdroj je načten z HTML dokumentu na disku. Nadcházející realizace bude také používat 4D Write blob (ze starého 4D Write). 13. OM tlačítka “Nebo zavést takto"
Nebo můžete otevřít 4D Write Pro dokument tímto způsobem. Vytvoříte jakousi oblast off-screen v paměti. Chcete-li ji zobrazit na obrazovce, můžete použít příkaz OB COPY. Není žádná skutečná oblast off-screen, jak ji znáte ze staré verze 4D Write. Ale implementace je plánována na nadcházející verze.
A když jsem mluvil o zobrazování dovolte mi, abych vám řekl následující. Nechceme používat žádný HTML renderovací (překladový, zobrazovací) engine systému nebo jakéhokoli prohlížeče. Napsali jsme si ho od začátku sami.
Proč? Renderovací engine systému nebo prohlížeče pracuje na bázi zobrazení pro displej. To znamená, že nemáte potřebu konce stránky. Stejný problém je s tiskem. Prohlížeče opravdu nemají potřebu vytisknout stránky 2 až 14. Takže jsme si dali tuto práci, abyste měli možnost řídit přesné zobrazení a tisk založené na našich HTML stránkách. 14. OM na tlačítko "Uložit ..."
Zde využíváme nový příkaz WR EXPORT. To zapíše obsah 4D Write Pro oblasti jako HTML zdroj do textové proměnné. Poté se tato zapíše do HTML dokumentu na disk. 15. OM tlačítka "Aktualizovat ..."
Tyto metody objektu aktualizuje zobrazení zdrojového textu pro případ ruční úpravy v HTML zdroji nebo ve 4D Write Pro oblasti.
Text z vícestylových textových oblastí
Kompatibilita je pro nás důležitá otázka.
! ! ! !
1. Záložka “Bohatý text z db"
Myslím, že si vzpomínáte na text v textovém poli multi-stylu, jenž jsme již viděli v jiném demo.
2. Tlačítko "Zobrazit odkazy"
To je jen, abych vám ukázal, že stále máme dynamický obsah.
3. Tlačítko "Do 4D Write Pro"
Přesně stejné můžeme zobrazit v 4D Write Pro oblasti na pravé straně.
8
4. Tlačítko "Zobrazit hodnoty"
A pokud se přepnete do hodnot opět vidíme stejný obsah.
!
5. CTRL-myš přes odkazy
A v neposlední řadě dva různé druhy vazeb pracují stejným způsobem jak ve 4D Write Pro tak v multi stylových textových oblastech.
Záložka “Kompatibilita 4D příkazů”
Starý 4D Write má vlastní programovací jazyk, který se musíte naučit a používat k získání naprogramovaných výsledků. Rozhodli jsme se integrovat nový 4D Write Pro jako nativní 4D objekt formuláře, kde lze použít programovací jazyk 4D. Všechny 4D příkazy, které by dávaly smysl, pro použití s tímto novým objektem by měly fungovat.
Na levé straně máme 4D Write Pro oblast. Na tlačítka jsem implementoval nějaké programování, abysem dokumentoval výběr možných a užitečných druhů 4D příkazů.
!
1. Tlačítko "Vložit odkazy"
Nechci vysvětlovat celý kód do detailu. Máte vzorek a kód je dobře zdokumentován. Je zřejmé, že programování je trochu odlišné od toho, co jste viděli předtím, protože musíme simulovat akce uživatele a programování. Provádíme následující operace:
• Text je vložen
• Font a barva textu přiřazena
• Jedno slovo je formátováno odlišně
• Všechny možné výrazy vloženy
• Je vybrán celý text
• A nakonec jsme překreslili oblast k provedení renderingu
Zde využíváme 4D textové příkazy pro multistyl, stejně jako příkazy 4D pro manipulace s řetězci a kontrolu vstupu.
!
2. Tlačítko "Zobrazit odkazy / hodnoty"
Odkazy se do 4D Write Pro vkládají stejným způsobem jako do vícestylové textové oblasti, protože 4D Write Pro je založen na stejném RTF motoru.
! !
3. Tlačítko "Freeze"
Chceme zmrazit odkazy.
4. Tlačítko "Set alignement"
Zde využíváme dvojici objektu příkazů 4D GET / SET. Spousta těchto příkazů je kompatibilních s 4D Write Pro.
! !
5. Tlačítko "Kontrola pravopisu"
Také je možné použít příkazy pravopisu 4D.
6. Tlačítko "WR Find"
Váš starý 4D Write kód nebude pracovat s 4D Write Pro oblastí. Tady vám chci ukázat ekvivalent 4D kódu, který dělá totéž:
• Získat prostý text bez span
• Určit počáteční pozici a délku hledaného textu a vyhledávat
• A v oblasti označit text, který byl nalezen
A to není vše, co můžete udělat. 4D události formuláře budou pracovat s 4D Write Pro. Můžete také použít 4D řízení chyb a událostí..
!
9
Záložka “Drag & Drop”
Dále chceme mluvit o drag & drop. To stejné je pro copy & paste. Spousta věcí pracuje, ale jako obvykle tam jsou některé odlišnosti, které je třeba mít na paměti. Na levé straně se nachází 4D Write Pro oblast, pod tím textová proměnná, kde je vidět zdrojový kód HTML, na pravé straně máme starou 4D Write oblast a 2 proměnné typu obrázek a multi stylový text.
! !
1. Tlačítko “Starý 4D Write dokument" V oblasti 4D Write máme nějaký text přicházející z odkazů, stejně tak vložený obrázek.
2. Vyberte vše v 4D Write oblasti a vložte to do 4D Write Pro Text se vkládá jako skutečný text. Odkazy jsou zmrazeny, protože 4D Write Pro nezná odkazy typu 4D Write. Obrázek nelze vložit (PICT). Pokud by měl být přenesen, musí se zvolit jiný způsob přepravy obrázku (s transformací).
!
3. Tlačítko "Zdroj" Styly se extrahují a jsou vytvořeny jako CSS styly, tak text zachovává své formátování. V případě, že máte v 4D Write zobrazeny odkazy, 4D Write Pro bude mít odkazy stylizované, ale jen jako textový obsah.
!
4. Drag & Drop obrázek z proměnné, zoom 50% Obrázek je vložen. Nastavení velikosti nefungují, protože nejsou uloženy u obrázku, ale s proměnnou.
! ! !
5. Tlačítko "Zdroj" Obrázky vložené tímto způsobem se vloží jako Base64 kód zdroje obrázku. 6. Odstraňte obrázkek a přetáhněte jeden z vnějšku 4D 7. Tlačítko "Zdroj" V tomto případě se jedná o snímek z místního počítače, takže je vložen s jeho místní cestou k souboru.
!
8. Drag & drop stylizovaný text z proměnné a tlačítko "Zdroj" To je podobné 4D Write drag & drop. Informace o stylu je uložena jako CSS a odkazy jsou vloženy jako span tagy.
! !
9. Otevřete "31-Drop.docx" aplikací Word Máme dokument aplikace Word s nějakým stylizovaným textem a obrázkem. 10. D & D všechno do 4D Write Pro, tlačítko "Source" Některé formátování je vloženo jako CSS, jiné jako span tagy. To záleží na tom, jak zdrojová aplikace funguje interně a jak je obsah přepravován přes schránku. Toto není standardizováno. Obrázek chybí.
!
11. Drag & drop obrázek samostatně V tomto případě to funguje a obraz je vložen kódován Base64. I zde závisí na vnitřním způsobu práce zdrojové aplikace. Z toho pak musíte vyvodit, zda můžete přetáhnout všechny dohromady, nebo máte-li přetahovat oddělené typy v oddělených přetaženích.
!
12. ALT-Drag & drop obrázek z proměnné obrázku A pokud přetáhnete & pustíte s alt-stisknutou klávesou je provedena metoda objektu 4D Write Pro oblasti pro událost formuláře “On drop”. Pokud chcete, můžete tedy řídit drag & drop sami.
!!
Viděli jste, že 4D Write Pro je plnohodnotný HTML editor. Stejně jako v 4D Write všechny důležité 4D výrazy sem mohou být vloženy. 4D Write Pro oblast jako nativní 4D objekt formuláře je plně integrována do prostředí návrháře. Takže můžeme garantovat velkou míru kompatibility s jinými 4D objekty a jejich obsahem. A je také kompatibilní s mnoha z 4D příkazy z různých témat, řízením události a zpracováním chyb ve 4D. Drag & drop pracuje mezi 4D objekty, stejně jako z venku.
!
Hlavní problém je pro nás kompatibilita vašich 4D Write dokumentů. Shromáždili jsme spoustu složitých 4D Write dokumentů z celého světa, pro testování k zajištění co nejvíce kompatibility jak je to jen možné. Doufám, že je pochopitelné, že 4D Write programování a odkazy nemohou být vkládány do 4D Write Pro.
!
10
A mějte na paměti. Dáme vám, co je připraveno, testováno a funguje dobře. Uvidíte nové funkce každé 3 měsíce v nadcházejících verzích jako skutečné sloupce, tisk se záhlavím a zápatím, přímé otevírání 4D Write blobů, snadné odesílání pošty a další.
!
Příklad 32-Invoices
! !
Poslední 4D Write Pro demo vám dá určité ideje, jak použít současnou verzi 4D Write Pro již nyní ve vašich aplikacích.
1. Nabídka "Soubor" položka “Faktury/Invoices"
Možná, že někteří z vás si pamatují toto velmi staré demo "Invoices", dodávané s v6.5.
! ! ! !
2. Otevřete libovolnou fakturu
3. Tlačítko "Print", tiskněte jako PDF
Toto demo bylo editováno pro tisk uživatelského formuláře.
4. Tlačítko "Display HTML"
Budu používat demo pro odesílání HTML e-mailů s 4D Write Pro.
5. Tlačítko "Load HTML template/šablonu”
To je moje šablona HTML. Není o moc lepší než staré tisky. Ale chci vám ukázat pracovní princip. Viděli jste to, co 4D Write Pro může dělat s formátováním a CSS.
! !
6. Tlačítko "Reference / hodnoty"
Šablona obsahuje několik odkazů pro zobrazení hodnot aktuálního záznamu.
7. Tlačítko "Reference / hodnoty" znovu
Zajímavá je prázdná oranžová část ve středu. Chceme zobrazit tolik řádků v tabulce, kolik je řádků na faktuře.
!
8. Zvětšit zdroj HTML
Ale nemůžete jednoduše opakovat HTML kód bez programování. Můžete použít JavaScript, nebo 4D web tagy, jako je uděláno zde.
!
!
9. Tlačítko "Process 4D Tags"
Ale jak vyhodnotit tyto značky? Používáme 4D příkaz PROCES 4D TAGS. V tomto kódu vidíte, že tato faktura má nyní 4 řádkové položky. 10. Tlačítko "Update 4D Write Pro"
Obnovili jsme 4D Write Pro oblast, abychom viděli všechny položky faktury.
!
11. Tlačítko "Print" je zakázané
Dalším logickým krokem by bylo vytisknout fakturu. Ale tisk v této chvíli chvíli není ještě plně realizovaný. Ve skutečnosti to zatím funguje pouze v systému Windows a pouze s příkazy Print form a Print object. V příští verzi bude jiný způsob, jak tisknout přímo z 4D Write Pro s záhlavím, zápatím, ovládáním stránek a tak dále.
! ! !
12. Tlačítko "Save attachment"
Ukládáme fakturu jako doklad na disku a vrátíme se k ní později.
13. Tlačítko "Odeslat"
Ačkoliv nemůžeme ještě tisknout, chceme poslat fakturu jako e-mail.
14. Zkontrolujte poštovního klienta kvůli přijaté faktuře
A je to. Mail vypadá stejně jako faktura ve 4D Write Pro oblasti. Téměř! Vykreslování může být různě v závislosti od e-mailového klienta a platformy, kterou používáte. To není chyba. Je to cesta, jak různí mailoví klienti analyzují zdrojový kód HTML a interpretují CSS. Je rozdíl mezi Apple Mail, nebo aplikaci Outlook v systému Windows nebo OS X. To samé se stane s různými prohlížeči, nebo verzemi stejného prohlížeče pod různými operačními systémy.
11
!
A co třeba záložky v seznamu? V posledním sloupci se nevejdou. To je problém, jak funguje zobrazování se záložkami. Nikdy není dobrá volba vytvářet seznamy na formuláři se záložkami pro Mail… Měli byste používat jiné techniky, jako jsou HTML tabulky. Ale to ještě není implementováno v 4D Write Pro.
Nejlepší způsob by byl vytisknout fakturu je ve formátu PDF a odeslat ji jako přílohu místo HTML e-mailu. Mnoho společností pracuje tímto způsobem aby se vyhnuli různým výsledkům vykreslování.! 15. Zobrazte druhou fakturu ve 4D Write Pro
To je jen pro důkaz, že to není natvrdo kódované pouze pro jednu fakturu. Šablona také pracuje se všemi dalšími fakturami.
! ! ! !
16. Přepněte do Návrháře, formulář "Write_Pro"
17. OM tlačítka "Process 4D Tags"
Plnění odkazů řádkových položek je velmi jednoduché. Použil jsem příkaz PROCES 4D TAGS.
18. OM tlačítka "Print"
V tuto chvíli tisk pracuje pouze v beta pod Windows.
19. OM tlačítka "Odeslat"
To je normální způsob převzatý z příruček, jak poslat e-mail.
Metoda "Process Image paths", je převzata z aktuálního Technical notes. Nahrazuje místní cesty k souborům pro obrázky pomocí tzv. obsahu IDS "CID". Pak jsou obrázky připojeny k e-mailu jako Base64 zakódované přílohy a odkazují se z pošty HTML pomocí těchto CID. Prosím, podívejte se na Technické poznámky, pokud chcete.
Ale toto je komplikovaný způsob, jak poslat tzv. MHTML soubory nebo multi part html soubory. Musíte analyzovat tělo, vyměňit cesty obrázků, přidat Base64 kódované přílohy, a tak dále a tak dále. Nadcházející verze to bude dělat mnohem jednodušeji. 4D Write Pro bude moci ukládat takové MHTML soubory tak, že je můžete poslat pomocí např SMTP_QUICK_SEND a prostě se nezajímat o to, jak to funguje interně. Zavolat příkaz se správným hostitelem pošty a mailovou adresou a je to.
!
Podepisování kódu
!! S Mountin Lion nebo Mac OS 10.8 Apple představil novou bezpečnostní funkci - bariéru, tzv
Gatekeeper. To by mělo zabránit aplikaci spustit se, pokud nepochází z Mac App Store nebo pochází od developera, který není identifikován. Pokud je to váš případ, nastane chybové hlášení a můžete aplikaci pouze vyhodit do koše:
!
/
!Následující obrázek ukazuje standardní nastavení Gatekeeper:
12
/
! !Je-li aplikace stažená z webu nebo FTP pomocí prohlížeče nebo jakékoliv FTP klienta spuštěna poprvé, Gatekeeper vždy zkontroluje, zda je podepsána a je-li tento podpis platný. !Máte-li přístup k GateKeeperu, můžete změnit nastavení a také nepodepsané aplikace lze spustit. To ale není smysl Gatekeeperu, měl by chránit váš počítač před viry a jinými špatnými věcmi. !Pro podepisování aplikace potřebujete platný certifikát. To může být tak zvaný “Vývojář aplikací Mac 3. strany", nebo obvykle tzv "Vývojář ID aplikací" s platným primárním klíčem:
!! Chcete-li se stát certifikovaným Apple vývojářem budete se muset připojit k Apple Mac Developer Programu za nejméně 99 dolarů za rok. Pak můžete požádat o certifikát, který je schválen Apple. Další informace o tomto postupu najdete pod https://developer.apple.com/support/technical/ certificates.
!Uvědomte si, že není možné získat testovací certifikát. Ano, je možné vytvořit si určitý pomocí aplikace Keychain access. Ten je ale není certifikován společností Apple a není přijat Gatekeeperem. Takže není šance udělat si testy v reálném čase bez zakoupení platného certifikátu Apple.
!
13
S certifikátem můžete podepsat svou aplikaci. V dialogovém okně sestavení aplikace na straně "licence a osvědčení" zadáte svůj certifikát. Použijte správný pravopis názvu klíče:
!K dispozici jsou i nové XML klíče, pokud chcete vytvořit aplikaci s podpisem kódu automaticky:
!Aplikace Apple "Codesign" nyní počítá kontrolní součty přes určité balíčky a knihovny vaší aplikaci a zapíše jej do balíčku kódu. V každém případě se objeví zpráva, že musíte povolit podepisování kódu:
!Ve skutečnosti se tato zpráva objeví 3 krát. Také se otevře, pokud se sestavení kódu odehrává
automaticky. Takže budete muset provést alespoň jedno stisknutí tlačítka "Vždy povolit". Pak se již žádné další zprávy v budoucnosti neobjeví.
!Jestliže podpis kódu selže objeví se chybové hlášení. Soubor protokolu sestavení aplikace obsahuje informace o tom, co se stalo. Pokud vše bylo v pořádku, máte novou složku "_CodeSignature" v balíčku vaší aplikace:
!! Soubor "Code Resources" obsahuje kontrolní součty pro všechny balíčky a knihovny balíčku aplikace:
14
!Ve skutečnosti nemůžete kontrolovat, zda to funguje správně. Gatekeeper kontroluje pouze to, zda zip soubor aplikace byl stažen z webu nebo FTP. Chcete-li ji ihned zkontrolovat, můžete použít Apple nástroj příkazového řádku “spctl":
!Možnosti znamenají:
• “asses” "zhodnotit": zkontrolovat daný soubor nebo balíček • “verbose" “upovídaný”: určuje, kolik informací o kontrole se vrátil k vám • “path” "cesta": kde lze najít aplikaci pro kontrolu
!Jak je vidět na obrázku, jsou 3 možné odpovědi:
• V případě, že balíček kódu není podepsán kód je odmítnut • V případě, že balíček byl podepsán a označení je platné, je přijat • Pokud kontrolní součty neodpovídají zdroji balíčku je zobrazena zpráva, možná je zde virus.
!Ale je tu také 2. možnost, proč kontrolní součty neodpovídají zdroji. Pokud spustíte jako vývojář
aplikaci po vytvoření kontrolního součtu zničíte si je sami. Možná chcete v aplikaci udělat nějaké nastavení nebo předvolby ještě předtím, než ji předáte svým zákazníkům. V tomto případě 4D přepíše soubor dat, indexový soubor, prefs soubor, .4DLink, log soubory a další. A teď kontrolní součet neodpovídá obsahu balíčku.
!Co můžete dělat? Můžete ukládat všechny tyto soubory mimo balíček. Nebo můžete provést toto
nastavení před sestavením a podepisováním kódu aplikace. Nebo 4D by neměla uchovávat takové věci uvnitř balíčku. Ano, i to by bylo v pořádku. Máme v plánu to udělat, ale je to hodně práce, a to nepřijde s V14 ani V15. Takže v tuto chvíli je pravidlo, NESPOUŠTĚJTE APLIKACI PO PODPISU KÓDU.
15
Nakonec podpis kódu má také vliv, pokud je váš fire wall zapnutý. Pokud není vaše aplikace podepsána správně, je požadavek, co se má dělat:
!Podle toho, zda povolíte nebo zakážete tento požadavek, systém vloží odpovídající položky do
firewall černé listiny. Můžete otevřít a nastavit černou listinu firewallu v "Bezpečnost a soukromí" v systémových předvolbách a zjistit, které aplikace mohou přistupovat zpoza vnitřní sítě:
!Pokud nechcete, aby to váš zákazník dělal ručně a nechcete ho obtěžovat zprávami, podepisujte aplikaci, a to lze provádět automaticky. !Nakonec několik poznámek o typu podpisů a různých verzích Mac OS. Až k 10.8.5 Apple používal
tzv. v1 podpisy. Počínaje v10.9 Apple představil v2 podpisy. Změnili obálku podpisů kódu a to, co v balíčku app je podepsáno a jak hluboko je podepsáno. Důvodem je, aby byl podpis bezpečnější. S 10.9.5, 10.10 a vyšší Gatekeeper přijímá pouze tyto v2 podpisy. To znamená, že pokud vaše aplikace by měla přijímat v2 podpisy pro spuštění pod nejnovějším operačním systémem, musí být podepsána s minimálním 10.9.0 systémem.
!4D jako produkt sama o sobě podporuje v2 podpisy. Pracujeme na procesu, kterým můžete také podepsat své vlastní aplikace s v2 podpisy. !! Uložení geometrie formuláře
!! Kromě pěkného a moderního vzhledu, co ještě uživatel očekává od uživatelského rozhraní: ! • aby se otevíralo ve velikosti, do které ho změnil
• aby se otevíralo na stejné pozici, pokud provedl přesun • Všechny objekty musí být na stejném místě, kde byli, když byl formulář použít naposledy • A objekty mají stejnou velikost, kterou měly, když byl formulář otevřen naposledy
!
16
Až dosud jste měli možnost získat velikosti a pozice formuláře a všech obsažených objektů, a ukládat tyto hodnoty v záznamech nebo souboru na disku. V případě, že formulář by měl být znovu otevřen, tyto údaje musí být nataženy a velikosti a pozice musí být znovu nastaveny. A to vše je třeba udělat pro formulář a každého uživatele databáze zvlášť.
!
Příklad 6-Save_Geometry
! !
Další příklad ukazuje, jak to nyní funguje.
!
1. Nabídka "Demo", položka "Start" 2. Záložka “Geometrie formuláře"
Tento formulář má některé objekty, které lze měnit pomocí 2 splittery. Vzorek na této kartě je součástí “How do I" - dema z naší webové stránky.
! ! !
3. Přesuňte oba děliče a zvětšete okno
Pojďme změnit velikost některých objektů a také okna.
4. Tlačítko “Nastavit neviditelné"
A chceme skrýt některé objekty.
5. Zavřete formulář a znovu otevřete příkazem nabídky
Vidíte, že všechny změny byly uloženy, a některé objekty jsou nastaveny neviditelné. Formulář se otevřel na straně 2 přímo, bez listování ke kartě 2.
! !
6. Restartujte demo, nabídka "Demo", položka "Spustit"
Také po kompletním restartu databáze všechna uživatelská nastavení jsou uložena.
7. Přepněte do návrháře, metoda objektu formuláře projektu "Geometry"
Jak můžete vidět vše je bez nutnosti programování.
!
S V14 není potřeba žádné programování, aby se chovala jak v demu výše. To funguje tak, že jednoduše zaškrtnutete novou volbu “Uložit geometrii/Save Geometry" ve vlastnostech formuláře:
! !! Tato možnost je k dispozici pro formuláře projektu a formuláře tabulek. Chcete-li získat tuto funkci aktuální formulář musí být otevřen pomocí příkazu Open form window (...; *).Volitelný parametr "*" definuje, že velikost a umístění okna musí být uloženy při uzavírání.
!Nyní nejsou již tyto hodnoty uloženy uvnitř struktury souboru, ale v jakémsi souboru preference s
názvem "formname.json". To je vnitřní popis formulářů a jeho objektů jako C_OBJECT (nové v V14), a jsou uložené v externím souboru jako JSON-string (Java Script Object Notation). Pod Windows ji najdete v složce users "AppData / Roaming", na Mac v uživatelské knihovně ve složce "Application Support”:
17
!! Každý formulář tabulky nebo formulář projektu má svůj vlastní soubor preference. Ty také existují i pokud není aktivována nová volba “Uložit geometrii". V tomto případě soubor obsahuje pouze popis polohy a velikosti samotného formuláře:
!Pokud je nová volba aktivována, obsahuje také velikost, umístění a zobrazení vlastností všech objektů ve formuláři. Pro testovací důvody při procházení tohoto dema můžete tento soubor smazat a obdržíte skutečné výchozí podmínky.
!Jsou některé další věci, které musíte znát o nové možnosti. Tato nastavení jsou uložena na
základě počítače uživatele. Jiný uživatel databáze na konkrétním počítači má stejné nastavení. Pokud potřebujete řešení na bázi uživatele 4D použijte váš dosavadní způsob pro uložení nastavení. Máte-li přenést toto operační nastavení do jiného počítače, nastavení formuláře může být provedeno také tím, že provedete migrací složky uživatele z počítače na počítač. A pokud si myslíte, že byste měli odstranit klientské 4D Client předvolby, protože máte nějaký problém v tomto počítači, měli byste odstranit i tyto nové uživatelské preference formuláře.
!Přepnutím možnosti “Uložit geometrii" odškrtnout a znovu zaškrtnout, se všechna stávající
nastavení pro tento formulář resetují na nastavení v režimu Návrháře pro tento formulář. Také úpravy a nové uložení formuláře vynulují obsah externího souboru. Chcete-li si pamatovat nastavení viditelnosti, nesmí být objekt nastaven na “Neviditelné jako výchozí". Toto nepracuje pro dynamické proměnné formuláře vytvořené za běhu pomocí OBJECT DUPLICATE. Tyto dynamické proměnné pouze dočasně existují, a proto nejsou obsaženy v interních záznamech formulářů.
!
Příklad 6-Save_Geometry
! !
Další příklad ukazuje, jak by to mohlo fungovat.
18
1. Zpět na příklad, záložka “Hodnoty objektů"
Nové ve v14 je také to, že proměnné si mohou udržet své hodnoty v případě, že uživatel zavře formulář. Ne všechny proměnné si pamatuji své hodnoty, ale následující to dokážou:
• Přepínače
• Dostupné proměnné
• Zaškrtávací okénka
• zvolený prvek rozbalovací nabídky nebo v rozevíracím seznamu
• Řízení záložek, a tak aktuální stránka formuláře
! ! !
2. Udělejte nějaký vstup
3. Zavřete a znovu otevřete formulář položkou nabídky
Můžete vidět, že hodnoty jsou uchovávány v této relaci databáze.
!
4. Restartujte demo, nabídka "Demo", položka "Spustit"
A i po restartu aplikace jsou hodnoty uloženy. 5. Záložka "Nastavení Libo”
Také list boxy jsou ovlivněny při použití této nové možnosti pro uložení geometrie formuláře. Na levé straně máme listbox zobrazující arrays, na pravé straně listbox se záznamy. Nezáleží na tom, jestli uživatel dělá změny ručně nebo programováním pomocí tlačítka.
! ! !
6. Drag & drop sloupec 6 na pozici 4.
Pojďme změnit pořadí sloupců ručně.
7. Tlačítko "Záhlaví off"
Vypněte řádek záhlaví.
!
8. Tlačítko "Zápatí off"
A také vypnout zápatí s výpočty. 9. Tlačítko "Sloupce off"
Pak jsme si nastavili některé sloupce neviditelné.
! !
10. Tlačítko “Nastavit š. sloupců”
A konečně chceme změnit šířku sloupců.
! !
11. Zavřete a znovu otevřete formulář
Také v tomto případě jsou uložena nastavení. 12. Restartujte databázi a znovu formulář
A samozřejmě i po restartu jsou nastavení uložena.
!
13. Přepněte do návrháře, metoda formuláře z form. projektu "Geometry" A opět není potřeba programování pro pamatování si hodnot objektů, nebo obnovení nastavení listboxů.
!
Viděli jste, že ve v14 některé typy formulářových objektů si mohou také udržet své hodnoty. Také v tomto případě není potřeba žádné programování. Jednoduše zaškrtněte novou volbu “Uložit hodnotu”:
19
! ! Příklad 6-Save_Geometry !
Hodnoty objektů formuláře jsou také uloženy v JSON dokumentu jak jsme viděli předtím.
Vše, co jsme viděli předtím, bylo možné bez jakéhokoliv programování. S poslední ukázce chci ukázat, jak namíchat tento automatický způsob práce s vlastním programováním, abycom získali "speciální efekty”.
!
1. Zpět na příklad, záložka "Mix s kódem"
Ve spodní části tohoto formuláře máme 3D zatrhávací políčko.
!
2. Zatrhněte a opět nastavte políčko, aby bylo nezatrženo
V případě, že uživatel rozšiřuje políčko, zobrazí se dostupná oblast, "Storno" tlačítko se přesune a dojde ke změně velikosti formuláře. To vše se vrátí zpět v případě, že políčko je zatrženo. Jedná se o často používanou kombinaci chování prvků rozhraní.
!
3. Rozbalte. Tlačítko "Zrušit" a znovu otevřete formulář
Pokud zavřete a znovu otevřete formulář, poslední stav je obnovena. A můžete mi věřit, že je to také v případě, kdy provedeme restart databáze.
! !
4. Zavřete formulář a otevřete formulář “Geometry" v návrhovém režimu, strana 5
5. Dvakrát klikněte na políčko 3D
Pro zaškrtávací políčko je nastavena nová volba “Uložit hodnotu". To znamená, že ikona, zobrazená pro rozšířit či zaklapnout, je zapamatována při zavření formuláře.
!
6. Otevřete metodu objektu zaškrtávacího políčka
Pokud políčko bylo rozšířeno, zobrazí se enterable oblast, tlačítko se pohne a okno změní velikosti a zobrazí všechny objekty.
Pokud políčko je znovu zaklapnuto, je enterable oblast skryta, tlačítko se vrátí a okno je nastaveno zpět na původní velikost.
!
7. Otevřete metodu formuláře
Pokud se otevře formulář na straně 5 běží stejný kód, který jsme viděli v metodě objektu. Pokud 4D otevře formulář, políčko je zatrhnuto, textová proměnná se sama nezobrazuje a tlačítko není automaticky přesunuto. Tak to musíme udělat pomocí programování. Takže v tomto případě musíme promíchat automatismus 4D a vlastní programování.
A prosím všimněte si komentáře v metodě formuláře. Neměnit velikost okna zde. To by se nezdařílo a byla spočtena chybná velikosti. Proč? Okno je otevřen pomocí Open form window s "*" jako parametr. Takže velikost je uložena a také se automaticky obnovuje. Pokud chcete změnit velikost formuláře, budete zde mít dvojí změnu velikosti.
!! Automatický update !
Byl optimalizován automatický update klienta Automatický update 4D Serveru a jednouživatelské aplikace je zcela nový
! Automatický update 4D Client !Když byl představen 4D Server, bylo možné, že klientská část aplikace mohla být aktualizována
automaticky. Do verze v13 byl balíček aktualizace pro klientskou část uložen na serveru a obsahoval 2 části: • komprimovaný 4D Volume Desktop jako základ pro nové klientské části, • soubor info.xml obsahující informace k přizpůsobení 4D Volome Desktopu k sestavení konečné aktualizováné aplikace.
!Proces aktualizace klientské části měl několik kroků:
• Při připojování, klient provádí kontrolu, zda si verze serveru a klienta odpovídají
20
• Je-li zapotřebí aktualizace je dotázán uživatel • Klient stáhne archiv a dekomprimuje jej a sestaví novou klientskou aplikaci • Klient spustí externí updateScript a ukončí se • Skript vymění klienty, odstraní nepotřebné soubory a složky a spustí aktualizovanou aplikaci
!Celé sestavení je řízeno "starou" aplikací. Někdy to mohlo vést k problémům, protože se spouštějí externí skripty, které musí být synchronizovány a sledování chyb nebylo tedy nejlepší. !S v14 nyní nabízíme aktualizační aplikaci k řízení procesu aktualizace. Tato aplikace updater je obsažena v poklepatelné klientské aplikaci a lze ji nalézt ve složce "Resources". !Proces aktualizace probíhá v V14, jak je vidět na následujícím obrázku a je popsáno níže:
!• Při připojování klienta kontrola na novou verzi: o 4D Volume Desktop o Samotná aplikace o Updater aplikace
!• Je-li aktualizace nutná odešle server:
o URL pro stažení nejnovějšího updateru o URL pro stažení nejnovější verze aplikace na straně klienta
!• Uživatel se dotázán, zda chce provést aktualizaci
• Aktualizace jsou stahovány přes HTTP • Aktualizace jsou rozbaleny • V případě potřeby updater je sám o sobě aktualizován • Updater je spuštěn • Updater konfiguruje aktualizaci aplikace • Ukončí starou klientskou část • Nahradí starou klientskou část
21
• Odstraní více nepotřebné soubory a složky • A konečně spustí nově sestavenou aplikaci
!Updater sestaví log soubor, nalezitelný v lokálních zdrojích klientské aplikace, který obsahuje všechny jednotlivé kroky: !
/
Zde najdete podrobný přehled o tom, co se stalo, a spotřebovaný čas. V případě jakékoliv chyby tyto budou obsaženy v souboru protokolu. Kdyby se něco pokazilo, jsou zde uvedené chyby.
!Vše v jednom, to jsou výhody nového řízení aktualizace:
• Přesné sledování průběhu aktualizace a zápisu do položky souboru protokolu (OK nebo chyby), • Zamčené oblasti lze ovládat a nejlepší, je že bez krachu, • Instalace tak může uspět i v případě uzamčených oblastí.
! Automatický update aplikací !Automatická aktualizace vstoupila do nové úrovně s V14. Díky aplikaci updater, kterou jsem
představil výše, je nyní nejen možné aktualizovat merged sloučené strany klienta. Nyní je možná automatická aktualizace:
! Sloučené serverové aplikace, • Sloučené jednouživatelské apikace !To• znamená, že provedení procesu aktualizace je pro uživatele zcela transparentní. Nemusí již
provádět žádné operace stahování, rozbalování, kopírování nebo mazání. Pod Windows to také funguje, pokud aplikace běží jako služba. A instalace tedy může běžet v režimu administrátora. To může být řízeno novými klíči pro sestavení aplikace v dokumentu XML.
!Jednu část nového procesu aktualizace musí provést vývojář sám I když to může být plně automatizováno: ! • Sestavení aplikací pomocí 4D, ručně, nebo pomocí BUILD APLICATION
• Zip vytvoření složek, • Upload ZIP souborů na FTP server. Druhá část aktualizace na straně zákazníka se provádí programováním a může být plně automatizována také: • Stažení souborů, • Rozbalení souborů, • Provedení aktualizace, • Restart 4D • Napsání souboru protokolu do archivu, zda všechno dobře dopadlo.
!První dvě položky mohou být řešeny programováním pomocí Internet commands a příkazem LAUNCH EXTERNAL PROCESS. !Poslední tři kroky pomocí nových příkazů ve 4D, ! " " "
!
•" •" •"
SET UPDATE FOLDER, " RESTART 4D, " Get last update path.
22
V případě chyb můžete zachytit chyby pomocí své vlastní nainstalováné procedury chyby a pomocí ON ERR CALL.!
!Celé sestavení nové aplikace je řízeno "starou" aplikací. Někdy by to mohlo vést k problémům:
díky vykonávání externích skriptů, které se mají synchronizovat a reportování zpráv o chybách, to nemusí být nejlepší, ale je to jediná cesta.
!
Dalším demo obsahuje metody potřebné k automatické aktualizaci. Ukáže vám aktualizaci aplikace typu klient / server.Totéž samozřejmě platí i pro jednouživatelské aplikace.!
!
Pro přehrání dema musíte nejdříve sestavit 2 verze demo aplikací. Způsob, jak vytvořit sestavené verze je stejný jako předtím. Nic se nezměnilo.!
!!
Příklad “27-Auto_Make_New”
K předvení funkcí tohoto dema potřebujete dvě sestavené verze s integrovanou aplikací a klienta a serveru ve dvou složkách např. Sestava1 a Sestava2, s rozdílnými čísly verzí použitými při sestavování aplikace.
!
1. Spusťte starý spustitelný server Pokud budete požádáni vytvořte nový datový soubor. Vytvořte datový soubor jednoduše na ploše. Nesmí být vytvořen ve složce aplikace. Tento soubor obsahuje uživatelská data a musí být zachován a použit i po aktualizaci. Když je aplikace spuštěna, zobrazí se zpráva, že toto je stará verze aplikace.
!
2. Otevřete uživatelské nastavení na stránce "Databáze" a změňte maximální velikost vyrovnávací paměti (cache). Tento server má vlastní soubor předvoleb. Pokud jste to ještě neudělali, prosím upravte velikost maximální vyrovnávací paměti z 400 Mbyte na jinou hodnotu.
!
3. Otevřete balíček serveru a zde složku “Server database" V této složce máme speciální uživatelem definované soubory ve složkách "Preferences", "Logs" a "WebFolder". Automatická aktualizace by nahradila tyto složky a specifické nastavení uživatele by bylo ztraceno. Takže se musíme postarat o tyto složky.
! ! !
4. Připojte se starým klientem I tady máme zprávu, že klient pracuje se starou aplikací. 5. Menu "Auto Update" položka "Open asistent/Otevřít asistenta“ Asistent zobrazuje jednotlivé kroky automatické aktualizace. Podíváme se na kód později. 6. Tlačítko “Download new version/Stáhnout novou verzi“ Aktualizaci je možné stáhnout z libovolného ftp serveru. Po několika vteřinách se zobrazí zpráva v případě, že stahování bylo úspěšné.
!
7. Tlačítko "Show temporary folders/Ukázat dočasnou složku“ Jako příklad jsem stáhnul 4D demo databázi 4D ftp serveru. Ta je malá a stáhne se rychle. Nechci ztrácet čas stahováním. Chci, aby bylo hlavně ukázáno, jak to funguje.
! !
8. Tlačítko “Unzip new version/Rozbalte novou verzi" Soubory musí být rozbaleny, aby byly použitelné pro aktualizaci. 9. Zkopírujte "27-Auto_Make_New Server" z "Sestava2" do "My_DB_Updates" ve složce temp Protože jsme pouze stáhli malý vzorek, zkopírujeme serverovou část aktualizace do dočasné složky temp k provedení následujících kroků se správnými aktualizačními soubory. Klientská část je důležitá pouze pro spuštění a připojení klienta ručně. Není důležitá pro automatické aktualizace. Všechny potřebné soubory jsou přítomny v serverové části.
! !
10. Otevřete balíček aktualizace serveru, složka "Database Server" Jak můžete vidět nejsou zde dosud k dispozici adresáře s uživatelem definovanými soubory. 11 Tlačítko "Save Essentials/Uložit podstatné”
23
A složky s uživatelem definovanými soubory jsou zkopírovány do aktualizace, aby byly k dispozici po aktualizaci.
! !
12. Tlačítko "Set update folder/Nastavit cestu k updatu“ Dalším krokem říká updateru, kde najít nové soubory pro provedení aktualizace. 13. Tlačítko “Make update/Provést aktualizace" Dále začneme s průběhem aktualizace. Klient dostane zprávu, že musí být provedena aktualizace. Pokud ukončíte klienta, pak se server uzavře. Jestliže všechny soubory jsou nahrazeny novými, spustí se nový server. Toto je rovněž reportováno jiným dialogem na serveru.
! !
14. Otevřete uživatelské nastavení na stránce "Database" Viděli jste, že vlastní nastavení paměti je definováno také pro aktualizovanou aplikaci. 15. Otevřete stránku "Application Server" Zde si můžete zkontrolovat že datový soubor, co se automaticky otevře, je datový soubor uživatele z plochy. Takže i poslední použitý backup žurnál je opět použit automaticky.
!
16. Připojte se starým klientem To je ještě starý klient a musí být aktualizovány také. Funguje to jako předtím, ale s novou aplikací updater. Zobrazí se zpráva, která by měla ukazovat, že je nyní k dispozici aktualizovaná verze.
! ! ! ! !
17. Menu "Auto Update" položka "Open asistent" Na závěr chceme vidět, jaké akce byly provedeny. 18. Podívejte se na obsah souboru protokolu. Záznam ukazuje, v detailu, co se stalo. V případě jakýchkoliv problémů budou zde tyto obsaženy. 19. Ukončete klienta a server a spusťte demo "27-Auto_Make_New" v 4D v návrhovém režimu Pojďme se podívat na kód, abychom pochopili, jak to funguje interně. 20. Metoda “Download_update" Stalo se následující:
!
• Přihlášení se k 4D FTP serveru pomocí 4D internetových příkazů balíčku Internet commands • Dostaneme seznam obsažených souborů ke kontrole, jestli existuje nějaká aktualizace, pak je odhlášení, neboť již není potřeba ftp připojení, • Aktualizaci získáme HTTP Get, protože je to mnohem jednodušší, než se vypořádat s parametry pro ftpdownload, a to je rychlejší, • V případě potřeby jsme vytvořili novou složku pro uložení aktualizace
V tomto případě používáme dočasné složky přidělené systém 4D. Můžu si být jist, že přístup číst a psát je zajištěn. Můžete použít libovolné složky která se vám líbí. Ale musíte si být jisti, že máte plný přístup k tomu co bude staženo.
! !
21. Metoda "Show_temp" Tato metoda otevře dočasné složky, abysme viděli, co se děje. 22. Metoda "Unzip_files" LAUNCH EXTERNAL PROCESS je používána k rozbalení stažených souborů. To se provádí ve smyčce pro všechny stažené soubory. V závislosti na platformě je unzipping řešen jinak: • Mac OS X: sestavy v otevřeném příkazu se používá k volání aplikace, jež provede unzip aktualizačních souborů. • Windows: tady jsem využit bezplatné konzole verze 7zip, • Musí být k dispozici ve složce "Database Server”, pokud mají být provedeny
! !
Chcete-li stejný odzipovávací mechanismus na obou platformách, můžete použít PHP EXECUTE a jednu z PHP knihoven obsažených v 4D. 23. Metoda "Set_update_folder" V závislosti na platformě nastavuje cestu k aktualizaci. Mějte na paměti, že nastavit cestu k aktualizované aplikaci musíte sami.
!
24
Tento příkaz lze provést pouze s poklepatelným serverem nebo v jednouživatelské poklepatelné aplikaci. Nemůže být provedeno ze samotné 4D. To by mělo za následek chybu -10612.
! ! !
Příkaz zkontroluje, zda cesta aktualizace je platná, a zda je updater aplikace přítomna. 24. Metoda "Make_update" Tato metoda provádí následující kroky:
!!
• Celý proces aktualizace je spuštěn s parametry a soubory definovanými dříve, • Ověřuje zda je potřebná aktualizace aplikace updater, • Požadavek k klientům k ukončení, • Kopírování aktualizace na nové místo, • Odstraní staré aplikace, • A konečně restartuje aktualizované aplikace.
25. Metoda "Show_log" Get last update log path otevře soubor protokolu poslední aktualizace a vrátí obsah do textové proměnné. Texttové proměnné mohou být zobrazeny v dialogu.
!Některé! závěrečné poznámky: týkající se procesu auto aktualizace. !Možná se divíte, proč moje databáze má tak podivný název "Auto_Make_New", a nikoliv např.
"Update_Test" nebo podobně. Je-li v systému Windows název obsahující slovo "Update", pak se aplikace nespustí automaticky, ale Windows dá požadavek, zda ji chcete spustit jako admistrator.
!Nenazývejte vaše aplikace jinak, např. "App_v1" a "App_v2". Tady by mohly nastat problémy s
aplikací updater, který bere názvy jako parametry a vyměňuje staré proti nové aplikaci (stejného názvu).
!Vzhledem k vnitřním úpravám v v14 4D Client v14 engine není možné provést přímé aktualizace z
klienta V13 na klienta V14. Proto jsme vytvořili balíček aktualizace pseudo "archive.win" (stejný pro Mac) , který způsobí, že v13 klient může stáhnout upgrade na v14 sám. Po prvním restartu druhá aktualizace se provádí pomocí souboru "update.win.4darchive" ( stejné pro Mac), a dokončí migraci:
!Nevýhodou je, že aktualizace je větší. Ale výhoda je, nemusíte přece dodávat 2 samostatné
aktualizace pro své zákazníky. Ve výchozím nastavení 4D vždy vytváří balíček hybridní aktualizace. Pokud nechcete, nebo nepotřebujete toto, použijte nový vestavěný app XML klíč k ušetření asi 60 MB (BUILD APLICATION):
!<BuildV13ClientUpgrades> False BuildV13ClientUpgrades>. !! 25
Primární klíče - nový žurnál dat
!Ve 4D v14 byl modifikován mechanizmus generování a užití log souborů dat pro zálohy. !Modifikace přináší tyto výhody: !
• Umožňuje nastavit zabezpečenou architekturu s využitím kaskádových zrcadlových zálohování (zrcadla zrcadel)! • Umožní Vám vybrat si tabulky, jejichž data budou ukládána v protokolu žurnálu,! • Vytváří proceduru pro integrování souboru protokolu méně lineární a proto více odolnou. Například, chyba čtení v souboru týkající se nahrávacích operaci již více nezabrání celkové integraci souboru log protokolu (pomocí MSC).!
!Chcete-li to provést, jsou implementovány v 4D V14 nové zásady:
• Je povinné, aby každá žurnálovaná tabulka obsahovala primární klíč. • Je nutné pomocí nové volby specielně označit každou tabulku, jejíž data mají být nahrávána.
!
Tato nová pravidla platí pro databáze vytvořené s 4D V14, jakož pro konvertované databáze. Zahrnují změny v editoru struktury, stejně jako nové možnosti v jazyce SQL příkazů 4D. Příkaz INTEGRATE MIRROR LOG FILE má nový parametr používaný ke správě mechanismu pro zrcadlení databází.!
!
Nový asistent je k dispozici ve 4D V14 při konverzi databází a konkrétně tabulek jež nemají primární klíče. Principy práce tohoto asistentu jsou zmíněny dále.!
!
Tento pomocník je tedy k dispozici jako komponenta 4D V13, takže jste schopni dopředu připravit 4D databázi na přechod k V14.!
! Primární klíč jako výchozí pole" !Ve 4D V14 každá nová tabulka je vytvořena rovnou s polem primárního klíče.
Toto pole, s názvem "ID" je ve výchozím nastavení typu LongInt, a má následující atributy:
! !
• • • •
Unikátní,
Odmítnout NULL hodnoty vstupu,
AutoIncrement - automaticky přirůstající,
Automatický indexované
V preferencích lze samozřejmě modifikovat výchozí název tohoto pole a jeho typ, například můžete použít UUID funkci a pole (universal unique identifier - 128 bit)
!
Jako výchozí možnost není primární klíč přidán k tabulce zakládané příkazem
SQL CREATE TABLE, nebo k tabulkám importovaným do databáze.
! Okno chyb primárního klíče
!Ve 4D v14 požaduje log soubor k žurnálování tabulek mít platný primární klíč. !Dialogové okno chyby se objeví jesltiže alespoň jedna tabulka nemá platný primární klíč. Dialogové okno se zobrazí: ! • při otevření nebo po konverzi na v14 v databázi, když je možnost Use Log File zatrhnuta, ! • po kontrole volby Use Log File v databázi v14. 26
Jestliže máte přístup ke struktuře databáze, dialogové okno nabízí několik možností a zobrazení, když rozšířite spodní oblast, je zde seznam tabulek jež nemají primární klíč:
! ! ! Následující zpráva se objeví pouze tehdy, jestliže databáze užívá Log soubor:
!
! Manažer primárních klíčů
4D v14 poskytuje nového asistenta, pro řešení chyb při nepřítomnosti primárního klíče tabulky pro žurnálované tabulky.
! ! Pro každou tabulku, která nemá primární klíč asistent navrhne akci. ! 27
Můžete si vybrat z následujících možností:
!
• Ignorovat: nemění tabulky. Chyby nejsou opraveny a stav tabulky se nemění. Tuto možnost použijte, pokud chcete zasáhnout později, nebo pokud chcete vytvořit primární klíč mimo asistenta. Tato možnost je zejména nezbytná, když chcete vytvořit kombinovaný primární klíč založený v několika polích v tabulce. • Použít existující pole (zobrazeno pouze pro tabulky s alespoň jedním polem způsobilým být primární klíč): označite jedno z polí tabulky jako primární klíč. Pokud zvolíte tuto možnost, asistent navrhuje nejvhodnější pole jako výchozí nastavení.
Chcete-li použít jiné pole, nebo v případě, že asistent nedokáže identifikovat vhodné pole (asistenta zobrazí "Vyberte pole"), klepněte na druhou nabídku v řadě a zobrazí se seznam způsobilých polí. • Vytvořit nové pole: Vytvoří nové pole primárního klíče v tabulce. Toto pole bude mít stejné vlastnosti, když je přidáno ve výchozím nastavení při vytvoření nové tabulky (viz výše).
Ve výchozím nastavení, asistent navrhuje vytvořit pole typu LongInt, s názvem "ID". Můžete změnit název a typ výchozího pole primárního klíče v předvolbách (již jsme zmiňovali). Můžete přistupovat na tuto stránku preferencí kliknutím na tlačítko v správci primárních klíčů.
Můžete také změnit název nebo typ pole přímo v okně Manažer primárních klíčů.
!
• Neprotokolovat tuto tabulku: zruší zaškrtnutí možnosti "Zahrnout do log souboru" pro tabulku. Můžete si vybrat tuto možnost v případě dočasných tabulek. Po ověření tohoto dialogového okna, status "Varování" je přiřazeno ke tabulce.
!Auto UUID a funkce Auto přírůstek 4D V14 může automaticky naplnit existující záznamy při
vytvoření nového pole při konverzi. S využitím této funkce, tady jsou dva způsoby, jak snadno vytvořit nové pole primárního klíče pro existující tabulky, které jsou naplněny daty.
!První metoda je:
1. Vytvořte nové pole pro tabulku a nastavte jej jako formát UUID s nastavením funkce Auto UUID nebo nastavte funkci Auto přírůstku. Tím se automaticky naplní nové pole jedinečnými hodnotami. 2. Poté pole může být nastaveno jako primární klíč. Není-li pole automaticky nastaveno, pak se objeví dialog chyby s vysvětlením, že to je problém s duplicitními hodnotami v důsledku všech nových polí záznamů, jež nyní obsahují hodnotu null.
!Další metodou je:
1. Otevřete strukturu nového datového souboru. 2. Poté přidejte pole primárního klíče na všechny tabulky s nastavením vlastnosti Auto UUID nebo Auto přírůstek. 3. Pak otevřete jakýkoli datový soubor a tabulky a záznamy budou automaticky naplněny.
!! !!
28
Komptelně mazatelná pole
!4D dlouho nepovolovala kompletně vymazat pole, bylo nutno ho označit třeba jako nepoužito, nyní je to možné, ale je třeba mít na paměti kompatibilitu dat: !vymazané pole - jeho data stále zůstávají v souboru dat, po vytvoření nového pole je mu přiděleno číslo vymazaného pole a data z vymazaného pole se zde objeví. Vyhnout se tomu lze zkompaktováním datového souboru a pak teprve přidání nového pole (tento postup brání ztrátě dat z omylem vymazaného pole) viz příklad!
! ! !SHRNUTÍ Doufám, že se vám líbily nové funkce uvedené v této relaci: ! • Multi-stylové textové oblasti
• Nový 4D Write Pro • Podpis kódu aplikací pod OS X • Ukládání geometrie formuláře a proměnné hodnoty k vytvoření příjemného a vlastního uživatelského rozhraní • primární klíče - nový žurnál dat • kompletně mazatelná pole
!Chcete-li používat tyto funkce a mít aplikaci cennější, není to tak daleko. Jednoduše aktualizujte na nejnovější verzi.
29