Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Foxpro


Qdidactic » stiinta & tehnica » informatica » foxpro
Formatul de afisare si citire



Formatul de afisare si citire



Formatul de afisare sau introducere a unei date reprezinta o deschiere simbolica a modului in care o data este afisata pe dispozitivul de iesire sau este citita de la tastatura.

Formatul se descrie prin doua clauze: PICTURE, FUNCTION urmate de un sir de coduri. Codurile FUNCTION se refera la toate caracterele din format, iar codurile din PICTURE se refera la un singur caracter, cel de pe pozitia codului.

De exemplu: afisarea numarului 1234 depinde de sablonul deschis in clauza PICTURE, astfel:


picture ‘999’ . > va determina trunchierea numarului

picture ’99, 999’ . >determina introducerea separatorilor: 1, 234


Sablonul este util la introducerea de valori din exterior controland tipul datei. De exemplu, daca trebuie sa citim numai cifre, atunci sablonul pus in comanda care realizeaza citirea va avea sablonul „99999” pentru ca, in caz de introducere a unui caracter nenumeric, sa se avertizeze sonor eroarea.


Coduri de sablon pentru PICTURE


conversie in majuscule




afiseaza sirul definit de SET CURRENCY in locul unui zero nesemnificativ


afiseaza ”*” in locul unui zero nesemnificativ


permite cifre si semnul pentru numere


separator (in numeric)


pozitia punctului zecimal

A

permite doar litere

L

date logice

N

permite introducerea de litere si cifre

X

permite introducerea oricarui caracter

Y

permite introducerea de valori logice



Coduri de functie pentru clauza FUNCTION

cod

Semnificatie


converteste toate literele in majuscule


afiseaza numarul in format stiintific (mantisa si exponent)


afiseaza simbolul monetar definit de SET CURRENCY


afiseaza numerele negative intre paranteze

A

permite numai caractere alfabetice

B

aliniaza textul la stanga unui camp

C

afiseaza litera C (credit) dupa numerele pozitive

D

utilizarea formatului curent pentru data calendaristica

E

utilizarea formatului european de data calendaristica

I

centreaza textul in cadrul unui camp (numai SAY)

J

aliniaza textul la dreapta in cadrul unui camp numeric (numai SAY)

L

afiseaza zerourile nesemnificative intr-un camp numeric

M


defineste optiunile acceptabile pentru o variabila GET

R

permite introducerea in sablon a unor caractere fara semnificatie

S <n>

activeaza un mecanism de defilare orizontala intr-o fereastra

T

elimina spatiile din fata si din spate in cadrul unui camp

X

afiseaza DB(debit) dupa numerele negative

Z

inlocuieste valorile nule cu spatii


Comenzile ? si ??


Comanda de afisare pe care am folosit-o pana acum este ?/??. Ea poate avea si clauze de specificare a formatului.

In format general comanda ?/?? este:


?/?? <exp> [PICTURE <sablon>][FUNCTION <functie>] [AT <coloana>]

[, <exp> [PICTURE <sablon>][FUNCTION <functie>][AT <coloana>]..] [STYLE <tip-caracter>]


Se afiseaza valorile unei expresii sau a mai multora, conform clauzelor care le insotesc: PICTURE <sablon> defineste restrictii si formatul de afisare a fiecarui caracter din expresie: FUNCTION <functii> specifica formatul global pentru expresie. Clauza AT <coloana> defineste coloana unde se va afisa expresia. Clauza STYLE <tip-caracter> este o optiune pentru imprimanta definind stilul de imprimare.

Ambele comenzi folosesc ca punc de referinta in calculul coordonatelor de afisare, pozitia curenta a cursorului. Comanda ?? incepe afesarea datelor exact de la pozitia cursorului, pe cand comanda ? incepe afisarea datelor de la inceputul primei linii care urmeaza celei pe care se afla cursorul.

Daca imprimanta nu suporta stilul specificat, atunci optiunea se ignora. Stilul este dat printr-o litera:

B: pentru caractere ingrosate;

I: pentru caractere italice;

U: pentru subliniere;

R: pentru indexare sus;

L: pentru indexare jos.


Exemple:


32

? “ Salutari din “

