Noutați

Cum să utilizați Amazon Polly pentru a converti cu ușurință textul în vorbire în aplicațiile pe mai multe platforme

Uneori, cel mai bine este să spui lucrurile cu voce tare. Alteori, citirea unui text sau conținutul unui mesaj este fie dificilă, fie chiar imposibilă dacă, de exemplu, dumneavoastră sau utilizatorul dumneavoastră aveți deficiențe de vedere. Cu siguranță nu poți să taci dacă povestești un film. Oricare ar fi scopul dvs., dacă aveți nevoie de o modalitate de a genera vorbire din text, cel mai recent Appercept AWS SDK pentru Delphi acceptă Text-to-Speech (TTS) folosind Amazon Polly . Această soluție excelentă funcționează fără probleme atât pentru aplicații desktop, cât și pentru aplicații multiplatforme . Ce este Amazon Polly? Amazon Polly este un serviciu cloud Text-to-Speech care utilizează Machine Learning (ML) pentru a oferi cea mai naturală sinteză a vocii umană. Polly oferă diverse voci pentru diferite genuri, limbi și vârste. Polly acceptă limbajul de marcare a sintezei vorbirii (SSML) pentru a oferi mai mult control și pentru a îmbunătăți sinteza. Iată cum spunem ceva… program SaySomething; {$APPTYPE CONSOLE} implementation uses AWS.Polly; var Client: IPollyClient; Request: IPollySynthesizeSpeechRequest; Response: IPollySynthesizeSpeechResponse; begin Request := TPollySynthesizeSpeechRequest.Create; Request.OutputFormat := ‘mp3’; Request.Text := ‘Hello, Polly!’; Request.VoiceId := ‘Aria’; Client := TPollyClient.Create; Response := Client.SynthesizeSpeech(Request); if Response.IsSuccessful then begin // Do something with Response.AudioStream end; end. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 program SaySomething ;   { $ APPTYPE CONSOLE }   implementation   uses   AWS . Polly ;   var   Client : IPollyClient ;   Request : IPollySynthesizeSpeechRequest ;   Response : IPollySynthesizeSpeechResponse ;   begin   Request : = TPollySynthesizeSpeechRequest . Create ;   Request . OutputFormat : = ‘mp3’ ;   Request . Text : = ‘Hello, Polly!’ ;   Request . VoiceId : = ‘Aria’ ;     Client : = TPollyClient . Create ;   Response : = Client . SynthesizeSpeech ( Request ) ;   if Response . IsSuccessful then   begin     // Do something with Response.AudioStream   end ; end . Pentru a utiliza activarea și utilizarea SSML, trebuie doar să setați proprietatea de solicitare TextType la „ssml” și asigurați-vă că includeți valoarea în Text cu o etichetă „”. De exemplu: Request.TextType := ‘ssml’; Request.Text := ‘Hello, Polly!‘; Request . TextType : = ‘ssml’ ; Request . Text : = ‘Hello, Polly!‘ ; Cum pot folosi Amazon Polly în aplicațiile mele pe mai multe platforme? De ce să nu consultați demonstrația Polly Speak din SDK-ul nostru AWS pentru mostre Delphi pe GitHub pentru un exemplu complet. Ce vei „spune” cu Delphi și Polly? De ce să nu ne spui @ApperceptHQ . Despre Appercept AWS SDK pentru Delphi Appercept AWS SDK pentru Delphi este disponibil exclusiv pe GetIt cu abonamente active Enterprise sau Architect pentru Embarcadero Delphi sauRAD Studio . Puteți instala SDK-ul prin GetIt Package Manager.

Read More

Fețele unității – Sharlene Tan

