komponen firemonkey. Delphi, FireMonkey, All-Access dan kejutan lain yang menyenangkan. Perkara yang perlu dipertimbangkan

FireMonkey ialah teknologi teras "Delphi baharu". Sila beritahu kami tentang matlamat, keupayaan dan aspek teknikal perpustakaan yang pada asasnya baharu ini. Selepas beberapa ketika, melihat ke belakang, betapa sukar dan wajar keengganan anda untuk mengembangkan lagi VCL yang sangat popular?

Ia dipilih sebagai hala tuju utama pembangunan teknologi Delphi untuk mencapai matlamat tertentu - pembangunan berbilang platform daripada persekitaran tunggal, berdasarkan asas kod sumber tunggal, tanpa memerlukan latihan semula radikal pembangun. Dalam rangka VCL yang kini klasik dan sangat popular, ini adalah mustahil; hubungannya dengan WinAPI terlalu rapat, seseorang mungkin berkata, "pada peringkat genetik."

Komponen VCL tidak mempunyai lapisan "abstrak" antara tahap kefungsian dari segi antara muka dan mekanisme untuk memaparkannya. Tahap fungsional— bagaimana ia bertindak sebagai kawalan, peristiwa yang bertindak balas terhadapnya, jenis interaksi pengguna yang disediakannya. Paparan— memanggil kaedah visualisasi berorientasikan platform sebagai imej tertentu yang dibentuk oleh objek raster dan primitif vektor. FireMonkey pada mulanya melaksanakan prinsip membahagikan kawalan dengan ketat kepada dua komponen: "tingkah laku" dan "visual".


Vsevolod Leonov, Embarcadero Technologies

Yang pertama secara amnya tidak akan mengulangi walaupun asas VCL, tetapi intipati pengaturcaraan berorientasikan objek. Komponen ialah kelas; kelas komponen membentuk hierarki di mana keluarga dan modul boleh dibezakan. Kelas komponen sangat berkaitan dengan cara ia diberikan.

"Gambar" visual dibentuk secara dinamik; ia tidak ditulis secara tegar dalam kelas komponen. Imej atau "gaya" dalam FireMonkey dimuatkan ke dalam komponen apabila aplikasi dimulakan. Kami mempunyai beberapa jenis bingkai berfungsi untuk komponen, dan "kulit" atau "pelapis" boleh ditukar, tetapi mengapa? Ia adalah supaya aplikasi FireMonkey kelihatan tulen pada mana-mana platform - Windows 7, Windows 8, Mac OS, iOS dan, dalam masa terdekat, Android. Ini adalah sesuatu yang tidak dapat disediakan oleh struktur kelas monolitik tradisional VCL.

Di sini, pendekatan teknologi memainkan peranan yang istimewa. Pada dasarnya, anda boleh mengambil perpustakaan VCL dan "menyusunnya" dengan WinAPI dan semua kemungkinan panggilan platform lain. Ini masih boleh dilakukan pada subset komponen yang sangat terhad, tetapi VCL mengandungi beberapa ratus komponen, jadi pendekatan ini hanya boleh "membunuh" VCL. Ia telah memutuskan untuk tidak menyentuh VCL, tetapi untuk membangunkan keupayaan baharu pada platform baharu - FireMonkey. Teknologi ini malah mempunyai keanggunan teknikal tertentu - pada masa memasang projek untuk platform tertentu, Delphi IDE menghubungkan pengkompil yang diperlukan, dan komponen antara muka menerima gaya platform.

Bagi pengguna, ini adalah satu klik tetikus dan kod sumber yang sama; untuk Delphi, kerja keras selama bertahun-tahun oleh pembangun untuk mencipta perpustakaan berbilang platform sedemikian.

Apabila jelas bahawa FireMonkey akan diperkenalkan sebagai platform baharu yang berasingan, strategi kewujudan bersama yang betul perlu dipilih: Embarcadero tidak mahu memberi kesan negatif kepada pengguna VCL dalam apa jua cara. Oleh itu, kami telah memilih pelan berikut: VCL kekal stabil dari segi ideologi dan seni bina untuk memastikan keserasian setinggi mungkin, menjadikannya lebih mudah untuk memindahkan projek kepada versi moden. Pembangunan FireMonkey akan mengikut laluan semula jadi dan selari, tanpa mengambil kira VCL.

Titik lemah penyelesaian ini ialah penghijrahan yang agak bermasalah dari VCL ke FireMonkey dalam projek yang sama. Tetapi untuk projek baharu, pembangun boleh memilih FireMonkey untuk memastikan sifat berbilang platform aplikasi yang dihasilkan mereka. Selepas keluaran XE4 dengan sokongan iOS, kita sudah boleh bercakap tentang kelebihan daya saing yang jelas Delphi untuk memulakan pembangunan mudah alih dalam persekitaran korporat, yang akan ditingkatkan selepas pelaksanaan sokongan Android yang dirancang.

Oleh itu, tidak ada "penolakan" yang jelas daripada pembangunan VCL seperti itu. Dalam versi baharu, bahagian VCL Delphi turut berkembang. Ini termasuk sokongan 64-bit, pengenalan penggayaan untuk komponen visual, pelaksanaan mekanisme untuk sambungan dinamik yang fleksibel atau "mengikat," dan kemasukan perpustakaan FireDAC untuk bekerja dengan pangkalan data dalam projek VCL. Cuma, berbanding lonjakan kualitatif gergasi yang dibuat oleh FireMonkey, kemajuan dalam VCL kelihatan agak hambar. Tetapi, walau apa pun, VCL adalah sebahagian daripada Delphi dan akan kekal sedemikian selama bertahun-tahun akan datang. Walaupun evolusi platform dan keadaan semasa dalam bidang OS untuk sistem desktop dan peranti mudah alih adalah sedemikian rupa sehingga masa depan jelas milik FireMonkey.

Dalam temu bual kami telah membincangkan sokongan iOS, mari beritahu pembaca kami tentang sokongan untuk teknologi terkini lain daripada RAD Studio XE4 terkini, contohnya, seperti Windows 8 dan WinRT, sistem 64-bit, MacOS dan sebagainya. Bolehkah anda menyenaraikan apa lagi yang boleh anda tawarkan kepada pengaturcara moden yang dimanjakan oleh inovasi?

Kemungkinan besar, pengaturcara moden tidak "dimanjakan" oleh inovasi. Untuk projek besar, sebarang "inovasi" selalunya menghasilkan jumlah kerja yang besar.

Sebagai contoh, semua orang menunggu lama, ramai yang segera bergegas untuk memindahkan kod mereka ke platform baharu. Tetapi ternyata pasukan yang sangat profesional pun tidak bersedia untuk ini. Menyusun kod 64-bit tidak bermakna berfungsi. "Dosa masa muda" mula muncul, contohnya, menggunakan arahan dengan mengandaikan saiz alamat 4-bait. Kekurangan budaya ujian, ditambah dengan ketidaksediaan teknologi untuk melaksanakan proses ini dalam masa yang singkat.

Dan di sini - semakin besar projek, diukur, katakan, dengan bilangan baris kod sumber, pengaturcara yang lebih berhati-hati dan seimbang dengan pelbagai jenis inovasi mulai dari penampilan "butang" dalam antara muka hingga "gula sintaksis" dalam penyusun.

Salah satu daripada pencapaian "bermasalah" ini ialah keluaran Windows 8. Secara peribadi, sebagai pengguna PC dan hanya pakar IT moden, saya gembira dengan Windows 8. Tetapi bagi pembangun yang menghantar sekumpulan komputer yang menjalankan Windows 8 dengan spesifikasi untuk pembangunan di bawah OS baharu sebagai beban, ini bermakna kesukaran tertentu.

Kami cuba menyediakan sokongan pembangunan untuk antara muka baharu OS ini dengan selesa dan tidak menyakitkan yang mungkin. Oleh itu, gaya khas telah diperkenalkan untuk kedua-dua VCL dan FireMonkey, dan pengaturcara boleh sama ada membina semula antara muka aplikasi atau mencipta aplikasi baharu yang tidak dapat dibezakan daripada yang "asli" untuk Windows 8 dalam penampilan. Sudah tentu, terdapat keperluan untuk sokongan "asli" untuk Windows 8 melalui WinRT. Tetapi di sinilah keutamaan matlamat dalam keadaan moden dimainkan. Mac OS, iOS, Android dalam masa terdekat belum membenarkan kami bercakap tentang sokongan penuh untuk WinRT dalam masa terdekat.

Matlamat strategik Embarcadero, sudah tentu, adalah berbilang platform. Pengeluaran RAD Studio XE4 adalah penting, terutamanya disebabkan sokongannya untuk iOS. Pengaturcara sedia ada yang menggunakan VCL boleh mula membangun untuk iOS dalam masa beberapa jam. Malah aplikasi mudah alih yang mudah boleh ditukar serta-merta menjadi projek berkuasa yang berfungsi dalam infrastruktur sedia ada. Jangan fikir ini hanyalah pengkompil baharu untuk FireMonkey dan gaya baharu untuk dipadankan dengan antara muka iOS.

