Delphi, FireMonkey, All-Access болон бусад тааламжтай гэнэтийн бэлэг. Delphi, FireMonkey, All-Access болон бусад таатай сюрпризүүд Анхаарах зүйлс

Viber OUT 31.10.2021
Viber OUT

FireMonkey гэсэн нэр томъёог бүх хөгжүүлэгчид биш юмаа гэхэд ядаж Delphi ашигладаг хүмүүст танил болсоноос хойш хангалттай хугацаа өнгөрчээ. Энэ хугацаанд FireMonkey-ийн тухай номууд, FireMonkey-ийн тухай нийтлэлүүд, олон блогт FireMonkey-ийн тухай нийтлэлүүд байсан. Энэ бүхнийг уншихад их сонирхолтой байдаг. Гэхдээ ямар ч онол практикийг орлож чадахгүй. Би өмнөх олон хүний ​​адил FireMonkey ашиглан ямар нэгэн зүйл бичих гэж загатнаж байсан.

Гэсэн хэдий ч үүнийг хийх явцад асуудал үүссэн. Яагаад ч юм би тийм ч төвөгтэй биш ажлын төслийг хэрэгжүүлэх хэрэгтэй гэж шийдсэн.

Энэ нь яагаад миний хувьд асуудал болж хувирсныг тайлбарлахын тулд (нэг нь бичихийг хүсч байна, уянгын) хазайлт хэрэгтэй болно. Хөгжүүлэгчийн хувьд миний өнгөрсөнд хийсэн аялал. Delphi ашиглан програмчлалын талаарх миний зарим үзэл бодлыг тайлбарла.

Би Delphi-г Windows 3.1, өөрөөр хэлбэл эхний хувилбараас ашиглаж эхэлсэн гэдгээ хэлэх ёстой. Түүнээс хойш би VCL-д суралцаж байна. Жинхэнэ хувилбараар нь судалсан. Үзсэн, хаягласан, мөрдсөн эх кодууд. Дахин дахин.

Янз бүрийн үед Delphi-тэй нийлүүлсэн бүрэлдэхүүн хэсгүүд нь VCL-ийн цоорхойг нөхөх ёстой гуравдагч талын бүрэлдэхүүн хэсгүүдийг агуулдаг байсан бөгөөд оруулахаасаа өмнө чанарын хяналтанд орсон байж магадгүй юм. Эдгээр бүрэлдэхүүн хэсгүүдийн заримыг өнөөг хүртэл нийлүүлсээр байна. Яг ижил Индиг ав. Би хэнийг ч гомдоохыг хүсэхгүй байна, энэ бол миний хувийн үзэл бодол бөгөөд энэ нь бүрэлдэхүүн хэсэг хөгжүүлэгчийн хувьд надад ч хамаатай: нэг ч багцыг тийм ч гүнзгий бодож, хэрэгжүүлээгүй, асар том, олон янзын VCL байхгүй байна. Үгүй ээ, би өөрийгөө туйлын үнэн гэж дүр эсгэдэггүй бөгөөд мэдээжийн хэрэг VCL-д олон алдаа, үл ойлголцол, татгалзах шалтгаан, санал нийлэхгүй байхыг хүсч буй шийдвэрүүд байдаг. Гэхдээ надад үргэлж нэг хэв маягийн сэтгэгдэл төрдөг байсан. Миний бодлоор VCL-д Delphi-ийн дизайныг бүхэлд нь дэмждэг үзэсгэлэнтэй, хүчирхэг цөм байдаг бөгөөд түүний эргэн тойронд програм хангамжийн дэд бүтэц болон хөгжүүлэгчийн нийгэмлэг өөрөө бий болсон. VCL-д ихээхэн баярлалаа, миний бодлоор Дельфигийн үхлийн тухай цуу яриа одоо ч цуу яриа хэвээр байна. Гуравдагч талын бүрэлдэхүүн хэсгүүдийг VCL-ийн нийлүүлэлтэд оруулахад тэр даруй мэдэгдэхүйц байсан бөгөөд тэдгээр нь өөр байв.

Гэвч тэр мөч ирж, VCL бол хоцрогдсон технологи гэдгийг би сонсдог. Өнгөрсөнд үлдэх ёстой технологи. Хөгжүүлэгчид бүх шинэ төслүүдээ FireMonkey дээр хэрэгжүүлэх ёстой, гэхдээ хуучин төслүүдийн талаар ... тэдгээрийг шинэ төмөр замд шилжүүлэх нь сайхан байх болно. FireMonkey хаа сайгүй, үргэлж байдаг. Бас өөр өөр эх сурвалжаас сонсож байна. Тэгээд нэлээд тууштай. Үгүй ээ, хэн ч VCL-ийг алахгүй. тэр бидэнтэй үлддэг. Гэхдээ тэр номер нэг байхаа больсон. Тэр зогсож байх ёстой. Наад зах нь бүтээгдэхүүний ирээдүйн талаар юу ярьж байгааг би ингэж ойлгож байна.