I-aș încuraja pe alții să păstreze mintea deschisă și să nu se oprească niciodată să învețe. Când eram student la facultate, nu mi-am imaginat niciodată că voi ajunge în industria jocurilor video, lucrând cu limbile și cuvântul scris. Pe măsură ce tehnologia evoluează, este greu de prezis ce locuri de muncă vor fi solicitate peste 10 ani. Mă bucur că călătoria mea în carieră m-a condus acolo unde sunt acum. Poți împărtăși câteva fapte amuzante despre tine? M-am născut și am crescut în Singapore, dar am trăit în multe locuri diferite: Austin, Houston, Dallas, Hakodate, Tokyo, Oita și, în prezent, Seattle. Îmi place să traduc versurile cântecelor japoneze în engleză și, de asemenea, îmi place foarte mult karaoke-ul. M-am întâlnit cu Jackie Chan de două ori – o dată într-un hotel din Canada și alta dată în Africa de Sud. El filma Cine sunt eu? pe vârful Muntelui Table.

Read More

Profilare în Unity 2021 LTS: ce, când și cum

Profilarea este ca munca de detectiv, dezvăluind misterele de ce performanța în aplicația dvs. întârzie sau de ce codul alocă excesul de memorie. Instrumentele de profilare vă ajută în cele din urmă să înțelegeți ce se întâmplă „sub capota” proiectului dumneavoastră Unity. Dar nu așteptați ca problemele semnificative de performanță să înceapă să apară înainte de a explora cutia dvs. de instrumente de detectiv. Cele mai bune câștiguri din profilare sunt obținute atunci când planificați la începutul ciclului de viață al dezvoltării proiectului, mai degrabă decât chiar înainte de a vă livra jocul. Este un proces continuu, proactiv și iterativ. Prin profilarea din timp și des, tu și echipa ta poți înțelege și stabili o „semnătură de performanță” pentru proiect. Dacă performanța scade, de exemplu, veți putea observa cu ușurință când lucrurile merg prost și veți remedia rapid problema. De asemenea, puteți face comparații de performanță înainte și după, în bucăți mai mici, utilizând o procedură simplă în trei puncte: În primul rând, stabiliți o linie de bază prin profilare înainte de a face modificări majore. Apoi, profilați în timpul dezvoltării pentru a urmări performanța și bugetarea și, în sfârșit, profilați după ce modificările au fost implementate pentru a verifica dacă au avut efectul dorit. Ar trebui să urmăriți să profilați o versiune de dezvoltare a jocului dvs., mai degrabă decât să o profilați din Editorul Unity. Există două motive pentru aceasta: Datele privind performanța și utilizarea memoriei din versiunile de dezvoltare de sine stătătoare sunt mult mai precise în comparație cu rezultatele din crearea profilului unui joc în Editor. Acest lucru se datorează faptului că fereastra Profiler înregistrează datele din Editor însuși, care poate modifica rezultatele. Unele probleme de performanță vor apărea numai atunci când jocul rulează pe hardware-ul sau sistemele de operare țintă, pe care le veți rata dacă vă profilați exclusiv în Editor.

Read More

Comenzi rapide pentru aplicații și recunoaștere a vorbirii în TMS iCL pe FMX

