Titlul documentului


Proprietatile sunt asemenatoare cu cele cele ale obiectului TQueryTable



Yüklə 1,42 Mb.
səhifə9/16
tarix03.01.2019
ölçüsü1,42 Mb.
#89992
1   ...   5   6   7   8   9   10   11   12   ...   16

Proprietatile sunt asemenatoare cu cele cele ale obiectului TQueryTable

Producer si sunt destinate pentru reformatarea datelor preluate:Columns,

Footer,Header,MaxRows,RowAttributes si TableAttributes.Dintre metode,

cea mai importanta este Content,care returneaza rezultatul conversiei

datelor din text in HTML.Obiectul contine si trei evenimente care pot fi

utilizate pentru controlul actiunilor executate.Astfel OnCreateContent

se poate utiliza pentru a returna un raspuns nul,OnFormatCell se poate

utiliza pentru a schimba formatul unei singure celule(de exemplu efect

de clipire automata) iar OnTableCaption se poate utiliza pentru a schimba

dinamic titlul tabelului returnat.

EXEMPLU: vezi Prj53

Salvati o fila noua si proiectul in Prj53.Adaugati din Data Access un

component TDataSource si un component TTable.Apoi adaugati un component

TDataSetTableProducer iar din Standard adaugati un camp TMemo si un

buton.

Selectati DataSource1 si setati DataSet la valoarea Table1,apoi alegeti

Table1 si setati DatabaseName la valoarea DBDEMOS,alegeti pentru TableName

o valoare oarecare(De exemplu: COUNTRY.DB) si apoi setati Active la va-

loarea TRUE.Apoi selectati DataSetTableProducer1 si setati DataSet la

valoareaTable1.

In acest moment,in Columns trebuie sa fie afisate datele din tabelul

selectat.Utilizati obiectul Editing DataSetTableProducer1.Columns pentru

a schimba aspectul datelor dupa bunul plac.Modificati Border,BgColor,

Cellpadding si Cellspacing apoi puteti selecta AddAllFields si puteti

modifica fiecare coloana in parte.

Pentru a vizualiza textul rezultat in urma conversiei,atribuiti buto-

nului urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Add(DataSetTableProducer1.Content);

end;

Tastati F9 si executati aplicatia.In Memo1 se va afisa textul rezultat.

Pentru a salva datele produse intr-o fila locala,adaugati in Prj o fila

goala denumita Fila1.htm (vezi Prj54).Apoi modificati procedura OnClick

atribuita butonului astfel:

procedure TForm1,Button1Click(Sender: TObject);

var F1:TextFile;

begin

Memo1.Lines.Add(DataSetTableProducer1.Content);

AssignFile(F1,'Fila1.htm');

Rewrite(F1);

Write(F1,Memo1.Lines.Text);

CloseFile(F1);

end;

Puteti deschide Fila1.htm cu Internet Explorer pentru a vedea rezultatul.


-63- Internet - TWebDispatcher

Dupa cum se preconizeaza si din denumire,TWebDispatcer este un dispe-

cer de comenzi.Este proiectat pentru a selecta un anumit raspuns posibil,

dintre mai multe raspunsuri alternative,in cadrul unei aplicatii de Web.

Practic functioneaza ca o mini centrala telefonica,implementata la nivel

de software.Impreuna cu un obiect de tip DataModule este exchivalent cu

un obiect TWebModule.Se utilizeaza pentru a transforma o aplicatie lo-

cala,intr-o aplicatie de tip WebServer(Exemplu: pentru a permite accesul

din retea la un tabel arhivat intr-o baza de date locala).

Nu poate fi utilizat impreuna cu TWebModule,deoarece o aplicatie de

tip Web poate avea un singur dispecer(TWebModule are un TWebDispatcher

inclus).Cele doua componente se exclud reciproc.Dispecerul administreaza

o colectie intreaga de elemente,care pot avea alocate actiuni proprii.

Pentru editarea acestor elemente si a procedurilor atribuite lor se poate

utiliza proprietatea Actions,respectiv editorul Editing WebDispatcher.

Utilizati butonul Add,apoi alegeti actiunea si utilizati Object Inspector

pentru a seta proprietatile si evenimentele OnAction.