Зарчмын хувьд би энэ зохицуулалтыг ойлгож байна. Олон платформ, хамгийн чухал нь кросс платформд зориулсан сургалтанд хамрагдсан. Эцсийн эцэст VCL гэж юу вэ? Visual Component Library. Харааны бүрэлдэхүүн хэсгүүдийн номын сан. Та үүнтэй санал нийлэхгүй байж магадгүй. Жишээлбэл, би үргэлж олон тооны харааны бус бүрэлдэхүүн хэсгүүдийг авч үзсэн бөгөөд бүрэлдэхүүн хэсгүүд биш, харин зүгээр л ангиуд, VCL-ийн салшгүй хэсэг, гуравдагч талын асар олон тооны анги, бүрэлдэхүүн хэсгүүд - VCL-ийн үргэлжлэл, өргөтгөл юм. . Би TDataset-ийн өв залгамжлагчдыг VCL-ийн нэг хэсэг биш гэж үзэж чадахгүй. Жишээлбэл, DBExpress номын сангийн нэр томъёо нь VCL биш гэдгийг хэлдэг. Эмбаркадеро үнэхээр цул, миний бодлоор VCL-ийг хэд хэдэн тусдаа номын сан болгон хуваасан бололтой. Үгүй ээ, мэдээжийн хэрэг, бүрэн тусдаа биш, гэхдээ. Хэрэв та энэ үзэл бодлыг авч үзвэл FireMonkey нь VCL-ийн харааны хэсгийг солих зорилготой юм (би одоо ч гэсэн бүрэн анги болон бүрэлдэхүүн номын сан, магадгүй Borland Бүрэлдэхүүн номын сан гэж нэрлэх ёстой вэ?).

Номын сангийн визуал эд анги нь юу вэ? Үйлдлийн системээр хангагдсан доод түвшний, үндсэн элементүүдийн эргэн тойронд. Цонхны бариул, фонтууд, цонхнууд өөрсдөө, оролтын элементүүд, мессежүүд, төхөөрөмжийн контекст болон бусад олон зүйлс - эдгээр нь Delphi-тэй хамт ирдэг номын сангийн тухай ойлголт биш, харин үйлдлийн системийн тухай ойлголт юм. Тийм ээ, Windows. Хэрэв та платформ хоорондын номын сан байгуулахыг хүсч байгаа бол номын сан ашиглан бичсэн програмыг гүйцэтгэдэг үйлдлийн системээс санал болгож буй дэд бүтцээс татгалзах нь логик юм.

Энэ бол FireMonkey-ийн хийх гэж байгаа зүйл юм. Тэд үйлдлийн системүүд өөрсдөө санал болгодог үйлчилгээг орлож чадах янз бүрийн үйлдлийн системүүдээр дэмжигдсэн үндсэн механизмд суурилсан дэд бүтцийг бий болгохыг оролдож байна.

Олон хүн хийх гэж оролдсоноо санаж байнакросс платформ нь зөвхөн номын сан төдийгүй Делфи өөрөө юм. Delphi 6-тай зэрэгцэн Kylix бүтээгдэхүүн болон CLX номын сан гарсан. Энэ бүгдийг Линукс дээр хөгжүүлж чадахын тулд хийсэн. Гэсэн хэдий ч, Линукс нь Windows-ийн ашигладаг GUI цонхны үндсэн ойлголтуудын ихэнхийг агуулдаггүй. Линуксийн цонхны интерфейс нь ерөнхийдөө уугуул үзэгдэл биш юм. Энэ бол нэмэлт програм юм. Тэгээд би ямар нэгэн синтетик номын сан бичих хэрэгтэй болсон. Түүний тусламжтайгаар Windows болон Линуксийн аль алинд нь програм бичих боломжтой болсон. Гэсэн хэдий ч би CLX-ийн харааны бүрэлдэхүүн хэсгүүдийн аналогийг ашиглахыг оролдохдоо урам хугарах биш, харин ядаргаатай таагүй мэдрэмжийг мэдэрснээ санаж байна. Би маш их алдаж эхэлсэн. VCL-ээр хөгжүүлж байхдаа миний юу ч бодолгүй хийдэг байсан нь CLX-ийг ашиглан хийхэд хэцүү, тэс өөр эсвэл зүгээр л боломжгүй зүйл болж хувирсан.

BDE-ээс DBExpress руу шилжихэд би мөн адил зүйлийг мэдэрсэн. Хуучин, Field Test-a BDE (Борланд үүнийг Windows-д зориулсан Quattro Pro болон Windows-д зориулсан Paradox-д аль хэдийн ашиглаж байсан бөгөөд үүнийг ODAPI, дараа нь IDAPI гэж нэрлэдэг байсан бөгөөд миний бодлоор Microsoft-ын ODBC дээр байсан) байсан. хуучирсан технологийг зарласан бөгөөд энэ нь шинэ төслүүдэд шинэ номын санд шилжих ёстой. Би анх DBExpress-д ямар нэг зүйл, ялангуяа мэдлэгийг байнга алдаж байсан.

Үүний зэрэгцээ би дээр дурдсан номын сангууд эсвэл тэдний гадаад төрх байдалд хүргэсэн шийдвэрийг загнах, шүүмжлэхийг огт хүсэхгүй байна. Энэ бол зүгээр л миний сэтгэгдэл, заримдаа анхны сэтгэгдэл юм.

FireMonkey ашиглан жижиг ажлын төсөл бичих шийдвэр яагаад хэд хэдэн асуудал авчирсан нь одоо бага зэрэг тодорхой болж магадгүй юм. Олон жилийн турш төсөл, төсөл, төсөл боловсруулахад тодорхой хэвшмэл ойлголт, юу, яаж хийх вэ гэсэн тодорхой загвар бий болсон. Мөн миний хувьд загварыг өөрчлөх шаардлагатай гэсэн баримттай тулгарсан. Учир нь та VCL ашиглаж дассан бүх зүйлээ FireMonkey дээр бүтээгдсэн төсөл рүү шилжүүлэх боломжгүй.