?? “ Bucuresti “

Salutari din Bucuresti

? “ 2 + 3 = “ , 2 + 3

2 + 3 = 5

Observatie:

Afisarea se face in mod implicit pe ecran, dar poate fi dirijata si catre imprimanta daca exista comanda de activare a imprimantei (comutator ON).

Comanda de activare/dezactivare a imprimantei este:


SET PRINTER ON /OFF


Comanda @ SAY

Este o alta comanda de afisare cu format:


@ <linie,coloana> SAY <exp> [PICTURE <sablon>][FUNCTION <functie>][[OPEN] WINDOW <nume-fereastra>] [COLOR <per-color>]


Comanda afiseaza valoarea expresiei <exp> incepand din punctul de coordonate <linie>, <coloana> conform sablonului dat in clauza PICTURE, si/sau a functiei din FUNCTION. Clauza WINDOW permite afisarea intr-o fereastra anterior definita a unui camp memo. Clauza COLOR stabileste atributele culoare sub forma <ink>/<paper>.


Exemplu:

alfa = “ Lucrez in FoxPro”

@ 10 ,10 SAY alfa

@ 12 ,10 SAY alfa SIZE 2 , 10

efectul este urmatorul:

prima comanda: Lucrez in FoxPro

a doua comanda: Lucrez in

FoxPro

Exemplu:

CLEAR

mesaj = “ la multi ani ! “

@ 10 ,10 SAY mesaj PICTURE ' ! xxxxxxxxxxxxx '

La multi ani !

@ 12 ,10 SAY mesaj FUNCTION ' ! '

LA MULTI ANI !

@ 13 ,10 SAY mesaj PICTURE ' ! xx ! xxxxx ! xxxx '

La Multi Ani !

@ 14 ,10 SAY 2 / 3 PICTURE ' 99 . 9999 '


@ 15 ,10 SAY ' alternative ' FUNCTION ' ! x ! x ! x ! x ! x '

AlTeRnAtIv


Urmatoarele formate sunt echivalente :

PICTURE ' aaaaaa ' FUNCTION ' ! '

PICTURE ' ' FUNCTION ' a ! '

PICTURE ' @ ! aaaaaa '

PICTURE ' @ a !!!!!! '

Exemplu:

CLEAR

nume = ' '

prenume = '                 '

data_n =

data_cas =

@ 10 ,10 GET nume

@ 10 ,10 GET prenume

@ 10 ,10 GET data_n

@ 10 ,10 GET data_cas DISABLE

NOTE acest camp este doar afisat dar nu poate fi accesat datirita clauzei ; DISABLE

READ

Exemplu:

CLEAR

STORE 0 TO a , b

@ 10 ,10 GET a PICTURE ' 9999 '

@ 10 ,10 GET b PICTURE ' 9999 ' WHEN a<> 0

NOTE al doilea numar va fi citit doar daca primul este diferit de zero

READ

Exemplu:

CLEAR

data_n =

@ 10 ,10 GET data_n ;

MESSAGE ' Data nasterii in format ll / zz / aa '

READ

? ' Nascut la ' , data_n

Exemplu: pentru citirea unei valori numerice , situata intre 0 si 19 , se va folosi urmatoarea secventa:

CLEAR

a = 0

@ 10 ,10 GET a RANGE 0, 19

READ

iar pentru citirea unei date calendaristice, anterioara datei de 1 ianuarie 1970, se va folosi:

data =

@ 10 ,10 GET data RANGE

READ

Exemplu:

CLEAR

a = 0

b = SPACE ( 5 )

c = '1 2 3 4 5 6 7 '

@ 10 ,10 GET a SIZE 1 , 4 && se va citi pe 4 caractere

@ 11 ,10 GET b SIZE 1 , 7 && se va citi pe 7 caractere

@ 12 ,10 GET c SIZE 1 , 5

NOTE citirea se va face intr-o fereastra de 5 caractere, campul de ;

7 caractere defiland in aceasta fereastra

READ

CLEAR

@ 10 ,10 GET a PICTURE ' 99999 ' SIZE 1 , 7 && se va citi pe 5 caractere

@ 11 ,10 GET b PICTURE ' xxxxxx ' SIZE 1 , 4

