|
Aplicatie cu un TAG transparent de tip text
|
səhifə | 7/16 | tarix | 03.01.2019 | ölçüsü | 1,42 Mb. | | #89992 |
|
<#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
Dostları ilə paylaş: |
|
|