Crearea unei interfețe cu utilizatorul. Rezumat: Utilizarea interfețelor deschise ale mediului de programare Delphi Da sau nu

Acesta este un articol bazat pe întrebări de pe forumuri: „Cum pot returna un șir de caractere dintr-un DLL?”, „Cum să transmit și să returnez o serie de înregistrări?”, „Cum să transmit un formular la un DLL?”.

Ca să nu-ți petreci jumătate din viață să-ți dai seama, în acest articol voi aduce totul pe un platou.

Subiectele acestui articol au fost atinse de mai multe ori în acest blog în diferite grade, dar în acest articol sunt adunate împreună și justificate. Pe scurt, puteți arunca un link către acest articol celor care dezvoltă DLL-uri.

Notă importantă: articolul trebuie citit secvenţial. Exemplele de cod sunt furnizate numai ca exemple, la fiecare pas (punct) al articolului se adauga codul exemplu cu detalii noi. De exemplu, chiar la începutul articolului nu sunt indicate metode „clasice” (cum ar fi utilizarea GetLastError , convenția sdtcall etc.), care sunt înlocuite cu altele mai adecvate pe măsură ce articolul progresează. Acest lucru a fost făcut pentru ca modelele „noi” („neobișnuite”) să nu ridice întrebări. În caz contrar, ar fi necesar să inserați o notă pentru fiecare exemplu de genul: „acest lucru este discutat în acel paragraf de mai jos, dar asta este discutat în acest paragraf”. În orice caz, la sfârșitul articolului există un link către deja cod gata, scris ținând cont de tot ce se spune în articol. Poți doar să-l iei și să-l folosești. Și articolul explică de ce și de ce. Dacă nu sunteți interesat de „de ce și de ce”, derulați până la sfârșit până la concluzie și linkul pentru a descărca exemplul.

Creare interfata utilizatorul este redus să selecteze din paleta de componente componentele Delphi necesare pentru ca programul să funcționeze, servind interfata management, precum și interfata afișarea informațiilor și transferarea acestora în formular cu aspectul ulterioar.

Interfața de utilizator pe care o creați ar trebui să utilizeze elemente standard familiare utilizatorilor și să ofere confort maxim. Toate acestea sunt în cele din urmă determinate de un astfel de criteriu precum eficiența interfeței - rezultate maxime cu efort minim.
Sunt cunoscute principiile creării unei interfețe prietenoase cu utilizatorul. Ca cel mai mult principii generale la crearea interfețe cu utilizatorul Pot fi luate în considerare trei puncte principale:

  1. Programul ar trebui să ajute la finalizarea unei sarcini și nu să devină acea sarcină.
  2. Când lucrează cu programul, utilizatorul nu ar trebui să se simtă ca un prost.
  3. Programul ar trebui să funcționeze în așa fel încât utilizatorul să nu considere computerul un prost.
Primul principiu- aceasta este așa-numita „transparență” a interfeței. Interfața cu utilizatorul trebuie să fie intuitivă, ușor de învățat și să nu creeze utilizatorului probleme pe care acesta va trebui să le depășească în timpul procesului de lucru. Utilizați standard, fără decorațiuni inutile, componente, utilizați familiar, folosit programe similare tehnici de management și vei atinge criteriile de performanță primul principiu.

Al doilea principiu este a neglija abilități intelectuale utilizatorii. Din propria mea experiență, știu că de multe ori utilizatorii nu numai că nu știu să lucreze pe un computer, ci pur și simplu le este frică să facă ceva pe cont propriu. Prin urmare, interfața cu utilizatorul ar trebui să fie cât mai prietenoasă posibil.
Mai mult decât atât, temerile utilizatorilor sunt adesea justificate, deoarece costul programului, și chiar al computerului în sine, nu poate fi comparat cu costul, de exemplu, al unei baze de date create pe parcursul multor ani de efort. De aceea, atunci când creează o interfață cu utilizatorul, un programator trebuie să includă întotdeauna „protecție fără greșeli” în program - împotriva acțiunilor incorecte și a introducerii de către utilizator a datelor incorecte. Dar unii programatori se lasă prea duși de o astfel de protecție, o fac prea intruzivă și, ca urmare, funcționarea programului seamănă cu faimosul „un pas la stânga, un pas la dreapta este considerat o scăpare”! Și ceea ce programatorul creează ca soluție la o problemă începe să creeze probleme în sine.
A se conforma al doilea principiu nu este nevoie să permiteți programului să „corecteze” acțiunile utilizatorului și să indice exact cum ar trebui să acționeze, forțându-l într-un cadru îngust. De asemenea, nu ar trebui să vă lăsați prea conduși de afișarea mesajelor prompte informaționale, în special a celor de dialog, deoarece acest lucru distrage atenția utilizatorului de la serviciu. Ar fi mai bine să oferiți posibilitatea de a dezactiva complet indicii.