Ini termasuk pereka bentuk visual baharu, sokongan terbina dalam untuk pelbagai faktor bentuk, perpustakaan akses data, termasuk teknologi FireDAC baharu dan LiveBindings untuk pemautan fleksibel dan dinamik dengan data korporat. Semua inovasi ini tiba serentak - untuk Windows, Mac OS dan iOS. Sistem pengendalian Mac OS tidak berkembang dengan begitu pesat, jadi tiada masalah seperti peralihan daripada Windows 7 ke Windows 8. Tetapi paparan Retina muncul, dan ini memerlukan perhatian khusus. Kini mana-mana aplikasi MacOS yang dibuat dalam Delphi XE4 secara automatik termasuk dua gaya - "normal" dan "definisi tinggi".

Itu. aplikasi yang sama boleh mempunyai antara muka "asli" berkualiti tinggi yang sama pada mana-mana komputer desktop Apple.

Embarcadero tidak mahu "mengejutkan," "memukau" atau "menghiburkan" pembangun dengan keluaran inovatif baharunya. Sebaliknya, sfera IT sudah pun penuh dengan pelbagai kejutan: peranti baharu, platform baharu, pengguna baharu, keperluan baharu mereka, senario interaksi baharu. Tambahkan teknologi pembangunan perisian baharu kepada ini, dan pengaturcara tidak akan mempunyai masa untuk mencipta sistem baharu dan yang sedia ada - apa yang mereka akan lakukan ialah berhijrah dari satu persekitaran ke persekitaran yang lain, dari perpustakaan lama kepada yang baharu, dari satu bahasa ke bahasa lain.

Tetapi kami tidak mengaku menolak segala sesuatu yang baru. Kami hanya mahu memastikan kesinambungan segala-galanya - kod, antara muka, projek, malah kemahiran profesional apabila platform dan peranti baharu muncul. Anda boleh mengatakan bahawa kami menentang konservatisme yang tidak sihat berkenaan platform baharu melalui konservatisme yang sihat dalam alatan pembangunan. Jangan mengharapkan produk eksotik, bahasa pengaturcaraan bukan standard atau alat pembangunan yang luar biasa daripada Embarcadero.

Bersama kami, anda akan sentiasa mencari pembangunan visual, bahasa klasik, kod "asli", dan biarkan platform sasaran untuk aplikasi anda, yang dibuat dengan cara klasik yang terbukti sama, menjadi baharu.

TRippleEffect kelas untuk mencipta kesan yang menggunakan riak gelombang pada tekstur objek visual.

Pusat riak dinyatakan dalam hartanah Pusat. Aspek lain riak boleh disesuaikan menggunakan sifat Amplitud(Amplitud), Nisbah aspek, Dan fasa(Fasa). Bilangan gelombang riak ditentukan oleh sifat Kekerapan(Kekerapan).

Jadual berikut menunjukkan keputusan pengaruh TRippleEffect ke foto PNG yang diletakkan pada borang (menggunakan ). Bahagian tengah riak berada di tengah-tengah imej. Harta lain TRippleEffect digunakan dengan nilai lalainya ( Amplitud = 0,1, Nisbah aspek = 1,5, Kekerapan = 70, fasa = 0).

Dalam tutorial ini anda akan menggunakan beberapa kesan imej asas dalam aplikasi FireMonkey.

Langkah 1: Gunakan kesan pada imej.

Dalam FireMonkey, menggunakan kesan imej pada imej adalah proses yang mudah. Hanya buat komponen yang boleh mengandungi imej dan kemudian gunakan salah satu kesan imej.

    Buat aplikasi FireMonkey baharu ( Fail> Baharu> Aplikasi Desktop FireMonkey> Aplikasi HD FireMonkey).

    Letakkan komponen pada borang.

Pilih komponen dalam bar alat.

Letakkan TImage pada borang dalam pereka bentuk.

    Anda dapat melihat bahawa komponen tidak diletakkan di tengah-tengah pereka bentuk. Seperti yang ditunjukkan dalam rajah, anda mahu saiz kawasan imej menjadi sebesar mungkin. Untuk melakukan ini, pilih komponen pada borang reka bentuk, kemudian tukar sifat Selaraskan V alClient dalam Pemeriksa Objek supaya saiz komponen menjadi sama dengan saiz klien kawasan borang.

    Pilih imej yang anda mahu gunakan kesannya. Komponen menyimpan gambar dalam harta Peta bit. Pilih harta Peta bit dalam pemeriksa objek, dan menggunakan Edit... untuk memilih imej.

  1. Kini anda boleh memilih kesan untuk imej. Daripada palet Alat, pilih TRippleEffect.

Sekarang Kesan riak dipaparkan di tingkap Struktur.

Untuk menggunakan kesan, ia mesti ditakrifkan sebagai anak kepada komponen lain. Dalam kes ini, RippleEffect1 mesti ditakrifkan sebagai kanak-kanak Imej1. Untuk melakukan ini, seret RippleEffect1 dan letakkannya Imej1 dalam panel struktur.

  1. Sekarang anda boleh melihatnya Kesan riak sudah berfungsi pada Pereka Bentuk.

  1. Tukar harta Kekerapan pada 20 .

Langkah 2: Gunakan kesan animasi pada RippleEffect.

    Serlahkan Kesan riak pada panel Struktur.

    Pilih harta fasa dalam Pemeriksa Objek dan jalankan arahan Cipta TFloatAnimation Baharu daripada menu lungsur.

Pastikan itu Animasi Terapung1 ditakrifkan sebagai elemen kanak-kanak RippleEffect1.

    Tukar sifat Animasi Terapung1 seperti di bawah:

Dan akhirnya, mari tambahkan prosedur acara OnMouseMove Kepada .

Dikeluarkan pada September tahun lepas, Delphi XE2 mengandungi sejumlah rekod inovasi.
Gambaran keseluruhan ringkas tentang keupayaan Delphi XE2 telah pun diterbitkan di Habré. Tetapi, jelas sekali, inovasi yang paling menarik ialah platform FireMonkey, dan di sini saya ingin memberi sedikit perhatian kepadanya.
Saya telah membuat pilihan kecil pautan ke bahan yang, saya harap, akan membantu anda mendapatkan idea yang lebih kurang mencukupi tentang platform ini. Tetapi pertama-tama, bagi mereka yang tidak tahu, saya akan memberitahu anda secara ringkas apa itu FireMonkey.
Embarcadero Technologies meletakkan FireMonkey sebagai platform untuk mencipta aplikasi perniagaan yang kaya untuk Windows, Mac dan iOS. Selain itu, platform ini berasal dari setiap OS, i.e. Apabila menjalankan aplikasi yang dibuat menggunakan FireMonkey, tiada alat tambah tambahan digunakan.
FireMonkey memaut terus ke perpustakaan grafik asli (dari perspektif OS) seperti OpenGL atau DirectX. Oleh itu, penyelesaian terbaik dari sudut pandangan GPU dicadangkan.
Teras seni bina FireMonkey ialah perpustakaan kelas yang berkuasa (termasuk komponen visual).
Platform sasaran dipilih semasa proses penyusunan.
Versi pertama FireMonkey hanya menyokong Win32, Win64, MacOSX dan iOS, tetapi Embarcadero merancang untuk memindahkannya ke beberapa platform lain pada masa hadapan.

Apa yang perlu anda pertimbangkan?

Walaupun platform FireMonkey menyediakan alat yang luas untuk membangunkan aplikasi 3D, ia tidak boleh dianggap sebagai enjin permainan. FireMonkey diletakkan secara khusus sebagai platform untuk membangunkan aplikasi perniagaan.
Produk itu kini dalam peringkat awal evolusinya. Dan banyak ciri FireMonkey sedang mengalami perubahan, kedua-dua kualitatif dan kuantitatif.

Saya harap pautan di bawah akan membantu anda memahami ciri utama platform baharu.
Halaman produk rasmi di laman web Embarcadero (Rusia)

Antara bahan berbahasa Inggeris saya ingin ketengahkan siri ini (Bahasa Inggeris)

Apa yang hendak dilihat?

Bagi versi terkini Delphi, terdapat lebih banyak bahan video yang dikhaskan untuk keupayaan produk dan cara bekerja dengannya berbanding sebelum ini. Kedua-dua rasmi, dari Embarcadero, dan daripada pembangun bebas. Terdapat banyak video tentang FireMonkey di YouTube, anda hanya boleh menggunakan carian. Di antara banyak bahan ini, saya akan menyerlahkan satu siri tiga video daripada halaman pendaratan Marco Cantu - RAD dalam Tindakan, sekali gus memberikan penyelidikan saya vektor kegunaan.

Dalam konteks blog ini, projek ini sangat menarik kerana ia dilaksanakan pada FireMonkey dan merupakan demonstrasi yang menakjubkan tentang keupayaan platform ini. Dan hanya minggu lepas, beta awam produk telah dikeluarkan. Dengan cara ini, pembaca blog boleh "merasakan" sesuatu yang benar-benar kompleks untuk diri mereka sendiri. Monyet Api permohonan.

Sedikit perkataan mengenai program ini. Pertama sekali, perlu diingatkan bahawa versi semasa Sfera diletakkan sedikit berbeza. Ya, kadang-kadang ia berlaku ...