TMS iCL este biblioteca noastră de componente Delphi iOS. Componentele sunt de fapt împachetare în jurul controalelor definite la nivel de sistem de operare iOS și sunt utilizabile dintr-un formular FireMonkey. Deoarece controalele iCL înglobează controalele sistemului de operare iOS , întregul aspect și senzația , precum și setul de caracteristici ale controlului iCL sunt definite de ceea ce oferă controlul iOS. Este redat de sistemul de operare iOS. Un alt avantaj este performanța, controlul rămâne extrem de rapid și receptiv , indiferent de numărul de articole sau complexitatea a ceea ce este afișat. Atât comenzile iCL, cât și comenzile FNC sau Firemonkey pot fi utilizate împreună pe același formular. Actualizare 4.0.0.0 În această actualizare, am adăugat patru componente noi, am înlocuit unele componente învechite de Apple și am actualizat demonstrațiile noastre pentru a funcționa imediat pe Delphi 11. Comenzi rapide pentru aplicații Pe un dispozitiv care acceptă 3D Touch, un utilizator invocă acțiunea rapidă apăsând pictograma aplicației de pe ecranul de pornire și apoi selectând titlul acțiunii rapide. Componenta TMSFMXNativeAppShortcuts are o listă de elemente de comandă rapidă care va declanșa un eveniment atunci când elementul a fost selectat pentru a deschide aplicația. Recunoaștere a vorbirii Au fost introduse două componente pentru recunoașterea vorbirii. TMSFMXNativeSpeechRecognition pentru a prelua textul din intrarea vorbită sau dintr-un fișier audio. Și TMSFMXNativeSpeechCommandRecognition , care va executa un eveniment atunci când textul necesar a fost recunoscut de componentă. Controler de foi TMSFMXNativeUIViewSheetController vă permite să prezentați o vedere ca o foaie de sus. Înălțimea poate fi setată și există posibilitatea de a afișa sau ascunde un grabber. Înlocuirea componentelor depreciate TMSFMXNativeUIViewPopOverController înlocuiește UIPopoverController deoarece UIPopoverController este depreciat de Apple. TMSFMXNativeUIViewPopOverController moștenește acum de la UIViewController. TMSFMXNativeWIWebView înlocuiește UIWebView. Este o componentă nouă, dar are toate aceleași proceduri și proprietăți ca TMSFMXNativeUIWebView. Acest lucru va facilita actualizarea aplicației. Și demo-urile au fost actualizate pentru a funcționa imediat pe Delphi 11 și cu iOS 14+. Mai multe informații despre TMS iCL.

Read More

Extindeți TMS WEB Core cu bibliotecile JS cu Andrew: jQuery

În articolele anterioare din această serie, am acoperit câteva biblioteci JS mari, cum ar fi Bootstrap și FontAwesome . Dar există o altă bibliotecă JS importantă. Poate fi găsit pândind sub aproximativ 75% din toate site-urile web la nivel global. A ajuns pentru prima dată pe scenă acum mai bine de 15 ani. Și probabil că va fi cu noi în viitorul previzibil, chiar dacă utilizarea sa a început să scadă. Vorbesc desigur despre jQuery . Dar, deși puteți utiliza Bootstrap și FontAwesome în proiectele dvs. TMS WEB Core fără a fi nevoie să recurgeți la codificare JavaScript, nu același lucru se poate spune cu adevărat pentru jQuery. În esență, jQuery poate fi considerat ca un fel de extensie a limbajului JavaScript. Motto-ul lor este Write Less, Do More . Vom arunca o privire la locurile în care jQuery ar putea găsi o potrivire bună în proiectele TMS WEB Core și, de asemenea, unele dintre provocările neașteptate care ar putea apărea. JQuery bun În primul rând, cea mai scurtă dintre istorii. jQuery a apărut pentru prima dată în jurul anului 2006. A fost o perioadă în care scrierea codului JavaScript însemna că trebuia să fii foarte conștient de browser-ul țintă care ar rula codul tău. Standardele zilei erau în cel mai bun caz slabe. Și după cum se spune, lucrul grozav despre standarde este că există atât de multe dintre care să alegi. jQuery a oferit dezvoltatorilor o abordare consecventă pentru scrierea JavaScript (un API, în esență), ceea ce însemna că puteți scrie cod folosind jQuery care să funcționeze apoi în multe browsere. Deci, firesc, a crescut rapid în popularitate. De fapt, a devenit atât de popular, în special în rândul dezvoltatorilor noi, încât s-a spus că unii dezvoltatori se luptă să scrie JavaScript Vanilla real (alias JavaScript care nu folosește niciun cadru precum jQuery). Nu este surprinzător, având în vedere cât de ușor a fost să utilizați jQuery în comparație cu echivalentele Vanilla JS de acum câțiva ani. De asemenea, jQuery a evoluat de-a lungul anilor pentru a ține pasul cu tendințele web actuale și poate chiar a ajutat într-o oarecare măsură la adoptarea noilor tehnologii de browser. Chiar dacă unele dintre aceste tehnologii sfârșesc în cele din urmă prin a elimina nevoia de jQuery în primul rând. Progres, tot la fel. Și având în vedere prezența aproape omniprezentă a jQuery, multe (anterior, cele mai multe) biblioteci JS au fost construite deasupra acestuia, asigurând în continuare că are o viață lungă înaintea ei. Ultima dată, ne-am uitat la BigText , o astfel de bibliotecă JS, cu jQuery ca singură dependență. Bootstrap 4 a fost, de asemenea, dependent de jQuery, dar acest lucru a fost eliminat pentru Bootstrap 5. Eliminarea jQuery ca dependență pare să fie puțin o tendință în ultimul timp, poate în mod ironic, în același timp, că multe biblioteci JS sunt din ce în ce mai lansate cu variante care sunt special adaptate pentru alte cadre JS (concurente). Mai puțin bun jQuery Fiind în preajmă atât de mult timp și îmbunătățit activ în tot acest timp, în mod natural, o bună parte a balonării este destinată să facă parte din amestec, așa cum ar fi cazul în orice produs software. Pentru unele proiecte, aceasta va fi cea mai mare bibliotecă JS din proiect, micșorându-le pe toate celelalte […]