Al treilea principiu este de a crea un program cu cele mai înalte capacități „mentale” posibile. În ciuda dezvoltării rapide echipamente informatice, chiar și programele utilizate pe scară largă pot fi numite doar foarte condiționat având inteligență artificială. Acestea interferează cu experiența utilizatorului prin afișare casete de dialog cu întrebări stupide care provoacă confuzie chiar și în cele mai simple situații. Drept urmare, utilizatorii exclamă în inimile lor: „Ce mașinărie proastă!”
Personal, sunt iritat de întrebările constante de la aproape toată lumea editori de text despre salvarea textului modificat, deși textul original și actualul nu diferă în niciun simbol. Da, am tastat ceva, dar apoi am returnat totul înapoi, este chiar imposibil să-mi dau seama! Trebuie să verific dacă nu am stricat nimic până la urmă.

Încercați să respectați următoarele reguli:

Elemente de interfață standard
Folosiți cele standard pentru a acestui element componentele interfeței. După ce a întâlnit programul dvs., utilizatorul nu va pierde timpul să se cunoască, ci va începe imediat să lucreze - acesta este unul dintre semnele unui program realizat profesional.
Paletă mică de instrumente
Încercați să nu utilizați prea multe componente diferite. Și, firește, după ce ați folosit o componentă standard undeva într-un singur loc, într-un caz similar, folosiți-o și ea.
Distanță egală între comenzi
Plasați elementele de interfață la aceeași distanță unele de altele. Componentele împrăștiate la întâmplare creează senzația unui produs realizat neprofesionist. Și invers, amplasarea verificată cu atenție a butoanelor, comutatoarelor, casetelor de selectare și a altor componente care alcătuiesc interfața pe Formular este un semn de muncă de înaltă calitate.
TabOrder. Comanda "corectă".
TabOrder este ordinea în care cursorul ecranului se deplasează pe controale atunci când este apăsată o tastă Tab. Într-un program scris corect, cursorul se deplasează urmând logica lucrului utilizatorului cu programul. Când creează un program, programatorul schimbă adesea componente, elimină unele și adaugă altele după cum este necesar. Ca rezultat, în programul terminat, cursorul sare haotic în jurul Formului. După finalizarea programului, nu uitați să configurați TabOrder.
Selectarea fontului
Doar lăsați fonturile în pace. Fonturile implicite ale Delphi sunt potrivite pentru orice sistem pe care poate rula programul dumneavoastră. Folosiți fontul aldine numai pentru a evidenția elementele importante. Aplicație cursive si mai ales subliniere, pe care utilizatorul l-ar putea confunda cu un hyperlink este o formă proastă.
Alegerea culorilor
În ceea ce privește culorile elementelor de interfață, la fel ca și în cazul fonturilor, este mai bine să le lăsați standard, implicit. Delphi folosește paleta sistemului Windows, iar utilizatorul poate personaliza cu ușurință culorile prin schimbarea acesteia.
Management alternativ
Un program realizat profesional ar trebui să poată fi controlat nu numai cu mouse-ul, ci și cu tastatura. Nu ar trebui să existe funcții care să poată fi efectuate doar cu mouse-ul (desenarea cu editori grafici nu conteaza!). Pentru cele mai utilizate funcții, ar trebui să furnizați „taste rapide” pentru acces rapid.
Cărămizi de interfață
În ceea ce privește elementele specifice ale interfeței cu utilizatorul, calitatea interacțiunii utilizatorului cu programul depinde de:
  • conformitatea elementului de control cu ​​sarcina pe care o îndeplinește;
  • regulile după care funcţionează elementul de control.
    Această pagină discută regulile pentru crearea unor elemente de interfață.
Și acum vreau să arăt ce instrumente oferă Delphi pentru gestionarea componentelor din formular, poziția lor relativă și comportamentul cursorului atunci când o tastă este apăsată Tab.

