Editor set de date, câmpurile calculate

Exemplele pe care le veți vedea în acest articol, demonstrează tehnicile de bază folosite de cele mai multe programatori pentru a afișa tabele de baze de date pentru utilizatori. Pentru a înțelege cea mai mare parte a materialului necesită o cunoaștere de ansamblu a mediului și limba Delphi.







Deschideți caseta combo „Selector de obiect“, în partea de sus a Object Inspector - acum nu are două componente: TForm și TQuery.

Faceți clic dreapta pe obiect TQuery și din meniul contextual, selectați „Fields Editor“. Faceți clic pe butonul Add - Adauga caseta de dialog Câmpuri să apară, așa cum se arată în figura 1

Aceste noi facilități vor fi utilizate pentru reprezentarea vizuală a tabelului CLIENT pentru utilizator.

Iată lista completă a obiectelor pe care tocmai au fost create:

Acest acord poate fi foarte util atunci când se lucrează cu mai multe mese, și doriți doar să știu, această variabilă se referă la un câmp de tabel.

Cea mai importantă proprietate numita valoare. O puteți accesa după cum urmează:

Codul prezentat aici, cesiona mai întâi valorile variabilelor d și S. Următoarele două linii de a modifica aceste valori, iar ultimele două sunt atribuite noi valori ale obiectelor. Nu are prea mult sens pentru a scrie cod ca acest lucru în program, dar acest cod este folosit doar pentru a demonstra sintaxa utilizată de către descendenții TField.

Proprietatea Valoarea corespunde întotdeauna tipul câmpului, la care se referă. De exemplu, la TStringFields - string, TCurrencyFields - dublu. Cu toate acestea, dacă sunt afișate câmp de tip TCurrencyField folosind componenta „date sensibile“ (date conștient: TDBEdit, TDBGrid etc), acesta va fi reprezentat printr-un șir de caractere, cum ar fi: „$ 5.00“.

Acest lucru s-ar putea face să crezi că Delphi deconectat brusc tastarea puternic. Dupa TCurrencyField.Value declarate ca dublă, și dacă încercați să atribuiți un șir de caractere, veți obține o eroare de „nepotrivire de tip“ (nepotrivire de tip). Exemplul de mai sus demonstrează, de fapt, proprietățile obiectelor de vizualizare a datelor, mai degrabă decât de tip slăbire control. (Cu toate acestea, este posibil pentru a obține valoarea câmpului este deja convertit la un alt tip. Pentru aceasta TField și urmașii săi un set AsString sau metode de tip AsFloat. Desigur, transformarea are loc doar atunci când are sens.)

Dacă doriți să obțineți numele câmpurilor din curent DataSet, atunci acesta utilizează numele_campului proprietatea una din cele două moduri, după cum se arată mai jos:

Dacă doriți să obțineți numele obiectului asociat cu câmpul, atunci trebuie să utilizați proprietatea Nume:

Pentru masa clientului, primul exemplu se va întoarce șirul „CustNo“, și oricare dintre rândurile de-al doilea exemplu, șirul „Query1CustNo“.

Câmpurile calculate

CALC_SUM.DPR exemplu de program pentru această lecție ilustrează o primă câmpuri calculate pentru utilizarea de caz.

Acest program leagă cele trei mese într-un unu-la-mulți. În special, comenzi și elemente conectate peste OrderNo domeniu și părți ale elementelor și legate de câmpul PartNo. (Tabelul COMENZI conține toate comenzile, în tabelul de articole - elementele indicate în ordine; PARTS - obiecte director). În programul pe care îl puteți naviga tabelul de comenzi și vezi asociate cu lista ordinea actuală a elementelor incluse. Programul CALC_SUM este destul de complicat, dar ilustrează bine puterea câmpurilor calculate.