Read More

Preturi speciale de upgrade

Sunteți la curent cu cele mai recente evoluții ale noastre? Știm că este greu să ținem pasul cu ultimele noastre evoluții, merge super rapid! Cel mai bun mod de a fi la curent? Desigur, TMS ALL-ACCES! Pentru a oferi clienților noștri acces la toate cele mai recente evoluții, am creat abonamentul nostru TMS ALL-ACCESS ! Pentru că ne dorim ca clienții noștri să poată folosi toate produsele noastre fără restricții sau limitări. Și când spunem TOT, ne referim cu adevărat la TOATE produsele noastre pe care le oferim acum și, de asemenea, la toate produsele noi pe care le vom lansa în anul abonamentului . În plus, utilizatorii noștri cu acces total sunt primii care primesc previzualizările și beta-urile produselor noastre nelansate! O recapitulare rapidă În primul trimestru al anului 2022, am lansat deja 3 produse noi: Obțineți acces complet cu: Plan simplu : Toate produsele actuale și noi la un preț! Reînnoire ușoară : Reînnoire anuală doar pentru 520 EUR! Instalare ușoară : toate produsele sunt accesibile prin instrumentul TMS Subscription Manager Asistență ușoară : acces complet la centrul de asistență online în toate zonele Actualizare ușoară : acces timpuriu la beta-uri ale produselor Învățare ușoară : acces la TMS WEB Academy Experiență de utilizator plăcută Utilizați Managerul de abonamente TMS cu o singură conectare pentru a obține acces instantaneu la toate produsele din abonamentul dvs. TMS ALL-ACCESS. TMS Subscription Manager clasifică produsele pe tehnologie: VCL, WEB, FMX, BIZ, FNC, DEV, .NET, IntraWeb și LCL. Pentru fiecare produs, primiți o descriere, un link către pagina web a produsului, informații despre cea mai recentă versiune disponibilă și data de lansare, informații despre ultima versiune de descărcare și data de descărcare și informații despre ultima versiune și data de instalare a produsului. Puteți marca anumite produse TMS ca produse preferate. Vă permite să începeți mai multe descărcări. În culise, TMS Subscription Manager păstrează o copie de rezervă a oricăror versiuni de produs pe care le-ați descărcat. Faceți clic dreapta pe celula cu numărul de versiune descărcată pentru fiecare produs și din meniul contextual puteți vedea toate versiunile disponibile (dacă există) și puteți activa o altă versiune pentru instalare. Managerul de abonament TMS vă ține mereu informat cu privire la valabilitatea abonamentului și vă va ghida către ordinul de reînnoire la expirare. Din Managerul de abonament TMS există o listă cuprinzătoare de link-uri pentru a interacționa cu noi, prin e-mail, rețele sociale, forumuri, RSS, videoclipuri Youtube… Știați… … ca pretul de reinnoire dupa 1 an este la 70% reducere fata de pretul noua licenta, adica in prezent doar 520 EUR ?! Deci, odată ce sunteți abonat TMS ALL-ACCESS, sunteți acoperit în următorii ani doar pentru această fracțiune din preț. Dorim să oferim prețuri corecte TUTUROR clienților noștri în orice moment! Considerăm că clientul ar trebui să poată cumpăra la un preț atractiv și corect în ziua în care clienții doresc să facă achiziția și nu în ziua în care ne dorim acest lucru. Deci ce mai aștepți? Contactați vânzările pentru prețuri speciale de actualizare pentru clienții existenți ai altor produse. Solicitările sunt analizate de la caz la caz și se face cea mai bună ofertă posibilă.