Pentru a poziționa componentele unul față de celălalt în în ordinea corectă, la început este necesar să le evidenţiem. Puteți pur și simplu să încercuiți zona din Formular care conține componentele selectate. Sau ținând „ Schimbare", utilizați același mouse pentru a indica fiecare componentă care trebuie selectată. Faceți clic din nou pe componenta selectată (în timp ce apăsați " Schimbare") îl deselectează.

Componentele selectate pot fi gestionate ca un întreg - mutate în jurul formularului, atribuite valori acelorași proprietăți, copiate (pentru instalare, de exemplu, pe alt formular), chiar șterse.

Acum faceți clic clic dreapta una dintre componente și din meniul pop-up selectați Poziție -> Aliniere... Va apărea o casetă de dialog care vă permite să reglați poziția orizontală și verticală a componentelor din grup. De exemplu, trebuie să ne aliniem cele patru butoane la stânga și să ne asigurăm că au aceeași distanță verticală între ele. Pentru a face acest lucru, selectați butoanele radio Orizontală: pe partea stângăŞi Verticală: spațiu în mod egal.

Prin selectarea articolului Centru, vom aranja componentele astfel încât centrele lor să fie situate pe aceeași linie orizontal sau vertical, iar elementul Centru în fereastră mută componentele în centrul ferestrei, de asemenea, orizontal sau vertical.

În aceeași linie de meniu Tab O comanda... determină apariția unei casete de dialog care controlează modul în care cursorul se deplasează prin elementele interfeței atunci când este apăsată o tastă Tab. Când formularul apare pe ecran, cursorul se va afla în mod natural pe componenta situată pe prima linie a casetei de dialog. Și apoi se va muta în jos în listă. În caseta de dialog, două săgeți albastre sus și jos controlează poziția componentei selectate. Selectați componenta necesară, utilizați săgețile pentru a o muta la linia dorită din listă și așa mai departe.

La selectarea unui element de meniu Control -> Apare un submeniu format din două elemente:

  • Aduceți în față
  • Trimite în spate
Acestea sunt metode componente care sunt disponibile și în mod programatic. Button1.SendToBack mută butonul în „fond” și Button1.BringToFront- în „primul plan”. Adică, dacă o componentă este poziționată deasupra alteia, aceste metode își schimbă pozițiile. Cazurile în care s-ar putea aplica acest lucru sunt destul de evidente.

doar pentru rezultat

respectarea strictă a termenelor limită

Transparenţă

implementarea proiectului

suport tehnic ca un cadou

Programare, modificari, consultatii pe 1C

Cum lucrăm

1. Discutam problema la telefon. În funcție de disponibilitate acces la distanță- afișați pe ecranul computerului.

2. Estimăm munca în ruble dacă proiectul este mare, dacă nu, numărul aproximativ de ore;

3. Ne facem treaba.

4. Acceptați munca în programul dvs. dacă există neajunsuri, le corectăm.

5. Noi emitem o factura, tu platesti.

Costul muncii

1. Toată munca este împărțită în 3 categorii: consultare, actualizarea unei configurații standard, elaborarea sau programarea unui nou raport, procesare, buton etc.

3. Pentru lucrari mai lungi de 10 ore trebuie intocmita in prealabil o specificatie tehnica cu descrierea si costul lucrarii. Lucrările încep după ce specificațiile tehnice au fost convenite cu dumneavoastră.

Suport tehnic

1. Dacă găsiți erori în lucrările acceptate anterior în decurs de 3 luni, le corectăm gratuit.

2. Pentru clienții obișnuiți Corectăm gratuit orice neajunsuri în activitatea noastră în decurs de un an.

Software pentru a vă gestiona afacerea.

Cumpărați 1C:Enterprise

Suntem un dealer oficial al 1C, puteți cumpăra diverse produse software si licente. Pe lângă achiziționarea „cutiei”, vă vom ajuta să configurați programul, să oferiți sfaturi și să faceți setările de bază.

  • Contabilitate
  • Automatizarea magazinului
  • Vânzări cu ridicata
  • Asistență la instalare și configurarea inițială inclus in pachet!
  • Reglarea fină a configurațiilor la nevoile clienților, dezvoltarea de noi module în absența funcțiilor necesare în configurația standard.
1C: Contabilitate 1C: Managementul comerțului 1C: Comerț cu amănuntul 1C: Managementul salariilor și al personalului
De la 3300 rub. De la 6700 rub. De la 3300 rub. De la 7400 rub.

Furnizare de server.

