note de programare Delphi

Imprimarea în Delphi

Ieșire la o imprimantă în Windows nu este diferită de afișaj: programator pentru date proprietatea obiectului Canvas imprimantei, care conține un set de instrumente de desen și metode adecvate pentru TCanvas de clasă. foaie de hârtie de dimensiune în pixeli determină proprietățile înălțime și lățime, precum și un set de fonturi de imprimantă - fonturi de proprietate.

Text Print

Metoda descrisă de imprimare - cel mai primitiv: cu ajutorul ei este imposibil să se deducă linia care separă coloana sau rândul, este dificil de a formata textul, introduceți antete, numere de pagină, etc.

După cum puteți vedea, un apel direct la proprietățile instrument de desen Canvas cere programator pentru a bo semnificativ lshih efort, dar îi oferă un control complet asupra imaginii imprimate.

În multe cazuri, pentru a imprima un document și făcându-l instrumente de formatare de bază (antet comună de imprimare antet pe fiecare pagină, numere de pagină, etc.) mai ușor de a utiliza componente speciale la pagina paleta de componente QReport Delphi. Aceste componente sunt proiectate pentru a crea un raport de baze de date, dar pot fi folosite cu succes pentru documente normale (PrintText.dpr).

Imprimarea imaginilor

Imprimarea imaginilor poate parea foarte dificil, dar Printer.Canvas proprietate conține metoda:

care este ușor de a face față acestei sarcini. Atunci când este accesat ca primul parametru indică o zonă dreptunghiulară rezervată pe suprafața foii pentru tipărirea de imagini precum și un al doilea - clasa obiectului TGraphic, în care imaginea stocată, de exemplu:

Afișează fișierul în memorie

mapare de fișiere se realizează în trei etape. Inițial, fișierul este creat apel de funcție:

sau deschise prin utilizarea:

În ambele funcții NumeFișier - numele fișierului, eventual cu o cale de acces. Parametrul Mode defineste modul de acces la dosar și poate fi una dintre următoarele valori: fmOpenRead - numai citire; fmOpenWrite - numai de înregistrare; fmOpenReadWrite - citire și scriere. Cu ajutorul operației sau constantele pot fi combinate cu una dintre următoarele mai multe funcții care reglementează cota de fișier: fmShareExclusive - partajarea interzisă; fmShareDenyWrite - alte aplicații sunt interzise de intrare; fmShareDenyRead - alte aplicații de citire sunt interzise; fmSchareDenyNone - partajare nelimitată. Ambele funcții returnează un mâner pentru a crea fișierul (deschis), sau 0 în cazul în care operațiunea nu a avut succes.

În a doua etapă, un obiect de afișare în memorie. Pentru a face acest lucru, folosiți funcția:

Aici hFile - descriptor de fișier; lpFileMappingAttributes - pointer la structura în care se determină dacă obiectul creat generează obiecte copil (de obicei, nu se poate - NIL); flProtect - determină tipul de protecție, care este aplicat pe fereastra de afișare a fișierului (a se vedea de pe această mai jos). dwMaximumSizeHigh, dwMaximumSizeLow - respectiv superior și inferior 32 al descărcării cuprinzând dimensiunea fișierului (dacă va afișa fișiere de până la 4 GB, a pus în dwMaximumSizeHigh 0 dacă dwMaximumSizeLow - lungimea fișierului, iar dacă cei doi parametri sunt 0, dimensiunea ferestrei de afișare este egală cu dimensiunea fișierului); lpName - afișează numele obiectului sau NIL.

Funcția returnează un mâner pentru un obiect de afișare, sau 0 dacă cererea nu a avut succes.

funcționa MapViewOfFile (hFileMappingObject: THandle; dwDesiresAccess: DWord; dwFileOffsetHigh, dwFileIffsetLow, dwNumberOfBytesToMap: DWord): pointer;

După utilizarea afișajul ferestrei de cartografiere aceste resurse trebuie să elibereze funcția:

Listarea 3 prezintă modulul de text (File - InMemory.dpr), care creează o fereastră.

Componentă temporizator (timer) este utilizat pentru a face referire intervale de timp real. Intervalul proprietății sale specifică milisecunde interval de timp. care va avea loc de timer-ul de pornire înainte de eveniment OnTimer. Cronometrul este activat când este setat la, proprietatea Enabled sale Adevărat. Odată ce timer-ul este inclus în orice moment va excita eveniment OnTimer, atâta timp cât acesta nu ia proprietatea Enabled la False.

Rețineți că, datorită specificității de punere în aplicare PC interval de timp de referință realizabile efectiv minim standard de timer hardware compatibil IBM poate fi mai mică de 55 ms (intervalul numit capusei), în plus, orice interval de timp, numărate de cronometrul este întotdeauna un multiplu de 55 ms . Pentru a verifica acest lucru, efectuați un experiment în care a calculat timpul mediu între timer-ul (Timer.dpr):

  1. Începe un nou proiect cu o formă goală și a pus-o componentă TTimer.
  2. Setare temporizator activat proprietate la False.
  3. Scrie un astfel de modul de forma principală (a se vedea Listing 4):

Este setat la 1 ms. Accesat 55 ms.

ceea ce indică un timp real împărtășită de două evenimente OnTimer adiacente. Dacă setați perioada de cronometrare în intervalul de la 56 până la 110 ms, indicat pe linia 110 va ms, etc. (Datorită naturii discrete a ceasului de sistem actualizați rezultatele pot fi ușor diferite într-o direcție sau alta).

Într-un număr de aplicații practice importante (cu dezvoltarea jocului, sisteme în timp real pentru controlul dispozitivelor externe, și altele asemenea), intervalul de 55 ms poate fi prea mare. Un PC modern are un temporizator multimedia, care perioada de comutare poate fi între 1 ms și mai mare, dar timer-ul nu are realizare Component, prin urmare, este necesar să se utilizeze funcția API pentru a accesa.

Schema generală a utilizării sale este după cum urmează. În primul rând, se prepară procedura de apel invers (suna înapoi), cu titlul:

Aici uID - identificator al evenimentului timer (vezi mai jos). uMsg - nu este utilizat; dwUser - număr aleatoriu procedură transmis atunci când cronometrul; DW1, DW2 - nu este utilizat.

Start Funcția temporizator este implementată:

Opririle Contor de timp și resursele de sistem asociate acestuia sunt eliberați funcția:

Aici uID - evenimente timer ID produse de timeSetEvent.

Exemplul următor (Timer.dpr) ilustrează utilizarea temporizatorului multimedia (Listing 5).