Read More

Interacționați cu datele grafice din Delphi

Săptămâna trecută am creat un blog despre vizualizarea propriei structuri de date , care arăta capabilitățile datelor virtuale și puținul cod necesar pentru a începe și a funcționa. Blogul de astăzi demonstrează cum să interacționați cu diagrama . Când datele sunt încărcate, cum mărim, micșorăm? Cum putem obține mai multe detalii despre un anumit punct al datelor? Panorare Panarea este activată în mod implicit, puteți deplasa de la stânga la dreapta pe axa X. Pentru a activa/dezactiva panoarea, puteți utiliza proprietatea InteractionOptions.Panning. Panarea se face prin mișcarea degetului/mouse-ului de la dreapta la stânga sau de la stânga la dreapta. În mod implicit, graficul arată întreaga gamă de puncte, începând cu punctul 1. Tragerea de la stânga la dreapta va afișa punctele înainte de punctul zero pe diagramă Tragerea de la dreapta la stânga va afișa puncte după ultimul vizibil Graficul poate fi resetat folosind următorul cod TMSFNCChart1.BeginUpdate; pentru I := 0 la TMSFNCChart1.Series.Count – 1 do TMSFNCChart1.Series[I].AutoXRange := arEnabled; TMSFNCChart1.EndUpdate; Zoom Mărirea / micșorarea este, de asemenea, activată în mod implicit, pe intervalul x, ceea ce înseamnă că puteți mări/scala orizontal. Acest lucru se poate face ținând apăsată tasta CTRL de pe tastatură, trăgând mouse-ul/degetul la stânga și la dreapta sau făcând un gest de ciupire pe iOS/Android. Mai jos sunt 2 capturi de ecran ale diagramei în acțiune în timp ce măriți și micșorați Graficul poate fi resetat în același mod ca și în cazul panoării. Proprietatea care acceptă interacțiunea la scară se află în InteractionOptions.ScaleMode, care poate fi setat la smHorizontal (implicit), smVertical (scalarea valorilor y) sau smNone. Detectarea punctului Graficul expune o serie de evenimente care sunt declanșate atunci când faceți clic pe un punct, bară, felie sau un element din legendă. Pentru acest eșantion, dorim să facem clic pe o bară, să vizualizăm valoarea și să schimbăm culoarea. Codul pentru a face acest lucru este afișat mai jos. procedura TForm1.TMSFNCBarChart1SerieBarClick(Expeditor: TObject; APoint: TTMSFNCChartPoint); ÎNCEPE APoint.Color := gcOrange; ShowMessage(‘Punctul pe care s-a făcut clic are valoarea ‘ + APoint.YValue.ToString); Sfârşit; v2.0 Echipa noastră lucrează din greu la următoarea versiune, care va include o cantitate semnificativă de funcții noi și îmbunătățiri legate de importul de date, aspectul și simțul și experiența din cutie . Rămâneți pe fază pentru mai multe! Doriți să explorați capabilitățile TMS FNC Chart, mergeți mai departe și descărcați-l de pe pagina noastră de produs .

Read More

Extindeți TMS WEB Core cu bibliotecile JS cu Andrew: Epic JSON Primer (partea 1)