Baru SphereLive Ini bukan hanya utusan lain. Pertama sekali, ia adalah alat yang membolehkan anda mengatur proses pendidikan dengan berkesan. Ia membolehkan kuliah jarak jauh, perundingan peribadi, pelajaran individu dan aktiviti lain yang serupa. Pada masa yang sama, ia dilengkapi dengan hampir semua yang diperlukan untuk bekerja. Bermula dengan sistem pemindahan fail yang unik dan berakhir dengan subsistem pengebilan yang paling berkuasa.

Pada peringkat ini, harga untuk menggunakan produk adalah agak berpatutan. Tertakluk kepada bilangan pendengar yang terhad dan sejumlah kecil sumber, produk boleh digunakan secara percuma.

Sememangnya, Sfera menggunakan kelebihan utamanya Monyet Api– merentas platform. Aplikasi ini kini tersedia dalam edisi Windows dan MacOS. Versi Android dijangka pada bila-bila masa sekarang.

Walau bagaimanapun, bagi saya, SphereLive menarik, pertama sekali, sebagai produk inovatif dengan keseluruhan set penyelesaian asli. Kadang-kadang ia hanya pada tahap "... wow, bagaimana anda melakukannya?" Ngomong-ngomong, salah seorang pembangun Sphere secara aktif mengambil bahagian dalam perbincangan di forum khusus untuk FireMonkey. Ini sendiri mungkin menjadi sebab untuk memuat turun aplikasi dan membincangkan isu teknikal secara langsung dengan pengarang. Percayalah, ada sesuatu untuk dilihat dan sesuatu untuk dipelajari.

TListView adalah salah satu komponen utama untuk membina antara muka aplikasi mudah alih dalam Monyet Api. Komponen ini bukanlah yang paling mudah untuk digunakan; ia selalunya memerlukan sejumlah besar kod, tetapi ia memberikan pembangun kebebasan bertindak yang ketara. Sudah tentu, dalam aplikasi anda juga boleh gunakan TListBox, di mana segala-galanya adalah lebih mudah. Tetapi TListBox mungkin bagus untuk memaparkan bilangan rekod yang tetap, untuk mengeluarkan data daripada sumber data, anda pasti perlu menggunakannya TListView.

Perbezaan utama antara TListView dan TListBox ialah:

  1. TListBoxItem- kawalan, TListViewItem- Tidak
  2. DALAM TListBoxItem anda boleh menambah sebarang kawalan menggunakan Ibu Bapa. DALAM TListVIewItem- Tidak.
  3. TListVIewItem hanya menyimpan data untuk paparan
  4. TListVIewItem melakukan pemaparan data yang disimpan itu sendiri melalui kaedah Render
  5. Disebabkan lukisan manual sebenar dalam TListVIewItem, peningkatan kelajuan dan penggunaan memori yang rendah dicapai (menyimpan data yang berkaitan sahaja)
  6. Untuk membuat versi anda sendiri TListViewItem, anda perlu mencipta kelas item anda sendiri, melaksanakan data yang diperlukan di dalamnya (contohnya, masa) dan mencipta editor di tempat untuk masa mengedit, mendaftarkannya, dsb.

Fakta semata-mata peningkatan prestasi dan pengurangan penggunaan memori adalah hujah yang menarik untuk digunakan TListView. Tetapi ada sesuatu yang lebih.

Dalam banyak Android aplikasi Saya terpaksa memerhatikan pelaksanaan senarai berikut. Apabila anda mengklik pada elemen senarai (Item, jika anda berpegang pada istilah yang dipilih), tindakan tertentu dilakukan. Biasanya borang baharu dipanggil untuk mengedit data. Tetapi apabila anda menekan dan menahan (Ketik Lama), tindakan yang sama sekali berbeza dilakukan. Dan peristiwa ini tidak bersilang. Dalam erti kata lain, aplikasi Android boleh membezakan dengan jelas antara "tekan lama" dan "biasa". Selain itu, tiada satu pun daripada peristiwa ini berlaku apabila menatal senarai. Contoh yang baik ialah senarai surat dalam Yandex Mail.

Pertama sekali, saya ingin mengucapkan tahniah kepada semua pembaca blog pada cuti yang lalu dan mengucapkan yang terbaik untuk mereka pada tahun yang akan datang.

Disebabkan keadaan yang jelas, saya tidak membuat laporan Tahun Baru tradisional, dan saya juga tidak membuat sebarang rancangan untuk tahun itu. Walau bagaimanapun, kehidupan tidak berhenti, kerja sedang berjalan, dan peristiwa tertentu berlaku di dunia Delphi. Saya berjanji untuk menerbitkan pilihan "berita dari dunia Delphi" yang terlepas semasa cuti Krismas dalam masa terdekat. Sementara itu, saya akan memberitahu anda tentang peranti baharu yang saya beli.

Anda boleh mencari ciri-ciri di laman web rasmi. Dan kesan subjektif sangat menyenangkan. Perlu diberi perhatian ialah hakikat bahawa peranti itu benar-benar penuh dengan perisian proprietari daripada pengilang. Dan penjual juga menerima set perisian yang mengagumkan sebagai hadiah. Telefon pintar ini beroperasi dengan pantas dan mewajarkan sepenuhnya kosnya (kira-kira $200). By the way, saya membeli telefon saya sebelum ini GSmart 1362 untuk wang yang sama 2 tahun lalu. Tetapi, seperti yang anda mungkin sangka, minat utama saya ialah bagaimana ia akan berfungsi Monyet Api aplikasi.

Sebelum menyambung cerita tentang pemasa, dua berita.

Pertama, kemas kini XE7 pertama dikeluarkan. Mengikut tradisi, ia tersedia untuk pengguna berdaftar. Anda boleh menemui senarai pepijat yang telah diperbaiki. Saya ingin melihat bagaimana aplikasi akan bertindak dalam persekitaran yang dikemas kini. Sebenarnya, tiada pembetulan perlu dibuat, walaupun masih ada ruang untuk eksperimen.

Berita kedua. Tawaran istimewa Embarcadero telah dilanjutkan sehingga akhir tahun ini:

Nah, sekarang terus ke topik siaran. Pada asasnya, semua yang tinggal untuk kami ialah cuba melancarkan aplikasi yang telah dibuat untuk Android. Untuk melakukan ini, kami menggunakan apa yang saya tulis dalam catatan sebelumnya. Iaitu baru. Saya nyahpepijat aplikasi ini dihidupkan Nexus 7, dengan itu menambah perwakilan Android 7″ Tablet. Reka bentuk terpaksa diubah suai hanya sedikit.

Mungkin hanya orang yang malas yang tidak menulis pemasa mereka sendiri. Dan dalam konteks menyokong pembangunan untuk platform mudah alih, tugas menulis pemasa dalam Delphi secara amnya boleh dianggap sebagai tugas pemujaan. Jadi saya fikir, kenapa tidak sebagai contoh pembangunan Monyet Api Aplikasi tidak boleh menghuraikan pemasa. Untuk Android, sudah tentu. Sudah tentu, ini akan menjadi pandangan saya tentang tugas itu, yang, walaupun tidak begitu sukar, masih mempunyai nuansa sendiri. Mungkin anda mempunyai sebarang komen atau cadangan, adalah bagus untuk membincangkannya dalam ulasan. Saya sama sekali bukan pakar dalam bidang penulisan aplikasi mudah alih, jadi apa-apa komen yang anda ada akan menjadi berharga kepada saya.

Kami akan membangunkan pemasa, dalam pemahaman bahasa Inggeris tentang istilah ini. Iaitu, skrin akan memaparkan dail dan empat butang - "Mula", "Jeda", "Berhenti" dan "Batal". Kira detik akan berada dalam arah hadapan (iaitu, masa akan meningkat). Pilihan di mana masa ditetapkan dan kira detik dalam terminologi Inggeris dipanggil Stop Watch, mungkin saya akan cuba melaksanakannya kemudian. Aplikasi yang akan kami usahakan mempunyai fungsi yang lebih hampir kepada jam randik.

Delphi XE7 membolehkan kami memudahkan proses pembangunan dengan ketara, kerana kami kini boleh mencipta dan menyahpepijat aplikasi sebenar untuk Win32, dan kemudian hanya menambah penyerahan borang untuk peranti mudah alih yang diperlukan dan, dengan sedikit pelarasan, dapatkan mudah alih yang berfungsi permohonan. Bunyi terlalu bagus untuk menjadi kenyataan? Mungkin. Tetapi saya ingin menguji kenyataan ini dengan melaksanakan tugas.

Semakin kerap saya ditanya rakan sekerja saya dalam perbualan peribadi sama ada mungkin untuk membangunkan aplikasi mudah alih dalam Monyet Api atau adakah ia prototaip dan bukannya penyelesaian pengeluaran?

Saya fikir, sekarang saya boleh memastikan walaupun orang yang ragu-ragu.

Rakan dada saya dan rakan sekerja Tagir Yumaguzin memberitahu saya tentang projek yang dia ambil bahagian lama dahulu. Kini, apabila projek ini dalam keadaan prakeluaran, kami memutuskan bahawa penerangan ini akan menarik untuk komuniti Delphi. Pada dasarnya, ini adalah projek yang sangat besar yang dilaksanakan di FM. Kita bercakap tentang projek Sphere Live. Sebuah artikel kecil yang dikhaskan untuk projek itu baru-baru ini diterbitkan dalam Habrahabr.ru Alexey Glyzin, ketua jabatan pembangunan '' bersetuju untuk memberitahu lebih lanjut mengenai projek itu dengan mengambil kira penonton blog saya.