Төсөл эхлэхэд би дежа вугийн мэдрэмжийг мэдэрсэн. Тухайлбал, таагүй мэдрэмж. Жишээлбэл, ердийн оролтын элементүүд нь олон шинж чанартай байдаггүй. Үйлдлийн системийн зарим шинж чанаруудын талаархи мэдлэгтэй холбоотой заль мэх дээр тулгуурлан практикт баттай тогтсон заль мэх нь шинэ нөхцөл байдалд ажиллахгүй байна. Зарим бүрэлдэхүүн хэсгүүд нь эрс өөрчлөгдсөнийг дурдахгүй байх.

За, өөр нэг чухал нюанс. Хэрэв энэ нь эмхэтгэгч, загварчлалын систем эсвэл шинжлэх ухааны өндөр түвшинд бичихтэй холбоогүй бол ажил дээрээ ямар төрлийн төслүүдийг ихэвчлэн хийх ёстой вэ? Миний бодлоор ихэнх нь мэдээллийн санг ашиглахтай холбоотой ямар нэг зүйлийг хөгжүүлэх явдал юм. Түүгээр ч зогсохгүй шинжлэх ухааны өндөр түвшинд хүрсэн зүйл нь DBMS-ийн үзүүлж буй үйлчилгээг ашиглаж болно.

Энд бас нэг отолт намайг хүлээж байлаа. Зарим шалтгааны улмаас FireMonkey нь мэдээллийн санд хадгалагдсан өгөгдөлтэй ажиллахад чиглэсэн элементүүдийг агуулаагүй болохыг практик дээр олж харвал та үүнд бэлэн биш байна (зөөлөн хэлэхэд). Хэдийгээр би энэ талаар олон удаа уншсан бөгөөд та (онолын хувьд) юу ашиглахаа мэдэж байгаа. Энэ бол Live Bindings-ийн тухай юм.

Жинхэнэ дажгүй программистууд db-г мэддэг бүрэлдэхүүн хэсгүүдийг харуулах, засварлах, эцэст нь хадгалах ёстой эсэх талаар би маргалдахыг хүсэхгүй байна. Дахин хэлэхэд муу ч биш, сайн ч биш. Миний хувьд ийм зүйл тохиолдсон.

Үүгээр миний анхны сэтгэгдлийн нийтлэл өндөрлөж байна. Дараагийнх нь төсөл дээр ажиллаж байхдаа юуг, хэрхэн даван туулсан тухай түүхүүд юм.

Өнгөрсөн 9-р сард гарсан Delphi XE2 нь дээд хэмжээний шинэлэг зүйл агуулсан.
Delphi XE2 функцуудын товч тоймыг Habré дээр аль хэдийн нийтэлсэн байна. Мэдээжийн хэрэг, FireMonkey платформ нь хамгийн гайхалтай шинэлэг зүйл болсон бөгөөд энд би үүнд бага зэрэг анхаарлаа хандуулахыг хүсч байна.
Би энэ платформын талаар илүү их эсвэл бага хангалттай ойлголттой болоход тань тусална гэж найдаж байгаа материалын холбоосуудын жижиг сонголтыг хийсэн. Гэхдээ эхлээд мэдэхгүй хүмүүст зориулж FireMonkey гэж юу болохыг товч тайлбарлах болно.
Embarcadero Technologies нь FireMonkey-ийг Windows, Mac болон iOS-д зориулсан бүрэн хэмжээний бизнесийн программуудыг бий болгох платформ болгон байрлуулдаг. Үүний зэрэгцээ, энэ платформ нь үйлдлийн систем бүрийн хувьд төрөлх юм, i.e. FireMonkey-ээр үүсгэсэн програмыг ажиллуулах үед нэмэлт нэмэлтүүдийг ашигладаггүй.
FireMonkey нь OpenGL эсвэл DirectX зэрэг уугуул (OS-мэргэн) график номын сантай шууд холбогддог. Тиймээс GPU-ийн үүднээс авч үзвэл хамгийн сайн шийдлийг санал болгож байна.
FireMonkey архитектурын цөм нь хүчирхэг ангийн номын сан (харааны бүрэлдэхүүн хэсгүүдийг оруулаад) юм.
Зорилтот платформыг эмхэтгэлийн явцад сонгодог.
FireMonkey-ийн анхны хувилбар нь зөвхөн Win32, Win64, MacOSX болон iOS-ыг дэмждэг бөгөөд Embarcadero ирээдүйд үүнийг өөр хэд хэдэн платформд шилжүүлэхээр төлөвлөж байна.

Юуг анхаарах ёстой вэ?

FireMonkey платформ нь 3D програмуудыг хөгжүүлэх өргөн хэрэгслээр хангадаг хэдий ч үүнийг тоглоомын хөдөлгүүр гэж үзэх боломжгүй юм. FireMonkey нь бизнесийн хэрэглээний программуудыг хөгжүүлэх платформ хэлбэрээр яг таг байрладаг.
Одоо бүтээгдэхүүн нь хөгжлийнхөө эхний шатанд байна. Мөн FireMonkey-ийн олон функцууд чанарын болон тоон өөрчлөлтөд орж байна.

Доорх холбоосууд нь шинэ платформын гол онцлогуудыг ойлгоход тусална гэж найдаж байна.
Embarcadero вэбсайт дахь бүтээгдэхүүний албан ёсны хуудас (Орос)

Англи хэл дээрх материалуудын дунд би цувралыг онцлон тэмдэглэхийг хүсч байна (Англи хэл)

Юу үзэх вэ?

Delphi-ийн хамгийн сүүлийн үеийн хувилбарын хувьд бүтээгдэхүүний онцлог, түүнтэй ажиллах арга барилд зориулагдсан олон видео материалууд урьд өмнө байгаагүй их байдаг. Аль аль нь албан ёсны, Embarcadero болон бие даасан хөгжүүлэгчид. YouTube дээр FireMonkey-ийн талаар маш олон видео байдаг, та хайлтыг ашиглаж болно. Энэхүү элбэг дэлбэг материалын дотроос би Marco Cantu - RAD in Action буух хуудаснаас гурван цуврал видеог онцлон авч үзэх болно. Тиймээс миний судалгаанд ашигтай байх векторыг өгөх болно.

2013.03.06 12:46

FireMonkey-д хөтөчийн бүрэлдэхүүн байхгүйгээс болж би маш их зовж шаналж байсан. Алдарт Delphi Chromium Embedded төсөл нь хамгийн сүүлийн үеийн хувилбарт FMX дэмжлэгийг оруулсан. Хэдийгээр маш их цаг хугацаа өнгөрсөн ч зохиогч FMX2 дэмжлэгийг нэмэх гэж яарахгүй байна. Эцэст нь би асуудлыг өөрийнхөө гарт авах хэрэгтэй болсон.

Албан ёсны угсралтын TChromiumFMX бүрэлдэхүүн хэсэг нь FireMonkey (XE2 дээр) дээр маш сайн ажилладаг боловч FMX2 дээр бүр хөрвүүлдэггүй. Энэ нь хэрхэн ажилладаг талаар бага зэрэг бодож, засах хэрэгтэй болсон. Аз болоход томоохон өөрчлөлт хийх шаардлагагүй.

FMX2-д бүрэлдэхүүн хэсэгт шаардлагатай хоёр зүйл өөрчлөгдсөн.

Нэгдүгээрт, TBitmap нь ScanLine болон StartLine шинж чанаргүй болсон. TBitmap контент руу шууд хандах хандалтыг шинэчилсэн (Яагаад гэж гайхаж байна?) TBitmap.Map аргыг буцаадаг TBitmapData классаар дамжуулан ашиглах боломжтой болсон.

За, хоёр дахь, илүү алдартай - Platform .* байхгүй болсон тул та TPlatformServices.GetPlatformService-ээр дамжуулан хүссэн интерфэйсээ авах хэрэгтэй. Энд бүх зүйл маш энгийн бөгөөд ямар ч асуудал байхгүй.

Би үүнийг онцгой ур чадвараар туршиж үзээгүй ч бүрэлдэхүүн хэсэг нь миний зорилгод маш тохиромжтой - та түүгээр дамжуулан сайтуудыг үзэх боломжтой. Татаж авна уу. Гэсэн хэдий ч би засвараа зохиогч руу илгээх болно, магадгүй тэр тэдгээрийг албан ёсны хувилбарт нэмэх шаардлагатай гэж үзэж магадгүй юм.

2012.07.30 2:43

Жейсон Саутвелл Windows/OSX-ийн уугуул удирдлагад зориулсан FireMonkey багцыг боловсруулахыг санал болгож, үүнд зориулж мөнгө цуглуулдаг. Тэрээр эхлээд 20,000 доллар босгохоор төлөвлөж байна.

Санаа нь ойлгомжтой. Одоо байгаа FireMonkey бүрэлдэхүүн хэсгүүдийг бараг эхнээс нь Delphi хэрэгслийг ашиглан зурдаг бөгөөд энэ нь нэг талаас тэдгээрийн хөндлөн платформыг ихээхэн баталгаажуулдаг боловч үр дүнд нь бид одоогоор дэмжигдэж байгаа аль алинд нь тийм ч байгалийн харагдахгүй бүрэлдэхүүн хэсгүүдийг олж авдаг. системүүд. Энэ нь тийм ч муу биш юм - гадаад төрхөөс гадна та эдгээр бүрэлдэхүүн хэсгүүдийн логикийг бие даан хөгжүүлэх хэрэгтэй. Жишээлбэл, RichEdit нь нэлээд төвөгтэй бөгөөд FireMonkey дотор логикийг давтах нь тийм ч энгийн ажил биш юм. VCL болон CLX аль аль нь унадаг дугуй зохион бүтээгээгүй, харин бэлэн дугуй ашигладаг байсан.

Тэгээд одоо муу мэдээ. Бүх зүйл ажиллах үед ажилладаг, гэхдээ би шинэ табын төрлийг Items Designer-д нэмэх ямар ч арга олсонгүй. Бүх жагсаалтын удирдлагад ижил асуудал байгаа бололтой: TListBox, TGrid гэх мэт. Эхэндээ би тэдгээрийг хэрэгжүүлэх арга барилд үнэхээр дуртай байсан ч одоо би үүнд эргэлзэж байна. Интернетээс хайлт хийхэд би энэ асуудалтай ганцаараа биш гэдгийг олж мэдсэн.

Тусламж чимээгүй байна, би бас кодоос юу ч олсонгүй. Үнэхээр боломжгүй гэж үү? Энэ нь туйлын ядаргаатай байх болно.