Un astfel de dispecer poate fi utilizat si in aplicatiile locale,nu doar

in cele din retea.

EXEMPLU: (vezi si Prj55)

Salvati o fila noua si proiectul in Prj55.Adaugati un camp TMemo si un

buton.Apoi alegeti din meniul File optiunea New DataModule.Adaugati in

modulul de date un obiect TWebDispatcher.Selectati dispecerul si alegeti

din Object Inspector Actions.In fereastra de editare,utilizati butonul Add

pentru a adauga cinci elemente (Items).Denumiti aceste elemente:

Actiunea 1...Actiunea 5 (selectati elementul si apoi setati proprietatea

Name la denumirea dorita).Inchideti fereastra de editare si apoi compilati

unitatea Unit1.Apoi selectati din nou fila initiala (cea care contine

butonul) si alegeti din Meniul File optiunea Use Unit.Utilizati optiunea

pentru a adauga unitatea in lista de unitati.In acest moment,datele din

modul si respectiv din componentul TWebDispatcer pot fi accesibile si din

fila Form1.Selectati butonul si adaugati urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

var nr:integer;

begin

Memo1.Clear;

for nr:=0 to 4 do

Memo1.Lines.Add(DataModule1.WebDispatcher1.Actions.Items[nr].Name);

end;

Tastati F9 si executati aplicatia.

La apasarea butonului,in campul TMemo se va afisa lista elementelor din

dispecer.In situatia in care un astfel de dispatcher este amplasat in

server-ul WEB,din retea se va putea apela unul dintre aceste elemente,sau

procedura care este atribuita elementului respectiv (asemanator cu modul

in care o aplicatie locala poate accesa elementele si procedurile dispe-

cerului).

Dispecerul poate fi utilizat si pentru a executa selectiv o serie

intreaga de proceduri locale,sau in retea.Se realizeaza astfel un modul

executabil,care poate fi apelat atat local,cat si din retea.Pentru acest

scop,se arhiveaza in dispecer un numar oarecare de elemente si apoi se

atribuie cate o procedura pentru fiecare element.Din retea se va utiliza

o solicitare de tip Request,iar local se va apela direct procedura.


-64-

EXEMPLU: (vezi Prj56)

Salvati o fila noua si proiectul in Prj56.Adaugati in fila un camp TMemo

si doua butoane (denumite Actiune 1 si Actiune 2).Apoi adaugati un modul

de date (cu New DataModule) si adaugati in acest modul un obiect de tip

TWebDispatcher.Utilizati Actions si adaugati doua elemente denumite

Actiune1 si Actiune2.Selectati pe rand cele doua elemente si atribuiti

pentru fiecare dintre ele un eveniment OnAction:

procedure TDataModule1.WebDispatcher1Actiune1Action(Sender: TObject;

Request: TWebRequest;Response: TWebResponse; var Handled: Boolean);

begin

beep;

end;

si respectiv:

procedure TDataModule1.WebDispatcher1Actiune2Action(Sender: TObject;

Request: TWebRequest;response: TWebResponse; var Handled: Boolean);

begin

beep;

sleep(500);

beep;

end;

Compilati si salvati unitatea,apoi utilizati File si Use Unit pentru a

adauga acest modul in lista de unitati pentru Form1.Apoi selectati pe

rand cele doua butoane si atribuiti urmatoarele proceduri OnClick:

procedure TForm1.Button1Click(Sender: TObject);

var a1: TWebrequest;

b1: TWebresponse;

c1: boolean;

begin

a1:=DataModule1.WebDispatcher1.Request;

b1:=DataModule1.WebDispatcher1.Response;

Memo1.Clear;

Memo1.Lines.Add('Executa comanda Actiune 1 !');

Memo1.Lines.Add('(beep)');

DataModule1.WebDispatcher1Actiune1Action(Sender,a1,b1,c1);

end;

si respectiv pentru cel de al doilea buton:

procedure TForm1.Button2Click(Sender: TObject);

var a2: TWebRequest;

b2: TWebResponse;

c2: Boolean;

begin

a2:=DataModule1.WebDispatcher1.Request;

b2:=DataModule1.WebDispatcher1.Response;