Secvența de creare a proiectului CALC_SUM:
  • Crearea unui nou proiect (File | New Project) și scoateți-l din forma (în Manager de Proiect View | Manager de proiect)
  • Selectați forme de baze de date de experți din meniul Help.
  • Pe primul ecran, selectați „Create master / detaliu forma“ și „Creați un formular folosind TQuery obiecte“.
  • Faceți clic pe Următorul și selectați tabelul din baza de date alias ORDERS.DB DBDEMOS.
  • Faceți clic pe Următorul și alegeți câmpurile OrderNo, CustNo, DataVânzării, SHIPDATE și ItemsTotal din tabelul ORDERS.DB.
  • Faceți clic pe Next și selectați „orizontală“ din plasarea componentelor pe forma dbEdit.
  • Faceți clic pe Next și selectați tabelul ITEMS.DB.
  • În următoarele două ecrane, selectați toate câmpurile din tabel și le-a pus într-o grilă.
  • Faceți clic pe Next și selectați OrderNo câmpul de master și de detaliu listboxes, și faceți clic pe butonul Add.
  • Faceți clic pe Următorul, și va genera un formular.






Este nevoie de o mulțime de cuvinte pentru a descrie procesul așa cum este arătat mai sus, dar, de fapt, executarea de comenzi într-o bază de date de experți forme ușor și intuitiv.

Selectați primul dintre cele două obiecte TQuery și instalați proprietatea activă la True. Pentru proprietățile Query2 în SQL Scrierea textului interogare:

Un proces simplu este descris în paragraful anterior, se arată modul de a crea un câmp calculat. Dacă te uiți într-un DBGrid, puteți vedea că există acum există o altă cutie goală. Pentru a pune o valoare în acest domeniu, deschideți Object Inspector pagina Evenimente obiect Query2 și dublu-clic pe OnCalcFields. Umple metoda este creată după cum urmează:

După începerea programului câmpul Total va conține șirul $ ora 23.00.

Acest lucru arată cât de ușor este de a crea un câmp calculat care afișează date formatate corect. De fapt, acest domeniu ar trebui să arate altceva - câmpurile de lucru Cant (cantitate) și ListPrice (prețul). În acest scop, codul de mai sus pentru un eveniment OnCalcFields fi modificat după cum urmează:

Dacă executați acum programul, câmpul total va conține valoarea dorită.

În cazul OnCalcFields handler poate efectua calcule mai complexe (va fi prezentat mai târziu), dar trebuie amintit faptul că acest lucru determină o încetinire corespunzătoare a vitezei programului.

În acest exemplu, suma calculată printr-un simplu înregistrările de ordonare nu este cea mai bună opțiune - este posibil, de exemplu, pentru a calcula valoarea de a utiliza un obiect suplimentar de tip TQuery. Metoda DisableControls este chemat pentru a anula redesenarea DBGrid pentru scanări de masă. Query2 redeschide o anchetă pentru a se asigura că setul său actual de înregistrări corespunzătoare ordinii curente.

Pune pe un alt element DBEdit formă și cravată-l la Query1, câmpul NewItemsTotal. Rulați programul, forma aproximativă prezentată în Figura 3

Figura 3: Programul CALC_SUM

După cum se poate observa din program, câmpul ItemsTotal prezență în tabelul COMENZI pentru acest exemplu este opțională și poate fi îndepărtată (cu toate acestea, este necesar ca în alte cazuri).

managementul TDBGrid în timpul rulării

DBGrid obiect poate fi complet reconfigurat în timpul rulării. Puteți ascunde și afișa coloane, schimba ordinea de afișare a coloanelor și lățimi lor.

Puteți utiliza proprietatea Opțiuni DBGrid a obiectului de a schimba opinia. Opțiuni proprietate poate avea următoarele valori posibile:

Este setat implicit la true, permite utilizatorului să editeze grila. Puteți seta, de asemenea, proprietăți grilă numai în citire la Adevărat sau fals.

Dacă utilizatorul poate folosi tab-ul și Shift-tab pentru a comuta între coloane.

