Titlul documentului


Aplicatie cu un TAG transparent de tip text



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

Aplicatie cu un TAG transparent de tip text



<#text><#/text>



In exemplul de mai sus,TAG-ul <#text> poate fi utilizat in OnHTMLTag din

PageProducer pentru a introduce un text oarecare,care va fi trimis sub

forma de raspuns la solicitarea unui user.

La prima vedere,limbajul HTML pare complex.Nu va descurajati.Aplicati

pas cu pas,fiecare notiune,pana cand puteti redacta o pagina de WEB cu

aspectul dorit de d-voastra.Nu utilizati paginile produse decat dupa o

verificare atenta (este recomandabil sa consultati si un administrator

de retea (serviciul tehic al retelei Internet de care apartineti).


-50- Internet - TPageProducer

TPageProducer transforma o pagina HTML intr-un sir de comenzi HTML care

pot fi interpretate de catre o aplicatie de tip Web browser.Se poate

utiliza pentru a formula raspunsul expediat de catre dispecerul unei

astfel de aplicatii,spre clientul care a formulat solicitarea,sau se

poate utiliza pentru a modifica TAG-urile transparente,cu ajutorul

evenimentului OnHTMLTag.Mai mult,mai multe obiecte de tip PageProducer

se pot inlantui intr-o anumita ordine,pentru a forma un document nou.

Tag-urile transparente pot fi de tip: Link,Image,Table,ImageMap,Object,

Embed sau Custom.Ca rezultat,PageProducer poate modifica acest gen de

comenzi in interiorul unui document HTML,pentru a formula un nou tip

de raspuns,personalizat.Astfel,pornind de la acelasi document din arhiva,

aplicatia Web server poate formula raspunsuri personalizate in functie

de clientul care a formulat solicitarea.

Pentru a formula raspunsul se va utiliza o procedura de genul:

begin

PageProducer.HTMLFile:='Numele filei sursa.htm';

Response.Content:=PageProducer.Content;

end;

Principalele proprietati ale componentului PageProducer sunt HTMLDoc si

HTMLFile.

HTMLDoc se poate utiliza pentru a redacta un text in limbaj HTML,care

poate fi apoi preluat pentru formularea raspunsului catre client.

HTMLFile realizeaza direct link-ul spre o pagina HTML care va fi

expediata catre client sub forma de raspuns.

HTNLDoc si HTMLFile se anuleaza reciproc.Obiectul nu contine decat un

singur tampon de memorie si nu poate utiliza la un anumit moment dat,decat

una dintre cele doua proprietati.

Dintre metode,cea mai importanta este Content,care formuleaza textul

final realizat dupa conversia tag-urilor transparente.Se apeleaza pentru

a transmite raspunsul in versiunea finala.

Singurul eveniment este OnHTMLTag si se utilizeaza pentru a preciza

toate schimbarile suferite de documentul de baza.Contine toate conditiile

necesare pentru conversia tag-urilor transparente.

EXEMPLU: (vezi Prj47)

Salvati o fila si proiectul in Prj47.Adaugati un camp Memo,2 butoane si

doua obiecte PageProducer.Folositi object inspector pentru a selecta in

primul obiect PageProducer o fila HTML locala,in proprietatea HTMLFile,

si apoi atribuiti primului buton procedura:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add(PageProducer1.Content);

end;

Apoi,in HTMLDoc din cel de al doilea obiect PageProducer,editati un text

in limbaj HTML si atribuiti celui de al doilea buton procedura:

procedure TForm1.Button2Click(Sender:tObject);

begin

Memo1.Clear;

Memo1.Lines.Add(PageProducer2.Content);

end;

Tastati F9 si executati aplicatia.Apasati cele doua butoane.


-51-

Atunci cand se utilizeaza mai multe obiecte de tip PageProducer,pentru

a formula un document complex,sau pentru a distribui diferite raspunsuri

la solicitari,se poate utiliza un modul de date,de tip TDataModule care

este special conceput pentru arhivarea obiectelor non-vizuale.In acest

mod,toate componentele nonvizuale care opereaza asupra datelor pot fi

grupate intr-un modul separat,care va fi mult mai usor de actualizat,

transformat,depanat,etc.In plus,declaratiile si definitiile obiectelor

nu se amesteca cu procedurile efective din program si nu risca sa fie

corupte in cursul compilarii sau al depanarii datelor.Mai mult,modulul

de date astfel format,poate fi utilizat in mai multe aplicatii diferite.

EXEMPLU: (vezi Prj48)

Salvati o fila noua si proiectul in Prj48.Adaugati un camp Memo si un

buton.Apoi selecati din nou meniul File si alegeti New Data Module.In

fereastra mica denumita DataModule1,adaugati un component TPageProducer

si apoi utilizati object inspector pentru a seta o fila HTML in HTMLFile

(de exemplu: Text2.htm).Salvati fila in acelasi director,apoi deschideti

cu Open fila initiala din proiect.Pentru a putea avea acces la datele

din modul,alegeti din meniul File optiunea Use Unit si adaugati modulul

proaspat salvat,in lista de unitati.

Observati ca in fila de cod,dupa "implementation" a fost inserata si

comanda "uses Modul" (unde Modul este numele unitatii adaugate).

In continuare,datele din modul pot fi accesate ca si cand ar fi incluse

in proiect.Selectati butonul si adaugati urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Add(DataModule1.PageProducer1.Content);

end;

Tastati F9 si executati aplicatia.Este identica cu cea din Prj47,dar cu

diferenta ca datele sunt accesate printr-un modul separat.Modulul de

date poate fi copiat si utilizat ca atare in orice alta aplicatie.

Obiectul de tip TDataModul poate fi utilizat pentru a grupa toate

componentele nonvizuale din proiect: TSession,TSessionList,TDataBase,

TTable,TQuery,TStoredProc,TBatchMove,TTimer,TOpenDialog,TImageList,TOle-

Conteiner etc.

Daca se adauga si un obiect de tip TWebDispetcher,TDataModule este

echivalent cu TWebModule si poate fi utilizat pentru proiectarea de

aplicatii de tip WebServer.

Utilizarea de module separate pentru date si pentru comenzi este o

practica din ce in ce mai frecventa,mai ales in cazul aplicatiilor care

opereaza cu baze de date formatate.Programarea modulara,simplifica foarte

mult depanarea si modernizarea programelor.Practic,pentru fiecare versiune

noua,se inlocuieste doar unul dintre module,sau se adauga un modul nou.

Un obiect de tip PageProducer poate fi utilizat impreuna cu un browser

pentru a prelua datele de la o anumita adresa:

EXEMPLU: vazi Prj49

Salvati browserul din Prj44 in directorul Prj49.Adaugati un nou buton

denumit TTP si un obiect de tip PageProducer.Utilizati HTMLFile din Page-

Producer pentru a selecta o fila de tip HTML de la o adresa locala de

pe disc,apoi adaugati butonului TTP o procedura OnClick de genul:

HTML1.RequestDoc('file:///'+PageProducer1.HTMLFile);

Tastati F9.Butonul TTP va putea fi utilizat pentru afisarea filei locale.


-52-

Atunci cand o fila HTML contine si TAG-uri transparente (cele care

contin semnul # dupa <),se poate utiliza evenimentul OnHTMLTag pentru

a modifica dupa bunul plac continutul acestor TAG-uri.Astfel,pornind de

la un document initial,se pot formula mai multe tipuri de raspuns catre

aplicatia client.

EXEMPLU: vezi si Prj50

Salvati o fila noua si proiectul in Prj50.Adaugati un camp Memo,un buton

si un obiect PageProducer.Selectati in HTMLFile fila Text5.htm din

directorrul HTMLTXT,apoi alegeti Events si adaugati urmatoarea procedura

OnHTMLTag (dublu click):

procedure TForm1.PageProducer1HTMLTag(Sender: TObject;Tag :TTag;

const TagString:String;TagParams:tStrings;var Replacetext:String);

begin

if TagString='text' then

ReplaceText:='mesaj adaugat de PageProducer la textul initial !';

end;

Apoi selectati butonul si adaugati procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Add(PageProducer1.Content);

end;

Tastati F9 si executati aplicatia.Eventual,deschideti fila Text5.htm si

cu Prj48 sau Prj49 si observati diferenta.Tagul transparent a fost

utilizat pentru adaugarea mesajului personalizat.

In exemple am utilizat un camp memo pentru afisarea textelor HTML.

In aplicatiile reale,mesajul HTML este utilizat de aplicatia WebServer

pentru a formula raspunsul (Response.Content) ce va fi expediat aplicatiei

de tip WebBrowser care a solicitat informatia (unde va fi afisata intr-un

obiect de tip THTML).Aplicatiile in timp real din retea,sunt interactive

si schimba mesaje de tip Request si Response.Pentru fiecare mesaj de tip

Request se va trimite unul sau mai multe mesaje de tip Response.PagePro-

ducer se poate utiliza pentru selectarea si/sau modificarea unui astfel

de mesaj de raspuns.

Pentru a putea vizualiza rezultatul obtinut,in forma finala,puteti

salva textul produs de PageProducer intr-o fila HTML locala.

Pentru acest scop,adaugati in acelasi director o fila denumita Fila.htm

si apoi modificati procedura OnClick astfel:

procedure TForm1.Button1Click(Sender : TObject);

var F1: TextFile;

begin

Memo1.Lines.Add(PageProducer1.Content);

AssignFile(F1,'Fila.htm');

Rewrite(F1);

Write(F1,Memo1.Lines.Text);

CloseFile(F1);

end;

In continuare utilizati Internet Explorer pentru a deschide fila Fila.htm

comparativ cu fila sursa.

Daca utilizati frecvent astfel de file,puteti realiza un browser spe-

cializat pentru filele locale,care deschide automat fila HTML imediat

dupa ce a fost rescrisa.


-53- Internet- TQueryTableProducer

TQueryTableProducer este un obiect destinat pentru a transforma datele

preluate de un obiect TQuery,dintr-o baza de date,in tabel HTML.Datele

astfel formatate pot fi utilizate de o aplicatie WebServer pentru a

specifica raspunsul trimis catre aplicatia Client.Clientul,care este un

WebBrowser va receptiona si afisa datele sub forma de tabel HTML.

Pentru selectarea datelor,se utilizeaza un obiect de tip TQuery,care

utilizeaza instructiuni in limbaj SQL,pentru selectarea si formatarea

datelor extrase dintr-o arhiva,care contine o baza de date.TQueryYable-

Producer contine proprietatea Query,prin care se desemneaza obiectul

TQuery utilizat pentru preluarea datelor si o serie de proprietati care

pot fi utilizate pentru formatarea propriu-zisa a datelor selectate.

Aceste proprietati adauga un titul nou (Caption),explicatii care vor fi

afisate deasupra tabelului(Header) sau sub tabel(Footer),specifica numarul

maxim de coloane afisate(MaxRows) sau precizeaza aspectul fiecarei coloane

de date (Columns) sau al fiecarui rand din tabel (RowAttributes).

Dintre metode,cea mai importanta este Content,care returneaza sirul

de date in format HTML,rezultat dupa procesarea datelor.

Obiectul contine si un set de evenimente (OnCreatContent,OnFormatCell

si OnGetTableCaption) care pot fi utilizate pentru modificarea dinamica

a aspectului datelor afisate.

EXEMPLU: (vezi si Prj51)

Salvati o fila noua si proiectul in Prj51.Din Data Access adaugati un

component TDataSource si un component TQuery.Din Data Controls adaugati un

component TDBGrid.

Selectati DataSource1 si setati proprietatea DataSet la valoarea Query1

apoi selectati Query1 si setati proprietatea DatabaseName la valoarea

DBDEMOS(proma din lista),apoi selecati proprietatea SQL si adaugati in

obiectul String list editor urmatorul text: SELECT * FROM Biolife.db

Pentru a vizualiza datele selectate,alegeti proprietatea Active si

setati valoarea TRUE,apoi selectati obiectul TDBGrid si setati proprie-

tatea DataSource la valoarea DataSource1.

In mod normal,in obiectul TDBGrid se vor afisa datele din baza de date

solicitata.

Pentru a putea vizualiza si imaginile grafice,adaugati din DataControls

si un obiect DBImage.Setati pentru DBImage proprietatea DataSource la

valoarea DataSource1 si proprietatea DataField la valoarea Graphic.

Acum,daca deplasati cursorul,pentru fiecare rand din tabelul afisat

in TDBGrid se va afisa o alta imagine in TDBImage.

Operatiile de pana acum,sunt necesare pentru preluarea datelor dintr-o

baza de date.Pentru a transforma tabelul afisat,intr-un tabel HTML care

poate fi deschis de catre un WebBrowser,prin Internet,se va adauga si

un obiect de tip TQueryTableProducer.

Adaugati un astfel de obiect,si un camp de tip TMemo care va fi

utilizat pentru afisarea textului (Delphi 3 nu are un obiect comod pentru

afisarea datelor de tip HTML incluse in obiecte locale).

Selectati obiectul QueryTableProducer1 si setati proprietatea Query la

valoarea Query1.

In acest moment,datele din baza de date au fost preluate si in obiectul

QueryTableProducer si pot fi reformatate.Pentru a vedea tabelul in format

HTML,executati un dublu click pe proprietatea Columns (THTMLTableColumns).

Se va afisa o fereastra intitulata: Editing QueryTableProducer1.Columns


-54-

Pentru a schimba putin aspectul tabelului setati urmatoarele valori:

Border=3,BgColor=Lime,CellPadding=3,CellSpacing=5.Apoi apasati butonul

Add All Fields.Acum puteti schimba aspectul pentru fiecare coloana in

parte.De exemplu,alegeti SpeciesNo si selectati proprietatea BgColor=Red.

In continuare,utilizati fereastra de editare pentru a alege aspectul

dorit.Tabelul in format HTML va fi preluat de catre InternetExplorer cu

aspectul setat in aceasta fereastra(preview).

Inchideti fereastra.Daca doriti sa adaugati un titlu si explicatii

suplimentare,puteti utiliza proprietatile Caption,Footer,Header.Apoi

fixati numarul maxim de randuri preluate (De exemplu MaxRows=20).

Pentru a verifica daca obiectul opereaza corect,adaugati un buton

denumit OK si atribuiti acestui buton urmatoarea procedura OnClick:

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Add(QueryTableProducer1.Content);

end;

Tastati F9 si executati aplicatia.Observati ca tabelul va fi derulat

pana la valoarea specificata in MaxRows,iar in TMemo se vor afisa datele

din tabel transcrise in limbaj HTML.

Pentru ca datele din tabel sa poata fi preluate prin Internet,trebuie

ca aplicatia realizata sa fie inclusa intr-o aplicatie WebServer in care

va functiona pentru formularea raspunsului trimis spre client:

Response.Content:=QueryTableProducer1.Content

Cu o astfel de aplicatie,se pot prelua direct din retea,date arhivate

intr-o baza de date si se pot afisa aceste date in format HTML.In plus,

obiectul TQuery va putea utiliza limbajul SQL pentru a extrage datele

cat mai selectiv,iar obiectul QueryTableProducer se va putea utiliza

pentru a asigura un aspect grafic cat mai spectaculos (lizibil).

Observati usurinta cu care se poate manevra pentru a prelua date

dintr-o baza de date.Pentru intreaga aplicatie s-a utilizat o singura

linie de cod.In rest,obiectele vizuale din Delphi,contin proprietati

configurabile,care asigura toate link-urile necesare pentru efectuarea

unor operatii complexe.Daca se adauga si flexibilitatea limbajului SQL,

se pot formula solutii extrem de exacte de preluare a datelor din arhive.

Pentru exploatarea optima a obiectelor care exploateaza instructiunile

limbajului SQL este necesara cunoastrea completa a acestui limbaj.

Prezentarea exhaustiva a limbajului SQL,necesita un manual separat,dar

pentru a putea utiliza minimal componentele SQL,este necesara si o pre-

zentare simplista a notiunilor de baza.

Exista un numar destul de mare de versiuni ale limabjului SQL,cu

particularitati pentru unul sau mai multe dintre programele care opereaza

cu baze de date formatate.In acest manual se vor prezenta succint doar

cateva instructiuni simple,comune pentru toate versiunile de limbaj si

acceptate de catre majoritatea programelor de baze de date:Oracle,SysBase,

SQL Server,DB2,Access,My SQL etc. cuprinse in standardul ANSI din 1986.

Daca doriti sa utilizati Delphi pentru a scrie aplicatii specializate

in manipularea bazelor de date,este bine sa obtineti documentatia completa

atat pentru limbajul SQL cat si pentru programul de baza de date utilizat.

Pentru aplicatii ocazionale,sau de interes restrans,sunt suficiente info-

rmatiile prezentate in acest manual.Daca nu aveti un program specializat,

puteti utiliza si transforma tabelele din directorul Delphi 3/Demos/Data.


-55- SQL

LIMBAJUL SQL (Structured Query Language) (rezumat)
Limbajul SQL a fost dezvoltat de catre compania IBM,in anii '70 si

a fost standardizat de ANSI in 1986.Are ca scop accesarea si manipularea

datelor din bazele de date formatate.Exista un numar foarte mare de

sisteme de operare,care arhiveaza datele sub forma de baze de date,dar

toate aceste sisteme au un principiu comun: datele sunt arhivate sub

forma de tabele,formate din coloane si randuri.Formatul intern al datelor,

poate fi extrem de diferit,dar,pentru datele de interes public se utili-

zeaza doar formate acceptate de sistemele de operare comerciale.

Pentru operatii cu acest fel de date,se disting doua categorii de in-

structiuni: instructiuni pentru manipularea datelor (DML=Data Manipulation

Language) cum sunt: SELECT,UPDATE,DELETE,INSERT INTO si instructiuni

pentru definirea datelor (DDL=Data Definition Language) cum sunt:

CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX.

Limbajul propriu zis,mai contine si o serie de cuvinte de legatura si

un grup de operatori: = pentru egal,<> pentru diferit de,> pentru mai

mare,< pentru mai mic,<= pentru mai mic sau egal,>= pentru mai mare sau

egal,BETWEEN ... AND pentru cuprins intre,LIKE pentru asemenea si IN

pentru identic cu.

Datele din tabele pot fi in formatul curent al datelor: CHAR adica date

de tip caracter,FLOAT adica date numerice in virgula mobila,DATE adica

date calendaristice sau LOGICAL adica date booleene(true/false).

Pentru prezentarea si exemplificarea acestui limbaj,se poate utiliza

o aplicatie Delphi elementara.

EXEMPLU: vezi si Prj52

Salvati o fila si proiectul in Prj52.Adaugati un control TDataSource,

unul de tip TQuery si un obiect TDBGrid.

Setati DataSet din DataSource1 la valoarea Query1.Setati DatabaseName

din Query1 la valoarea DBDEMOS si DataSource din DBGrid1 la valoarea

DataSource1.

Din acest moment,aplicatia poate accepta comenzi SQL.

Alegeti SQL din Query1 si adaugati comanda:

SELECT * FROM Biolife.db apoi alegeti proprietatea Active si setati TRUE.

Puteti complia si executa obiectul cu F9.

In acest moment,obiectul DBGrid afiseaza toate datele din baza de date.

In comanda,caracterul * inlocuieste orice coloana de date din baza de

date.Pentru a formula o comanda mai selectiva,alegeti una dintre coloane

(de exemplu Common_Name).Schimbati Active la valoarea False,apoi selectati

SQL si introduceti urmatoarea comanda:

SELECT Common_Name FROM Biolife.db

apoi setati din nou Active la valaorea TRUE.

Observati ca in DBGrid au fost selectate doar datele din coloana care

contine numele comun al speciilor de peste.

Asadar,o comanda de tip SELECT trebuie sa specifice numele coloanei dorite

si numele bazei de date din care se extrag datele.

Daca doriti sa extrageti datele din doua sau mai multe coloane,se va

Yüklə 1,42 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   ...   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