A.B.– Alexey, secara umum, apakah projek anda?

A.G.: – Idea tidak muncul secara serentak dan serta-merta. Sebelum projek 'Sphere', pasukan kami telah mengusahakan projek di mana teknologi audio/video strim dilaksanakan. Kemudian kami mencipta perisian kami sendiri yang mampu menyampaikan aliran multimedia kepada jumlah pengguna yang tidak terhad termasuk maklum balas. Tetapi kami perlu menyertakan ciri pengebilan.
Permohonan itu perlu mematuhi beberapa syarat. Pertama, penganjuran persidangan atau penghantaran yang dipermudahkan secara maksimum kepada peserta yang jumlahnya tidak dapat kami ramalkan. Kedua, yang paling penting, adalah untuk memberi peluang kepada pelanggan kami untuk memperoleh pendapatan dengan aplikasi kami dan untuk mengurangkan kerumitan sistem, jumlah instrumen yang diperlukan untuk digunakan untuk mencapai matlamat. Kemudahan penganjuran kursus, webinar atau hanya perundingan.

Nota kecil untuk ingatan berkenaan FireDAC dalam versi semasa Delphi XE6. Tetapi pertama, beberapa perkataan tentang tempat untuk mencari jawapan kepada soalan mengenai Monyet Api. Pengguna berbahasa Rusia berada dalam kedudukan istimewa di sini.

Semasa bersiap untuk acara Kharkov sebagai sebahagian daripada RAD Studio XE5 World Tour, saya menghadapi masalah kecil dalam bekerja dengan SQLite dengan menggunakan FireDAC. Jika pangkalan data yang diisi dalam aplikasi Windows dipindahkan bersama-sama dengan aplikasi ke Android, rentetan Cyrillic dalam pangkalan data tidak lagi boleh dibaca (tanda soal dipaparkan dan bukannya huruf). Walau bagaimanapun, jika anda mengisi pangkalan data secara langsung pada peranti mudah alih, aksara Rusia dibaca dengan betul. Data daripada pangkalan data yang diisi dalam aplikasi pihak ketiga, atau dalam Delphi aplikasi yang menggunakan komponen capaian data lain juga dipaparkan seperti biasa. Pertemuan itu gagal untuk mencari penyelesaian, dan saya terpaksa memetik seorang pakar bola sepak terkenal Ukraine: "Kami akan memikirkannya!"

Tidak seperti yang lepas, saya berjaya menangani masalah yang diterangkan. Secara lalai apabila menyambung ke SQLite V FireDAC Format rentetan ANSI digunakan.

Jika anda memaksa Unicode dipasang, maka semuanya akan berfungsi sebagaimana mestinya. Tetapi ada juga saat yang tidak menyenangkan. Dengan menukar format rentetan, anda perlu mencipta semula senarai medan dalam semua set data, serta menyambung semula komponen yang bertanggungjawab untuk memaparkan dan memasukkan data. Oleh itu, adalah lebih baik untuk menjaga pengekodan dengan segera.

Dalam bahagian sebelumnya siri mini ini, kami berurusan dengan mencipta pangkalan data, strukturnya dan menyambungkannya daripada Delphi. Dalam bahagian ini, saya mencadangkan untuk memahami paparan data daripada jadual, bermula dengan kes yang paling mudah.

Editor data jadual ringkas, biasanya sebahagian daripada aplikasi yang kompleks. Saya biasanya menggunakan borang yang berasingan untuk mengedit jadual. Mari kita mulakan dengan senarai runcit. Pertama sekali, kita perlu mencipta Set Data untuk mengakses data jadual. Dalam kes kami, sangat mungkin untuk menggunakan komponen tersebut TADTtable. Mari letakkannya dalam DataModule dan tentukan nilai hartanah Sambungan. Dalam editor hartanah Nama Jadual senarai jadual akan muncul dari mana kita memilih jadual Produk. Jika anda melakukan semuanya dengan betul, anda boleh menetapkan harta itu Aktif nilai Benar. Adalah lebih baik untuk menamakan semula komponen dengan segera (contohnya, ADTProduct). Selepas ini, saya biasanya membuat satu set medan untuk Set Data. Panggil editor medan (klik dua kali pada komponen) dan pilih Tambah Semua Medan daripada menu konteks.

Bagi mereka yang tidak tahu, saya akan menerangkan intipati operasi ini. Di sini kami mencipta set medan Set Data yang dipratentukan. Jika kita tidak melakukan ini secara manual dalam mod reka bentuk, maka, pada dasarnya, tiada perkara buruk akan berlaku. Dalam RunTime set ini akan dibuat secara automatik. Tetapi saya masih lebih suka menciptanya secara manual. Terdapat beberapa sebab untuk ini. Pertama, lebih mudah untuk mengurus satu set medan, kerana kita boleh membuat medan tambahan (dikira atau lookUp) sendiri dalam mod reka bentuk. Kita juga boleh mengubah sifat medan itu sendiri. Dan sebagai tambahan, kami mendapat peluang untuk mengakses medan dalam kod dengan nama komponen TField, yang, pada pendapat saya, sangat memudahkan penulisan kod.

Seperti dalam kes aplikasi VCL, kami akan menyambungkan komponen ke set data TDataSource. Komponen ini akan menyediakan sambungan antara set data dan kawalan visual. Sifat DataSet komponen mesti merujuk set data kami (ADTProduct). Di bawah saya menyediakan serpihan fail DFM

objek ADTProduct: TADTable IndexFieldNames = "ID" Connection = ADConnection UpdateOptions. UpdateTableName = "Product" TableName = "Produk" Kiri = 64 Atas = 192 objek ADTProductID: TADAutoIncField FieldName = "ID" Origin = "ID" ProviderFlags = [ pfInWhere, pfInKey] ReadOnly = True end object ADTProductTitle: TStrmeFieldTitle: TStrmeFieldTitle Asal = "Tajuk" Saiz = 50 objek akhir dsProduct: TDataSource DataSet = ADTProduct Kiri = 120 Atas = 192 hujung

Sila ambil perhatian satu ciri menarik: fail borang DataModule tidak disimpan dalam format FMX, seperti borang FireMonkey biasa, tetapi dalam format DFM, seperti dalam VCL.

Langkah seterusnya ialah membuat prosedur untuk membuka set data, yang perlu kita panggil dalam RunTime apabila program bermula. Mari kita buat dalam DataModule yang sama. Kod prosedur adalah sangat mudah:

prosedur TDM. ConnectToDB ; mulaADConnection. Buka(); ADTProduct. Buka(); akhir ;

Kami akan meletakkan panggilan prosedur dalam pengendali acara OnCreate untuk DataModule.

Lebih daripada tiga tahun telah berlalu sejak bahagian CodeGear, yang bertanggungjawab untuk penciptaan alat yang terkenal di dunia seperti Delphi, C++ Builder dan JBuilder, serta sistem pengurusan pangkalan data Interbase, menjadi sebahagian daripada Embarcadero Technologies, yang terkenal dengan alatannya. untuk reka bentuk dan pentadbiran pangkalan data , dan dua tahun sejak kami membincangkan di halaman majalah kami apa yang diharapkan dalam pembangunan alat yang sangat popular di kalangan pemaju Rusia. Kami meminta David Intersimone, naib presiden perhubungan pemaju dan ketua penginjil di Embarcadero Technologies, dan Kirill Rannev, ketua pejabat perwakilan Embarcadero Technologies, untuk bercakap tentang perkara baharu yang telah dilakukan di kawasan ini sejak dua tahun lalu dan perkara yang diharapkan dalam dalam masa terdekat. Rusia. Bagi pembaca termuda kami, kami akan memaklumkan kepada anda bahawa ini bukanlah temu bual pertama yang David dan Kirill berikan kepada ComputerPress - kerjasama kami telah berlangsung selama dekad kedua. Dan selama kira-kira bilangan tahun yang sama, kami telah menerbitkan ulasan alat pengurusan pangkalan data secara berkala, di mana banyak perhatian diberikan kepada produk Embarcadero.

ComputerPress: David, bahagian anda telah menjadi sebahagian daripada Embarcadero selama tiga tahun. Dua tahun yang lalu, anda bersemangat untuk menjadi sebahagian daripada syarikat yang hampir dengan matlamat dan semangat anda. Adakah sesuatu yang berubah pada masa ini? Adakah anda dan rakan sekerja anda masih mempunyai semangat yang sama?

Ya, saya masih sangat bersemangat. Perubahan utama yang telah berlaku sejak kami menjadi sebahagian daripada syarikat Embarcadero ialah banyak pelaburan telah dibuat dalam pembangunan Delphi. Bilangan orang yang bekerja pada alat pembangunan telah meningkat, dan bilangan teknologi yang boleh kita bangunkan atau, jika perlu, perolehi, telah meningkat.

Keluaran RAD Studio XE 2, yang kami merancang untuk menunjukkan di Moscow, adalah keluaran terbesar produk ini dengan keupayaan yang sangat besar dan sejumlah besar platform yang disokong sejak versi pertama Delphi, dicipta untuk versi 16-bit Windows dan yang merupakan produk inovatif yang menggabungkan pendekatan komponen dan penyusunan ke dalam kod mesin. Kini kami menyokong pembangunan bukan sahaja untuk Windows, tetapi juga untuk Macintosh, apatah lagi pembangunan web dan penciptaan aplikasi untuk peranti mudah alih, dan aplikasi ini untuk platform yang berbeza boleh mempunyai satu kod.

Platform pembangunan baharu, FireMonkey, ialah kerjasama antara Embarcadero dan firma Rusia KSDev yang berpangkalan di UlanUde baru-baru ini, pengeluar komponen grafik vektor, DirectX dan OpenGL, teknologi kesan grafik dan komponen Delphi menggunakan GPU dengan PixelShader 2.0. Kami memperoleh syarikat KSDev (lihat ksdev.ru) setahun yang lalu dan mula bekerjasama untuk mencipta alat pembangunan berbilang platform, termasuk platform untuk membangunkan aplikasi FireMonkey dengan komponen untuk Delphi dan C++Builder untuk mencipta antara muka pengguna aplikasi, pangkalan data penyepaduan, pemprosesan grafik menggunakan GPU dan penyepaduan dengan sistem pengendalian.

Menggunakan FireMonkey, anda boleh mencipta aplikasi yang berjalan pada CPU dan GPU bersama-sama, dan kemudian menggunakan penyusun yang berbeza dan Pustaka Masa Jalan (RTL) untuk menyusunnya untuk Windows, Mac OS atau iOS. Daripada belajar memprogram menggunakan perpustakaan grafik yang berbeza, mempelajari API platform berbeza yang mempunyai sistem koordinat berbeza dan keupayaan berbeza, pembangun menggunakan Delphi dan C++ Builder boleh menggunakan pendekatan berasaskan komponen yang sama, menyunting borang secara visual dan menyambung ke pangkalan data dengan menggerakkan komponen dengan tetikus. Ini ialah cara asas baharu untuk mencipta aplikasi yang berjalan pada platform yang berbeza, dan ia adalah masa hadapan. Jika anda ingin menambah sokongan untuk sistem pengendalian dan platform lain pada aplikasi anda, anda tidak perlu mereka bentuk dan membangunkannya semula - anda hanya perlu menyusunnya semula.

Kami mencipta penyusun baharu yang menjana kod asli. Hari ini terdapat pengkompil Delphi untuk versi 32- dan 64-bit Windows, versi 32-bit Mac OS 10. Dan kami sedang mengusahakan pengkompil Delphi dan C++ Builder generasi akan datang, yang akan membolehkan kami mencipta prestasi tinggi kod mesin untuk kedua-dua platform ini dan lain-lain seperti Android atau Linux, dan mengekalkan reka bentuk yang sama, komponen yang sama, kod yang sama dengan menggunakan penyusun dan perpustakaan masa jalan yang berbeza.

Seperti yang anda lihat, saya mempunyai cukup alasan untuk bersemangat. Dan pembangun yang saya temui di seluruh dunia tahu bahawa Embarcadero sedang melabur banyak dalam Delphi dan C++ Builder, serta alat pembangunan PHP.

KP: Apakah kejayaan yang telah anda capai dalam menyepadukan alatan kedua-dua syarikat sepanjang dua tahun yang lalu? Apakah rancangan Embarcadero untuk masa depan dalam bidang ini?

DI.: Pada masa CodeGear menjadi sebahagian daripada Embarcadero, syarikat itu mempunyai pasukan pembangunan di Toronto, Monterrey dan Romania, kami berada dan masih berada di Lembah Scotts dan di Rusia, di St. Petersburg. Embarcadero mempunyai alat untuk pembangun dan pentadbir pangkalan data, CodeGear mempunyai alat untuk pembangunan aplikasi, tetapi yang kedua juga menggunakan pangkalan data. Penggabungan syarikat adalah gabungan kepakaran, pengetahuan dalam bidang pangkalan data, pengoptimuman kod, termasuk kod pelayan. Gabungan syarikat juga membawa kepada penciptaan produk baharu, AppWave, teknologi khas untuk menukar aplikasi Windows biasa menjadi sesuatu yang sangat mudah digunakan (seperti aplikasi untuk iPhone atau peranti lain). AppWave membenarkan anda untuk tidak memasang aplikasi, tetapi hanya memilihnya dan melancarkannya daripada pelayan storan aplikasi yang disediakan (apl), dan ia akan dilaksanakan pada komputer pengguna tanpa membuat perubahan pada kawasan pendaftaran dan sistem fail sistemnya. By the way, pelayar aplikasi AppWave ditulis dalam Delphi. Embarcadero menggunakan Dephi untuk pembangunannya sendiri dan kepakaran pembangunan aplikasi kami.

Aplikasi iPhone (iOS) dicipta oleh
menggunakan platform FireMonkey

Anda juga boleh menggunakan penyepaduan alatan pembangunan kami dan Pengoptimum DB untuk mengoptimumkan pertanyaan SQL semasa membuat aplikasi. Dengan menghantar kod SQL terus ke DB Optimizer, anda boleh memprofilkannya, mengujinya dan mengembalikan versi yang dioptimumkan kembali ke persekitaran pembangunan anda. Kepakaran pangkalan data Embarcadero juga telah meningkatkan teknologi DataSnap. Terima kasih kepada pembangun dari Toronto, kami memperoleh banyak pengetahuan tentang seni bina sistem dan pangkalan data berbilang peringkat. Kami kini mempunyai kepakaran bersama dalam mencipta kod pelayan dan prosedur tersimpan dalam kedua-dua syarikat. Kami mempunyai alatan seperti RapidSQL dan DB Change Manager, serta persekitaran pembangunan yang memudahkan penciptaan kod pelayan - contohnya, teknologi Code Insight dan Code Completion mendayakan penciptaan SQL insight dan teknologi SQL Completion. Pendekatan biasa kami untuk mencipta kod pelanggan dan pelayan, falsafah biasa kami, membolehkan kami memberikan ciri umum kepada alat pengurusan pangkalan data dan alat pembangunan aplikasi.

Kirill Rannev: Saya ingin menambah sesuatu yang penting. Dari sudut pandangan komersial, cara kami menyampaikan alatan kami adalah sangat penting. Sebagai contoh, keluaran RAD Studio XE 2 Ultimate baharu termasuk set alat DB Power Studio yang lengkap. Ini ialah set alat yang sangat berkuasa, termasuk persekitaran pembangunan pertanyaan RapidSQL, alat pengurusan perubahan Pengurus Perubahan DB dan alat pengoptimuman pertanyaan DB Optimizer, membolehkan anda menjalankan bahagian penting dalam proses pembangunan dan penggunaan dengan menguruskan perubahan kepada model data, pangkalan data, kod, dan sebagainya. Ini adalah gabungan teknologi yang sangat baik dan betul.

DI.: Tetapi jika perlu, pembangun boleh menggunakan Subversion untuk versi kod sumber dan Pengurus Perubahan DB untuk versi metadata. Anda boleh menggunakan pemprofilan kod dan Pengoptimum DB untuk mengoptimumkan kod pelayan, RapidSQL untuk membina dan menyahpepijat kod pelayan, dan persekitaran pembangunan kami untuk membina dan menyahpepijat aplikasi. Gabungan teknologi dalam RAD Studio XE Ultimate Edition ini menunjukkan persamaan antara pangkalan data dan model pembangunan aplikasi. Kebanyakan pembangun membina aplikasi perniagaan dengan Delphi dan C++ Builder bekerja dengan pangkalan data dan memerlukan alatan ini, dan RAD Studio XE Ultimate Edition ialah gabungan hebat untuk pembangun tersebut.

KP: Pengguna moden bukan lagi pengguna platform Windows sahaja. Kami menggunakan peranti mudah alih, iPhone, iPad, peranti berdasarkan platform Android. Ini bermakna pembangun mesti mula menyasarkan platform yang berbeza tanpa meningkatkan pelaburan dalam latihan dengan ketara - iaitu, alat universal diperlukan. Jelas sekali, adalah tidak realistik untuk menjangkakan kemunculan alat universal daripada pengeluar platform, dan dalam perkara ini kita hanya boleh bergantung pada pengeluar alat bebas. Bagaimanakah kita boleh bergantung pada Embarcadero?

DI.: Kami masih banyak yang perlu dilakukan dari segi sokongan platform. Hari ini kami memperkenalkan sokongan untuk platform iOS untuk iPhone dan iPad, kemudian telefon pintar berasaskan platform Android, Windows 7 dan Blackberry akan menerima sokongan kami. Dalam RAD Studio XE 2, kami bermula dengan membina platform FireMonkey untuk iOS dan kemudian akan membawa FireMonkey ke platform lain.

Pada masa yang sama, terdapat sejumlah besar sistem pengendalian berdaya skrin sentuh untuk telefon, tablet dan peranti desktop, dan kami akan terus menambah sokongan untuknya. Terdapat juga suara, gerakan, biometrik, pecutan, jadi kita mesti terus mengembangkan FireMonkey supaya semua pembangun dapat memanfaatkan platform baharu. Sebagai contoh, peranti Microsoft Kinect telah direka untuk Xbox 360, dan kini terdapat SDK (Kit Pembangunan Perisian) yang sepadan untuk Windows. Dan kami sudah mempunyai contoh di mana kami menggunakan gerakan untuk mengawal aplikasi dengan cara yang sama seperti tetikus atau papan kekunci biasanya digunakan.

Apabila anda mencipta aplikasi dengan banyak grafik yang kompleks, anda menjana seluruh dunia antara muka pengguna baharu. Jika kami berurusan dengan sistem pengendalian Windows, kami merangkum API Windowsnya dalam perpustakaan VCL (Visual Component Library - perpustakaan komponen visual yang merupakan sebahagian daripada alatan pembangunan Delphi dan C++ Builder. - Catatan ed.), yang, dengan cara ini, boleh digunakan lagi. Dan dalam FireMonkey kami merangkum API sistem pengendalian. Tetapi hari ini kami memanipulasi bentuk dan grafik dengan lebih meluas. Anda juga boleh menambah sifat fizikal pada ruang untuk animasi dan kesan khas. Di samping itu, terdapat sejumlah besar keupayaan tambahan lain untuk mencipta antara muka pengguna yang akan kami laksanakan dalam beberapa tahun akan datang untuk platform, peranti mudah alih dan tablet yang berbeza.

Microsoft baru-baru ini mengeluarkan butiran mengenai Windows 8, yang akan dikeluarkan dalam masa setahun. Kami akan menyokong inovasi ini dalam perpustakaan VCL dan platform FireMonkey. Tetapi Delphi ialah alat pembangunan yang direka bukan sahaja untuk Windows, tetapi juga untuk Macintosh, iPhone dan iPad. Kami juga membangunkan produk PHP kami, menyokong jQuery Mudah Alih, menggunakan API iOS untuk membangunkan aplikasi klien mudah alih dan mencipta aplikasi PHP sebelah pelayan menggunakan wizard dan alatan untuk menjana JavaScript, HTML dan helaian gaya cascading sisi klien. Kami boleh mencipta pakej daripada aplikasi PHP dan aplikasi klien dengan kod asli untuk iPhone iOS, dan pelanggan sedemikian akan berkomunikasi dengan pelayan PHP. Dan dia, seterusnya, akan berkomunikasi dengan pelayan pangkalan data dan dengan perkhidmatan web - dengan semua yang diperlukan untuk perniagaan.

Persekitaran pembangunan RadPHP XE2. Mencipta aplikasi web mudah alih
menggunakan komponen mudah alih jQuery untuk iPhone 3G

Dalam erti kata lain, kami merancang untuk mengembangkan keupayaan FireMonkey dan VCL, termasuk sokongan untuk platform mudah alih.

KP: Bolehkah anda memberitahu kami lebih lanjut tentang platform FireMonkey?

DI.: Seperti yang telah saya nyatakan, perpustakaan VCL yang dibuat untuk Windows akan terus berkembang dan bertambah baik. Tetapi hari ini, jika anda mahukan pembangunan aplikasi perniagaan sebenar, anda perlu menciptanya untuk platform yang berbeza. Untuk inilah platform FireMonkey direka bentuk. Ia menyokong penciptaan antara muka pengguna resolusi tinggi, grafik 3D berprestasi tinggi, kadar bingkai tinggi dan, yang penting, menggunakan pemproses grafik untuk ini.

Anda boleh menggunakan keupayaan sedemikian apabila mencipta aplikasi saintifik, kejuruteraan dan perniagaan. Aplikasi sedemikian boleh menyambung ke pangkalan data menggunakan teknologi dbExpress, masih menggunakan komponen bukan visual yang biasa kepada pembangun, seperti ClientDataSet atau DataSource, menggunakan teknologi DataSnap, menyambung ke mana-mana pangkalan data, SOAP dan pelayan REST. Anda boleh mencipta kawalan yang menarik, butang dengan kotak, jadual luar biasa dan elemen antara muka lain, kedua-duanya dalam dua dan tiga dimensi. Anda boleh memuatkan model 3D yang telah siap ke dalam apl dan menyambungkannya kepada bentuk 2D yang membolehkan anda memutarkannya dan melihatnya dari sudut yang berbeza. Anda boleh membuat kiub data atau carta perniagaan 3D dan memutarkannya menggunakan tetikus, papan kekunci atau peranti Kinect anda, atau anda boleh melangkah ke dalam kiub dan melihat permukaannya yang berbeza dari dalam. Dan semua ini boleh dilakukan menggunakan GPU berkelajuan tinggi. Aplikasi yang sama kemudiannya boleh disusun untuk platform lain, seperti Mac OS.

Aplikasi yang mengandungi kiub data berputar,
diletakkan di tepinya

Atau anda boleh mencipta bentuk 3D dari awal dan menggunakan kamera dan lampu untuk menyala dan memutar bahagian antara muka pengguna. Pereka bentuk borang sudah mempunyai persekitaran terbina dalam untuk menyokong antara muka pengguna 3D semasa reka bentuk.

Pada Windows, anda boleh menggunakan perpustakaan Direct2D untuk bekerja dengan grafik 2D resolusi tinggi dan Direct3D untuk grafik 3D. Pada Mac OS, perpustakaan Kuarza dan OpenGL digunakan untuk tujuan yang sama. Untuk iOS, perpustakaan Kuarza dan OpenGL ES digunakan. Tetapi semua ini tersembunyi daripada pemaju - dia menggunakan platform FireMonkey, sistem koordinatnya dan antara muka pengaturcaraan aplikasi, tanpa memikirkan perpustakaan ini, dan boleh menyusun aplikasi yang sama untuk platform yang berbeza.

Mari kita ingat apa itu VCL. VCL ialah pembalut komponen di sekeliling API Windows. Kami berurusan dengan sumber, menu, kotak dialog, warna, gaya, mesej Windows. Sebagai pembalut berbilang platform, tidak seperti VCL, FireMonkey mengekalkan acara dan model komponen yang sama, membolehkan anda berfikir dari segi acara (contohnya, OnClick, OnHasFocus, onMouseDown dan acara onKeyDown), tetapi mengendalikan acara Macintosh atau iPhone.

Platform FireMonkey juga dilengkapi dengan sistem animasi lengkap untuk elemen antara muka pengguna. Ia sememangnya bukan sistem animasi gaya Pixar yang komprehensif, tetapi ia membenarkan kesan seperti animasi bitmap, penonjolan fokus elemen UI dan grafik vektor. Lebih daripada 50 kesan visual tersedia untuk pembangun: kabur, menukar imej menjadi hitam dan putih, melarutkan, peralihan, pantulan, mencipta bayang-bayang - semua jenis kesan yang terdapat dalam pemproses grafik moden, yang kini terdapat dalam hampir mana-mana komputer. Aplikasi yang dibina menggunakan platform FireMonkey menghantar arahan kepada GPU, yang melakukan semua kerja memaparkan grafik dan mencipta antara muka pengguna. Dalam kes ini, pemproses pusat adalah percuma untuk pengiraan dan panggilan ke sistem pengendalian. Pembangun hanya boleh meletakkan komponen dengan betul.

Perkara yang paling asas tentang platform FireMonkey ialah cara ia membina antara muka pengguna. Terdapat cara untuk meletakkan grafik raster pada elemen antara muka seperti menu, butang, dan bar skrol. Di FireMonkey, kami menggunakan grafik vektor berkuasa GPU untuk tujuan ini. Dari perspektif pengaturcaraan, ini masih merupakan kawalan yang sama, tetapi semua kerja untuk memaparkannya dijalankan oleh pemproses grafik. Kami boleh menggunakan gaya pada kawalan, menjadikan aplikasi kelihatan seperti aplikasi untuk Mac OS atau Windows, mencipta gaya kami sendiri, menggunakan gaya kami sendiri pada elemen antara muka (contohnya, buat butang segi empat tepat atau bulat dengan menukar gayanya dalam editor borang ) - untuk ini Terdapat editor gaya dalam persekitaran pembangunan. Anda boleh mencipta gaya anda sendiri atau anda boleh menukar gaya aplikasi yang telah siap.

Platform FireMonkey - Alat Pembangunan
dan platform yang disokong

Jika anda masih ingat, perpustakaan VCL mempunyai bilangan kawalan yang terhad - bekas (iaitu, membolehkan anda meletakkan elemen lain di dalamnya), dan dalam FireMonkey setiap kawalan ialah bekas. Ini bermakna setiap kawalan boleh mengandungi sebarang kawalan lain. Contohnya, item senarai lungsur turun mungkin mengandungi imej, butang, medan edit dan kawalan lain. Anda juga boleh meletakkan komponen dalam lapisan.

Sistem pemaparan FireMonkey agak fleksibel - ia boleh menggunakan perpustakaan Direct2D, Direct3D dan OpenGL, menghantar arahan kepada GPU. Untuk mencapai perkara yang sama dalam VCL, anda perlu menjana penimbal luar skrin yang berasingan, mencipta imej di dalamnya dengan memanggil fungsi perpustakaan grafik yang sesuai, dan kemudian memaparkannya pada borang.

Contoh kesan grafik yang disokong oleh FireMonkey

Jika anda tidak mempunyai GPU, anda masih boleh menggunakan bentuk 2D atau 3D dan menggunakan kawalan FireMonkey. Dalam kes ini, platform FireMonkey akan menggunakan perpustakaan GDI+ atau perpustakaan lain yang serupa dan melakukan kesan dan animasi atau manipulasi objek 3D yang sama.

