Google+ Followers

pondělí 5. prosince 2016

Manuální odstranění starších verzí


Vúdú
Instalace vývojových nástrojů, které mají přece jen k operačnímu systému blíž, než běžné aplikace se neobejde bez zápisů do registrů Windows. Vezmeme li v úvahu jen množství nastavení pro vlastní prostředí, používané knihovny a překladače, jedná se o slušnou porci klíčů a parametrů. Řada zápisů je navíc "neveřejná", protože pomáhá chránit nástroj před jeho nelegálním používáním.

Mnoho vývojářů používá současně více verzí (například kvůli údržbě starších projektů), ale někdy přece jen potřebujeme staré verze odstranit. U nových verzí pomůže s odinstalací verze předchozí (týká se především Update, kde zachování předchozí verze postrádá smysl) sám instalátor. U verzí, které již mají svou "historickou hodnotu" je to ale právě vzhledem k zápisům v registrech trochu Voodoo.

Snad Vám tedy trochu pomůže seznam odkazů, které jsem posbíral a které obsahují návody od techniků Embarcadera na manuální odstranění starších verzí:    

RAD Studio 10.1 Berlin
https://community.embarcadero.com/article/articles-support/174-rad-studio/installation-registration/16235-manual-uninstall-of-rad-studio-delphi-c-builder-10-1-berlin

RAD Studio 10.0 Seattle
https://community.embarcadero.com/article/articles-support/174-rad-studio/installation-registration/16203-manual-uninstall-of-rad-studio-delphi-c-builder-10-seattle

RAD Studio XE8
http://support.embarcadero.com/article/44384

RAD Studio XE7
http://support.embarcadero.com/article/44074

RAD Studio XE6
http://support.embarcadero.com/article/43769

RAD Studio XE5
http://support.embarcadero.com/article/43390

RAD Studio XE4
http://support.embarcadero.com/article/43040

RAD Studio XE3
http://support.embarcadero.com/article/43023

RAD Studio XE2
http://support.embarcadero.com/article/43283

RAD Studio XE
http://support.embarcadero.com/article/43025

RAD Studio 2009
http://support.embarcadero.com/article/39426

RAD Studio 2007
http://support.embarcadero.com/article/37311

Pokud máte s odinstalací pozitivní nebo ne až tak pozitivní zkušenost, podělte se o ni s ostatními!

úterý 18. října 2016

Delphi a C++Builder Starter zdarma

Společnost Embarcadero na zatím blíže neurčenou dobu poskytuje slevu ve výši 100% na edice Starter nástrojů Delphi a C++Builder ve verzi 10.1 Berlin. Moderní prostředí pro práci s jazyky Object Pascal nebo C++ tak lze získat místo za původních 10 890 Kč zcela zdarma! Na rozdíl od všech ostatních produktů je edici Starter zdarma možno objednávat pouze na webovém obchodě společnosti Embarcadero (viz odkazy níže).

Co edice Starter nabízí

Starter edice nabízí zcela shodné prostředí jako vyšší edice. Je zde pokročilý editor kódu s našeptávačem, vizuální návrhář i knihovny VCL (Visual Component Library) a FireMonkey.
Lze vytvářet klasické i konzolové aplikace. Možnosti jazyka (ať již Object Pascalu nebo C++) nejsou nijak omezené. Jedná se tak o ideální nástroj pro ty, kdo se chtějí naučit objektovému programování nebo pro psaní nejrůznějších pomocných programů.

Delphi Starter Splash Screen

Postup pro uplatnění slevy a získání licence

1) Uplatněte slevu na webovém obchodě společnosti Embarcadero
Pro Delphi: https://www.embarcadero.com/app-development-tools-store/delphi
Pro C++Builder: https://www.embarcadero.com/app-development-tools-store/cbuilder

2) Vyberte edici Starter a zkontrolujte si, že výsledná cena je 0,- €

Výběr edice Starter

3) Svou volbu potvrďte stiskem tlačítka "Add to Cart"

4) Pokud již máte u společnosti Embarcadero založený účet EDN, přihlaste se pomocí tlačítka "Login". V opačném případě vyplňte do formuláře Vaše kontaktní údaje:

Registrační formulář

Nezapomeňte si vhodným způsobem uložit zvolené heslo. Bude Vám automaticky vytvořen účet EDN a zadaná e-mailová adresa spolu s heslem budou Vašimi přístupovými údaji!
Pro stažení instalace produktu pokračujte stiskem tlačítka "Download Now >".

5) Stáhněte si instalaci produktu.

Stažení instalace

6) Ve schránce zadané e-mailové adresy si vyzvedněte sériové číslo staženého produktu:

Licenční e-mail

7) Produkt nainstalujte. Dodaná licence je typu "Pojmenovaný uživatel". Získáváte tak oprávnění instalovat produkt na zvolené počítače (pracovní PC, domácí PC, notebook). Licence je vázána výhradně na uživatele a nesmí být sdílena s jinými osobami, uživatel rovněž nesmí používat stejnou licenci souběžně (tj. v jednu chvíli) na dvou počítačích.