NOTE pe ecran se va edita in 4 caractere, campul GET de ;

7 caractere defiland in aceasta fereastra

READ

CLEAR

Exemplu:

CLEAR

a = 0

b = 0

c = 0

@ 10 ,10 SAY ' Introduceti numerele '

@ 11 ,15 GET a PICTURE ' 99999 '

@ 11 ,10 GET b PICTURE ' 99999 ' VALID a < b

NOTE se primeste numai o valoare mai mare decat cea anterioara

@ 13 ,15 GET c PICTURE ' 99999 ' VALID c < c

READ

suma = a + b + c

@ 14 ,15 SAY suma PICTURE ' 99999 '

Exemplu: se vor citi datele personale ale unui salariat, in vederea unor prelucrari ulterioare

SET TALK OFF

CLEAR

nume = SPACE ( 10 )

prenume = SPACE ( 15 )

data_n =

strada = SPACE ( 15 )

nr = 0

localitate = SPACE ( 15 )

@ 5 ,10 SAY ' Introduceti numele '

@ 5 ,40 GET nume PICTURE REPLICATE (' x ' , 10)

@ 6 ,10 SAY ' Introduceti prenumele '

@ 6 ,40 GET prenume PICTURE REPLICATE (' x ' , 15)

@ 7 ,10 SAY ' data nasterii '

@ 7 ,40 GET data_n FUNCTION ' d ' RANGE

@ 8 ,10 SAY ' Introduceti strada '

@ 8 ,40 GET strada PICTURE REPLICATE (' x ' , 15)

@ 9 ,10 SAY ' numarul '

@ 9 ,40 GET nr RANGE 1 , 999 PICTURE

@ 10 ,10 SAY ' Introduceti localitate '

@ 10 ,40 GET localitate PICTURE REPLICATE (' x ' , 15) FUNCTION

READ


O comanda SAY si o comanda GET pot fi grupate, formand o singura comanda :

CLEAR

@ 10 ,10 SAY ' Introduceti un numar ' GET a DEFAULT 0 PICTURE ' 99999 '

READ

@ 15 ,10 SAY ' Ati introdus numarul '

?? a

Exemplu: se citesc doua numere strct pozitive, de maxim doua cifre, astfel incat primul numar sa fie mai mic decat al doilea, iar suma lor sa fie egala cu 11. o prima varianta de rezolvare a acestei probleme este reprezentata de urmatorul porgram:

SET TALK OFF

CLEAR

a = 0

b = 0

? ' Introduceti 2 numere strict pozitive care insumate sa dea 11'

@ 10 ,10 SAY ' Introduceti primul numar ' GET a PICTURE ' 99 ' VALID a > b

@ 11 ,10 SAY ' Introduceti al doilea numar ' GET b PICTURE ' 99 ' ;

VALID a < b and a + b = 11 and b > 0

READ

? a , ' < '' , b , ' si ' , a , ' + ', b , ' = ' , a + b

Acest program testeaza datele introduse de utilizator prin clauza VALID la nivelul comenzilor GET. Daca, din greseala, utilizatorul introduce 11 ca valoare a primului numar, la citirea celui de al doilea numar nu mai exeista nici o posibilitate de a corecta eroare anterioara. Daca se incearca introducerea valorii 0 pentru cel de-al doilea numar (singura care corespunde conditiei a + b = 11), clauza VALID a celei de-a doua comenzi GET se opune acestui lucru ( trebuie ca b> 0 si a < b ). Nu se va permite nici macar trecerea la campul GET anterior pentru a corecta eroarea si a introduce o alta valoare pentru primul numar. Programul trebuie incheiat printr-o apasare a tastei Esc , dupa care se poate reexecuta, pentru introducerea altor valori.

Problema aceasta isi gaseste o rezolvare mai buna prin folosirea unei clauze VALID la nivelul comanzii READ, avand, spre exemplu, urmatoarea varianta de program:

SET TALK OFF

CLEAR

a = 0

b = 0

? ' Introduceti 2 numere strict pozitive care insumate sa dea 11'

@ 10 ,10 SAY ' Introduceti primul numar ' GET a PICTURE ' 99 ' VALID a > 0