Configurare instantanee a serverului + 1C.

Fără server? Nicio problemă, vom selecta și vom configura rapid un server în cloud. Pentru taxa mica primești o soluție foarte fiabilă.

  • Disponibilitate 24\7
  • Nu este nevoie să-l păstrezi pe al tău administrator de sistem(economiile vor acoperi costurile serverului dvs.).
  • Configurare și instalare rapidă a 1C pe server, în 3 zile vei avea deja un sistem complet funcțional.
  • Te poți muta la server local, dacă soluția nu este satisfăcătoare.

SMS de la 1C

Vrei ca clienții tăi să afle despre promoții și reduceri? Clienții nu se întorc? Configurați trimiterea de SMS-uri direct de la 1C!

Compania noastră va putea configura rapid trimiterea de SMS-uri către clienții dvs. direct de la 1C. Exemple de evenimente care pot fi automatizate:

  • Mulțumiri pentru achiziție și bonusurile sunt acordate imediat după următoarea achiziție.
  • Acumularea de bonusuri pe card ca cadou pentru o zi de naștere/altă zi semnificativă sau sărbătoare.
  • Notificarea sosirii mărfurilor la depozit.
  • Expirarea bonusurilor cadou.
  • Notificarea primirii platii avansului si rezervarii marfurilor.
  • Adresa cu indicatii catre magazin/birou, numere de telefon.
  • etc.

Instalarea în 1C poate fi făcută de specialiștii noștri sau de angajații dumneavoastră. Puteți vizualiza tarifele pe pagina de tarife SMS.

  • Livrare SMS garantată, banii sunt taxați doar pentru SMS-urile livrate.
  • Prețuri separate pentru fiecare SMS.
  • Încărcați-vă soldul în diferite moduri.
  • Vizualizați oricând istoricul tuturor SMS-urilor trimise.
  • Numele expeditorului număr digitalîn telefonul destinatarului mesajului.

Programarea orientată pe obiecte (OOP), pe lângă conceptul de clasă, oferă și conceptul fundamental de interfață.

Ce este o interfață și care sunt caracteristicile lucrului cu ea în limbajul de programare Delphi?

Interfața este o construcție semantică și sintactică în codul programului folosit pentru a specifica serviciile furnizate de o clasă sau componentă (Wikipedia).

În esență, o interfață definește o listă de proprietăți și metode care trebuie utilizate atunci când se lucrează cu clasa pe care o implementează această interfață, precum și semnătura acestora (nume, tip de date, parametri acceptați (pentru proceduri și funcții), etc.). Astfel, o clasă care implementează o anumită interfață trebuie să implementeze toate componentele acesteia. Mai mult, în strictă conformitate cu modul în care sunt descrise în el.

Interfețele sunt adesea comparate cu clase abstracte, dar în ciuda tuturor asemănărilor, această comparație nu este în întregime corectă. Cel puțin, clasele abstracte vă permit să controlați vizibilitatea membrilor. În același timp, domeniile nu sunt definite pentru interfețe.

Interfețele vă permit să faceți arhitectura mai flexibilă, deoarece unifică accesul la această sau aceea funcționalitate și vă permit, de asemenea, să evitați o serie de probleme asociate cu moștenirea clasei (interfețele pot fi, de asemenea, moștenite una de la alta).

Pentru a declara o interfață în Delphi, utilizați cuvântul cheie interfață. Acesta este același cuvânt cheie care definește o secțiune a modulului care poate fi accesată din exterior (între cuvinte cheie interfață și implementare). Cu toate acestea, atunci când declarați o interfață, este utilizată o sintaxă diferită, similară cu declararea claselor.

Delphi/Pascal

IMyNewInterface = procedura de interfata InterfaceProc;

Sfârşit;

IMyNewInterface =interfață

procedura InterfaceProc ;

Sfârşit ;

Astfel, sintaxa declarației interfeței în sine nu este fundamental diferită de alte limbaje de programare (caracteristicile sintaxei bazate pe Pascal nu contează). În același timp, implementarea interfețelor are o serie de caracteristici. Ideea este că Interfețe Delphi

au fost introduse inițial pentru a sprijini tehnologia COM. Prin urmare, interfața IInterface, care în Delphi este strămoșul tuturor celorlalte interfețe (un fel de analog al TObject), conține deja trei metode de bază de lucru cu această tehnologie: QueryInterface, _AddRef, _Release. Ca rezultat, dacă o clasă implementează orice interfață, atunci trebuie să implementeze și aceste metode. Chiar dacă această clasă nu este destinată lucrului COM.

Datorită acestei caracteristici a interfeței IInterface, în Delphi utilizarea interfețelor, în cele mai multe cazuri, duce la adăugarea de capabilități evident neutilizate la clasă.

Există o clasă de bibliotecă TInterfaceObject care conține deja implementarea acestor metode și, atunci când se moștenește de la aceasta, nu este nevoie să le implementați singur. Dar, deoarece Delphi nu acceptă moștenirea mai multor clase, utilizarea sa cauzează adesea doar dificultăți suplimentare în proiectarea și implementarea funcționalității deja necesare. Toate acestea au dus la faptul că, în ciuda tuturor posibilităților oferite de interfețe, acestea aplicare practică

În Delphi, aproape nimic nu a mers dincolo de lucrul cu COM.

Fiind optimizate pentru a lucra în principal cu această tehnologie, interfețele, sau mai bine zis funcționalitatea și restricțiile arhitecturale pe care le adaugă neapărat, nu se justifică atunci când rezolvă alte probleme.

Prin urmare, mulți programatori Delphi sunt încă, de fapt, lipsiți de un instrument puternic și flexibil pentru dezvoltarea arhitecturii aplicațiilor.

Articolul a fost scris pe baza rezultatelor analizelor de programe scrise de tinerii dezvoltatori ai grupului nostru.

Mulți utilizatori, în special cei care au lucrat anterior în DOS, au obiceiul de a comuta între câmpurile de intrare nu cu mouse-ul, ci folosind tastatura cu tasta Tab. În plus, este mult mai rapid decât selectarea fiecărui câmp cu mouse-ul. Prin urmare, ordinea componentelor de comutare trebuie setată corect. Acest lucru se aplică atât componentelor din interiorul tuturor componentelor containerului (panouri, GroupBoxes și altele asemenea), cât și componentelor containerului în sine, dacă există mai multe dintre ele pe formular.

Ordinea de comutare a componentelor din interiorul containerului este specificată de proprietatea TabOrder. Primul devine componentă activă, a cărui TabOrder este 0, al doilea cu 1 etc., până când toate componentele au fost iterate. În plus, componenta are o proprietate TabStop, care indică dacă componenta va primi focalizare atunci când este comutată cu tasta Tab. Dacă trebuie să interziceți trecerea la orice componentă, setați TabStop = false. În acest caz, puteți comuta la această componentă numai folosind mouse-ul.

Sunt cazuri când utilizatorii care sunt obișnuiți să comute cu o anumită cheie într-un program, din obișnuință, continuă să o folosească în altele. Acest lucru se întâmplă adesea cu utilizatorii 1C, unde tasta Enter poate fi folosită pentru a naviga prin câmpurile de introducere. Ei bine, le vom oferi o astfel de oportunitate în programele noastre dacă o vor cere. Setați proprietatea KeyPreview a formularului la true și scrieți un handler de evenimente OnKeyPress:

Procedura TForm1.FormKeyPress(Sender: TObject; var Key: Char);
ÎNCEPE
dacă ord(key)=vk_Return atunci
Form1.SelectNext(PriemForm.ActiveControl, adevărat, adevărat);
Sfârşit;

Acest handler oferă navigare prin elementele formularului atunci când este apăsată tasta Enter. Trebuie remarcat faptul că metoda similara nu va funcționa cu butoane, pentru că... apăsarea Enter pe un buton face ca acesta să fie făcut clic, în timp ce apăsarea Tab oferă focalizarea de intrare pe următoarea componentă din secvența de comutare.

Butoane implicite

Toți aceiași utilizatori se obișnuiesc rapid cu faptul că în casetele de dialog ale aplicației, de regulă, puteți confirma alegerea cu tasta Enter și anulați cu tasta Esc. Să nu-i dezamăgim în programele noastre, mai ales că este foarte ușor de făcut. Pentru un buton care răspunde la Enter, setați proprietatea Default la true. Pentru butonul care răspunde la Esc, setați proprietatea Cancel la true. Asta e tot.

Da sau nu