Jaká jsou omezení

Cílové platformy - Delphi i C++Builder jsou multiplatformní nástroje, které umožňují překlad zdrojového kódu pro zvolený operační systém. Edice Starter podporuje pouze tvorbu aplikací pro 32-bitové Windows. Edice Professional přidává Win64 a Mac OS X. Pokud hodláte své aplikace šířit i na mobilní zařízení s operačními systémy Android nebo iOS, je třeba zakoupit edici Professional s Mobile Add-On balíčkem, nebo edici Enterprise.

Připojení k datovým zdrojům - Vývojové nástroje společnosti Embarcadero jsou vybaveny řadou technologií pro práci s daty. Aktuálně nejpoužívanější jsou FireDAC a IBExpress. Pro prezentaci dat se pak používají DataAware komponenty (VCL), nebo technologie LiveBindings (FMX). Edice Starter tyto vlastnosti nepodporuje. Pro lokální připojení (databáze je umístěna na stejném stroji jako aplikace) potřebujete edici Professional, pro připojení k databázovým strojům přes TCP/IP pak edici Professional s rozšířením FireDAC Add-On nebo edici Enterprise.

Komponenty - V edici Starter lze napsat prakticky cokoliv. Profesionální vývoj však přináší požadavky na daleko vyšší produktivitu. Většinou tak nedává smysl programovat to, co již existuje. Obrovskou předností nástrojů Delphi a C++Builder je široká nabídka hotových řešení dodávaných ve formě bezplatných či komerčních komponent. Proti vyšším edicím musíme u edice Starter oželet oblíbený návrhář výstupních sestav FastReport, komponenty IP*Works pro práci se síťovými protokoly nebo grafy TeeChart. I když obecně není licencí pro Starter "zakázáno" instalovat do prostředí externí komponenty, většinou tomu brání některá z technických omezení.

Licenční omezení - Edice Starter je komerční, časově neomezená licence. Přesto zde jsou určitá omezení. V rámci podniku smí být používáno nejvýše pět licencí. Uživatelé smějí prodávat aplikace nebo komponenty vytvořené pomocí edic Starter, roční příjem z prodaných licencí nebo služeb však nesmí přesáhnout ekvivalent 1000 amerických dolarů.
Bezplatně lze získat (stáhnout) pouze jednu licenci na jednu platnou e-mailovou adresu (EDN účet). Bezplatná licence neobsahuje službu předplatného a technické podpory.

Úplné porovnání dostupných edic nástrojů Delphi a C++Builder 10.1 Berlin naleznete zde.

Informace k instalaci

Přechod ze zkušební verze produktu - Je li na Vašem počítači instalovaná zkušební ("Trial") verze produktu, nejprve ji odinstalujte a z počítače odstraňte její licenční soubor (jeho název naleznete v aplikaci "LicenseManager", kterou lze spustit přímo z prostředí: hlavní nabídka -> Help -> License Manager).

Dejte si ale pozor: Nová instalace RAD Studia, Delphi nebo C++ Builderu hledá dříve instalované licence. Nalezne-li informaci o dříve instalované zkušební verzi, převezme automaticky její licenční informace (a to včetně data vypršení její platnosti). Uživatel není vyzván k zadání sériového čísla, nainstalovaný produkt neodpovídá zakoupené licenci a není tedy funkční.

Licenční manažer

Přechod na vyšší edici produktu - Společnost Embarcadero nepravidelně oslovuje uživatele marketingovými akcemi, které umožňují získat licence za výhodnější cenu. Pokud se rozhodnete zdarma získanou licenci upgradovat na některou z vyšších edic, je třeba dodržet následující postup:
1) Spustíme licenční manažer (viz výše). S jeho pomocí přidáte a zaregistrujete získané seriové číslo "vyšší" edice.
2) Stejně jako v případě zkušebních licencí z počítače ostraníme licenční soubor pro edici Starter.
3) Edici Starter odinstalujeme za pomoci nástroje "Windows Control Panel". Pokud instalujeme vyšší edici stejné verze, je možné přímo spustit instalační program, který předchozí instalaci odstraní automaticky.
4) Spustíme instalační program pro zakoupenou edici, který požádá o vložení nového licenčního klíče.

úterý 12. července 2016

Windows 10 (část 3.)

RAD Studio 10 Seattle a Windows 10 (část 3.)

Windows 10 jsou univerzálním systémem, který by měl být dobře použitelný jak na stolních tak přenosných zařízeních. Z obou světů se snaží nabídnout uživatelům jednak to nejlepší a jednak to, na co jsou uživatelé zvyklí. Na stolní počítače tak proniklo například centrum akcí, které jsem zmiňoval minule.

Centrum sdílení

Další podobnou funkcionalitou převzatou z "mobilního světa" je zjednodušení nejběžnějších uživatelských postupů (workflow). Ta byla zřejmě motivována snahou do jisté míry kompenzovat absenci klávesnice a myši u telefonů a tabletů, výrazně zpříjemnit práci však může i na PC. Vytvoříme-li v aplikaci nějaký obsah (data, obrázky, multimédia) a potřebujeme jej předat jinému programu, stačí zvolit možnost sdílet a vybrat aplikaci, které jej chceme předat. Odpadá tak nutnost na tabletu ne úplně pohodlného "copy - paste" nebo uložení a import souboru.