Satu lagi ciri FireMonkey ialah sistem baharu untuk memautkan elemen antara muka dengan data, terbuka dan fleksibel. Terdapat dua jenis elemen antara muka dalam VCL: terikat data dan tidak terikat data (contohnya, TDBEdit dan TEdit). Dalam FireMonkey, setiap kawalan boleh dikaitkan dengan mana-mana jenis data. Ini boleh menjadi ungkapan ringkas, medan daripada set data, data daripada objek yang dibuat oleh pembangun atau hasil panggilan kaedah.

Di samping itu, semasa membuat aplikasi, anda boleh memuatkan model 3D siap pakai ke dalamnya dan menggunakannya - keupayaan sedemikian sering diperlukan dalam kedua-dua aplikasi perniagaan dan kejuruteraan. Kami mempunyai pelanggan yang mencipta aplikasi untuk logistik. Mereka mempunyai sistem maklumat yang dibina menggunakan Delphi, dan di dalamnya aplikasi yang melukis pelan dan memaparkan maklumat daripada sumber data. Mereka baru-baru ini melakukan sesuatu yang menarik - mereka melukis gudang 3D automatik sepenuhnya dalam AutoCAD, dan aplikasi mereka membolehkan anda melihat cara forklift automatik bergerak di sekitar gudang dan meletakkan barang di rak. Dan mereka meletakkan data daripada sumber pada imej yang sepadan.

Contoh menukar gaya aplikasi

KP: Apakah format model 3D yang disokong pada masa ini?

DI.: Dalam keluaran ini kami menyokong memuatkan model daripada AutoCAD, Collada (alat pemodelan 3D sumber terbuka. - Catatan edit.), Maya, format OBJ yang disokong oleh banyak vendor grafik 3D.

KP: Apakah format lain yang anda merancang untuk menambah?

DI.: Kami merancang untuk menambah 3DS (3D Studio MAX), SVG (biasanya format ini digunakan untuk grafik vektor 2D, tetapi kadangkala untuk 3D), Google SketchUp. Mungkin kami akan menyokong format lain.

KP: Adakah menggunakan model 3D dalam aplikasi yang dibina dengan FireMonkey memerlukan lesen untuk alat pemodelan 3D yang sesuai?

DI.: Tidak, ia tidak memerlukannya. Apa yang kita lakukan ialah membaca fail model. Kami mengimport model, tetapi tidak mengeksportnya (walaupun, sudah tentu, anda boleh menulis aplikasi yang menyimpan model dalam format anda sendiri). Kami tidak berpura-pura menjadi pengeluar alat pemodelan 3D - untuk ini anda boleh menggunakan AutoCAD, 3D Studio Max, Maya atau mana-mana alat pemodelan 3D lain, dan mengimport model yang dicipta ke dalam aplikasi kami.

KP: Sejauh manakah prestasi aplikasi dibina dengan FireMonkey pada platform perkakasan moden?

DI.: Produktiviti agak tinggi. Sebagai contoh, memaparkan bentuk 3D dengan tiga sfera dan tiga lampu pada MacBook Pro boleh dipaparkan pada 100 bingkai sesaat. Atau ia boleh mencecah 600 - ia bergantung kepada apa sebenarnya yang kita lakukan. Sekali lagi, semuanya bergantung pada kuasa GPU.

KP: Adakah ini bermakna anda boleh mencipta permainan moden menggunakan FireMonkey?

DI.: Kami tidak meletakkan alat pembangunan kami sebagai alat untuk permainan. Walau bagaimanapun, mengambil kesempatan daripada prestasi tinggi GPU moden, anda boleh membuat permainan menggunakan FireMonkey - lagipun, ia dicipta menggunakan Direct3D atau OpenGL.

KP: Apakah kerja yang sedang anda lakukan dalam bidang menyokong pengecaman gerak isyarat dan perkara-perkara baru yang lain? Adakah sokongan sedemikian tersedia?

DI.: Kami belum mempunyai sokongan gerak isyarat dalam keluaran ini lagi. Kawalan gerak isyarat akan ditambah dalam keluaran FireMonkey yang akan datang, tetapi sementara itu anda boleh menggunakan sokongan gerak isyarat yang terbina dalam sistem pengendalian.

Mikhail Filippenko, pengarah Fast Reports, Inc.

K.R.: Kami telah mengatakan bahawa teknologi FireMonkey mempunyai akar Rusia - asasnya dicipta di negara kita, dan kemudian kedua-dua teknologi itu sendiri dan pembangunnya menyertai Embarcadero. Secara umum, adalah menggembirakan untuk melihat pertumbuhan komponen Rusia dalam RAD Studio dan Delphi. Ini termasuk aktiviti pusat pembangunan kami di St. Petersburg dan sumbangan pemaju bebas Rusia. Sebagai contoh, Rad Studio XE2 termasuk penjana laporan FastReport - dikenali di seluruh dunia dan sangat popular di negara kita. Dia berasal dari Rostov-on-Don.

KP: Saya ingin bercakap tentang penyusun. Apakah jenis pengkompil yang digunakan semasa membuat aplikasi iOS?

DI.: Kami tidak mempunyai pengkompil Delphi kami sendiri untuk iPhone atau iPad—kami belum lagi membangunkan penyusun untuk pemproses ARM yang digunakan dalam peranti tersebut. Untuk iOS, kami menggunakan pengkompil Pascal Percuma dan pustaka masa jalan buat sementara waktu. Tetapi kami sedang mengusahakan pengkompil generasi akan datang, termasuk untuk pemproses AWP. Tetapi terdapat penyusun untuk Windows dan Mac OS, kerana kedua-dua platform perkakasan adalah berdasarkan pemproses Intel.

KP: Apakah yang telah dilakukan dalam bidang mencipta penyusun dalam dua tahun kebelakangan ini?

DI.: Kami mempunyai penyusun Delphi 32- dan 64-bit untuk Windows dan Mac OS. Dan kami sedang mengusahakan pengkompil Delphi dan C++ generasi baharu. Ia masih dalam proses, tetapi apabila ia selesai, kami akan mempunyai pengkompil Delphi untuk pemproses ARM, platform Android, Linux dan segala-galanya di antaranya. Dan kami akan mempunyai penyusun C++ 64-bit untuk Windows dan platform lain, serasi dengan standard bahasa C++ terkini yang baru diterima pakai oleh ISO.

KP: Apakah yang berlaku dengan sokongan pengkomputeran awan dalam alatan pembangunan Embarcadero hari ini?

DI.: Dalam RAD Studio XE 2, kami menyokong mengalihkan aplikasi ke awan Microsoft Azure atau Amazon EC2 menggunakan Pembantu Platform. Dan kami mempunyai komponen pelayan untuk Cloud Storage untuk Azure dan Amazon S3 untuk menyimpan jadual, data binari, baris gilir mesej. Dalam versi RAD Studio XE sebelumnya, kami turut menyokong penggunaan aplikasi ke Amazon EC2, tetapi ia tidak menyokong storan.

Sokongan pengkomputeran awan dalam RAD Studio XE 2

KP: Dua tahun lalu anda bercakap tentang penyelesaian All-Access baharu. Seberapa popularnya? Apakah faedahnya untuk penyepadu sistem dan pembangun?

DI.: Penyelesaian Semua Akses dan alat awan AppWave digunakan secara meluas di seluruh dunia. Mereka direka bentuk untuk memudahkan penggunaan kami sendiri dan aplikasi pihak ketiga. Ia pada asasnya adalah penyelesaian untuk menguruskan lesen dan penggunaan aplikasi, dan mudah untuk syarikat besar. Perniagaan yang lebih kecil yang tidak mempunyai pasukan khusus orang yang bertanggungjawab untuk mengurus aplikasi boleh meletakkan aplikasi ke dalam repositori, memilih nama pengguna daripada pangkalan data dan menyediakan aplikasi tersebut tanpa perlu mengingati di mana kunci lesen berada atau jumlah lesen yang ada. All-Access dan penyemak imbas AppWave direka untuk mengurus kedua-dua versi dan kawalan akses.

K.R.: Pasaran sangat pelbagai dan pengguna sangat berbeza sehingga mustahil untuk menampung semua keperluan dengan satu penyelesaian. Itulah sebabnya kami berusaha untuk penyelesaian pembungkusan yang pelbagai. Kami telah melakukan banyak kerja untuk menyatukan kaedah pelesenan, pengurusan lesen dan pemasangan produk. Barisan penyelesaian ini termasuk alat pengurusan lesen dan peruntukan bukan sahaja untuk produk Embarcadero, tetapi juga untuk mana-mana produk lain, termasuk pembangunan dalaman syarikat.

Kerja pada alat pembangunan pembungkusan menjadi kit yang berkesan untuk pengguna masih berterusan. Kami mempunyai All-Access - superset yang menggabungkan semua produk Embarcadero. Jika pelanggan membeli All-Access Platinum, mereka menerima semua alatan yang terdapat dalam Embarcadero. Tetapi kadangkala set ini ternyata berlebihan; contohnya, untuk pakar pangkalan data, kami telah membuat dua set lain - DB Power Studio Developer Edition dan DB Power Studio DBA Edition. Perbezaan di antara mereka ialah untuk pembangun yang kami tawarkan RapidSQL - alat untuk membangunkan kod pelayan, dan untuk pentadbir terdapat DBArtizan terbina dalam - alat pentadbiran pangkalan data, produk yang lebih luas daripada RapidSQL. Untuk profesional, kami mempunyai suite All-Access berikut: suite yang merangkumi semua produk, DB Power Studio untuk pembangun, DB Power Studio untuk pentadbir, ER Studio Enterprise Edition untuk arkitek dan sesiapa sahaja yang terlibat dalam pemodelan. Terdapat gabungan untuk pembangunan aplikasi dan untuk pentadbir. Delphi ialah alat pembangun, dan sangat masuk akal untuk menambah alat pembangunan dan pengoptimuman SQL padanya. Akhir sekali, Pengurus Perubahan DB ialah alat logik untuk mengurus kerumitan perubahan yang berlaku pada pangkalan data semasa kitaran hayatnya.

Oleh itu, All-Access ialah ketua keluarga besar set produk yang berbeza.

KP: Jika bukan rahsia, siapa di Rusia yang menggunakan All-Access?

K.R.: Kami mempunyai pelanggan yang membeli All-Access berdasarkan Delphi. Ramai daripada mereka membina sistem pelayan pelanggan yang kompleks dengan SQL Server dan Oracle, dan mereka serta-merta menyukai alatan pangkalan data merentas platform kami. Kami mempunyai syarikat pelanggan yang telah menggunakan Delphi sejak versi pertama, dan setahun yang lalu mereka beralih daripada menggunakan Delphi kepada suite All-Access. Dua alatan yang dijamin untuk digunakan oleh semua pembangun di syarikat ini ialah Delphi dan DBArtisan. Dan terdapat pelanggan yang datang ke All-Access dari sisi pangkalan data. Tugas utama mereka adalah untuk mentadbir pangkalan data, tetapi mereka juga kadang-kadang membangunkan aplikasi. Pelanggan yang menggunakan All-Access termasuk syarikat media, syarikat kejuruteraan dan industri lain.

Secara berasingan, saya ingin memberi tumpuan kepada syarikat kecil. Selalunya dalam pasukan kecil pembangun melakukan segala-galanya, dan syarikat sedemikian kadangkala membeli set produk All-Access yang besar untuk satu atau dua pembangun. Dalam pasukan besar, tidak digalakkan untuk pembangun turut melaksanakan, contohnya, peranan pentadbir pangkalan data, jadi set produk kecil biasanya popular di sana, tetapi dalam syarikat kecil gabungan tanggungjawab sedemikian agak boleh diterima.

Delphi Architect ialah produk yang banyak dipasarkan yang merangkumi alat pemodelan dan pengaturcaraan. Walau bagaimanapun, bilangan salinan yang dijual adalah kurang daripada versi Delphi Enterprise, tetapi ia juga besar. Saya ingin ambil perhatian bahawa pada tahun 2010 kami ternyata menjadi negara terbaik dari segi jumlah jualan, walaupun pada hakikatnya semua negara mengalami krisis. Pertumbuhan ini tidak banyak dikaitkan dengan faktor ekonomi, tetapi dengan fakta bahawa versi RAD Studio XE, yang dikeluarkan pada akhir tahun 2009, ternyata sangat popular. Dan buat masa ini kami menjangkakan pertumbuhan jualan selanjutnya.

Kami telah mengambil satu lagi langkah yang munasabah, yang sangat popular di Rusia. Tahap pengesahan versi berbeza produk kami adalah berbeza: semakin tinggi versi, semakin disahkan, kerana sebelum ini perisian itu tidak dibeli secara aktif. Bermula dengan RAD Studio XE, lesen itu meliputi versi 2010, 2009, 2007, dan juga Delphi 7, produk yang digunakan secara meluas.

Hari ini, pemaju berhadapan dengan hakikat bahawa mereka mempunyai kedua-dua projek baharu dan projek dalam sokongan. Sebilangan besar projek telah dipindahkan daripada versi awal Delphi ke versi 7 dan kekal dalam versi ini, terus berjalan pada sumber yang agak kecil. Tiada siapa yang mengalihkannya ke versi yang lebih baharu, tetapi ia dikekalkan dalam keadaan berdaya maju. Dan kini kami membenarkan anda mendapatkan kedua-dua RAD Studio XE dan Delphi 7 dengan sedikit wang (kurang daripada harga lesen Delphi 7) - iaitu, kami menghalalkan pemaju untuk pelaksanaan projek baharu dan untuk projek sokongan.

KP: Bagaimanakah anda menilai keadaan semasa komuniti Embarcadero?

DI.: Komuniti ini besar dan sangat menuntut. Mereka memerlukan segala-galanya dengan segera - mereka adalah pemaju. Tetapi kadang-kadang ia mengambil masa yang lama untuk melakukan sesuatu yang betul.

Beberapa tahun yang lalu, kami mengambil seni bina komponen Windows dan meletakkannya pada desktop Linux. Sekarang kita melihat bahawa ini bukanlah keputusan yang tepat. Penyelesaian yang tepat ialah mencipta platform aplikasi. Aplikasi walaupun merentasi platform berbeza mempunyai menu, tetingkap, grafik, akses rangkaian dan akses peranti. Platform yang berbeza mungkin mempunyai model yang berbeza untuk mengurus urutan atau mengendalikan pengecualian, tetapi kami melihat blok percubaan yang sama dalam kod aplikasi. Tugas kami adalah untuk memudahkan pembangun membuat aplikasi perniagaan dan menyusunnya untuk platform yang ia bertujuan untuk digunakan, tidak kira bagaimana set arahan pemproses yang sepadan distrukturkan dan apakah ciri lain platform ini. Dan FireMonkey adalah perkara yang anda perlukan untuk menyelesaikan masalah ini.

KP: Jika syarikat mencipta peranti baharu dan mahu peranti itu disokong dalam FireMonkey, adakah ini boleh dilakukan?

DI.: Dengan pengkompil generasi baharu, yang akan mempunyai bahagian hadapan yang bebas platform dan bahagian belakang yang bergantung pada platform, ini akan menjadi sangat mungkin. Sementara itu, untuk setiap sistem pengendalian, kami mencipta pengkompil dan perpustakaan masa jalan dari awal.

Mana-mana peranti baharu moden biasanya disertakan dengan antara muka pengguna grafik (kebanyakannya mempunyai CPU dwi-teras dan GPU) dan SDK standard untuk pembangun. Ini memudahkan untuk membuat sokongan peranti dalam FireMonkey. Jika peranti baharu hanya mempunyai perpustakaan untuk grafik dua dimensi seperti Kuarza, kami akan dapat menyokong peranti sedemikian dalam FireMonkey, tetapi ini akan mengambil masa lebih kurang beberapa bulan. Walau bagaimanapun, banyak bergantung pada platform: tidak semua platform menyokong semua ciri, contohnya, iOS tidak mempunyai menu dan kotak dialog dan anda tidak akan dapat meletakkan komponen yang sepadan pada bentuk aplikasi tersebut.

KP: Adakah terdapat perubahan dalam dasar bekerja dengan rakan kongsi? Apakah yang sedang dilakukan untuk meningkatkan bahagian pengguna produk anda? Apa yang sedang dilakukan di Rusia?

DI.: Ekosistem rakan kongsi kami adalah luas - terdapat beratus-ratus pengeluar alat dan komponen tidak ditemui dalam produk kami, dan kami mempunyai program perkongsian teknologi. Oleh itu, pelbagai komponen, teknologi dan alatan tersedia untuk pembangun. Dan penyelesaian yang mereka cipta untuk pelanggan mereka adalah lebih baik daripada jika mereka hanya menggunakan produk kami. Dan untuk jualan kami mempunyai pejabat di banyak negara, penjual semula dan pengedar.

K.R.: Apa yang penting bagi kami bukanlah bilangan rakan kongsi, tetapi kualiti kerja setiap rakan kongsi tertentu. Buat masa ini, kami ingin memberi tumpuan untuk bekerjasama rapat dengan rakan kongsi sedia ada, walaupun kumpulan rakan kongsi kekal terbuka. Kami mempunyai ramai rakan kongsi, dan kami mesti membantu mereka dari segi teknologi. Kami bekerjasama dengan pembangun, dan mereka tahu perkara yang mereka mahukan, dan mereka tahu perkara yang tersedia di pasaran, dan keupayaan rakan kongsi mesti sepadan dengan ini.

Kami mempunyai rakan kongsi perniagaan yang serius melabur dalam Embarcadero sebagai barisan perniagaan - mereka telah melatih pakar, memasarkan produk kami, pekerja berdedikasi yang bertanggungjawab untuk baris ini dan memantau apa yang berlaku dengan produk kami, senarai harga, pemasaran. Sememangnya, mereka lebih berjaya dari segi jualan produk kami berbanding syarikat yang menjual produk kami sekali-sekala.

KP: David, Kirill, terima kasih banyak atas wawancara yang menarik. Izinkan saya, bagi pihak penerbitan kami dan pembaca kami, mendoakan syarikat anda terus berjaya dalam mencipta alatan hebat anda yang amat diperlukan oleh pembangun!

Soalan yang ditanya oleh Natalia Elmanova