Энэхүү блогын хүрээнд энэхүү төсөл нь юуны түрүүнд FireMonkey дээр хэрэгжиж байгаа бөгөөд энэ платформын чадавхийг гайхалтай харуулж байгаа тул сонирхолтой юм. Тиймээс өнгөрсөн долоо хоногт уг бүтээгдэхүүний нийтийн бета хувилбар гарсан. Тиймээс блог уншигчид үнэхээр төвөгтэй зүйлийг "мэдрэх" боломжтой галт сармагчинХавсралт.

Хөтөлбөрийн талаар хэдэн үг хэлье. Юуны өмнө, Sphere-ийн одоогийн хувилбар нь арай өөр байр суурьтай байгааг тэмдэглэх нь зүйтэй. Тийм ээ, заримдаа ийм зүйл тохиолддог ...

Шинэ SphereLiveЭнэ бол зүгээр нэг элч биш. Юуны өмнө энэ нь боловсролын үйл явцыг үр дүнтэй зохион байгуулах боломжийг олгодог хэрэгсэл юм. Энэ нь алсын зайн лекц, хувийн зөвлөгөө, ганцаарчилсан хичээл болон бусад ижил төстэй арга хэмжээ авах боломжийг олгодог. Үүний зэрэгцээ энэ нь ажилд шаардлагатай бараг бүх зүйлээр тоноглогдсон байдаг. Өвөрмөц файл дамжуулах системээс эхлээд хүчирхэг тооцооны дэд системээр дуусгавар болно.

Энэ үе шатанд бүтээгдэхүүнийг ашиглах үнэ нэлээд ардчилсан байдаг. Хязгаарлагдмал тооны сонсогч, бага хэмжээний нөөцийг харгалзан бүтээгдэхүүнийг үнэ төлбөргүй ашиглах боломжтой.

Мэдээжийн хэрэг, Sphere гол давуу талыг ашигладаг галт сармагчин- хөндлөн платформ. Одоо энэ програмыг Windows болон MacOS хувилбаруудад ашиглах боломжтой. Android хувилбар нь ямар ч өдөр гарах болно.

Гэсэн хэдий ч миний хувьд SphereLive нь юуны түрүүнд бүхэл бүтэн анхны шийдэл бүхий шинэлэг бүтээгдэхүүн болох сонирхолтой юм. Заримдаа зүгээр л "...хөөх, чи яаж үүнийг хийсэн юм бэ?" Дашрамд хэлэхэд, Sphere-ийн хөгжүүлэгчдийн нэг нь FireMonkey форумын хэлэлцүүлэгт идэвхтэй оролцдог. Энэ нь өөрөө програмыг татаж авах, техникийн асуудлыг зохиогчтой шууд хэлэлцэх шалтгаан байж болно. Надад итгээрэй, үзэх зүйл байна, сурах зүйл байна.

TListViewнь гар утасны програмын интерфейсийг бий болгох гол бүрэлдэхүүн хэсгүүдийн нэг юм галт сармагчин. Энэ бүрэлдэхүүн хэсэг нь ашиглахад тийм ч хялбар биш бөгөөд ихэвчлэн их хэмжээний код агуулдаг боловч хөгжүүлэгчийн үйл ажиллагааны ихээхэн эрх чөлөөг өгдөг. Мэдээж хэрэг, програмууд бас ашиглаж болно TListBoxЭнд бүх зүйл илүү хялбар байдаг. Гэхдээ TListBox, магадгүй тогтсон тооны бичлэгийг харуулах, өгөгдлийн эх сурвалжаас өгөгдлийг харуулахад тохиромжтой, та заавал ашиглах хэрэгтэй. TListView.

TListView болон TListBox хоёрын гол ялгаа нь:

  1. TListBoxItem- хяналт, TListViewItem- Үгүй
  2. AT TListBoxItemТа Эцэг эхийг ашиглан дурын хяналтыг нэмж болно. AT TListVIEWItem- Үгүй.
  3. TListVIEWItemзөвхөн дэлгэцийн өгөгдлийг хадгалдаг
  4. TListVIEWItemнь өөрөө хадгалагдсан өгөгдлүүдийг аргын тусламжтайгаар гүйцэтгэдэг Үзүүлэх
  5. TListVIewItem-д бодит гарын авлагын ачаар хурд нэмэгдэж, санах ой бага зарцуулдаг (зөвхөн бодит өгөгдлийг хадгалах)
  6. Өөрийгөө бий болгохын тулд TListViewItem, та өөрийн зүйлийн ангиллыг үүсгэж, түүнд шаардлагатай өгөгдлийг (жишээ нь, цаг) хэрэгжүүлж, цагийг засварлах, бүртгүүлэх гэх мэт газар засварлагч үүсгэх хэрэгтэй.

Гүйцэтгэлийг сайжруулж, санах ойн хэрэглээг багасгах баримт нь өөрөө ашиглахыг дэмжсэн хүчтэй аргумент юм TListView. Гэхдээ бас өөр зүйл бий.

Олонд Androidпрограмууд, би жагсаалтын дараах хэрэгжилтийг харсан. Жагсаалтын зүйл дээр дарахад (хэрэв та сонгосон нэр томъёог дагаж мөрдвөл) тодорхой үйлдэл хийгдэнэ. Өгөгдлийг засахын тулд ихэвчлэн шинэ маягтыг дууддаг. Харин та удаан дарж (Урт товшилт) хийхэд огт өөр үйлдэл хийгддэг. Мөн эдгээр үйл явдлууд огтлолцдоггүй. Өөрөөр хэлбэл, Андройд програмууд нь "удаан дарах" болон "хэвийн" хоёрыг тодорхой ялгаж чаддаг. Түүнчлэн, жагсаалтыг гүйлгэх үед эдгээр үйл явдлын аль нь ч идэвхждэггүй. Сайн жишээ бол Yandex Mail дахь захидлын жагсаалт юм.

Юуны өмнө блогийн нийт уншигчиддаа өнгөрсөн амралтын өдрийн мэндийг хүргэж, ирэх онд хамгийн сайн сайхан бүхнийг хүсэн ерөөе.

Ойлгомжтой нөхцөл байдлын улмаас би шинэ жилийн уламжлалт тайлангаа хийгээгүй, мөн жилийн төлөвлөгөө гаргаагүй. Гэсэн хэдий ч амьдрал зогсохгүй, ажил хийгдэж, Делфийн ертөнцөд тодорхой үйл явдлууд болж байна. Би ойрын ирээдүйд Зул сарын баярын үеэр орхигдсон "Дельфийн ертөнцийн мэдээ"-ийг түүвэрлэн нийтлэх үүрэг хүлээж байна. Энэ хооронд би худалдаж авсан шинэ төхөөрөмжийн талаар танд хэлэх болно.

Та техникийн үзүүлэлтүүдийг албан ёсны вэбсайтаас олж болно. Мөн субъектив сэтгэгдэл нь маш тааламжтай байдаг. Анхаарах зүйл бол уг төхөөрөмж нь үйлдвэрлэгчийн хувийн програм хангамжаар дүүрэн байдаг. Тийм ээ, худалдагчдаас гайхалтай багц програм хангамжийг бэлэг болгон авсан. Ашиглалтын явцад ухаалаг гар утас нь хангалттай хурдан бөгөөд түүний өртөгийг бүрэн зөвтгөдөг (ойролцоогоор 200 доллар). Дашрамд хэлэхэд, би өмнөх GSmart 1362 утсаа 2 жилийн өмнө ойролцоогоор ижил мөнгөөр ​​худалдаж авсан. Гэхдээ таны таамаглаж байсанчлан миний хувьд хамгийн гол сонирхол бол хэрхэн яаж хийх вэ гэдэг байсан галт сармагчинпрограмууд.

Таймерын тухай түүхийг үргэлжлүүлэхийн өмнө - хоёр мэдээ.

Нэгдүгээрт, анхны XE7 шинэчлэлт гарсан. Уламжлал ёсоор үүнийг бүртгүүлсэн хэрэглэгчид ашиглах боломжтой. Та зассан алдаануудын жагсаалтыг олох боломжтой. Шинэчлэгдсэн орчинд програм хэрхэн ажиллаж байгааг харахыг хүссэн. Үнэндээ туршилт хийх талбар хэвээр байсан ч засвар хийх шаардлагагүй байв.

Хоёр дахь мэдээ. Embarcadero тусгай саналуудыг оны эцэс хүртэл сунгасан:

За, одоо шууд нийтлэлийн сэдэв рүү оръё. Зарчмын хувьд бидний хувьд үлдсэн зүйл бол Android-д зориулж аль хэдийн үүсгэсэн програмыг ажиллуулахыг оролдох явдал юм. Үүний тулд бид өмнөх нийтлэлүүдэд миний бичсэн зүйлийг ашигладаг. Тодруулбал, шинэ. Би энэ програмыг дибаг хийсэн Nexus 7, үүний дагуу Android 7 ″ Таблетын харагдах байдлыг нэмсэн. Загварыг бага зэрэг "засварлах" шаардлагатай байв.

Залхуу хүмүүс л таймераа бичээгүй байх. Мөн гар утасны платформыг хөгжүүлэхэд дэмжлэг үзүүлэх үүднээс Delphi-д таймер бичих ажлыг ерөнхийдөө шүтлэг гэж үзэж болно. Тэгээд хөгжлийн жишээ болгож яагаад болохгүй гэж бодсон галт сармагчинПрограмууд таймерыг яг таг задалдаггүй. Мэдээж Android дор. Мэдээжийн хэрэг, энэ нь тийм ч хэцүү биш ч гэсэн өөрийн гэсэн нюанстай хэвээр байгаа даалгаврын талаархи миний үзэл бодол байх болно. Магадгүй танд ямар нэгэн санал, санал байгаа бол тэдгээрийг сэтгэгдэл дээр хэлэлцэх нь сайхан байх болно. Би гар утасны програм бичих чиглэлээр мэргэшсэн мэргэжилтэн биш тул таны хэлсэн үг надад үнэ цэнэтэй байх болно.

Энэ нэр томъёоны англи утгаараа бид яг таймерыг хөгжүүлэх болно. Өөрөөр хэлбэл, дэлгэц нь залгах ба "Эхлүүлэх", "Түр зогсоох", "Зогс", "Цуцлах" гэсэн дөрвөн товчлуурыг харуулах болно. Тооцоолол урагшлах болно (жишээ нь цаг нэмэгдэх болно). Англи хэлний нэр томъёогоор цагийг тохируулж, цаг тоолж байгаа хувилбарыг Stop Watch гэж нэрлэдэг, магадгүй би үүнийг дараа хэрэгжүүлэхийг хичээх болно. Бидний шийдвэрлэх програм нь секунд хэмжигчтэй илүү ойр ажилладаг.

Delphi XE7 нь одоо бид Win32-д зориулсан бодит програмыг үүсгэж, дибаг хийж, шаардлагатай хөдөлгөөнт төхөөрөмжүүдийн маягтыг нэмж, бага зэрэг тохируулга хийснээр ажиллах боломжтой гар утсаа авах боломжтой болсон тул хөгжүүлэлтийн процессыг ихээхэн хялбаршуулах боломжийг бидэнд олгодог. програм. Үнэнийг хэлэхэд хэтэрхий сайхан сонсогдож байна уу? Магадгүй. Гэхдээ би даалгавраа ухамсарлаж энэ мэдэгдлийг шалгахыг хүсч байна.

Хамтран ажиллагсадаасаа хувийн яриандаа гар утасны програм хөгжүүлэх боломжтой эсэхийг байнга асуудаг. галт сармагчинэсвэл үйлдвэрлэлийн шийдэл гэхээсээ илүү прототип үү?

Одоо би эргэлзэгчдийг хүртэл баталж чадна гэж бодож байна.

Миний цээжний анд, хамтран ажиллагч Тагир Юмагузин маш удаан хугацаанд оролцсон төслийнхөө талаар надад хэлсэн. Одоо, энэ төсөл нээлтийн өмнөх төлөвт байх үед бид энэ тайлбарыг Делфийн нийгэмлэгт сонирхолтой байх болно гэж шийдсэн. Нэг ёсондоо энэ бол FM-д хэрэгжсэн үнэхээр том төсөл юм. Бид Sphere Live төслийн талаар ярьж байна. Энэ төсөлд зориулсан бяцхан нийтлэл саяхан Habrahabr.ru сайтад нийтлэгдсэн бөгөөд "Хөгжлийн хэлтсийн дарга Алексей Глизин миний блогын үзэгчдийг харгалзан төслийн талаар дэлгэрэнгүй ярихыг зөвшөөрөв.

А.Б.– Алексей, ер нь таны төсөл юу вэ?

А.Г.: – Энэ санаа нэг дор, шууд гарч ирээгүй. “Sphere” төслөөс өмнө манай баг урсгал аудио/видео технологи нэвтрүүлсэн төсөл дээр ажиллаж байсан. Хожим нь бид өөрсдийн програм хангамжийг бүтээсэн бөгөөд энэ нь мултимедиа урсгалыг хязгааргүй тооны хэрэглэгчдэд хүргэх боломжтой бөгөөд санал хүсэлтийг оруулав. Гэхдээ бид төлбөрийн функцийг багтаасан байх шаардлагатай байсан.
Өргөдөл нь хэд хэдэн шаардлагыг хангасан байх ёстой. Нэгдүгээрт, бага хурлыг хамгийн хялбаршуулсан зохион байгуулалт эсвэл оролцогчдод хүргэх, бидний таамаглаж чадахгүй байгаа хэмжээ. Хоёрдугаарт, хамгийн чухал нь үйлчлүүлэгчдэдээ манай программыг ашиглан орлого олох боломжийг олгох, системийн нарийн төвөгтэй байдал, зорилгодоо хүрэхэд шаардагдах хэрэгслийн хэмжээг багасгах явдал юм. Курс, вебинар эсвэл зүгээр л зөвлөгөөг зохион байгуулахад хялбар байдал.

талаар жижиг санах ойн ховил FireDACодоогийн хувилбарт Delphi XE6. Гэхдээ эхлээд асуултын хариултыг хаанаас хайх талаар хэдэн үг хэлье галт сармагчин. Орос хэлээр ярьдаг хэрэглэгчид энд давуу эрхтэй байдаг.

RAD Studio XE5 World Tour-ийн нэг хэсэг болох Харьковын арга хэмжээнд бэлдэж байхдаа би түүнтэй ажиллахад жижиг асуудалтай тулгарсан. SQLiteашиглах замаар FireDAC. Хэрэв Windows програмыг бөглөсөн мэдээллийн баазыг програмын хамт шилжүүлнэ Android, Мэдээллийн сан дахь кирилл мөрүүдийг унших боломжгүй болсон (үсгийн оронд асуултын тэмдэг харагдана). Гэсэн хэдий ч, хэрэв та мэдээллийн санг зөөврийн төхөөрөмж дээр шууд бөглөх юм бол орос тэмдэгтүүд маш зөв уншигдах болно. Өгөгдлийн сангаас авсан өгөгдөл нь гуравдагч этгээдийн програм эсвэл дотор ДелфиМэдээллийн хандалтын бусад бүрэлдэхүүн хэсгүүдийг ашигладаг програм мөн хэвийн байдлаар харагдана. Жагсаал шийдлийг олж чадаагүй тул би Украины хөлбөмбөгийн нэрт мэргэжилтний хэлсэн үгнээс иш татахаас өөр аргагүйд хүрэв: "Бид үүнийг шийдэх болно!"

Сүүлийнхээс ялгаатай нь би тайлбарласан асуудлыг шийдэж чадсан. Анхдагчаар, холбогдсон үед SQLite in FireDAC ANSI string форматыг ашигладаг.

Хэрэв та Юникодыг албадвал бүх зүйл байх ёстой шигээ ажиллах болно. Гэхдээ бас нэг таагүй мөч бий. Мөрийн форматыг өөрчилсний дараа та бүх өгөгдлийн багц дахь талбаруудын жагсаалтыг дахин үүсгэх, мөн өгөгдлийг харуулах, оруулах үүрэгтэй бүрэлдэхүүн хэсгүүдийг дахин холбох шаардлагатай болно. Тиймээс кодчилолд нэн даруй анхаарал тавих нь дээр.

Энэхүү мини цувралын өмнөх хэсгүүдэд бид өгөгдлийн сан, түүний бүтэц, Delphi-ээс холбогдох асуудлыг авч үзсэн. Энэ хэсэгт би хамгийн энгийн тохиолдлоос эхлээд хүснэгтээс өгөгдлийг харуулах асуудлыг шийдэхийг санал болгож байна.

Энгийн хүснэгтийн өгөгдөл засварлагч нь ихэвчлэн нарийн төвөгтэй програмын нэг хэсэг юм. Хүснэгтийг засахын тулд би ихэвчлэн тусдаа маягт ашигладаг. Бүтээгдэхүүний жагсаалтаас эхэлье. Юуны өмнө бид хүснэгтийн өгөгдөлд хандахын тулд DataSet үүсгэх хэрэгтэй. Манай тохиолдолд бүрэлдэхүүн хэсгийг ашиглах бүрэн боломжтой TAD Хүснэгт. Үүнийг DataModule-д оруулаад үл хөдлөх хөрөнгийн утгыг зааж өгье холболт. Үл хөдлөх хөрөнгийн редактор дээр хүснэгтийн нэрХүснэгтүүдийн жагсаалт гарч ирэх бөгөөд бид хүснэгтийг сонгоно Бүтээгдэхүүн. Хэрэв та бүх зүйлийг зөв хийсэн бол өмч хөрөнгийг хуваарилж болно ИдэвхтэйЖинхэнэ үнэ цэнэ. Бүрэлдэхүүн хэсгүүдийн нэрийг нэн даруй өөрчлөх нь дээр (жишээлбэл, ADTPProduct). Үүний дараа би ихэвчлэн DataSet-д зориулж олон талбар үүсгэдэг. Бид талбарын засварлагчийг дуудаж (бүрэлдэхүүн хэсэг дээр давхар товш) контекст цэсэн дэх "Бүх талбар нэмэх" зүйлийг сонгоно уу.

Мэдэхгүй хүмүүст би энэ үйлдлийн мөн чанарыг тайлбарлах болно. Энд бид урьдчилан тодорхойлсон DataSet талбаруудыг үүсгэнэ. Хэрэв бид үүнийг дизайны горимд гараар хийхгүй бол зарчмын хувьд ямар ч аймшигтай зүйл тохиолдохгүй. RunTime үед энэ багц автоматаар үүсгэгдэнэ. Гэхдээ би үүнийг гараар бүтээхийг илүүд үздэг хэвээр байна. Үүнд хэд хэдэн шалтгаан бий. Нэгдүгээрт, бид дизайны горимд нэмэлт (тооцсон эсвэл хайх) талбаруудыг өөрсдөө үүсгэж болох тул талбаруудын багцыг удирдах нь илүү тохиромжтой. Бид мөн талбаруудын шинж чанарыг өөрсдөө өөрчилж болно. Үүнээс гадна бид кодын талбаруудыг TField бүрэлдэхүүн хэсгийн нэрээр дурдах боломжийг олж авдаг бөгөөд энэ нь миний бодлоор код бичих ажлыг ихээхэн хялбаршуулдаг.

VCL програмын нэгэн адил бид бүрэлдэхүүн хэсгийг өгөгдлийн багцад холбох болно TDataSource. Энэ бүрэлдэхүүн хэсэг нь өгөгдлийн багц болон харааны хяналтын хоорондох холбоосыг хангана. Бүрэлдэхүүн хэсгийн DataSet шинж чанар нь манай өгөгдлийн багцад (ADTPoduct) хамаарах ёстой. Доор би DFM файлын фрагментийг өгч байна

объект ADTPProduct: TADTable IndexFieldNames = "ID" Холболт = ADConnection UpdateOptions. UpdateTableName = "Бүтээгдэхүүн" TableName = "Бүтээгдэхүүн" Зүүн = 64 Дээд талд = 192 объект ADTProductID: TADAutoIncField FieldName = "ID" Origin = "ID" ProviderFlags = [pfInWhere, pfInKey] ReadOnly = Үнэн төгсгөлийн объект ADTReductRing FieltleT:"FieltleT:" Гарал үүсэл = "Гарчиг" Хэмжээ = 50 эцсийн объект dsProduct: TDataSource DataSet = ADTPProduct Left = 120 Дээд = 192 төгсгөл

Нэг сониуч зүйлд анхаарлаа хандуулаарай, DataModule маягтын файл нь ердийн FireMonkey маягт шиг FMX форматаар хадгалагдаагүй, харин VCL шиг DFM форматаар хадгалагддаг.

Дараагийн алхам бол өгөгдлийн багц нээх процедурыг бий болгох бөгөөд програм эхлэхэд RunTime дээр дуудах шаардлагатай болно. Үүнийг ижил DataModule дээр үүсгэцгээе. Процедурын код нь маш энгийн:

журам TDM. ConnectToDB; ADConnection-ийг эхлүүлэх. нээлттэй(); ADT бүтээгдэхүүн. нээлттэй(); Төгсгөл ;

Процедурын дуудлагыг DataModule-ийн OnCreate үйл явдал зохицуулагч дээр байрлуулна.



Бид уншихыг зөвлөж байна

Топ