Centrum sdílení na mobilních platformách


RAD Studio 10.x umožňuje rozšířit aplikace o sdílení obsahu za pomoci nové komponenty "Sharing Contract". Některé časté operace tak lze podstatně zjednodušit, což ocení i uživatelé, kteří Windows 10 provozují na zařízeních bez dotykové obrazovky.

Sdílení obsahu mezi aplikacemi zajišťuje operační systém, v tomto případě Windows 10. Aplikace musí vytvořit v požadovaném tvaru "balíček dat" a odkaz na něj odeslat správci sdílení. Ten nabídne uživateli seznam cílových aplikací, které jsou registrovány a umí v balíčku obsažená data zpracovat.

Zpracování požadavku na sdílení

Komponenta "Sharing Contract" výše uvedené kroky "zapouzdřuje" a zjednodušuje tak jejich implementaci.


Delphi


Prvním krokem je vytvoření datového balíčku:

sc.ApplicationName := 'SCDemo';
sc.PackageName := 'SCDemoBalicek';
sc.DataTitle := 'Data sdílená aplikací SCDemo';

Následně je třeba balíček naplnit daty:

sc.DataTitle := 'SCTestData';
sc.IconFile := 'embfavicon.ico';
sc.LogoFile := 'delphi_red.png';
sc.ImageFile := 'eso.bmp';
sc.DataText := 'Nějaký zajímavý text';
sc.RtfText := 'Text ve formátu RTF';
sc.HTML = '<h1>HTML kód<h1>';
sc.WebAddress = 'http://www.embt.cz';

Nakonec balíček publikujeme, čímž je zároveň aktivován správce sdílení Windows 10:

sc.InitSharing;


C++Builder


sh->ApplicationName = "SCDemo";
sh->PackageName = "SCDemoBalicek";
sh->Description = "Data sdílená aplikací SCDemo";

sh->DataTitle = "SCTestData";
sh->IconFile = "embfavicon.ico";
sh->LogoFile = "cpp_red.png";
sh->ImageFile = "eso.bmp";
sh->DataText = "Nějaký zajímavý text.";
sh->RtfText = "Text ve formátu RTF";
sh->HTML = "<h1>HTML kód<h1>";
sh->WebAddress = "http://www.embt.cz";

sh->InitSharing();

Relative panel

Další novou komponentou, která ve VCL pro podporu Windows 10 přibyla je RelativePanel. Můžeme jej využít všude tam, kde je třeba přizpůsobit rozmístění či velikost prvků velikosti obrazovky. RelativePanel slouží jako kontejner, do kterého lze umisťovat další vizuální komponenty. Na jednotlivé komponenty lze následně odkazovat pomocí indexu, který jim byl v rámci kolekce přiřazen a stanovit jejich polohu vůči jiné komponentě nebo panelu samému. Možnosti jsou:


Delphi


Zarovnání k pravému, levému, hornímu nebo spodnímu okraji komponenty RelativePanel:
rp.ControlCollection[0].AlignLeftWithPanel := True;

Přichycení nad, pod, zleva nebo zprava k určené komponentě:
rp.ControlCollection[5].RightOf := Label1;

Horizontální nebo vertikální vystředění vzhledem ke komponentě RelativePanel:
rp.ControlCollection[9].AlignHorizontalCenterWithPanel := True;

Horizontální nebo vertikální vystředění vůči určené komponentě:
rp.ControlCollection[7].AlignVerticalCenterWith := Label2;

Pozor! Komponenta "RelativePanel" nehlídá možné křížové závislosti nebo protichůdné požadavky. Je proto vhodné ošetřit, aby nedošlo k například k překrytí ovládacích prvků nebo třeba k jejich posunutí mimo formulář.

Rozteč, tedy vzdálenost mezi prvky lze kontrolovat definováním okrajů jednotlivých prvků:
label1.Margins.Left := 20;


Info: Okraje (Left|Right|Top|Bottom) jsou přednastaveny na hodnotu 3.


C++Builder


rp->ControlCollection->Items[0]->AlignLeftWithPanel = True;
rp->ControlCollection->Items[0]->RightOf = Shape1;
rp->ControlCollection->Items[1]->AlignHorizontalCenterWithPanel = True;
rp->ControlCollection->Items[0]->AlignVerticalCenterWith = Shape1;
rp->ControlCollection->Items[1]->AlignLeftWithPanel = False;
label1->Margins->Left = 20;

ActivityIndicator

ActivityIndicator je náhradou za staré dobré "přesýpací hodiny". Protože umožňuje nastavení řady parametrů, vytvořila pro ně společnost Embarcadero samostatnou komponentu. Nastavit lze:


Delphi


// Barvu Indikátoru
  ActivityIndicator.IndicatorColor := aicBlack;
  ActivityIndicator.IndicatorColor := aicWhite;