Memo1.Clear;

Memo1.Lines.Add('Executa comanda Actiune 2 !');

Memo1.Lines.Add('(beep...beep)');

DataModule1.WebDispatcherActiune2Action(Sender,a2,b2,c2);

end;

Tastati F9 si executati aplicatia.Cele doua butoane vor executa alternativ

cele doua proceduri (un beep sau doua beep-uri).Daca se amplaseaza apli-

catia intr-un server,cele doua proceduri vor putea fi apelate din retea.


-65-

Pentru a putea prelua un tabel dintr-o baza de date si a trimite acest

tabel in retea,sub forma de fila HTML,se va putea realiza o aplicatie

care combina o serie dintre componentele prezentate pana acum:

EXEMPLU: (vezi si Prj57)

Salvati un modul de date si proiectul in Prj57.Adaugati un TWebDispatcher,

un TDataSetTableProducer si din Data Access adaugati un obiect DataSource

si un obiect TTable.

Setati proprietatea DataSet din DataSource la valoarea Table1.Apoi selec-

tati Table1 si setati DatabaseName la valoarea DBDEMOS,respectiv proprie-

tatea TableName la valoarea EVENTS.DB (sau orice alt tabel din baza de

date) si apoi proprietatea Active la valoarea True.

Selectati DataSetTableProducer1 si setati proprietatea DataSet la valoarea

Table1,apoi utilizati Columns pentru a selecta aspectul HTML al tabelului

preluat (vezi TDataSetTableProducer).

In final,alegeti obiectul WebDispatcher,utilizati Actions pentru a

adauga o proprietate (Exemplu: Evenimente).Selectati elementul si apoi

setati pentru acest element proprietatea Default la valoarea True.

Adaugati si o cale de acces prin setarea proprietatii PathInfo (Exemplu

la valoarea "act1").Apoi alegeti Events si atribuiti urmatoarea procedura

OnAction:

procedure TDataModule1.WebDispatcher1EvenimenteAction(Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

begin

Response.Content:=DataSetTableProducer1.Content;

end;

Compilati aplicatia (modulul nu executa nimic).

In aplicatia realizata,dispecerul are ca metoda implicita(default) pro-

cedura atribuita elementului "Evenimente",care formuleaza raspunsul

aplicatiei atribuind valoarea returnata de obiectul TDataSetTableProducer.

Practic,daca aplicatia este arhivata intr-un server,poate fi apelata din

retea cu o solicitare (Request) in care se va specifica adresa serverului,

si numele aplicatiei.In cazul in care dispecerul contine mai multe ele-

mente solicitarea se va face cu o formula de genul:

URL + numele aplicatiei + elementul + calea de acces

( EXEMPLU: URL + Prj56.dll + Evenimente + act1 )

La primirea unei astfel de solicitari,serverul va returna catre client

un mesaj de raspuns care contine tabelul in format HTML,asa cum poate fi

vazut in TDataSetTableProducer.Columns.

Teoretic,aceste elemente sunt suficiente pentru a putea crea o aplicatie

de tip WebServer.Practic,pentru a exclude orice eroare sau disfunctionali-

tate este bine sa va consultati cu administratorul de retea,inainte de a

incerca sa realizati si sa aplicati acest gen de aplicatii.Pentru publi-

carea aplicatiilor de tip WEB,este bine sa utilizati doar servere specia-

lizate.Bineinteles ca este posibil sa transformati calculatorul personal

intr-un server WEB,dar acest fapt este nepractic si nerecomandabil,din

urmatoarele motive:

-serverul WEB trebuie sa functioneze nonstop (cu consum mare de energie)

-serverul WEB trebuie sa detina mijloace avansate de protectie impotriva

"hack-erilor" si a "virus-urilor accidentale"

-procesorul este ocupat pentru deservirea retelei (asteapta solicitari)

-nu va va ridica nimeni,nici un monument (dimpotriva !).


-66- Web Server Application

Pentru a realiza o aplicatie de tip Web Server,exista si un component

specializat.Acest obiect,nu este localizat impreuna cu celelalte obiecte

din paleta Internet,ci este localizat in meniul File|New.Pentru a utiliza

un astfel de modul,alegeti File,apoi New si selectati Web Server Applica-

tion.Apoi alegeti una dintre cele trei variante posibile (ISAPI/NSAPI DLL,

CGI Stand-alone sau Win-CGI Stand-alone) si confirmati cu OK.In locul

ferestrei Form1 se va afisa un modul denumit WebModule1.Acest obiect este

practic format din: DataModule + WebDispatcher.Se poate utiliza atat

pentru a grupa componentele nonvizuale,necesare pentru implementarea apli-

catiei,cat si pe post de dispecer (la fel ca si WebDispatcher).

Mai mult decat atat,WebModule1 se poate utiliza pentru a crea un link

spre orice alta fila executabila.Se poate realiza astfel un short-cut spre

fila respectiva,sau se poate utiliza pentru ca fila respectiva sa poata

deveni vizibila in retea.

EXEMPLU: (vezi si Prj58)

Deschideti o aplicatie Web Server Application (din File + New).Selectati

modulul WebModule1,apoi alegeti din meniul principal optiunea Run,apoi

Parameters iar in fereastra Run parameters utilizati butonul Browse

pentru a selecta o aplicatie "Host application".De exemplu alegeti fila

Proiect40.exe din Prj40.Confirmati cu OK,apoi tastati F9.Observati ca

aplicatia d-voastra va lansa direct programul din Prj40.Salvati fila si

proiectul in directorul Prj58.In continuare,daca arhivati Prj58 in Server

Prj40 va putea fi executat si din retea (va fi vizibil in retea).

In rest,WebModule este identic cu DataModule+WebDispatcher.Puteti uti-

liza Actions pentru a transforma obiectul in dispecer.

In general,o aplicatie WEB Server este utilizata pentru a realiza un

schimb de date intre doua unitati de lucru din retea.Schimbul de date se

realizeaza sub forma de solicitare (Web Request) si raspunsul selectat

(Web Response).In momentul in care dispecerul primeste un mesaj de soli-

citare,alege din lista sa de elemente,pe cel care corespunde cu datele

de identificare din mesajul de solicitare.In continuare,elementul ales

(Action Item) va apela procedura asociata,pentru a formula raspunsul

aplicatiei.Dupa formulare,raspunsul (Web Response) va fi expediat catre

clientul solicitant.Cu cat dispecerul contine mai multe elemente distincte

cu atat raspunsul formulat va fi mai nuantat.Daca nici unul dintre ele-

mente nu corespunde cu datele solicitate,se va returna raspunsul selectat

cu proprietatea Default=True (se va returna raspunsul implicit).

Acest gen de aplicatii nu poate fi activat pe un calculator izolat,ci

doar pe un server de retea (care are instalat un software special de tip

Personal Server,Windows NT etc.).Nu este recomandabil sa invatati acest

tip de aplicatii pe cont propriu (este preferabil sa urmati un curs

specializat).Aplicatiile de retea,pot afecta un numar nedeterminat de

utilizatori ai retelei si orice eroare mica se transforma in tragedie.

Cele trei tipuri de file realizate,sunt fie de tip DLL,fie de tip .exe

si prezinta unele particularitati.Alegeti tipul de fila dorit,in functie

de tipul de server care va deservi aplicatia si in functie de tipul de

clienti care vor solicita aplicatia.

Pentru aplicatiile de Web,s-a impus tot mai mult standardul "ActiveX

technology" care utilizeaza obiecte de tip OLE si respectiv limbajul HTML

pentru editarea datelor de tip text.Documentele non-HTML si executabilele

in format binar,risca sa fie identificate ca "potentiali virusi".


-67- Data Access - DataSource

Restul obiectelor din paleta Internet(FTP,HTTP,NNTP,POP,SMTP si TCP),

sunt controale invizibile de tip ActiveX,destinate pentru a facilita

schimbul de date,prin protocoale specializate.Fiecare obiect este destinat

pentru un anumit tip de protocol de comunicatie.TCP si UDP,contin cate

un WinSocket atat pentru server cat si pentru client,astfel incat pot

fi utilizate atat pe post de server cat si pe post de client(asincron).

Aceste obiecte au o utilitate mai redusa si prezentarea lor detaliata

nu face obiectul acestui manual.Cei interesati,pot prelua de pe Internet

documentele RFC care descriu fiecare dintre aceste protocoale de comuni-

catie.Pentru activitatile banale si pentru programarea unor aplicatii,

sunt suficiente obiectele descrise anterior.Directorul Demos/Internet

contine cateva exemple functionale.Dintre acestea FTP,poate fi utilizat

cu succes pentru preluarea de file non-HTML,de la un server FTP.
Urmatoarea paleta de obiecte,denumita DataAccess contine componente

special concepute pentru a facilita accesul la datele arhivate in baze

de date sub forma de tabele(grid).Aceste obiecte nu functioneaza inde-

pendent ci doar in sinergism cu obiectele din paleta DataControls,care

vor afisa datele preluate.Doua sau mai multe astfel de obiecte,pot

realiza diverse variante de selectie si prezentare a datelor extrase din

baza de date.Pentru bazele de date mici (tabele izolate) se vor utiliza

obiecte care afiseaza tabelele integral (toate randurile si toate coloane-

le).Pentru baze de date mari si foarte mari,se pot realiza diverse combi-

natii de obiecte si proprietati,astfel incat datele extrase sa reflecte

cat mai fidel necesitatile utilizatorului.Aplicatiile de acest gen,se

proiecteaza astfel incat utilizatorul sa poata controla cat mai usor,

atat modul de selectie,cat si formatul de afisare a datelor preluate.

TDataSource -este componentul care va fi utilizat ca sursa de date,pentru

restul componentelor care prelucreaza datele.Practic este echivalent cu

un tampon de memorie RAM in care datele preluate din baza de date sunt

stocate temporar,inainte de a fi prelucrate de celelalte componente.In

acest tampon de memorie,datele pot fi editare,reformatate etc.TDataSource

nu poate fi utilizat decat impreuna cu un obiect care preia datele din

baza de date cum sunt: TTable sau TQuery,etc. Obiectul contine si cateva

proprietati si metode,destinate pentru editarea sau actualizarea datelor.

Dupa preluarea datelor in DataSource,toate obiectele linkate de acest

obiect opereaza asupra datelor din DataSource (in loc sa opereze asupra

datelor din baza de date).Acest fapt prezinta o serie de avantaje,dintre

care cel mai important este faptul ca datele pot fi prelucrate in diverse

moduri,fara ca sursa de date sa fie modificata de loc.Astfel,intr-o retea,

un numar oarecare de utilizatori pot prelucra aceeasi baza de date,cu

rezultate complet diferite,fara ca baza de date sa sufere modificari.

Fiecare utilizator,va arhiva in calculatorul sau rezultatul obtinut,fara

sa modifice baza de date (Exemplu: analiza actiunilor bancare dintr-o

bursa de actiuni structurata electronic: RASDAQ etc.).

Este importatnt de inteles rolul acestui component,deoarece detine un

rol cheie in executie.In eventualitatea unui volum excesiv de date,este

posibil ca acest obiect sa fie suprasaturat cu informatii.Pentru depanarea

rapida a unei astfel de aplicatii,este suficient sa inlocuiti obiectul

DataSource supradopat,cu un obiect DataSource nou (in cazul in care apli-

catia a functionat un timp oarecare,apoi s-a blocat).

-68-

De exemplu,pentru a prelua si afisa cateva imagini dintr-o baza de

date,este necesar un obiect DataSource(tamponul local),un obiect TTable

(asigura accesul la date) si un obiect TDBImage(afiseaza datele).Optional

se poate adauga si un obiect TDBNavigator(pentru a facilita deplasarea

in baza de date).

EXEMPLU: (vezi si Prj59)

Salvati o fila noua si proiectul in Prj59.Adaugati din DataAccess un

obiect TDataSource si un obiect TTable,apoi adaugati din DataControls un

obiect TDBImage si un obiect TDBNavigator.

Alegeti DataSource1 si setati proprietatea DataSet la valoarea Table1.

Apoi alegeti DBNavigator si setati proprietatea DataSource la valoarea

DataSource1.Selectati Table1 si setati proprietatea DatabaseName la va-

Yüklə 1,42 Mb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   ...   16




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin