Firemonkey från enkel till komplex. Delphi, FireMonkey, All-Access och andra trevliga överraskningar

I samband med den här bloggen är det här projektet främst intressant eftersom det är implementerat på FireMonkey och är en fantastisk demonstration av den här plattformens möjligheter. Och nu, bokstavligen förra veckan, släpptes den offentliga betaversionen av produkten. Därmed kan bloggläsare själva "röra" det riktigt svåra Firemonkey Bilaga.

Några ord om programmet. Först och främst bör det noteras att den nuvarande versionen av Sphere är placerad lite annorlunda. Ja, ibland händer det...

Ny SphereLive det här är inte bara ytterligare en budbärare. Först och främst är det ett verktyg som gör att du effektivt kan organisera utbildningsprocessen. Det möjliggör distansföreläsningar, privata konsultationer, en-till-en-lektioner och andra liknande evenemang. Dessutom är den utrustad med nästan allt du behöver för att arbeta. Börjar med ett unikt filöverföringssystem och slutar med det mest kraftfulla faktureringsundersystemet.

I detta skede är priserna för att använda produkten ganska demokratiska. Med förbehåll för ett begränsat antal lyssnare och en liten mängd resurser kan produkten användas gratis.

Naturligtvis använder Sphere den största fördelen Firemonkey- plattformsoberoende. Applikationen är nu tillgänglig i Windows och MacOS-utgåvor. Android version förväntas från dag till dag.

Men för mig är SphereLive intressant, först och främst, som en innovativ produkt med en hel rad originallösningar. Ibland är det precis som "... wow, hur gjorde du det?" Förresten, en av Sphere-utvecklarna deltar aktivt i diskussioner på FireMonkey-forumet. I sig kan detta fungera som ett tillfälle att ladda ner applikationen och diskutera tekniska problem direkt med författaren. Tro mig, det finns något att se, det finns mycket att lära.

TListViewär en av nyckelkomponenterna för att bygga ett mobilapplikationsgränssnitt i Firemonkey... Denna komponent är inte den lättaste att använda, den kräver ofta en betydande mängd kod, men den ger utvecklaren stor handlingsfrihet. Naturligtvis, i applikationer kan du använda och TListBox där allt är mycket lättare. Men TListBox, kanske bra för att visa ett fast antal poster, för att visa data från datakällor, måste du definitivt använda TListView.

De huvudsakliga skillnaderna mellan TListView och TListBox är:

  1. TListBoxItem- kontroll, TListViewItem- Nej
  2. V TListBoxItem du kan lägga till alla kontroller med hjälp av Parent. V TListViewItem- Nej.
  3. TListViewItem lagrar endast data för visning
  4. TListViewItem själv återger den lagrade datan genom metoden Framställa
  5. På grund av den faktiska manuella renderingen i TListVIewItem, uppnås en ökning i hastighet och låg minnesförbrukning (lagring av endast faktiska data)
  6. För att skapa din egen version TListViewItem, måste du skapa din egen artikelklass, implementera nödvändiga data (till exempel tid) i den och skapa en platsredigerare för att redigera tiden, registrera den osv.

Själva faktumet att förbättra prestanda och minska minnesförbrukningen är ett starkt argument för att använda TListView... Men det finns också något annat.

I många Android Jag har sett följande implementering av listor i applikationer. När du klickar på ett objekt i listan (Artikel, om du följer den valda terminologin) utförs en viss åtgärd. Vanligtvis anropas ett nytt formulär för att redigera data. Long Tap har dock en helt annan effekt. Och dessa händelser överlappar inte varandra. Med andra ord kan Android-applikationer tydligt skilja mellan "långt tryck" och "normalt". Dessutom utlöses ingen av dessa händelser när du rullar igenom listan. Ett bra exempel är en lista över meddelanden i Yandex Mail.

Först och främst vill jag gratulera alla bloggläsare till den gångna semestern och önskar er allt gott för det kommande året.

På grund av förståeliga omständigheter började jag inte göra en traditionell nyårsrapport, samt göra några planer för året. Ändå står livet inte stilla, arbete utförs och vissa händelser i Delphi-världen händer. Jag åtar mig att publicera ett urval av missade "nyheter från Delphis värld" under jullovet inom en snar framtid. Under tiden kommer jag att berätta om den nya enheten som jag köpte.

Du kan hitta egenskaperna på den officiella webbplatsen. Och det subjektiva intrycket är väldigt trevligt. Uppmärksamhet dras till det faktum att enheten bokstavligen är fylld med proprietär programvara från tillverkaren. Och från säljarna fick en imponerande uppsättning mjukvara i present. I drift är smarttelefonen ganska kvick och motiverar helt dess kostnad (cirka 200 $). Jag köpte förresten min förra telefon GSmart 1362 för ungefär samma pengar för 2 år sedan. Men som du säkert gissat, var det största intresset för mig hur Firemonkey applikationer.

Innan du fortsätter historien om timern - två nyheter.

Först kom den första XE7-uppdateringen ut. Traditionellt är det tillgängligt för registrerade användare. Du kan hitta listan över fixade buggar. Jag ville se hur applikationen beter sig i den uppdaterade miljön. Egentligen behövde inga korrigeringar göras, även om det fortfarande fanns utrymme för experiment.

Andra nyheten. Embarcadero specialerbjudanden har förlängts till slutet av året:

Nåväl, nu direkt till ämnet för inlägget. I princip är allt som återstår för oss att försöka starta den redan skapade applikationen för Android. Till detta använder vi det jag skrivit om i tidigare inlägg. Nämligen ny. Jag har felsökt den här applikationen Nexus 7, respektive lagt till vyn av Android 7 ″ surfplatta. Designen fick "justeras" bara lite.

Förmodligen var det bara de lata som inte skrev sin egen timer. Och i samband med att stödja utveckling för mobila plattformar kan uppgiften att skriva en timer i Delphi betraktas som en sekt i allmänhet. Så jag tänkte varför, som ett exempel på utveckling Firemonkey applikationen analyserar inte timern exakt. För Android förstås. Naturligtvis kommer detta att vara exakt min syn på uppgiften, som, även om den inte är särskilt svår, fortfarande har sina egna nyanser. Kanske har du några kommentarer eller förslag, det skulle vara bra att diskutera dem i kommentarerna. Jag är absolut ingen expert på att skriva mobilapplikationer, så alla dina kommentarer kommer att vara värdefulla för mig.

Vi kommer att utveckla exakt timern, i den engelskspråkiga betydelsen av denna term. Det vill säga att skärmen kommer att visa en ratt och fyra knappar - "Start", "Paus", "Stopp" och "Avbryt". Nedräkningen kommer att gå framåt (dvs tiden kommer att öka). Alternativet där tiden ställs in och nedräkningen körs heter Stop Watch i engelsk terminologi, kanske ska jag försöka implementera det senare. Applikationen vi ska ta itu med är närmare ett stoppur i funktionalitet.

Delphi XE7, gör det möjligt för oss att avsevärt förenkla utvecklingsprocessen, på grund av det faktum att vi nu kan skapa och felsöka en riktig applikation för Win32 och sedan helt enkelt lägga till formulärvyer för de nödvändiga mobila enheterna och, efter att ha justerat dem något, få en fungerande mobil-app. Låter det för vackert för att vara sant? Kanske. Men jag vill också kontrollera detta påstående genom att genomföra uppgiften.

Ju oftare jag tillfrågas mina kollegor i privata samtal om det är möjligt att utveckla mobilapplikationer i Firemonkey eller är det en prototyp snarare än en produktionslösning?

Jag tror, ​​nu kan jag garantera även de ut-och-ut-skeptiker.

Min barmvän och kollega Tagir Yumaguzin berättade om projektet han deltog för länge sedan. Nu, när det här projektet är i pre-release-läge, bestämde vi oss för att den här beskrivningen kommer att vara intressant för Delphi-gemenskapen. I huvudsak är detta ett riktigt stort projekt genomfört i FM. Vi pratar om Sphere Live-projektet. En liten artikel ägnad åt det projektet publicerades nyligen i Habrahabr.ru Alexey Glyzin, chef för '' utvecklingsavdelningen gick med på att berätta mer om projektet med hänsyn till publiken på min blogg.

A.B.- Alexey, i allmänhet, vad är ditt projekt?

A.G.: - Idén har inte dykt upp på en gång och direkt. Innan "Sphere"-projektet hade vårt team arbetat med projektet där strömmande ljud-/videotekniker implementerades. Senare skapade vi vår egen programvara som kunde leverera multimediaströmmar till ett obegränsat antal användare inklusive feedback. Men vi behövde ha en faktureringsfunktion inkluderad.
Ansökan måste uppfylla flera krav. För det första den maximalt förenklade organiseringen av konferenser eller överföring till deltagarna vilket belopp vi inte kan förutse. För det andra, det viktigaste, är att ge våra kunder en möjlighet att tjäna med vår applikation och att minska komplexiteten i systemet, mängden instrument som behövs för att nå målet. Lättheten att organisera kurser, webinar eller bara en konsultation.

Ett litet hack till minne av FireDAC i den aktuella versionen Delphi XE6... Men först några ord om var man kan söka svar på frågor ang Firemonkey... Rysktalande användare har en privilegierad position här.

När jag förberedde mig för evenemanget i Charkiv som en del av RAD Studio XE5 World Tour, stötte jag på ett litet problem när jag arbetade med SQLite via FireDAC... Om basen ifylld Windows-applikation överförs tillsammans med applikationen till Android, Kyrilliska strängar i databasen är inte längre läsbara (frågetecken visas istället för bokstäver). Men om du fyller i databasen direkt på en mobil enhet läses ryska tecken helt korrekt. Data från databasen fylls i ett tredjepartsprogram, eller i Delphi ett program som använder andra dataåtkomstkomponenter visades också bra. Mötet lyckades inte hitta en lösning, och jag var tvungen att citera en välkänd ukrainsk fotbollsspecialist: "Låt oss ta reda på det!"

Till skillnad från det senare lyckades jag ta itu med det beskrivna problemet. Som standard, när den är ansluten till SQLite v FireDAC ANSI-strängformatet används.

Om du tvingar Unicode att ställas in kommer allt att fungera som det ska. Men det finns också ett obehagligt ögonblick. Om du ändrar formatet på strängarna måste du återskapa listan med fält i alla datamängder, samt återansluta de komponenter som är ansvariga för att visa och mata in data. Därför är det bättre att ta hand om kodningen direkt.

I de tidigare delarna av den här miniserien kom vi på hur man skapar en databas, dess struktur och ansluter till den från Delphi. I den här delen föreslår jag att förstå visningen av data från tabeller, med början i det enklaste fallet.

En enkel tabelldataredigerare, vanligtvis en del av en komplex applikation. Jag brukar använda ett separat formulär för att redigera tabeller. Låt oss börja med en lista över produkter. Först och främst måste vi skapa en datauppsättning för att komma åt tabelldata. I vårt fall är det fullt möjligt att använda komponenten TADTable... Låt oss lägga det i DataModule och specificera värdet på egenskapen Förbindelse... I fastighetsredaktören Tabellnamn en lista med tabeller visas, från vilken vi väljer en tabell Produkter... Om du gjorde allt korrekt kan du tilldela fastigheten Aktiva Sann. Det är bättre att byta namn på komponenten direkt (till exempel ADTProduct). Efter det brukar jag skapa en uppsättning fält för datamängden. Vi anropar fältredigeraren (dubbelklicka på komponenten) och väljer alternativet Lägg till alla fält i snabbmenyn.

För dem som inte är insatta kommer jag att förklara kärnan i denna operation. Här skapar vi en fördefinierad uppsättning DataSet-fält. Om vi ​​inte gör detta manuellt i designläge kommer i princip inget hemskt att hända. RunTime skapar denna uppsättning automatiskt. Men jag föredrar fortfarande att skapa den för hand. Det finns flera anledningar till detta. För det första är det bekvämare att hantera uppsättningen av fält, eftersom vi kan skapa ytterligare (beräknade eller lookUp) fält själva i designläge. Vi kan också ändra egenskaperna för själva fälten. Och dessutom får vi möjlighet att referera till fälten i koden med namnet på TField-komponenten, vilket, enligt min mening, avsevärt förenklar kodskrivningen.

Som i fallet med VCL-applikationen kopplar vi komponenten till datamängden TDataSource... Den här komponenten kommer att tillhandahålla länken mellan datamängden och visuella kontroller. Komponentens DataSet-egenskap måste referera till vår datauppsättning (ADTProduct). Nedan finns ett fragment av DFM-filen

objekt ADTProduct: TADTable IndexFieldNames = "ID" Connection = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "Product" Vänster = 64 Top = 192 objekt ADTProductID: TADAutoIncField FieldName = "ID" Ursprung = "ID" ProviderFlags = [pfInWhere, pfInKey] ReadOnly = True end object ADTProductTitle: TStringField FieldName = "TitleField" Ursprung = "Titel" Storlek = 50 slutobjekt dsProduct: TDataSource DataSet = ADTProduct Left = 120 Topp = 192 slut

Var uppmärksam på en intressant funktion, DataModule-formulärfilen sparas inte i FMX-format, som en vanlig FireMonkey-form, utan i DFM-format, som i VCL.

Nästa steg är att skapa en procedur för att öppna datamängden, som vi måste anropa i RunTime när programmet startar. Låt oss skapa det i samma DataModul. Procedurkoden är extremt enkel:

förfarande TDM. ConnectToDB; starta ADConnection. Öppen (); ADT-produkt. Öppen (); slutet;

Placera proceduranropet i OnCreate-händelsehanteraren för DataModule.

Delphi XE2, som släpptes i september förra året, innehåller rekordmånga innovationer.
Korta recensioner av Delphi XE2-funktioner har redan publicerats på Habré. Men uppenbarligen var den mest slående innovationen FireMonkey-plattformen, och här skulle jag vilja uppmärksamma den lite.
Jag har gjort ett litet urval av länkar till material som, hoppas jag, hjälper dig att få en mer eller mindre adekvat förståelse av denna plattform. Men först, för de som inte vet, ska jag kort berätta vad FireMonkey är.
Embarcadero Technologies marknadsför FireMonkey som en plattform för att bygga fullfjädrade affärsapplikationer för Windows, Mac och iOS. Dessutom är denna plattform inbyggd i varje OS, dvs. när du kör en applikation skapad med FireMonkey används inga ytterligare tillägg.
FireMonkey binder direkt till ett inbyggt (ur OS-synpunkt) grafikbibliotek som OpenGL eller DirectX. Därmed erbjuds den bästa lösningen vad gäller GPU.
Kärnan i FireMonkey-arkitekturen är ett kraftfullt klassbibliotek (inklusive visuella komponenter).
Målplattformen väljs under sammanställningen.
Den första versionen av FireMonkey stöder bara Win32, Win64, MacOSX och iOS, i framtiden planerar Embarcadero att porta den till flera andra plattformar.

Vad bör övervägas?

Trots att FireMonkey-plattformen tillhandahåller en omfattande verktygslåda för att utveckla 3D-applikationer kan den inte betraktas som en spelmotor. FireMonkey är just positionerad som en plattform för att utveckla affärsapplikationer.
Produkten är nu i ett tidigt skede av sin utveckling. Och många av FireMonkeys funktioner genomgår förändringar, både kvalitativa och kvantitativa.

Jag hoppas att länkarna nedan hjälper dig att förstå huvudfunktionerna i den nya plattformen.
Officiell produktsida på Embarcaderos webbplats (ryska)

Bland det engelskspråkiga materialet vill jag lyfta fram serien (eng.)

Vad att se?

När det gäller den senaste versionen av Delphi finns det mer video om produktens funktioner och tekniker än någonsin tidigare. Både officiella, från Embarcadero och från oberoende utvecklare. Det finns många videor på YouTube om FireMonkey, du kan bara använda sökningen. Bland detta överflöd av material kommer jag att peka ut en serie med tre videor från Marco Cantu - RAD in Action-målsidan., vilket ger min forskning en användbar vektor.

Vad är FireMonkey?


FireMonkey (FMX) är ett ramverk för plattformsoberoende utveckling både för stationära system (Windows, Mac OS + inom en snar framtid, det är planerat att stödja serversidan på Linux) och mobil (iOS och Android) med hjälp av Delphi / C ++ språk.

Egenskaper:

  • en enda kodbas för alla plattformar;

  • vilken kontroll som helst (visuell komponent) kan vara en behållare (förälder) för andra komponenter;

  • närvaron av en mycket avancerad relativ position (20 typer) av komponenter på formuläret;

  • LiveBinding låter dig ansluta alla typer av data eller information till vilket användargränssnitt eller grafiskt objekt som helst;

  • närvaron av stilarna i formen / komponenterna;

  • Multi-Device Preview låter dig anpassa den visuella presentationen för varje plattform;

  • FireUI Live Preview - visar vyn av applikationen på riktiga enheter i realtid.

Möjligheter:

  • använda det inbyggda API:et för varje plattform, såväl som möjligheten att anropa inbyggda bibliotek från tredje part;

  • interaktion med alla sensorer (GPS, Accelerometer, Compass, Bluetooth (inklusive LE) och andra);

  • stöd för push-meddelanden, IoT;

  • stöd för asynkrona HTTP-förfrågningar;

  • stöd för de flesta databaser (MsSQL, MySql, Oracle, PostgreSQL, MongoDB, etc.);

  • arbeta med Cloud Service (Amazon, Azure);

  • stöd för Android Service.

Nackdelar (för närvarande):

  • brist på stöd för att anpassa inhemska klasser;

  • implementering av specifika saker är antingen omöjligt (widgets, tillägg (iOS), etc.) eller en dans med en tamburin är nödvändig (bakgrundstjänst, sändningsmeddelande, etc.);

  • anpassning av startskärmen (startskärmen), milt uttryckt, nej;

  • FMX-kontroller använder sin egen rendering (visualisering, ritning), som visuellt liknar den ursprungliga;

  • att använda inbyggda kontroller är förknippat med stora kroppsrörelser;

  • med mycket kapsling av komponenter händer otroliga saker: applikationen kraschar på olika ställen, den tappar fokus, fryser, etc.;

  • informationsinnehållet i applikationsfelsökning på mobila plattformar är noll;

  • beskrivningar av fel på mobila plattformar reduceras till värdelösa "Error 0x00000X";

  • sammanställningstiden vill vara den bästa för medelstora till stora projekt;

  • behovet av att använda en fil för att finjustera mobilapplikationer för varje plattform;

  • inget stöd för Intel Atom-arkitektur;

  • otillräckligt pris jämfört med konkurrenterna.

Fördelar:

  • mycket aktiv utveckling av både produkten och samhället nyligen, stöd för fler och fler nya teknologier;

  • närvaron av ett stort antal gratis och kommersiella komponenter;

  • hastigheten på applikationen är mycket nära den ursprungliga;

  • en mycket avancerad visuell redaktör och miljön i allmänhet, närvaron av stilar;

  • möjligheten att testa en applikation på Win och först därefter distribuera den på enheter, vilket avsevärt påskyndar utvecklingen;

  • ändra läge / plattform med en lätt rörelse av handen;

  • PAServer ger enkel interaktion med MacOs vid utveckling för Apple OS;

  • stöd för 3D-grafik direkt.

Avslutningsvis vill jag säga att FireMonkey under de senaste åren har vuxit till ett professionellt verktyg för plattformsoberoende utveckling av affärsapplikationer och inte bara. Många brister åtgärdas successivt och för varje release blir produkten mer och mer modern och självförsörjande, den existerande skepticismen mot själva Delphi-språket, förknippad med många års stagnation, försvinner också. Att skriva nya projekt med FireMonkey är "säkert" och framåtblickande.

Mer än tre år har gått sedan CodeGear-divisionen, som ansvarar för skapandet av så världsberömda verktyg som Delphi, C ++ Builder och JBuilder, samt Interbase DBMS, blev en del av Embarcadero Technologies, känt för sina verktyg för design och administration av databaser. , och två år sedan vi diskuterade på sidorna i vår tidning vad vi kan förvänta oss i utvecklingen av verktyg som är så populära bland ryska utvecklare. Vi frågade David Intersimone, Vice President of Development Relations och Chief Evangelist of Embarcadero Technologies, och Kirill Rannev, Head of Representative Office of Embarcadero Technologies i Ryssland. För våra yngsta läsare vill vi informera er om att detta inte är den första intervjun som David och Kirill ger till ComputerPress – vårt samarbete har pågått under det andra decenniet. Och under ungefär samma antal år publicerar vi regelbundet recensioner av databashanteringsverktyg, där mycket uppmärksamhet ägnas åt Embarcadero-företagets produkter.

Datorpress: David, din division har varit en del av Embarcadero i tre år nu. För två år sedan var du full av entusiasm över att det blev en del av ett företag som står dig nära i syfte och anda. Har något förändrats under den här tiden? Har du och dina kollegor samma entusiasm?

Ja, jag är fortfarande entusiastisk. Den stora förändringen sedan vi blev en del av Embarcadero är att det har investerats mycket i Delphi. Antalet anställda som arbetar med utvecklingsverktyg har ökat, antalet teknologier som vi kan utveckla eller vid behov skaffa har ökat.

Utgivningen av RAD Studio XE 2, som vi planerar att demonstrera i Moskva, är den största utgåvan av denna produkt med enorma möjligheter och stor kvantitet plattformar som stöds sedan den första versionen av Delphi, skapad för 16-bitars Windows och tidigare en innovativ produkt som kombinerade komponentmetoden och kompileringen till maskinkod. Vi stödjer nu utveckling inte bara för Windows, utan även för Macintosh, för att inte tala om webbutveckling och skapande av applikationer för mobila enheter, och dessa applikationer för olika plattformar kan ha samma kod.

Den nya utvecklingsplattformen - FireMonkey - är ett samarbete mellan Embarcadero och det nyligen förvärvade ryska företaget KSDev från UlanUde, en tillverkare av komponenter för vektorgrafik, DirectX och OpenGL, tekniker för grafiska effekter och Delphi komponenter använder en GPU med PixelShader 2.0. Vi förvärvade KSDev-företaget (se ksdev.ru) för ett år sedan och började arbeta tillsammans för att skapa ett utvecklingsverktyg för flera plattformar som inkluderar en plattform för att utveckla FireMonkey-applikationer med komponenter för Delphi och C ++ Buider för att skapa ett användargränssnitt för applikationer , integration med databaser, grafikbearbetning med GPU och integration med operativsystemet.

Med FireMonkey kan du skapa en applikation som kör CPU och GPU tillsammans, och sedan kan du kompilera den för Windows, Mac OS eller iOS med hjälp av olika kompilatorer och Run-time Libraries (RTLs). Istället för att lära dig programmering med hjälp av olika grafikbibliotek, lär dig API:erna för olika plattformar som har olika system koordinater och olika möjligheter, utvecklare som använder Delphi och C++ Builder kan använda samma komponentmetod, visuellt redigera formulär och ansluta till databaser genom att flytta komponenten med musen. Detta är ett i grunden nytt sätt att bygga applikationer som körs på olika plattformar, och framtiden tillhör det. Om du vill lägga till stöd för andra operativsystem och plattformar till din applikation behöver du inte designa om och utveckla den – du behöver bara kompilera om den.

Vi skapar nya kompilatorer som genererar inbyggd kod. Idag finns det Delphi-kompilatorer för 32- och 64-bitars Windows-versioner, 32-bitarsversioner av Mac OS 10. Och vi arbetar med nästa generations Delphi- och C++ Builder-kompilatorer som gör att du kan skapa högpresterande maskinkod för både de listade och andra plattformar, som Android eller Linux, och behålla samma design, samma komponenter, samma kod genom att använda olika kompilatorer och runtime-bibliotek.

Som ni ser har jag tillräckligt med anledningar till entusiasm. Och utvecklarna jag träffar över hela världen vet att Embarcadero investerar mycket i Delphi och C ++ Builder, samt PHP-utvecklingsverktyg.

KP: Vilka framsteg har du kunnat uppnå med att integrera de två företagens verktyg under de senaste två åren? Vilka är Embarcaderos framtidsplaner på detta område?

DI.: När CodeGear-divisionen blev en del av Embarcadero hade detta företag utvecklingsteam i Toronto, Monterrey och Rumänien, vi var och är fortfarande i Scotts Valley och i Ryssland, i St. Petersburg. Embarcadero hade utvecklar- och DBA-verktyg, CodeGear hade applikationsutvecklingsverktyg, men de senare använder också databaser. En sammanslagning av företag är en kombination av expertis, kunskap inom området databaser, kodoptimering, inklusive serverkod. Sammanslagningen ledde också till skapandet av en ny produkt, AppWave, en speciell teknik för att förvandla en vanlig Windows-applikation till något mycket lätt att använda (som applikationer för iPhone eller andra enheter). AppWave låter dig inte installera en applikation, utan helt enkelt välja den och köra den från den förberedda applikationslagringsservern (appen), medan den kommer att köras på användarens dator utan att göra ändringar i dess register och systemområde filsystem... AppWave-applikationens webbläsare är förresten skriven i Delphi. Embarcadero använder Dephi för intern utveckling och vår expertis inom applikationsutveckling.

IPhone (iOS) app skapad av
med FireMonkey-plattformen

Du kan också använda integrationen av våra utvecklingsverktyg och DB Optimizer för att optimera SQL-frågor när du bygger applikationer. Genom att skicka SQL direkt till DB Optimizer kan du profilera den, testa den och sätta tillbaka den i utvecklingsmiljön med dess optimerade version. Embarcaderos databasexpertis har också förbättrat DataSnap-tekniken. Tack vare utvecklarna i Toronto har vi fått mycket kunskap om arkitekturen för flerskiktssystem och databaser. Vi har nu gemensam expertis inom server-side-kod och lagrad procedurskrivning på båda företagen. Vi har verktyg som RapidSQL och DB Change Manager, såväl som IDE:er som gör det enkelt att skapa kod på serversidan - till exempel, Code Insight och Code Completion-teknologier möjliggör SQL-insikt och SQL Completion-teknologier. Våra gemensamma tillvägagångssätt för att skapa klient- och serverkod, vår gemensamma filosofi, tillåter oss att ge gemensamma funktioner till databashanteringsverktyg och applikationsutvecklingsverktyg.

Kirill Rannev: Jag vill tillägga något viktigt. Ur kommersiell synvinkel är det mycket viktigt hur vi levererar våra verktyg. Till exempel innehåller den nya versionen av RAD Studio XE 2 Ultimate hela uppsättningen DB Power Studio-verktyg. Det är en mycket kraftfull uppsättning verktyg, inklusive RapidSQL Query Development Environment, DB Change Manager och DB Optimizer, för att utföra en viktig del av utvecklings- och distributionsprocessen genom att hantera ändringar av datamodellen, databasen, koden och mer. Detta är en mycket bra och rätt kombination av teknologier.

DI.: Men om det behövs kan utvecklare använda Subversion för versionshantering av källkod och DB Change Manager för metadataversionering. Du kan använda kodprofilering och DB Optimizer för att optimera kod på serversidan, RapidSQL för att bygga och felsöka kod på serversidan och våra IDE:er för att bygga och felsöka applikationer. Denna kombination av teknologier i RAD Studio XE Ultimate Edition visar parallellerna mellan databasen ocha. De flesta utvecklare som bygger affärsapplikationer med Delphi och C++ Builder arbetar med databaser och behöver dessa verktyg, och RAD Studio XE Ultimate Edition är en utmärkt kombination för dessa utvecklare.

KP: Den moderna användaren är inte längre en användare av Windows-plattformen ensam. Vi ansöker Mobil enheter, iPhone, iPad, Android-enheter. Det innebär att utvecklare måste börja rikta in sig på olika plattformar utan att nämnvärt öka sina investeringar i utbildning – det vill säga att de behöver universella verktyg. Uppenbarligen är det orealistiskt att förvänta sig uppkomsten av universella verktyg från plattformstillverkare, och i denna fråga kan vi bara lita på oberoende verktygstillverkare. Var kan vi lita på Embarcadero?

DI.: Vi har fortfarande mycket att göra när det gäller plattformssupport. Idag ger vi support för iOS-plattformen för iPhone och iPAD, sedan kommer smartphones baserade på Android-plattformen, Windows 7 och Blackberry att få vårt stöd. I RAD Studio XE 2 började vi med att bygga FireMonkey iOS-plattformen och sedan migrera FireMonkey till andra plattformar.

Samtidigt finns det ett stort antal operativsystem som stödjer pekskärmar(pekskärm), för telefoner, surfplattor och enheter, stationära datorer, och vi kommer att fortsätta att lägga till stöd för dem. Dessutom finns det röst, rörelse, biometriska system, accelerometrar, så vi måste fortsätta att expandera FireMonkey så att alla utvecklare kan dra nytta av de nya plattformarna. Till exempel var Microsoft Kinect-enheten designad för Xbox 360, och nu finns det en motsvarande SDK (Software Development Kit) för Windows. Och vi har redan exempel där vi använder rörelse för att styra en applikation på ungefär samma sätt som en mus eller ett tangentbord vanligtvis används.

När du skapar applikationer med mycket komplex grafik skapar du en hel värld av nya användargränssnitt. Om vi ​​har att göra med ett Windows-operativsystem, kapslar vi in ​​dess Windows API i ett VCL (Visual Component Library, som är en del av utvecklingsverktygen Delphi och C++ Builder. - Cirka. ed.), som för övrigt kan användas vidare. Och i FireMonkey kapslar vi in ​​operativsystemets API. Men idag manipulerar vi former och grafik mycket bredare. Du kan också lägga till fysiska egenskaper för utrymmet för animering och specialeffekter. Dessutom finns det stor mängd andra ytterligare funktioner för att skapa användargränssnitt som vi kommer att implementera under de närmaste åren för olika plattformar, mobila enheter och surfplattor.

Microsoft släppte nyligen detaljer om Windows 8 som kommer ut om ett år. Vi kommer att stödja dessa innovationer i VCL och i FireMonkey-plattformen. Men Delphi är ett utvecklingsverktyg som inte bara är designat för Windows utan även för Macintosh, iPhone och iPad. Vi utvecklar också våra PHP-produkter, stödjer jQuery Mobile, använder iOS API för att utveckla mobila klientapplikationer och bygger PHP-serverapplikationer med hjälp av guider och verktyg för att generera JavaScript- och HTML-koder på klientsidan och överlappande stilmallar. Vi kan skapa paket från PHP-appar och inbyggda iPhone iOS-klientappar, där klienten pratar med PHP-servern. Och det kommer i sin tur att kommunicera med databasservern och med webbtjänster – med allt som behövs för verksamheten.

Utvecklingsmiljö RadPHP XE2. Bygga en mobil webbapplikation
använder jQuery Mobile-komponenter för iPhone 3G

Med andra ord planerar vi att utöka funktionerna hos FireMonkey och VCL, inklusive inom området för support för mobila plattformar.

KP: Skulle du kunna utveckla mer om FireMonkey-plattformen?

DI.: Som jag noterade kommer VCL byggd för Windows att fortsätta att utvecklas och förbättras. Men idag, om du verkligen vill utveckla affärsapplikationer, måste du skapa dem för olika plattformar. Det här är vad FireMonkey-plattformen är till för. Den stöder skapandet av användargränssnitt med hög upplösning, högpresterande 3D-grafik, hög bildhastighet och, viktigare, använder en GPU för detta.

Du kan använda dessa funktioner när du skapar vetenskapliga, tekniska och affärsapplikationer. Sådana applikationer kan ansluta till databaser med hjälp av dbExpress-teknik, samtidigt som de fortfarande använder icke-visuella komponenter som är bekanta för utvecklare, såsom ClientDataSet eller DataSource, använder DataSnap-teknik, ansluter till alla databaser, SOAP- och REST-servrar. Du kan skapa attraktiva kontroller, knappar med lådor, snygga tabeller och andra gränssnittselement, både i 2D och 3D. Du kan ladda en färdig 3D-modell i applikationen och koppla den till en 2D-form där den kan roteras och ses från olika vinklar. Du kan skapa en datakub eller ett affärsdiagram i 3D och rotera det med en mus, tangentbord eller till och med en Kinect-enhet, eller så kan du gå in i kuben och titta på olika ytor från insidan. Och allt detta kan göras med en GPU i hög hastighet. Sedan kan samma applikation kompileras för en annan plattform, till exempel Mac OS.

Applikation som innehåller en roterande kub med data,
placeras på dess kanter

Eller så kan du skapa en 3D-form från grunden och använda kameror och lampor och tända och rotera delar av användargränssnittet. Formdesignern har en inbyggd miljö för att stödja 3D-användargränssnittet direkt under utvecklingen.

På Windows kan du använda Direct2D-bibliotek för högupplöst 2D-grafik och Direct3D för 3D-grafik. På Mac OS används Quartz- och OpenGL-biblioteken för samma ändamål. För iOS används Quartz- och OpenGL ES-biblioteken. Men allt detta är dolt för utvecklaren - han använder FireMonkey-plattformen, dess koordinatsystem och API, utan att tänka på dessa bibliotek, och kan kompilera samma applikation för olika plattformar.

Låt oss komma ihåg vad VCL är. VCL är ett komponentomslag runt Windows API. Vi hanterar resurser, menyer, dialogrutor, färger, stilar, Windows-meddelanden. Till skillnad från VCL, en "wrapper" med flera plattformar, behåller FireMonkey samma händelse- och komponentmodeller, vilket gör att du kan tänka i termer av händelser (till exempel OnClick, OnHasFocus, onMouseDown och onKeyDown-händelser), men hantera Macintosh- eller iPhone-händelser.

FireMonkey-plattformen kommer också med ett komplett animationssystem för UI-element. Det är verkligen inte ett heltäckande animationssystem som Pixar, men det tillåter effekter som att animera bitmappar, framhäva UI-elementfokus och arbeta med vektorgrafik. Mer än 50 tillgängliga för utvecklaren visuella effekter: suddighet, förvandla en bild till svart och vit, upplösning, övergångar, reflektion, skapa skuggor - alla typer av effekter tillgängliga i moderna GPU:er, som nu finns i nästan vilken dator som helst. En applikation byggd med FireMonkey-plattformen skickar kommandon till GPU:n, som gör allt arbete med att visa grafik och skapa användargränssnittet. I detta fall är den centrala processorn fri för beräkningar och anrop till operativsystemet. Utvecklaren behöver bara placera komponenterna korrekt.

Det mest grundläggande med FireMonkey-plattformen är hur den bygger upp användargränssnittet. Det finns möjligheter för att placera bitmappsgrafik på gränssnittselement som menyer, knappar och rullningslister. På FireMonkey använder vi vektorgrafik med GPU för detta ändamål. Ur programmeringssynpunkt är dessa alla samma kontroller, men grafikprocessorn gör allt för att visa dem. Vi kan tillämpa stilar på kontroller, få applikationen att se ut som en applikation för Mac OS eller Windows, skapa vår egen stil, tillämpa våra stilar på gränssnittselement (till exempel göra en knapp rektangulär eller rund genom att ändra dess stil i formulärredigeraren) - för detta har utvecklingsmiljön en stilredigerare. Du kan skapa din egen stil, eller så kan du ändra stilen på en redan färdig applikation.

FireMonkey-plattformen - utvecklingsverktyg
och plattformar som stöds

Om du kommer ihåg hade VCL ett begränsat antal containerkontroller (det vill säga så att du kan placera andra objekt i dem), och i FireMonkey är varje kontroll en container. Detta innebär att varje kontroll kan innehålla vilken annan kontroll som helst. Till exempel, i rullgardinslistan kan det finnas bilder, knappar, redigeringsfält och andra kontroller. Och du kan också ordna komponenter i lager.

FireMonkey-renderingssystemet är tillräckligt flexibelt - det kan använda Direct2D-, Direct3D- och OpenGL-bibliotek genom att skicka kommandon till GPU:n. För att uppnå samma sak i VCL var det nödvändigt att generera en separat buffert utanför skärmen, skapa en bild i den, anropa lämpliga funktioner i grafikbiblioteken och sedan visa den på formuläret.

Exempel på grafiska effekter som stöds av FireMonkey

Om du inte har en GPU kan du fortfarande använda 2D- eller 3D-former och använda FireMonkey-kontrollerna. I det här fallet kommer FireMonkey-plattformen att använda GDI +-biblioteken eller andra liknande bibliotek och utföra samma effekter och animering eller manipulation av 3D-objekt.

En annan funktion hos FireMonkey är ett nytt system för att binda gränssnittselement till data, vilket är öppet och flexibelt. Det finns två typer av gränssnittselement i VCL: databundna och icke-databundna (till exempel TDBEdit och TEdit). I FireMonkey kan varje kontroll associeras med data, och av vilken typ som helst. Det kan bara vara ett uttryck, ett fält från en datauppsättning, data från utvecklargenererade objekt eller resultatet av ett metodanrop.

Dessutom, när du skapar en applikation, kan du ladda en färdig 3D-modell i den och använda den - sådana möjligheter krävs ofta i både affärs- och ingenjörsapplikationer. Vi har en kund som skapar logistikapplikationer. De hade ett informationssystem byggt med Delphi, och i det en applikation som ritade en plan och visade information från datakällor. De gjorde nyligen något intressant - de ritade ett helautomatiskt 3D-lager i AutoCAD, och deras applikation låter dig se den automatiska gaffeltrucken röra sig genom lagret och placera varorna på hyllorna. Och de lägger data från källorna på motsvarande bild.

Exempel på ändrade applikationsstilar

KP: Vilka 3D-modellformat stöds för närvarande?

DI.: I den här utgåvan stöder vi laddning av modeller från AutoCAD, Collada (3D-modelleringsverktyg med öppen källa. - Cirka. ed.), Maya, OBJ-format, som stöds av många 3D-grafikleverantörer.

KP: Vilka andra format planerar du att lägga till?

DI.: Vi planerar att lägga till 3DS (3D Studio MAX), SVG (vanligtvis används detta format för 2D vektorgrafik, men ibland för 3D), Google SketchUp. Kanske kommer vi att stödja andra format också.

KP: Kräver användningen av 3D-modeller i applikationer byggda med FireMonkey en licens för motsvarande 3D-modelleringsverktyg?

DI.: Nej, det gör det inte. Allt vi gör är att läsa modellfilen. Vi importerar modellen, men vi exporterar den inte (även om du självklart kan skriva en applikation som sparar modellen i ditt eget format). Vi utger oss inte för att vara en tillverkare av 3D-modelleringsverktyg - för detta kan du använda AutoCAD, 3D Studio Max, Maya eller något annat 3D-modelleringsverktyg och importera de skapade modellerna till våra applikationer.

KP: Hur prestanda är applikationer byggda med FireMonkey på moderna hårdvaruplattformar?

DI.: Prestandan är ganska bra. Till exempel kan en 3D-form med tre sfärer och tre lampor renderas på en MacBook Pro med 100 bilder per sekund. Och det kan nå 600 - det beror på vad vi exakt gör. Återigen, allt beror på kraften hos GPU:n.

KP: Betyder detta att FireMonkey kan användas för att skapa spel som är uppdaterade?

DI.: Vi positionerar inte våra utvecklingsverktyg som ett verktyg för spel. Däremot använder hög produktivitet moderna grafikprocessorer kan du skapa spel med FireMonkey - trots allt skapar de dem med Direct3D eller OpenGL.

KP: Vilken typ av arbete gör du nu inom området för att stödja gestigenkänning och andra nymodiga saker? Finns detta stöd tillgängligt?

DI.: Vi har inget geststöd för den här utgåvan än. Gestkontroll kommer att läggas till i en framtida version av FireMonkey, men för närvarande kan du använda geststödet inbyggt i operativsystemet.

Mikhail Filippenko, direktör för Fast Reports, Inc.

K.R.: Vi har redan sagt att FireMonkey-tekniken har ryska rötter - dess grunder skapades i vårt land, och sedan gick själva tekniken och dess utvecklare med i Embarcadero. Generellt sett är det glädjande att se tillväxten av den ryska komponenten som en del av RAD Studio och Delphi. Detta är både verksamheten vid vårt utvecklingscenter i St. Petersburg och bidraget från oberoende ryska utvecklare. Till exempel har FastReport-rapportgeneratorn, känd över hela världen och mycket populär i vårt land, blivit en del av Rad Studio XE2. Han är från Rostov-on-Don.

KP: Jag skulle vilja prata om kompilatorer. Vilken typ av kompilator används för att skapa iOS-appar?

DI.: För iPhone eller iPad har vi ingen egen Delphi-kompilator – vi har ännu inte utvecklat kompilatorer för ARM-processorerna som används i dessa enheter. För iOS använder vi tillfälligt Free Pascal-kompilatorn och runtime-biblioteket. Men vi jobbar på nästa generations kompilatorer, inklusive för APM-processorer. Men för Windows och Mac OS finns det kompilatorer, eftersom båda hårdvaruplattformarna är baserade på Intel-processorer.

KP: Och vad har gjorts inom området kompilatorutveckling under de senaste två åren?

DI.: Vi har 32 och 64 bitars Delphi-kompilatorer för Windows och Mac OS. Och vi arbetar på en ny generation av Delphi- och C++-kompilatorer. Arbetet med dem pågår fortfarande, men när det är klart kommer vi att ha Delphi-kompilatorer för ARM-processorer, Android-plattformar, Linux och vad som helst. Och vi kommer att ha 64-bitars C++-kompilatorer för Windows och andra plattformar som är kompatibla med den senaste C++-språkstandarden som just antagits av ISO.

KP: Vad händer med cloud computing-stöd i Embarcaderos utvecklingsverktyg idag?

DI.: I RAD Studio XE 2 stöder vi migrering av applikationer till molnet i Microsoft Azure eller Amazon EC2 med hjälp av Platform Assistant. Och vi har serverkomponenter för Cloud Storage för Azure och Amazon S3 för lagring av tabeller, binär data, meddelandeköer. I den tidigare versionen av RAD Studio XE stödde vi även distribution av applikationer till Amazon EC2, men det fanns inget lagringsstöd.

Cloud Computing-stöd i RAD Studio XE 2

KP: För två år sedan pratade du om den nya All-Access-lösningen. Hur mycket efterfrågades det? Vilka är dess fördelar för systemintegratörer och utvecklare?

DI.: All-Access-lösning och AppWaves molnverktyg används ofta i världen. De är utformade för att förenkla användningen av applikationer från både vårt företag och andra tillverkare. Faktum är att det är en lösning för att hantera licenser och applikationsapplikationer, och det är bekvämt för stora företag. Mindre företag, å andra sidan, som inte har dedikerade team av personer som är ansvariga för att hantera applikationer, kan lägga en applikation i ett arkiv, välja användarnamn från en databas och se till att dessa applikationer används utan att behöva komma ihåg var licensnyckel och hur många licenser som finns tillgängliga. All-Access och AppWave-webbläsaren är designade för att hantera både versionshantering och åtkomstkontroll.

K.R.: Marknaden är så mångsidig och användarna så mångfaldiga att det är omöjligt att täcka alla behov med en lösning. Därför strävar vi efter en mängd olika "förpackningslösningar". Vi har gjort ett fantastiskt jobb med att förena metoderna för licensiering, licenshantering och produktinstallation. Denna linje av lösningar inkluderar licenshantering och tilldelningsverktyg inte bara för Embarcadero-produkter, utan också för alla andra produkter, inklusive intern utveckling av företag.

Arbetet med att kombinera utvecklingsverktyg till effektiva kit för användare pågår fortfarande. Vi har All-Access, en superset som samlar alla Embarcadero-produkter. Om kunden köper All-Access Platinum-versionen får han alla verktyg som Embarcadero har. Men ibland visar sig den här uppsättningen vara överflödig, till exempel för databasspecialister gjorde vi två andra uppsättningar - DB Power Studio Developer Edition och DB Power Studio DBA Edition. Skillnaden mellan dem är att för utvecklaren erbjuder vi RapidSQL - ett utvecklingsverktyg för serverkod, och för administratören är DBArtizan inbyggt där - ett databasadministrationsverktyg, en bredare produkt än RapidSQL. För proffs har vi följande All-Access Kit: Alla produkter, DB Power Studio för utvecklare, DB Power Studio för administratörer, ER Studio Enterprise Edition för arkitekter och alla andra som är involverade i modellering. Det finns kombinationer för applikationsutveckling och för administratörer. Delphi är ett utvecklarverktyg, och det är vettigt att lägga till SQL-utvecklings- och optimeringsverktyg till det. Slutligen är DB Change Manager ett logiskt verktyg för att hantera komplexiteten i de förändringar som sker i databaser under deras livscykel.

Således är All-Access huvudet av en stor familj olika uppsättningar Produkter.

KP: Om det inte är en hemlighet, vem använder All-Access i Ryssland?

K.R.: Vi har kunder som köpt All-Access baserat på Delphi. Många av dem bygger komplexa klient-/serversystem med SQL Server och Oracle, och de gillade genast vår plattformsoberoende databasverktygssats. Vi har ett kundföretag som har arbetat med Delphi sedan den första releasen, och de bytte från Delphi till All-Access för ett år sedan. Två verktyg som garanterat kommer att användas av alla utvecklare på detta företag är Delphi och DBArtisan. Och det finns kunder som kom till All-Access från databassidan. Deras huvudsakliga uppgift är att administrera databaser, men ibland gör de applikationsutveckling. All-Access-kunder inkluderar medieföretag, ingenjörsföretag och andra industrier.

Jag skulle också vilja uppehålla mig vid små företag. Mycket ofta i små team gör en utvecklare allt, och ett sådant företag köper ibland stora All-Access matpaket för en eller två utvecklare. I stora team avskräcks det för en utvecklare att utföra till exempel också rollen som databasadministratör, så vanligtvis är små produktuppsättningar populära där, och i små företag är en sådan kombination av arbetsuppgifter helt acceptabel.

Delphi Architect är en hårt marknadsförd produkt som inkluderar modellerings- och programmeringsverktyg. Antalet sålda exemplar är dock mindre än Delphi Enterprise-versionen, men det är också stort. Jag skulle vilja notera att vi 2010 visade sig vara det bästa landet sett till försäljning, trots att alla länder gick igenom krisen. Denna tillväxt berodde inte så mycket på ekonomiska faktorer som på det faktum att versionen av RAD Studio XE som släpptes i slutet av 2009 visade sig vara mycket efterfrågad. Och samtidigt förväntar vi oss ytterligare försäljningstillväxt.

Vi har tagit ytterligare ett rimligt steg, som efterfrågas mycket i Ryssland. Graden av legalisering av olika versioner av våra produkter är olika: ju högre version, desto mer legaliseras den, eftersom programvaran tidigare inte köptes så aktivt. Från och med RAD Studio XE-versionen täcker licensen versionerna 2010, 2009, 2007 och till och med Delphi 7 - en utbredd produkt.

I dag ställs utvecklare inför att de har både nya projekt och projekt i stöd. Ett stort antal projekt har migrerats från tidiga versioner av Delphi till version 7 och ligger kvar inom denna version, och fortsätter att arbeta med relativt små resurser. Ingen översätter dem till nyare versioner, men de hålls i ett fungerande tillstånd. Och nu tillåter vi lite pengar (mindre än priset för en Delphi 7-licens) för att få både RAD Studio XE och Delphi 7 - det vill säga vi legaliserar utvecklaren både för implementering av nya projekt och för supportprojekt.

KP: Hur bedömer du det aktuella läget för Embarcadero-gemenskapen?

DI.: Det här samhället är stort och mycket krävande. De behöver allt omedelbart – de är utvecklarna. Men ibland tar det lång tid att få något rätt.

För några år sedan tog vi Windows-komponentarkitekturen och placerade den i Linux-datorer. Nu ser vi att det här inte var rätt beslut. Rätt beslut är att skapa en plattform för applikationer. Tillämpningar även för olika plattformar har menyer, fönster, grafik, nätverksåtkomst och enhetsåtkomst. Olika plattformar kan ha olika modeller för flödeskontroll eller undantagshantering, men vi ser samma försöksblock i applikationskoden. Vårt jobb är att göra det enklare för utvecklare att skapa affärsapplikationer och kompilera dem för de plattformar de ska användas på, oavsett hur instruktionssystemet för motsvarande processorer är uppbyggt och vilka andra funktioner som dessa plattformar har. Och FireMonkey är precis vad du behöver för att lösa det här problemet.

KP: Om ett företag skapar en ny enhet och vill ha stöd för den i FireMonkey, kommer det att vara möjligt?

DI.: Med nästa generations kompilatorer som har en plattformsoberoende front-end och en plattformsspecifik back-end är detta fullt möjligt. Under tiden skapar vi för varje operativsystem ett kompilator- och körtidsbibliotek från grunden.

Varje modern ny enhet har vanligtvis ett grafiskt användargränssnitt (många har en dual-core processor och GPU) och standard SDK:er för utvecklare. Allt detta gör det enkelt att skapa enhetsstöd i FireMonkey. Om den nya enheten bara kommer att ha bibliotek för tvådimensionell grafik som Quartz kommer vi att kunna ge support i FireMonkey för en sådan enhet, men detta kommer att ta ungefär flera månader. Mycket beror dock på plattformen: inte alla plattformar stöder alla funktioner, till exempel har iOS inte menyer och dialogrutor, och du kan inte sätta motsvarande komponenter på formerna för sådana applikationer.

KP: Har något förändrats i partnerpolicyn? Vad görs för att öka andelen användare av dina produkter? Vad händer i Ryssland?

DI.: Vårt partnerekosystem är brett - det finns hundratals verktygs- och komponenttillverkare som inte finns i våra produkter, och vi har ett tekniskt partnerskapsprogram. Därför har utvecklare tillgång till ett brett utbud av komponenter, teknologier och verktyg. Och de lösningar de skapar för sina kunder visar sig vara bättre än om bara våra produkter användes. Och för försäljning har vi kontor i många länder, återförsäljare och distributörer.

K.R.: Det är inte antalet partners som är viktigt för oss, utan kvaliteten på arbetet hos varje specifik partner. För närvarande vill vi fokusera på att arbeta nära befintliga partners, även om poolen av partners fortfarande är öppen. Vi har många partners, och vi måste hjälpa dem tekniskt. Vi arbetar med utvecklare, och de vet vad de vill ha och vet vad som finns på marknaden, och partners kapacitet måste matcha detta.

Vi har affärspartners som på allvar investerat i Embarcadero som affärslinje – de har utbildade specialister, marknadsför våra produkter, engagerade medarbetare som ansvarar för detta område och följer vad som händer med våra produkter, prislista, marknadsföring. Naturligtvis är de mer framgångsrika när det gäller att sälja våra produkter än företag som säljer våra produkter från fall till fall.

KP: David, Kirill, tack så mycket för den intressanta intervjun. Låt mig, å vår publikations och våra läsares vägnar, önska ditt företag fortsatt framgång med att skapa dina fantastiska verktyg som utvecklare behöver så mycket!

Frågor ställdes av Natalia Elmanova

Trippeleffekt en klass för att skapa en effekt som applicerar rippelvågor på strukturen hos visuella objekt.

Rippelcentrumet anges i fastigheten Centrum... Andra aspekter av krusningen kan justeras med hjälp av egenskaperna Amplitud(Amplitud), Bildförhållande, och Fas(Fas). Antalet krusningsvågor bestäms av egenskapen Frekvens(Frekvens).

Följande tabell visar resultatet av påverkan TrippeleffektPNG-bild placeras på formuläret (med hjälp av ett objekt). Krusningscentrumet är i mitten av bilden. Övriga fastigheter Trippeleffekt används med sina standardvärden ( Amplitud = 0,1, Bildförhållande = 1,5, Frekvens = 70, Fas = 0).

I den här handledningen kommer du att använda några grundläggande bildeffekter i FireMonkey-appen.

Steg 1: Använd effekten på bilden.

I FireMonkey är det en enkel process att applicera en bildeffekt på en bild. Skapa bara en komponent som kan innehålla en bild och använd sedan en av bildeffekterna.

    Skapa en ny FireMonkey-app ( Arkiv> Nytt> FireMonkey Desktop Application> HD FireMonkey Application).

    Placera komponenten på formuläret.

Välj komponenten i verktygsfältet.

Placera TImage på formuläret i konstruktorn.

    Du kan se att komponenten inte passar i mitten av formulärdesignern. Som visas i figuren är det nödvändigt att storleken på bildytan är så stor som möjligt. För att göra detta, välj komponenten på designerformuläret och ändra sedan egenskaperna Justera v alClient i Object Inspector för att göra komponenten till samma storlek som klientstorleken för formulärområdet.

    Välj den bild som du vill använda effekten på. Komponenten lagrar bilden i fastigheten Bitmapp... Välj egenskap Bitmapp i objektinspektören och använder Redigera... för att välja en bild.

  1. Nu kan du välja en effekt för bilden. Välj på verktygspaletten Trippeleffekt.

Nu Kedjereaktion visas i fönstret Strukturera.

För att tillämpa en effekt måste den definieras som ett underordnat av en annan komponent. I detta fall, RippleEffect1 måste definieras som ett barn Bild1... För att göra detta, dra RippleEffect1 och placera den på Bild1 på strukturrutan.

  1. Nu kan du se det Kedjereaktion arbetar redan med Form Designer.

  1. Ändra egenskapen Frekvens20 .

Steg 2: Använd en animationseffekt på RippleEffect.

    Markera Kedjereaktion på panelen Strukturera.

    Markera egenskap Fas i Object Inspector och kör kommandot Skapa ny TFloatAnimation från rullgardinsmenyn.

Se till att FloatAnimation1 definieras som ett barn RippleEffect1.

    Ändra egenskaper FloatAnimation1 enligt nedanstående:

Och slutligen, låt oss lägga till en händelseprocedur OnMouseMove Till .

Dela detta