// Vzhled (typ) Indikátoru
  ActivityIndicator.IndicatorType := aitSectorRing;
  ActivityIndicator.IndicatorType := aitMomentumDots;
  ActivityIndicator.IndicatorType := aitRotatingSector;

// Velikost Indikátoru
ActivityIndicator.IndicatorSize := aisSmall; //24 x 24 pixelů
ActivityIndicator.IndicatorSize := aisMedium; //32 x 32
ActivityIndicator.IndicatorSize := aisLarge; //48 x 48
ActivityIndicator.IndicatorSize := aisXLarge //64 x 64

// Rychlost animace    
  ActivityIndicator.FrameDelay := 30;

// Spuštění/ukončení animace
  ActivityIndicator.Animate := True;
  ActivityIndicator.Animate := False;

ActivityIndicator: varianty vzhledu


C++Builder


  ActivityIndicator->IndicatorColor = aicBlack;
  ActivityIndicator->IndicatorType = aitSectorRing;
  ActivityIndicator->IndicatorSize = aisSmall;
  ActivityIndicator->FrameDelay = 30;
  ActivityIndicator->Animate = True;

ToggleSwitch

Komponenta Toggle Switch je vhodnou alternativou ke komponentě CheckBox. Odhlédneme-li od vzhledu, je její hlavní předností použití na dotykových zařízeních, protože lze nastavit její velikost a lze ji tak pohodlně obsluhovat i "tlustými prsty".

Počeštěný ToggleSwit



Delphi


if TSAnimate.State = tssOn then
  ActivityIndicator.Animate := True;
 else
  ActivityIndicator.Animate := False;


C++Builder


 if (TSAnimate->State == tssOn)
  ActivityIndicator->Animate = True;
 else
  ActivityIndicator->Animate = False;

SearchBox

SearchBox je tvořen kombinací dvou v Delphi či C++Builderu běžně používaných komponent kterými jsou edit box a klasické tlačítko. Podle zvoleného nastavení může komponenta reagovat na stisk tlačítka (ikony) nebo na klávesu Enter. V obou případech je vyvolána událost "OnInvokeSearch".

Komponenta SearchBox


Delphi


// Inicializace vyhledávacího políčka
procedure TForm1.SearchBox1Enter(Sender: TObject);
begin
  SearchBox1.Text := '';
end;

procedure TForm1.SearchBox1InvokeSearch(Sender: TObject);
begin
  ShowMessage('Vyhledávám ' + SearchBox1.Text + ' ...');
  // kód pro realizaci vyhledávání
end;


C++Builder


void __fastcall TForm1::SearchBox1Enter(TObject *Sender)
{
  SearchBox1->Text = "";
}

void __fastcall TForm1::SearchBox1InvokeSearch(TObject *Sender)
{
  ShowMessage("Vyhledávám " + SearchBox1->Text + " ...");
}

K tomuto článku je k dispozici videotutoriál:



Zdrojové kody jsou k dispozici zde.

čtvrtek 23. června 2016

Knihovna FireMonkey

Přesto, že vývoji aplikací pro mobilní platformy jsem se již v některých příspěvcích věnoval, nebyl vysvětlen význam knihovny FireMonkey (někdy také označované zkratkami FMX nebo FM).

Co je FireMonkey


FireMonkey je aplikační platforma (knihovna komponent), kterou společnost Embarcadero poprvé přidalo do svých nástrojů ve verzi XE2. Jedná se o alternativu k populární VCL, která je určena výhradně pro rychlý vývoj aplikací pro Windows a je tak v mnoha ohledech závislá na službách poskytovaných operačním systémem.

Hlavním důvodem pro rozšíření vývojových nástrojů o knihovnu FireMonkey byla právě snaha nabídnout vývojářům možnost vyvíjet aplikace pro různá zařízení a různé operační systémy. Knihovna FireMonkey je napsána v přímo v jazyce Objec Pascal a pro přístup k hardware jsou používány knihovny cílového operačního systému. U Windows jde o GDI+/Direct2D, na Mac OS X je to OpenGL a na iOS pak OpenGL_ES. Většina vizuálních objektů knihovny je založena na přístupu "CustomDraw", který řeší jejich vykreslování na úrovni hardwaru. Přes instanci "Platform", která tvoří můstek mezi FireMonkey a zvoleným OS je pak realizována například práce s okny, myší nebo vybranými nativními ovládacími prvky. Přibližně 80 - 90% kódu je tak nezávislá na hostitelském operačním systému.

Aby použití vlastních prvků uživatelského rozhraní nemělo nepříznivý dopad na rychlost běhu výsledných aplikací, využívá FireMonkey v maximální možné míře výkonu grafických procesorů. Všechny operace pracující s grafikou běží na samostatném vláknu a výkon CPU je tak k dispozici pro zpracování aplikační logiky. Zapojení GPU kromě rychlosti přináší i přístup k řadě grafických funkcí, které lze využít k návrhu poutavějších a uživatelsky přívětivějších aplikací.

Knihovny FireMonkey a VCL (Visual Component Library) nejsou vzájemně kompatibilní a nelze je kombinovat v rámci jednoho modulu. Příčinou jsou některé rozdíly v jejich vnitřní implementaci.

Podporované platformy
Aplikace vytvořené za pomoci FireMonkey lze přeložit do nativního tvaru pro operační systémy:

  • Windows 32-bit (Intel)
  • Windows 64-bit (Intel)
  • Mac OS X (Intel)
  • iOS (ARM) + iOS Simulátor (Intel)
  • Android (ARM) + Android Emulator
  • Android (Intel, s využitím libhoudini)

Hlavní rozdíly mezi FMX a VCL

Použití vektorové grafiky


Knihovna VCL využívá rastrovou (bitovou, bitmapovou) grafiku, která je založena na popisu vlastností jednotlivých bodů, neboli pixelů. Ve FireMonkey je naopak většina vizuálních objektů "složena" z takzvaných primitivních grafických tvarů vektorové grafiky, jako je například obdélník, oblouk, kruh a další. Protože vektorová grafika na matematickém popisu grafických prvků, umožňuje bezproblémovou změnu měřítka, což je v době, kdy trh nabízí nekonečnou kombinaci velikostí a rozlišení zobrazovacích zařízení důležitá přednost.

Rastrová grafika

Rozměry, umístění prvků


Pokud v knihovně VCL nastavujeme šířku, výšku nebo například vzdálenost od okraje formuláře, musíme použít datový typ Integer. V opačném případě obdržíme chybové hlášení.

VCL - Chybové hlášení

FireMonkey v tomto případě těží z použití vektorové grafiky. Nejen, že umožňuje použití datového typu Float, ale místo pevné hodnoty lze použít takzvané animace (v inspektorovi objektů jsou označeny ikonkou okénka filmového pásu).

Zadávání rozměrů ve FireMonkey

Kódování barev


FireMonkey je určeno pro vytváření grafických aplikací. Zásadní je proto co nejširší podpora pro práci s barvami. Zásadním rozdílem v používání barev ve FireMonkey je využívání takzvaného "Alfa kanálu", neboli průhlednosti.

Rozdíly v kódování barev VCL a FireMonkey

Všechny parametry přístupné během návrhu lze samozřejmě nastavit i prostřednictvím kódu. Zde je třeba zohlednit rozdíly mezi knihovnami VCL a FireMonkey. Ty se týkají především již zmiňovaného kódování barev a jiného pojmenování barevných konstant.


Delphi


Knihovna VCL
Knihovna FMX

uses
  VCL.Graphics

var
  barva: TColor;

barva := clRed;
barva := 255;
barva := rgb(255, 0, 0);
barva := $0000FF;
uses
  System.UIConsts

var
  barva: TAlphaColor;

barva := claRed;
barva := $00FF0000;
barva := TAlphaColorRec.Red;
barva := TAlphaColors.Red;



C++Builder


Knihovna VCL
Knihovna FMX
#include <System.UIConsts.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TColor b;
  barva = clRed;
  barva = 255;
  barva = rgb(255, 0, 0);
  barva = $0000FF;
}


#include <System.UIConsts.hpp>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TAlphaColor b;
  barva = claRed;
  barva = System::Uiconsts::claRed;
  barva = TAlphaColors::Red;
  barva = 536870911;
}

Použití fontů


Ve VCL se velikost fontu určuje v bodech. Na palec připadá 72 bodů. Ve FireMonkey jsou velikosti fontů uváděny v DIP (Device Independent Pixel). Na palec připadá 96 pixelů. Při stejné velikosti písma tak bude text ve FireMonkey drobnější.

Porvnání velikosti fontů

Vztah předek rodič


VCL omezuje možnost nastavit objekt jako vlastníka pouze pro kontejnery jako jsou komponenty tříd "TForm", "TFrame", "TPanel" nebo "TDataModule". FireMonkey je v tomto směru mnohem otevřenější a prakticky kterýkoliv objekt může být vlastníkem libovolného jiného objektu. Implementace je možná nejen z kódu, ale často i vizuálně za pomoci okna "Structure Window":

Okno "Structure Window"


úterý 14. června 2016

FAQ Invalid platform

Na některých počítačích se je možné setkat při překladu s chybovým hlášením spojeným s neplatným určením cílové platformy:

Chyba Invalid Platform

Delphi v současné době podporuje překlad pro 7 různých platforem (Windows 32, Windows 64, MacOSX, Android, Android Emaulátor, iOS a iOS Simulátor). Nastavení pro jednotlivé platformy je uloženo v souboru EnvOptions.proj.
Při typické instalaci jej naleznete v adresáři:
C:\Users\UserName\AppData\Roaming\Embarcadero\BDS\verze\
tedy například:
C:\Users\petr\AppData\Roaming\Embarcadero\BDS\18.0\EnvOptions.proj  

Konkrétní hodnoty se načítají na základě proměnné $(Platform), která se přebírá z nastavení systému.

EnvOption

V případě, že je z jakéhokoliv důvodu na počítači tato proměnná nastavena a její hodnota neodpovídá očekávaným variantám (na Windows Win32 nebo Win64), je při překladu zobrazena výše uvedená chyba.

Proměnné prostředí Windows

Nejčastějším doporučením, které je možné najít na Internetu je otevřít dialog pro nastavení proměnných prostředí a proměnnou "PLATFORM" jednoduše odstranit.

Toto řešení je ve většině případů postačující. Existuje zde však riziko, že na nastavení této proměnné závisí korektní fungování některého z jiných programů, který je na počítači provozován.

Prostředí Delphi nabízí pro takové situace možnost "potlačení" nastavené hodnoty a její nahrazení hodnotou požadovanou. Stačí otevřít prostředí a v nabídce "Tools/Options/Environment Variables" kliknout na tlačítko "New", přidat novou proměnnou "PLATFORM" a přiřadit ji odpovídající hodnotu (například "Win32").

Přidání nové proměnné

V systému tak bude nyní tato proměnné k dispozici dvakrát, jednou na úrovni operační systému a jednou pro Delphi.

Provedené změny v nastavení Delphi

Po restartu vývojového prostředí by již mělo vše pracovat dle očekávání.

středa 6. dubna 2016

Windows 10 (část 2.)

RAD Studio 10 Seattle a Windows 10 (část 2.)

V minulém příspěvku jsme si ukázali, jak provázat aplikace vyvíjené v prostředích Delphi nebo C++ Builder 10 Seattle s centrem akcí operačního systému Windows 10, nebo jak použít nové vizuální styly.
Další novou komponentou pro knihovnu VCL, která je navržena pro podporu nových Windows 10 je ovládací prvek "SplitView". Komponenta SplitView je obdobou komponenty MultiView, která je součástí knihovny FireMonkey pro návrh multiplatformních aplikací. Jedná se o výsuvný panel, který může být použit k umístění libovolných ovládacích prvků. S použitím výsuvných panelů se můžeme setkat jak přímo u Windows 10, tak u mnoha dalších aplikací v čele s kancelářským balíkem Microsoft Office.

Výsuvné panely Win10 a MS Office

Realizace podobných výsuvných nabídek je nyní ve vývojových prostředích Delphi a C++Builder poměrně jednoduchou záležitostí. Jednou z možných variant je právě použití komponenty SplitView a komponenty CategoryButtons, která nabízí velmi široké možnosti pro přizpůsobení vzhledu a chování.

SplitView

Důležitá nastavení pro panel SplitView jsou:
Placement - Určuje umístění panelu v rámci formuláře. SplitView lze aktuálně uchytit k levé (svpLeft) nebo pravé (svpRight) hraně okna.
CloseStyle - Jak název napovídá, upravuje toto nastavení chování panelu při jeho skrytí. To může být buď úplné (svcColapse), nebo částečné (svcCompact). Šířku vysunutého a částečně skrytého panelu lze určit dle potřeby.
DisplayMode - Nastavení, které ovlivňuje, zda klientská oblast formuláře je či není dotčena zobrazením panelu. Pokud ne (svmOverlay), panel při vysunutí "překrývá" vizuální prvky umístěné v oblasti, kde se panel SplitView zobrazí. V opačném případě (svmDocked) budou komponenty, které mají pozici určenou relativně ke klientské oblasti formuláře panelem "odsunuty".  
UseAnimation - Určuje, zda má být pro zobrazení/skrytí SplitView použita animace (panel se neobjeví, ale je vysouván postupně). Pokud je animace zapnuta, lze nastavit počet kroků (parametr AnimationStep) a časový odstup (parametr AnimationDelay) mezi nimi. Kombinací těchto atributů lze měnit plynulost, s jakou se bude komponenta SplitView zobrazovat.


Delphi


// Nastavení SplitView
SplitView1.Placement := svpLeft;
SplitView1.CloseStyle := svcCompact;
SplitView1.DisplayMode := svmDocked;
SplitView1.UseAnimation := True;
SplitView1.AnimationStep := TrackBar1.Position;
SplitView1.AnimationDelay := TrackBar2.Position;

// Zobrazení panelu
procedure TForm1.Button1Click(Sender: TObject);
begin
  if SplitView1.Opened then
    SplitView1.Close
  else
    SplitView1.Open;
end;



C++Builder


// Nastavení SplitView
SplitView1->Placement = svpRight;
SplitView1->CloseStyle = svcCollapse;
SplitView1->DisplayMode = svmOverlay;
SplitView1->UseAnimation = True;
SplitView1->AnimationStep = 50;
SplitView1->AnimationDelay = 30;

// Zobrazení panelu
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  if (SplitView1->Opened) {
 SplitView1->Close();
} else {
 SplitView1->Open();
}
}

CategoryButtons

Pro návrh nabídky, kterou lze uživateli zobrazit s využitím SplitView můžeme použít komponentu CategoryButtons. Tato komponenta slouží jako kontejner pro správu tlačítek. Tlačítka lze členit do kategorií, které lze dle potřeby skrýt (sbalit) nebo zobrazit (rozbalit). Tlačítka mohou kromě textu obsahovat i grafiku.

Součásti komponenty CategoryButtons


Pokud se chceme vzhledem co nejvíce přiblížit výsuvným nabídkám operačního systému Windows 10, musíme pro CategoryButtons změnit některá nastavení.


Delphi


V případě, že chceme u jednotlivých tlačítek zobrazit kromě textu i ikony, připravíme si vhodnou grafiku. Tlačítkům můžeme ikony přiřadit jak přímo, tak odkazem na index komponenty ImageList, kterou můžeme použít jako kontejner:
CategoryButtons1.Images := iList;

Pokud pro SplitView nastavíme částečné skrývání (svcCompact), je vhodné ve stavu closed zneviditelnit popisky tlačítek (z čistě estetického důvodu):
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions - [boShowCaptions];

Dále skryjeme rámeček, aby tlačítka působila jako nedílná součást SplitView:
CategoryButtons.BorderStyle := bsNone;

Tlačítka ukotvíme ke komponentě SplitView:
CategoryButtons.Anchors := [akLeft, akRight];

Dle potřeby upravíme písmo pro popisky tlačítek:
CategoryButtons.Font.Size := 11;
CategoryButtons.Font.Color := clWhite;

Odpovídajícím způsobem upravíme také vzhled tlačítek:
// Výšku tlačítka
CategoryButtons.ButtonHeight := 45;
// Standardní barvu tlačítky
CategoryButtons.RegularButtonColor := clNone;
// Barva stisknutého tlačítka
CategoryButtons.SelectedButtonColor := clNone;
// Barva tlačítka nad kterým je kurzor myši 
CategoryButtons.HotButtonColor := clGray;
// Šířka tlačítka přes celou šířku komponenty CategoryButtons 
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions + [boFullSize];
// Tlačítka nebudou v rámečku kategorie 
CategoryButtons.ButtonOptions := 
CategoryButtons.ButtonOptions + [boCaptionOnlyBorder];
// Horizontální zobrazení kategorií
CategoryButtons.ButtonOptions := CategoryButtons.ButtonOptions
- [boVerticalCategoryCaptions];



Stejný kód pro C++Builder

CategoryButtons->Images = iList;
CategoryButtons->Categories->Items[0]->Items->Items[0]->ImageIndex = 0;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boShowCaptions;
CategoryButtons->BorderStyle = bsNone;
CategoryButtons->Anchors = CategoryButtons->Anchors<<akLeft<<akRight;
CategoryButtons->Font->Size = 11;
CategoryButtons->Font->Color = clWhite;
CategoryButtons->ButtonFlow =cbfHorizontal;
CategoryButtons->ButtonHeight = 45;
CategoryButtons->RegularButtonColor = clNone;
CategoryButtons->SelectedButtonColor = clNone;
CategoryButtons->HotButtonColor = clGray;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boFullSize;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions<<boCaptionOnlyBorder;
CategoryButtons->ButtonOptions =
CategoryButtons->ButtonOptions>>boVerticalCategoryCaptions;

Výsledkem by měl být zhruba následující vzhled nabídky:

Výsledný vzhled aplikace

Zdrojový kód aplikací je dostupný na adrese:
https://onedrive.live.com/redir?resid=E2F9F7B64CA96B45!1281&authkey=!AEQdxr-4pbMpuhA&ithint=folder%2c

K tomuto článku je k dispozici i videoturoriál:


úterý 22. března 2016

Windows 10 (část 1.)

RAD Studio 10 Seattle a Windows 10

Ještě do 29. července 2016 mohou všichni uživatelé, kteří na svém PC používají Windows 7 a vyšší využít bezplatného přechodu na Windows 10. Takto získaná licence je vázána na konkrétní počítač, není však časově ani funkčně omezena. Jednou z hlavních výhod přechodu na Windows 10 jsou aktualizované ovladače, podpora některých nových technologií a vyšší úroveň zabezpečení systému. Důležitá je také podpora systému ze strany společnosti Microsoft, která je pro Windows 10 garantována do roku 2020 respektive do roku 2025.

Společnost Emabarcadero zareagovala vydáním nové verze vývojových nástrojů 10 Seattle. Ty umožňují využít mnohé z nových vlastností, které Windows 10 přinesly:

Vylepšení na úrovni prostředí
  • RAD Studio IDE je schopno pracovat s větší velikostí paměti
  • Prostředí podporuje práci s více monitory a s monitory 4K
Nové doplňky a komponenty
  • Nové vizuální styly Windows 10
  • Možnost provázání aplikace s centrem akcí
  • Nové komponenty „SplitView“ a „RelativePanel“
  • Sdílení dat aplikace prostřednictvím „Share Contracts“
  • Windows 10 ovládací prvky „SearchButton“, „ToggleSwitch“ a „ActivityIndicator“
Vzhled aplikace (stylování)
Spolu s uvedením verze 10 Seattle uvolnila společnost Embarcadero nové styly pro knihovny VCL a FireMonkey. Upravit stávající aplikaci tak, aby si uživatel mohl změnit její vzhled, je velmi jednoduché. Nejprve ve vlastnostech projektu (Shift+Ctrl+F11), v sekci „Application/Appearance“ je třeba vybrat styly, které mají být uživatelům k dispozici pro individuální nastavení.

Výběr dostupných stylů


Pozor! Základní styl "Windows" nesmí být nastaven jako defaultní.

V kódu je třeba do sekce uses přidat odkaz na jednotku vcl.Themes. To nám umožní využívat služby Správce Stylů. Pro výběr požadovaného stylu můžeme použít například komponentu ComboBox.


Delphi


uses
  …, Vcl.Themes;

// ComboBox naplníme dostupnými styly:
procedure TForm1.FormCreate(Sender: TObject);
var
  StyleName: String;
begin
  for StyleName in TStyleManager.StyleNames do
    cb1.Items.Add(StyleName);
end;

// Do události OnChange komponenty ComboBox přidáme
// kód pro změnu aktuálního stylu:

procedure TForm1.cb1Change(Sender: TObject);
begin
  TStyleManager.SetStyle(cb1.Text);
end;


C++ Builder


//Do hlavičkového souboru doplníme
#include <Vcl.Themes.hpp>

//Naplnění ComboBoxu:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  DynamicArray<String> styleNames = Vcl::Themes::TStyleManager::StyleNames;
  for (int i = 0; i < styleNames.Length; ++i)
     {
       String styleName = styleNames[i];
       cb1->Items->Add(styleName);
     }
}

//Nastavení zvoleného stylu:
void __fastcall TForm1::cb1Change(TObject *Sender)
{
  TStyleManager::SetStyle(cb1->Text);
}

Výsledný vzhled aplikace


Spolupráce aplikace s Centrem Akcí
Windows 10 si kladou za cíl být jednotící platformou, která na všech typech zařízení umožní uživatelům pracovat tak, jak jsou zvyklí. Protože přibývá uživatelů, kteří si své návyky přináší z chytrých telefonů nebo tabletů, setkáme se ve Windows 10 i s prvky, které byly dříve výhradně doménou mobilních zařízení. 
Jedním z nich je "Centrum akcí". Podobně jako u systémů Android nebo iOS se jedná o rychle přístupnou oblast, prostřednictvím které je uživatel informován o důležitých událostech, a z které lze realizovat většinu běžných úloh.

Centrum akcí (Android, iOS, Win10)
  

Služeb "Centra akcí" mohou využívat i aplikace napsané v Delphi nebo C++Builderu 10 Seattle. Pro tento účel zde přibyla VCL komponenta TNotificationCenter. S využitím komponenty „Notification“ stačí vytvořit novou instanci upozornění, nastavit potřebné parametry a odeslat „Centru akcí“. Komponenta rovněž umožňuje ošetřit událost „ReceiveLocalNotification“, která je vyvolána, když uživatel potvrdí přijetí oznámení (klikne na něj myší). Z aplikace tak můžeme uživatele informovat o libovolné události (např. dokončení nějaké operace) a pokud uživatel zprávu přijme, aplikaci maximalizovat nebo zobrazit odpovídající formulář či dialog.


Delphi


uses
  ..., System.Notification;

procedure TForm1.Button1Click(Sender: TObject);
var
  nt: TNotification;
begin
  // Vytvoření upozornění
  nt := TNotification.Create;
  nt.Name := 'Test';
  nt.Title := 'Testovací oznámení';
  nt.AlertBody := 'Operace byla úspěšně dokončena.';
  // Zobrazení upozornění
  nc.PresentNotification(nt);
end;

// Zpracování
procedure TForm1.ncReceiveLocalNotification(Sender: TObject;
  ANotification: TNotification);
begin
  ShowMessage('Upozornění přijato uživatelem');
end;


C++Builder


// Odeslání zprávy
void __fastcall TForm1::btnPoslatZpravuClick(TObject *Sender)
{
  TNotification *nc = NotificationCenter1->CreateNotification();
  nc->Name = "Test";
  nc->Title = "Testovací oznámení";
  nc->AlertBody = "Operace byla úspěšně dokončena.";
  NotificationCenter1->PresentNotification(nc);
}

// Zpracování
void __fastcall TForm1::NotificationCenter1ReceiveLocalNotification(TObject *Sender,
            TNotification *ANotification)
{
  ShowMessage("Upozornění přijato uživatelem");
}

Zobrazení oznámení (lišta, centrum akcí)


Pozor! Chování centra akcí lze do velké míry přizpůsobit. Pokud se upozornění z Vaší aplikace v "Centru akcí" nezobrazuje, zkontrolujte si, že je tato možnost v nastavení Windows 10 povolena.

Komponenta „Notification“ je dostupná nejen pro knihovnu VCL, ale rovněž pro FireMonkey. Možnosti práce s oznámeními se na různých platformách mírně liší. Například zvuková signalizace, použití visaček (Badges) nebo zobrazení upozornění v určený čas nemusí být podporováno na všech platformách.

Funkce dle platforem


K tomuto článku je k dispozici i videoturoriál a to na adrese: https://www.youtube.com/watch?v=5hfzo9bHP6E