După cum a anunțat în această structură:

De exemplu, puteți seta opțiuni în codul scris Runtime astfel:

Dacă doriți să activați sau să dezactivați opțiunea, se poate face cu ajutorul operațiilor logice. De exemplu, următorul cod se va adăuga dgTitles la setul curent de parametri:

Să ShowTitles au o variabilă booleană, apoi următorul cod pentru a activa sau dezactiva opțiunea de a-un singur clic:

Dacă doriți să ascundeți câmpul în run-time, puteți seta proprietatea vizibile la false:

Ambele linii transporta sarcina de cod identice. Pentru a afișa din nou câmpul, setați vizibilitatea setată la true:

Dacă doriți să schimbați poziția coloanei în timpul rulării, puteți pur și simplu schimba codul (primul câmp din înregistrarea are un indice zero):

În mod implicit, câmpul CustNo în tabelul Customer este primul. Codul din prima linie a acestui câmp se mută la a doua poziție, iar linia următoare se va trece la a treia poziție. Amintiți-vă că câmpurile sunt numerotate începând de la zero, deoarece atribuirea proprietății nu câmpului Index 1 în a doua înregistrare. Primul câmp este 0 Index.

Când modificați un indice de câmp, indicii de alte domenii în înregistrarea sunt schimbate automat.

Dacă doriți să modificați lățimea coloanei în execuție, modificați numai proprietatea respectivului DisplayWidth TField.

Valoarea 12 se referă la numărul de caractere care pot fi afișate într-un element vizibil.

Programul DBGR_RT arată cum să lucreze cu DBGrid în timpul rulării. Programul este destul de simplu, cu excepția a două piese de mici dimensiuni, care sunt descrise mai jos. Prima parte arată cum să creați o casetă de selectare în timpul rulării, iar al doilea arată cum de a schimba ordinea elementelor într-un listbox în timpul rulării.

Când creați un formular (eveniment OnCreate) ListBox umplut cu nume de câmp, apoi a crea o serie de obiecte de bifare și câmpurile corespunzătoare din tabel. În primul rând, sunt selectate toate casetele de selectare, și toate câmpurile sunt vizibile în tabel. Programul învață prin numele câmpurilor TTable1 și le atribuie proprietatea Legendă a căsuța corespunzătoare. În plus, de tratare a evenimentelor OnClick este atribuit tuturor procedurii ChBClick casetele de selectare, și care se transformă pe teren / oprit în DBGrid.

Cele mai multe dintre codul în acest exemplu efectua sarcini relativ simple, cum ar fi denumirea și regulamentele verifica casetele. Aici sunt două linii principale:

Prima linie creează o casetă de selectare pentru a specifica proprietar (proprietar). A doua linie atribuie părinte (părinte) pentru CheckBox. Pentru a înțelege diferențele dintre părinți și proprietar, a se vedea proprietățile corespunzătoare în online-ajutor.

Programul conține un ListBox, care arată ordinea actuală a câmpurilor în setul de date. Pentru a schimba ordinea câmpurilor din setul de date (și, prin urmare, în DBGrid) folosește două chei. Prin apăsarea unuia dintre butoanele selectate în câmpul ListBox'e este deplasat cu o poziție în sus sau în jos. Sincronă cu modificările și ordinea de câmpuri în DBGrid. Codul este prezentat mai jos, se schimbă câmpul Index pentru Table1, schimbând astfel, poziția în câmpul DBGrid. Aceste modificări se aplică numai la setul de date de prezentare vizuală. Fizic, datele de pe disc nu se schimba.

Ultima linie din exemplu este doar una care se schimbă de fapt, indicele coloanei pe care utilizatorul dorește să se miște. Două linii de cod imediat înainte de a se muta rândul curent în listbox într-o nouă poziție.

Programul Aspectul DBGR_RT este prezentat în Figura 4

Figura 4: Programul DBGR_RT