Toate casetele de dialog care solicită acțiuni utilizator trebuie să aibă cel puțin două butoane: confirmarea acțiunii și respingerea acțiunii (Da/Nu, Salvare/Anulare etc.). Acțiunea poate fi anulată prin închiderea ferestrei cu butonul [X] din titlul ferestrei. Este inacceptabil dacă există un singur buton pentru a confirma acțiunea și pentru a o refuza ar trebui să închideți fereastra cu butonul [X] din titlu, sau nu există nicio posibilitate de refuz. Acest lucru derutează utilizatorul, ridicând o întrebare logică: cum să refuzi?

De asemenea, nu uitați ce s-a spus mai sus în paragraful „Butoane implicite”.

Toate casetele de dialog ar trebui să se deschidă în centrul ecranului

Centrate, nu acolo unde au fost create în modul design. În primul rând, este mai vizual și, în al doilea rând, elimină automat problema diferitelor rezoluții de ecran pentru diferiți utilizatori.

Se face o excepție dacă caseta de dialog nu este modală și, ca urmare a muncii utilizatorului în această fereastră, apar imediat modificări în fereastra principală (de exemplu, filtrarea unui set de date, redesenarea graficelor etc.).

Dimensiunile ferestrelor nu trebuie să depășească dimensiunea ecranului

În nici un caz. Este o rușine când o parte a ferestrei se extinde dincolo de ecran. Această cerință nu depinde de rezoluția ecranului utilizatorului, adică scuze precum „Lăsați-i să stabilească o rezoluție mai mare” nu funcționează.

Redimensionarea corectă a elementelor ferestrei

Elementele ferestrei ar trebui să se redimensioneze sau să se miște corect atunci când fereastra este redimensionată, când fereastra este maximizată și când fereastra este restaurată după maximizare.

Totul este mereu vizibil

Reducerea dimensiunii ferestrei nu ar trebui să ducă la dispariția elementelor ferestrei și, de preferință, nu ar trebui să ducă la apariția barelor de defilare (scroller) ale ferestrei în sine. Puteți limita dimensiunile minime ale ferestrelor astfel încât toate elementele să fie vizibile și accesibile. Dacă nu este posibil să plasați componente astfel încât să fie toate vizibile în fereastră, puteți utiliza marcaje (cum ar fi PageControl) pentru a împărți componentele în grupuri. De asemenea, nu ignorăm scuzele legate de rezoluția ecranului.

Sugestii peste tot, indicii mereu

Pentru butoane, în special pe barele de instrumente (cum ar fi ToolBar), indicațiile ar trebui specificate, astfel încât să fie întotdeauna clar de ce este nevoie de acest buton sau acela.

Gama de culori

Nu ar trebui să pictați componentele de pe formă în toate culorile curcubeului. Acest lucru obosește ochii și distrage atenția utilizatorului. Nu pare „mișto”. Evidențierea culorilor este folosită atunci când este necesar să atrageți atenția utilizatorului asupra ceva. element specific sau o anumită parte a ferestrei. De exemplu, înregistrările colorate care conțin erori cu culoare roșu deschis sau, dimpotrivă, înregistrările care au fost verificate cu succes cu culoarea verde deschis.

Concluzie

Există o metodă foarte bună care vă permite să găsiți defecte în program în general și în interfață în special. Este simplu: imaginează-te în locul utilizatorului și timp de o jumătate de oră încearcă să lucrezi așa cum lucrează el. Chiar mai bine dacă utilizatorul dvs. se află în raza de acoperire (de exemplu, lucrează în aceeași organizație). În acest caz, stai lângă el, sau mai bine zis, în locul lui, și încearcă să-și facă treaba. Introduceți date, modificați-le, afișați rapoarte etc. Dacă nu știți cum să o faceți corect, întrebați utilizatorul. Nu faceți doar una sau două operații de același tip, ca în modul de depanare, ci 20-30 sau chiar mai multe diverse operatii, în ordine diferită. Uitați să introduceți ceva sau să îl introduceți incorect și vedeți cum reacționează programul la el. Vei vedea destul de repede puncte slabe programul dvs.

Autorul articolului a automatizat activitatea comisiei de admitere la universitate, iar în primul an de introducere a programului, a petrecut 3-4 ore pe zi în comisia de admitere, înregistrând solicitanții, completându-le datele personale și emitându-le. rapoarte privind promovarea examenelor. Și în orele de lucru rămase a corectat erori și neajunsuri. Crede-mă, anul viitor practic nu vor mai fi probleme. Același lucru s-a întâmplat și la introducerea modulului de personal.

Astfel, țineți cont de experiența utilizatorului. Faceți-le ușor și plăcut să lucreze cu programele dvs.