Pentru restul acestui document, vom lucra de trei ori – arătând versiunea JavaScript (JS), versiunea Wrapper TMS WEB Core (WC) și versiunea Delphi (PAS) a fiecărui scenariu, prezentată ca un bloc de cod potrivit pentru includerea (și testat!) într-un proiect TMS WEB Core, care le acceptă pe toate cele trei fără probleme. Dacă lucrați la o parte a unui proiect care a folosit doar codul Delphi VCL, ați putea folosi doar codul PAS la fel de bine acolo. Sau dacă lucrați la o parte a unui proiect care folosea JavaScript pur, atunci codul JS din blocurile asm… end ar funcționa la fel de bine în acel mediu. Vom discuta chiar și puțin despre trecerea între aceste trei medii. Pentru început, va trebui să știm cum să definim variabile pentru a face referire la obiecte JSON. De asemenea, va trebui să știm cum să le furnizăm JSON (uneori denumit serializare) și cum să vedem ce conțin (de serializare). De dragul simplității, ne vom arăta munca folosind console.log () care funcționează atât în Delphi, cât și în JavaScript în mediul nostru TMS WEB Core. Pur și simplu înlocuiți cu ShowMessage sau cu o altă ieșire de depanare echivalentă dacă lucrați în orice alt mediu. Dar de ce trebuie să definim variabile? Ei bine, una dintre diferențele cheie dintre JavaScript și Delphi este modul în care sunt gestionate tipurile de date. Delphi este un limbaj puternic tipizat, ceea ce înseamnă că, la aproape fiecare pas, tipul de date atribuit unei variabile este cunoscut, de obicei înainte de a fi utilizată. Și aceste tipuri de date tind să fie destul de specifice în natură. Un obiect JSON nu este neapărat interschimbabil cu o matrice JSON, de exemplu. JavaScript, pe de altă parte, este un limbaj slab tipizat (unii ar putea spune chiar netipizat). Tipurile de date sunt un fel de gândire ulterioară și puteți scrie tot felul de coduri fără a fi nevoie să vă gândiți la ce fel de date circulă prin ele. Există compromisuri semnificative pentru ambele abordări. JSON este, de asemenea, foarte strâns legat de limbajul JavaScript în sine, iar unele aspecte ale limbajului JavaScript care au evoluat de-a lungul anilor au condus la îmbunătățiri semnificative în utilizarea JSON în acel mediu. Rezultatul general este că codul JS pe care îl vom arăta tinde să fie foarte scurt, uneori puțin criptic, dar adesea foarte eficient. Echivalentele Delphi trebuie adesea să lucreze mai mult pentru a realiza același lucru, dar nu întotdeauna mai puțin eficient, așa cum vom vedea. Folosirea codului JS în TMS WEB Core implică doar împachetarea lui într-un bloc asm…. Nu folosim alte biblioteci sau cod de suport pentru a ne face munca aici. Variațiile WC în mod similar vor funcționa fără nimic special în ceea ce privește mediul TMS WEB Core. Clasele pe care le vom folosi sunt prezente implicit, denumite colectiv clase TJS* . Pentru Delphi, totuși, avem nevoie de un pas suplimentar mic de a adăuga WEBlib.JSON la clauza de utilizare a proiectului nostru (sau Formular etc.). Aceasta aduce clasele TJSON* pe care le vom folosi. Iată, atunci, exemplul nostru de procedură WebButtonClick pe care o vom folosi în aproape fiecare exemplu care urmează. Va începe cu orice variabile JS, WC sau PAS de care avem nevoie și apoi va conține blocuri de cod aferente fiecăreia. […]

Read More

Extindeți TMS WEB Core cu bibliotecile JS cu Andrew: Epic JSON Primer (partea 2)

20: Performanță relativă. Am auzit adesea că, deși este posibil să folosim varianta TJSONObject a acestor abordări (codul PAS la care am lucrat atât de sârguincios), este de preferat să folosim varianta WC, deoarece va fi mai performantă. Vom pune acest lucru la încercare aici într-un exemplu artificial. Adesea, lizibilitatea și reutilizarea codului sunt mai importante decât performanța directă, în special pentru codul dificil care nu este executat frecvent. Dar, în același timp, cu siguranță apar situații în care un pic de cod este executat frecvent într-o buclă strânsă și este important să stoarceți fiecare fragment de performanță. procedura TForm1.WebButton1Click(Expeditor: TObject); var WC_Object: TJSObject; PAS_Object: TJSONObject; ElapsedTime: TDateTime; i: întreg; Număr: întreg; ÎNCEPE ElapsedTime := Acum; // JS creează 1.000.000 de obiecte asm var JS_Object = {}; pentru (var i = 0; i

Read More

Extindeți TMS WEB Core cu bibliotecile JS cu Andrew: FlatPickr

Până acum, în această serie de bloguri, am acoperit bibliotecile JS care au inclus Ajutor , Instrumente și Materiale . De data aceasta, vom cerceta prima dintre multe biblioteci JS care prezintă un fel de Control – o componentă sau un widget sau un element de vreun fel care vă poate extinde proiectul TMS WEB Core dincolo de ceea ce oferă componentele standard. Primul nostru control se descrie ca „un selector de date ușor și puternic” și într-adevăr este! Se numește FlatPickr și în această primă parte, vom trata cum să-l puneți în funcțiune în proiectele dvs. TMS WEB Core, cu câteva exemple pentru a-și arăta caracteristicile cheie. În partea a doua, vom adopta o abordare diferită prin crearea unei componente TFlatPickr care poate fi apoi adăugată la paleta IDE Delphi, făcându-l și mai ușor de utilizat în proiectele dvs. Motivația TMS WEB Core vine cu un selector de date și oră, desigur, componenta TWebDateTimePicker . Și dacă sunteți un fan al componentelor FNC, există componentele TTMSFNCDatePicker și TTMSFNCDateTimePicker . Și dacă căutați paleta IDE Delphi, veți întâlni și o componentă bazată pe jQuery numită TWebJQXDateTimeInput . Deci o mulțime de opțiuni de la început. Dar ar fi greu să ne gândim la o altă clasă de componente în care oamenii (ca mine!) au opinii foarte puternice despre cum ar trebui să arate și să funcționeze și ce tipuri de opțiuni trebuie să aibă absolut. Și asta chiar înainte de a ajunge la întreaga poveste epică a formatelor de dată și oră, lucru pe care îl vom acoperi foarte curând când vom ajunge la Luxon . De asemenea, selectatorii de date și oră ascund o cantitate surprinzătoare de complexitate pentru ceva care, la suprafață, pare a fi foarte simplu. Când vine vorba de alegerea unui selector de date și oră, iată câteva dintre considerentele pe care le am în minte. Aș considera că acestea sunt „cerințe minime” mai degrabă decât „drăguțe de a avea” pentru proiectele mele. Desigur, proiectele dvs. pot avea un set complet diferit de priorități. Ceea ce este probabil cel mai important este că aceeași componentă de selectare a datei și orei este utilizată pe tot parcursul unui proiect, acolo unde este posibil. Numerele săptămânii. Lucrez cu mulți clienți din industria agriculturii unde numerele săptămânii sunt folosite tot timpul, probabil mai des decât datele, de fapt. Variante. Uneori este logic să afișați un calendar lunar complet pe pagină. Poate chiar două luni. Uneori este un drop-down. Uneori există și un timp. Uneori există doar un timp. Posibilitatea de a utiliza același control în diferite variante ajută la furnizarea unei experiențe consecvente pentru utilizator și are ca rezultat mai puține dureri de cap ca dezvoltator. Restricții. Este important să existe un interval de început/sfârșit pentru datele selectabile, dar deseori este necesar să se poată furniza componentei o listă de date disponibile și ca componenta să indice utilizatorului datele disponibile pentru a fi selectate. Selecții. Flexibilitatea de a putea selecta o dată individuală, date multiple sau un interval este importantă, dar simplificarea este la fel de importantă. Teme. Componenta trebuie să se potrivească vizual cu restul proiectului. Proiectele mele folosesc în mod obișnuit CSS pentru lucrul cu tema, deci puncte bonus dacă pot fi tematice cu ușurință cu CSS. Dar chiar pe listă ar trebui să ofere câteva opțiuni […]

Read More