@ 11 ,10 SAY ' Introduceti al doilea numar ' GET b PICTURE ' 99 ' VALID b > 0

READ VALID a < b and a + b = 11

? a , ' < '' , b , ' si ' , a , ' + ', b , ' = ' , a + b

In acest caz, daca pentru primul numar se introduce valoarea 11, iar pentru cel de-al doilea numar valoarea 1, se va reveni in ultimul camp GET. In acest moment se pot modifica ambele valori ale celor doua variabile, testarea conditiilor a +b = 11 si a < b facandu-se numai la iesirea din comanda READ.

CLEAR

a = 0

b = 0

@ 10 ,10 SAY ' Introduceti primul numar ' GET a

@ 11 ,10 SAY ' Introduceti al doilea numar ' GET b

READ && citirea incepe cu cel de-al doilea numar

? a + b

Exemplu: se vor citi patru numere, pozitive, aflate in progresie aritmetica, dupa care se va afisa suma acestora:

SET TALK OFF

CLEAR

a = 0

b = 0

c = 0

d = 0

@ 10 ,10 SAY ' Introduceti numar 1 ' GET a PICTURE ' 99 ' VALID a >­= 0

@ 11 ,10 SAY ' Introduceti numar 2 ' GET b PICTURE ' 99 ' VALID b >­= 0

@ 12 ,10 SAY ' Introduceti numar 3 ' GET c PICTURE ' 99 ' VALID c >­= 0

@ 13 ,10 SAY ' Introduceti numar 4 ' GET d PICTURE ' 99 ' VALID d >­= 0

READ OBJECT 2 TIMEOUT 5 NUMOUSE VALID a + d = b + c COLOR , R+/BG

? ' uma este :' , a + b +c + d

Citirea incepe cu cel de-al doilea numar ( OBJECT 2 ), mouse-ul nu poate fi folosit pentru selectarea campurilor ( NOMOUSE ), iar timpul maxim de gandire al utilizatorului este 5 secunde ( TIMEOUT 5 ). Culorile folosite pentru campurile GET sunt : cerneala rosie pe fond albastru deschis. Conditia ca numerele sa fie in progresie aritmetica este data in clauza VALID a comenzii READ ( a + b = c + d ).

Observatie: Afisarea expresiilor are loc implicit pe ecran dar poate fi directionata si catre imprimanta, daca aceasta este activata prin comanda SET PRINTER ON sau catre un fisier de tip text. O comanda necesara este SET DEVICE.


SET DEVICE TO PRINTER/SCREEN/FILE <fis.txt>


Comanda directioneaza efectul comenzilor de afisare catre imprimanta, ecran, sau fisier de tip text.

Caracteristicile de culoare ale mediului FoxPro pot fi retinute in fisierul FOXUSER.DBF sub numele unui set de culori.

Un set de culori este o combinatie de 24 scheme de culori, fiecare schema descriind un anumit obiect al mediului Fox: ferestre utilizator, fereastra BROWSE, meniuri si submeniuri, zona de mesaje, etc.

O schema de culori va avea un numar de perechi de culori (maxim 10) pentru a defini elementele obiectului respectiv. De exemplu, schema de culori pentru fereastra BROWSE va trebui sa contina perechile de culori pentru definirea cadrului, a interiorului, a numelui de camp, a informatiilor selectate, a mesajelor.

Intr-o schema, perechile de culori de forma <ink>/<paper> sunt separate prin virgula si au o pozitie semnificativa.

Setul de culori curent poate fi modificat indicandu-se schema ce se modifica prin comanda:

SET COLOR OF SCHEME <nr1> TO <lista-per-cul>/SCHEMA <nr2>


unde <list-per-cul> specifica lista de perechi de culori care vor forma schema cu numar <nr1>.

Comanda de salvare pe disc in fisierul FOXUSER a schemei curente sub numele <nume-set>.


CREATE COLOR SET <nume-set>


Incarcarea unui set de culori din fisierul FOXUSER.DBF, salvat anterior, pentru a desemna setul curent se face prin comanda:


SET COLOR SET <nume-set>  


Crearea unui set de culori precum si salvarea pe disc se poate realiza si interactiv, prin meniul WINDOW/COLOR.





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright