The following application examples are included in the PowerWeb demo program. Their complete source code is included in the demo download file.
1. Car Ads - Application for browsing and editing car ads. It can be translated to Serbian, English and German language.
Code: Alles auswählen
FUNCTION Car(oSrv)
**
LOCAL aCaps,aCols,aCData,html,style
**
IF(EMPTY(HASSNGET(oSrv,"Lang")),CarSetLang_(oSrv),.T.)
HACKISET(oSrv,"lang",HASSNGET(oSrv,"Lang"))
HASSNSET(oSrv,"Path",HAPATH(oSrv) + "data\car")
aCaps = HASSNGET(oSrv,"aCaps")
**
aCols = {{"car_id",aCaps[ChdId],,70},;
{"TRIM(car_brand) + ' ' + TRIM(car_model)",aCaps[ChdName],,250},;
{"car_year",aCaps[ChdYear],,50},;
{"car_price",aCaps[ChdPrice],,60,,,,{clrDRed,clrBeige}}}
aCData = {{aCaps[CarBrand]," "},;
{aCaps[CarModel]," "},;
{aCaps[CarYear]," "},;
{aCaps[CarVol]," "},;
{aCaps[CarPower]," "},;
{aCaps[CarFuel]," "},;
{aCaps[CarBody]," "},;
{aCaps[CarDesc]," "},;
{aCaps[CarPrice]," "},;
{aCaps[CarCont]," "}}
**
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("DBFNTX",{{{"Car"},{"Car"}}},,,.T.)
**
style = ;
"@media screen and (min-width:1250px)" +;
" {#Div0 {width:auto; height:730px}" +;
" #CarDet {position:absolute; left:520px; top:110px}} " + chrCRLF +;
"@media screen and (max-width:1249px)" +;
" {#Div0 {width:auto; height:730px}" +;
" #CarDet {position:absolute; left:520px; top:110px}} " + chrCRLF +;
"@media screen and (max-width:1100px)" +;
" {#Div0 {width:95%; height:1080px}" +;
" #CarDet {position:absolute; left:0px; top:450px}}"
**
html = HDOCBGN(,{"files/car.js"},style,,aCaps[TtlHome],,,,,,,{"CarSetLang();"}) +;
HDLGBGN(,{1200},aCaps[PhdMain],icoPower,{,{,clrPBlue}},{,,,clrDefBG},;
{clrBlue,clrDSalmon},,"C") +;
CarHead(oSrv,aCaps) +;
HDIVBGN({10,,"R"},,,,,,{"Div0"}) +;
HHEAD({1},,aCaps[PhdHome],,{,{"mediumblue"}}) +;
HPARAG({,70},,aCaps[CarDet_],{{,12,"B"},{"brown"}}) +;
HBRWPGN({,110},,,aCols,{,,"CarPage"},,,,{"CarDetDisp"}) +;
HDIVBGN(,{480,540},{,{,clrIvory},,{20,10},,"A"},{2,,clrDCyan,10},,,;
{"CarDet"},,"visibility:hidden; max-width:90%") +;
HIMG(,{350,240},,"Photo",,{8,"R",clrCoral,5},"C",,{"CarImg"}) +;
HTABLE({,20,"M"},,aCData,{{,,,155,,,,"LT"},{,,,300}},,,;
{{,,.F.},{,,{,clrIvory}}},,{"CarTbl"}) +;
HSCRP("CarDetDisp(null,'" + TRIM(car_id) + "');") +;
HDIVEND() + HDIVEND() +;
CarFoot() + HDLGEND() + HDOCEND()
CLOSE
RETURN html
*============================================================================*
FUNCTION CarEdit(oSrv)
**
LOCAL aCaps,aCols,html,style
**
HACKISET(oSrv,"lang",HASSNGET(oSrv,"Lang"))
aCaps = HASSNGET(oSrv,"aCaps")
**
aCols = {{"car_id",aCaps[ChdId],,70},;
{"TRIM(car_brand) + ' ' + TRIM(car_model)",aCaps[ChdName],,250}}
**
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("DBFNTX",{{{"Car"},{"Car"}}},,,.T.)
**
style = ;
"@media screen and (min-width:1250px)" +;
" {#Div0 {width:auto; height:830px}" +;
" #Div2 {position:absolute; left:480px; top:130px}" +;
" #Toolbar {position:absolute; top:760px}} " + chrCRLF +;
"@media screen and (max-width:1249px)" +;
" {#Div0 {width:auto; height:830px}" +;
" #Div2 {position:absolute; left:480px; top:130px}" +;
" #Toolbar {position:absolute; top:760px}} " + chrCRLF +;
"@media screen and (max-width:1100px)" +;
" {#Div0 {width:95%; height:1200px}" +;
" #Div2 {position:absolute; left:0px; top:470px}" +;
" #Toolbar {position:absolute; top:1100px}}"
**
html = HDOCBGN(,{"files/car.js"},style,,aCaps[TtlEdit],,,,,,,{"CarSetLang();"}) +;
HDLGBGN(,{1200},aCaps[PhdMain],icoPower,{,{,clrPBlue}},{,,,clrDefBG},;
{clrBlue,clrDSalmon},,"C") +;
CarHead(oSrv,aCaps) +;
HDIVBGN({10,,"R"},,,,,,{"Div0"}) +;
HHEAD({1},,aCaps[PhdEdit],,{,{"mediumblue"}}) +;
HDIVBGN({,80},{420},{,,,,,"A"}) +;
HTOOLBAR(,,;
{{aCaps[BtnLogi],bmpLogin,"CarLogiClk()",,,{"LogiBtn"}},;
{aCaps[BtnLogo],bmpLogout,"CarLogoClk()",,,{"LogoBtn"},.T.}},;
{{110,30},,{,,,clrDefBG}}) +;
HSAY({250},{150},,{,12,"BU"},{clrDRed},{"LogUser"}) +;
HDIVEND() +;
HBRWPGN({,130},,,aCols,{,,"CarPage"},,,,{"CarSelDisp"},,{"CarList"}) +;
HDIVBGN(,{520,620},{,,,,,"A"},,,,{"Div2"}) +;
HFORMBGN(,,,,"multipart/form-data",{,{,clrIvory},,10},{,,clrBlue,5},,,;
{"CarForm"}) +;
HFORMTBL(,;
{{35,aCaps[CarId],{290,,10},,,,,{"CarId","CarId"}},;
{35,aCaps[CarBrand],{290,,20},,,,,{"CarBrand","CarBrand"}},;
{35,aCaps[CarModel],{290,,30},,,,,{"CarModel","CarModel"}},;
{35,aCaps[CarYear],{290,,4},,,,,{,"CarYear"}},;
{35,aCaps[CarVol],{290,,10},,,,,{,"CarVol"}},;
{35,aCaps[CarPower],{290,,20},,,,,{,"CarPower"}},;
{35,aCaps[CarFuel],{290,,20},,,,,{,"CarFuel"}},;
{35,aCaps[CarBody],{290,,20},,,,,{,"CarBody"}},;
{35,aCaps[CarDesc],{290,,100},,,,,{,"CarDesc"}},;
{35,aCaps[CarPrice],{290,,10},,,,,{,"CarPrice"}},;
{35,aCaps[CarCont],{290,,100},,,,,{,"CarCont"}},;
{35,aCaps[CarPhoto],{290,,100},,,,{,,.T.},{"CarPhoto","CarPhoto"}},;
{0,,{0,0},"FU",,,,{"CarUpld","CarUpld"},'ACCEPT="image/*"',,;
{,"CarUpldCng(this)"}}},;
{170,310}) +;
HFORMEND() +;
HIMG({,470},{175,120},,"Photo",,{,,clrMRed,3},,,{"CarImg"}) +;
HTOOLBAR({200,470},,;
{{aCaps[BtnLoad],bmpOpenFld,"document.all.CarUpld.click()",,,;
{"LoadBtn"},.T.},;
{aCaps[BtnClr],bmpClear,"CarClrClk()",,,{"ClrBtn"},.T.}},;
{{110,30},,{,,,clrDefBG}},,,,,"V") +;
HDIVEND() +;
HTOOLBAR(,,;
{{aCaps[BtnAdd],bmpNewDoc,"CarAddClk()",,,{"AddBtn"}},;
{aCaps[BtnEdit],icoEditText,"CarEditClk()",,,{"EditBtn"},.T.},;
{aCaps[BtnDel],icoTrash,"CarDelClk()",,,{"DelBtn"},.T.},;
{aCaps[BtnSave],bmpSave,"CarSaveClk()",,,{"SaveBtn"},.T.},;
{aCaps[BtnCanc],bmpDelete,"CarCancClk()",,,{"CancBtn"},.T.}},;
{{110,30},,{,,,clrDefBG}},,{"Toolbar"}) +;
HDIVEND() + CarFoot() +;
HEDITDATA(,;
{{35,aCaps[LogUser],{150,,20},,,,,{"User","User"}},;
{35,aCaps[LogPwrd],{150,,20},"P",,,,{"Pwrd","Pwrd"}}},;
{80,165},aCaps[LogTitle],,,,{"LogDlg"},"CarLogAct") +;
HSCRP(HSETGUI(.T.,.T.) + " GetDisable(1,11); CarSelDisp(null,'" +;
TRIM(car_id) + "');") +;
HDLGEND() + HDOCEND()
CLOSE
RETURN html
*============================================================================*
FUNCTION CarHead(oSrv,aCaps)
**
RETURN HMENU({3,3,"R"},,;
{{aCaps[MnuHome],bmpHome,"Car"},;
{aCaps[MnuEdit],icoEdit,"CarEdit",,{,,,,.T.}},;
{aCaps[MnuExit],bmpExit,"CarExit"}},;
{,,,{,,,clrDefBG}})
*============================================================================*
FUNCTION CarFoot(oSrv,aCaps)
**
RETURN HDIVBGN({10,,"R"},{200,50},{{,,"B"},{clrBlue}}) +;
HLINK({,,"I"},,"Sr","images/rs.png",,{,{20,13}},,;
"javascript:CarLangClk('sr')",,,,,"text-decoration:none") +;
HLINK({20,,"I"},,"En","images/gb.png",,{,{20,13}},,;
"javascript:CarLangClk('en')",,,,,"text-decoration:none") +;
HLINK({20,,"I"},,"De","images/de.png",,{,{20,13}},,;
"javascript:CarLangClk('de-DE')",,,,,"text-decoration:none") +;
HDIVEND()
*============================================================================*
2. Computer Shop - Application for purchasing computers. It is an Alaska WAA application example which is developed in the PowerWeb way.
Code: Alles auswählen
FUNCTION Comp(oSrv)
**
LOCAL html,;
aCols := {{"partno","PartNo",,60},;
{"producer","Producer",,200},;
{"computer","Computer",,200},;
{"LTRIM(STR(cpucount)) + ' ' + TRIM(cputype)",;
"Processors",,250},;
{"price","Price",,70,,"999999.99"},;
{,"Order",,40,"G",,,,,{30,"2S"}},;
{,"Quantity",,60,"G",,,,,{40,"SB",{1,10}}},;
{"jpg_image","Image",,120,"I"}}
**
HASSNSET(oSrv,"Path",HAPATH(oSrv) + "data\comp")
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("FOXCDX",{{{"Computer"},{"Computer"}}},,,.T.)
**
IF EMPTY(HAPARGET(oSrv,"sel"))
HASSNSET(oSrv,"aSel",{})
HASSNSET(oSrv,"bgets","")
ENDIF
**
html = HDOCBGN(,,,,"Computers - Shop") +;
HDLGBGN(,{1200},"Computer shop",icoPower,{,{,clrBeige}},{,,,clrDefBG},;
{clrOldLace,clrDGold},,"C") +;
CompHead(oSrv) +;
HHEAD({10,20,"M"},,"Super computers",,{,{"mediumblue"}}) +;
HSCRP("SetBGets('" + HASSNGET(oSrv,"bgets") + "');") +;
HBRWPGN({,40,"M"},{,600},,aCols,{,"CompGet","CompPage"},,,,,"C",;
{"Comp"}) +;
HBREAK(2) + HDLGEND() + HDOCEND()
CLOSE
RETURN html
*============================================================================*
FUNCTION CompOrd(oSrv)
**
LOCAL aData,aCols,html,style, aSel := HASSNGET(oSrv,"aSel")
**
style = ;
"@media screen and (min-width:1250px)" +;
" {#Div {width:720px; height:160px}" +;
" #Tbl2 {position:absolute; left:380px; top:0px}} " + chrCRLF +;
"@media screen and (max-width:1249px)" +;
" {#Div {width:720px; height:160px}" +;
" #Tbl2 {position:absolute; left:380px; top:0px}} " + chrCRLF +;
"@media screen and (max-width:850px)" +;
" {#Div {width:360px; height:350px}" +;
" #Tbl2 {position:absolute; left:0px; top:180px}} " + chrCRLF +;
"@media screen and (max-width:450px)" +;
" {#Div {width:85%; height:350px}" +;
" #Tbl2 {position:absolute; left:0px; top:180px}}"
**
IF !AEMPTY(aSel)
CompSel(oSrv,aSel,@aData,@aCols)
**
html = HDOCBGN(,{"files/comp.js"},style,,"Computers - Order",,,,,,,;
{HSETGUI(.T.)}) +;
HDLGBGN(,{1200},"Computer shop",icoPower,{,{,clrBeige}},{,,,clrDefBG},;
{clrOldLace,clrDGold},,"C") +;
CompHead(oSrv) +;
HHEAD({10,20,"M"},,"Order",,{,{"mediumblue"}}) +;
HTABLE({,40,"M"},,aData,aCols,,,,"C") +;
HDIVBGN({,40,"R"},,{,{clrDRed,clrLinen},,15},{3,"DB",clrDCyan,10},,;
"C",{"Div"}) +;
HFORMBGN({15,15},{"inherit","inherit"},,,,,,,,{"CustForm"}) +;
HFORMTBL(,;
{{40,"First name:",{240,,30},,,,,{,"F_FNAME"}},;
{40,"Last name:",{240,,30},,,,,{,"F_LNAME"}},;
{40,"EMail:",{240,,40},,,,,{,"F_EMAIL"}},;
{40,"Phone:",{240,,30},,,,,{,"F_PHONE"}}},;
{80,240}) +;
HFORMTBL(,;
{{40,"Street:",{240,,40},,,,,{,"F_STREET"}},;
{40,"City:",{240,,30},,,,,{,"F_CITY"}},;
{40,"State:",{240,,30},,,,,{,"F_STATE"}},;
{40,"Info:",,"2S",,,,{,"F_INFO"}}},;
{80,250},,,,,{"Tbl2"}) +;
HFORMEND() +;
HDIVEND() +;
HDIVBGN({,80,"M"},,{,,60,,"C"}) +;
HLINK(,,"Go to shop",bmpHome,;
{{,12,"B"},{clrDViolet,clrLBlue},,{5,25}},{,,,clrDefBG},;
{2,,clrMRed,5},HTTPREDIR("Comp",{{"sel","true"}},"L"),,,,,;
"text-decoration:none; white-space:nowrap") +;
HLINK({20,,"M"},,"Commit order",icoOK,;
{{,12,"B"},{clrDViolet,clrLBlue},,{5,15}},{,{16,16},,clrDefBG},;
{2,,clrMRed,5},"javascript:CompOrd();",,,,,;
"text-decoration:none; white-space:nowrap") +;
HDIVEND() + HBREAK() + HDLGEND() + HDOCEND()
ELSE
HASSNSET(oSrv,"Msg","Your basket is empty.")
HASSNSET(oSrv,"Addr","Comp")
html = HTTPREDIR("CompMsg")
ENDIF
RETURN html
*============================================================================*
FUNCTION CompSel(oSrv,aSel,aData,aCols)
**
LOCAL amnt,I, len := LEN(aSel), tot := 0
**
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("FOXCDX",{{{"Computer"},{"Computer"}}},,,.T.)
**
aCols = {{,"PartNo",,60},;
{,"Producer",,200},;
{,"Computer",,200},;
{,"Processors","Total",250},;
{,"Price",,70,,,,"R"},;
{,"Quantity",,60,,,,"R"},;
{,"Amount",,100,,,,"R"}}
aData = ARRAY(len)
FOR I=1 TO len
GO aSel[I,1]
amnt = price * aSel[I,2]
tot += amnt
aData[I] = {partno,producer,computer,LTRIM(STR(cpucount)) + " " +;
TRIM(cputype),price,aSel[I,2],amnt}
NEXT
aCols[7,3] = LTRIM(STR(tot))
CLOSE
RETURN .T.
*============================================================================*
FUNCTION CompHead(oSrv)
**
RETURN HMENU({3,3,"R"},,;
{{"Shop",bmpHome,"Comp?sel=true"},;
{"Basket",bmpBasket,"CompBask"},;
{"Order",bmpList,"CompOrd"},;
{"Exit",bmpExit,"CompExit"}},;
{,,,{,,,clrDefBG}},,,,"max-width:93%")
*============================================================================*
3. Event Management - Application for browsing and editing events. It is an Alaska CXP application example which is developed in the PowerWeb way.
Code: Alles auswählen
FUNCTION Evt(oSrv)
**
LOCAL html,style,;
aCols := {{"LEFT(title,25)","Title",,160},;
{"DTOC(s_date)","Start",,80},;
{"DTOC(e_date)","End",,80},;
{"LEFT(city,25)","City",,160}},;
aEData := {{"Location:"," "},;
{"Begin:"," "},;
{"End:"," "},;
{"Languages:"," "},;
{"Contact:"," "},;
{"Description:"," "},;
{"More:"," "}}
**
HASSNSET(oSrv,"Path",HAPATH(oSrv) + "data\event")
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("FOXCDX",{{{"Event"},{"Event","s_date"}}},,,.T.)
HASSNSET(oSrv,"RecNo",IF(RECCOUNT() > 0,RECNO(),0))
**
style = ;
"@media screen and (min-width:1250px)" +;
" {#Div0 {width:auto; height:600px}" +;
" #EvtDet {position:absolute; left:580px; top:110px}" +;
" #Toolbar {position:absolute; top:450px}} " + chrCRLF +;
"@media screen and (max-width:1249px)" +;
" {#Div0 {width:auto; height:600px}" +;
" #EvtDet {position:absolute; left:580px; top:110px}" +;
" #Toolbar {position:absolute; top:450px}} " + chrCRLF +;
"@media screen and (max-width:1150px)" +;
" {#Div0 {width:95%; height:980px}" +;
" #EvtDet {position:absolute; left:0px; top:450px}" +;
" #Toolbar {position:absolute; top:900px}}"
**
html = HDOCBGN(,{"files/event.js"},style,,"Events - browse",,,,,,,;
{HSETGUI(,.T.)}) +;
HDLGBGN(,{1200},"Event management",icoPower,{,{,clrOldLace}},;
{,,,clrDefBG},{clrIvory,clrDCyan},,"C") +;
EvtHead(oSrv) +;
HDIVBGN({10,,"R"},,,,,,{"Div0"}) +;
HHEAD({1},,"Browse events",,{,{"mediumblue"}}) +;
HPARAG({,70},,"Click on an event for details.",{{,12,"B"},{"brown"}}) +;
HBRWPGN({,110},{,310},,aCols,{,,"EvtPage"},,,,{"EvtDetDisp"}) +;
HDIVBGN(,{450,400},{,{,clrPeach},,10,,"A"},{,,clrBrown,5},,,;
{"EvtDet"},,"visibility:hidden; max-width:90%") +;
HHEAD(,,,2,{,{clrMRed}},,,{"EvtTtl"}) +;
HTABLE({,20,"M"},,aEData,{{,,,100,,,,"LT"},{,,,400,,,,"LT"}},,,;
{{,,.F.},{30,,{,clrPeach}}},,{"EvtTbl"}) +;
HDIVEND() +;
HTOOLBAR(,,;
{{"Add",bmpNewDoc,HTTPREDIR("EvtAdd",,"B")},;
{"Edit",icoEditText,HTTPREDIR("EvtEdit",,"B")},;
{"Delete",icoTrash,"EvtDelClk()"}},;
{{110,30},,{,,,clrDefBG}},,{"Toolbar"}) +;
IF(RECCOUNT() > 0,;
HSCRP("EvtDetDisp(null,null," + LTRIM(STR(RECNO())) + ");"),"") +;
HDIVEND() + HDLGEND() + HDOCEND()
CLOSE
RETURN html
*============================================================================*
FUNCTION EvtAdd(oSrv)
**
HASSNSET(oSrv,"RecNo",0)
RETURN EvtEdit(oSrv)
*============================================================================*
FUNCTION EvtEdit(oSrv)
**
LOCAL aCat[0],aStat[0],aCntr[0],html,style,m_title,m_cmnt,m_sdate,m_stime,;
m_edate,m_etime,m_cat,m_stat,m_lang,m_city,m_cntr,m_loc,m_name,m_email,;
m_www,;
aLang := {{"English","EN"}, {"German","DE"},{"Spanish","ES"},;
{"Dutch","NL"},{"French","FR"}},;
rec_no := HASSNGET(oSrv,"RecNo")
**
SET PATH TO (HASSNGET(oSrv,"Path"))
DBOPEN("FOXCDX",{{{"Event"},{"Event","s_date"}},;
{{"Event_key"},{"Event_key","fieldname"}},;
{{"Country"},{"Country"}}},,,.T.)
**
DBEVAL({|| AADD(aCntr,{TRIM(country),ccode})})
SELECT Event_key
DBEVAL({|| IF("category" $ fieldname,AADD(aCat,{TRIM(descriptio),token}),;
AADD(aStat,{TRIM(descriptio),token}))})
SELECT Event
IF rec_no > 0
GO rec_no
m_title = title; m_cmnt = comment; m_sdate = DTOI(s_date)
m_stime = s_time; m_edate = DTOI(e_date); m_etime = e_time
m_cat = category; m_stat = status; m_lang = lang
m_city = city; m_cntr = country; m_loc = location
m_name = cont_name; m_email = cont_email; m_www = www
ELSE
m_sdate := m_edate := DTOI(DATE())
ENDIF
CLOSE ALL
**
style = ;
"@media screen and (min-width:1250px)" +;
" {#EvtForm {width:auto; height:420px}" +;
" #Tbl2 {position:absolute; left:490px; top:0px}} " + chrCRLF +;
"@media screen and (max-width:1249px)" +;
" {#EvtForm {width:auto; height:420px}" +;
" #Tbl2 {position:absolute; left:490px; top:0px}} " + chrCRLF +;
"@media screen and (max-width:1000px)" +;
" {#EvtForm {width:auto; height:760px}" +;
" #Tbl2 {position:absolute; left:0px; top:440px}} " + chrCRLF +;
"@media screen and (max-width:500px)" +;
" {#EvtForm {width:90%; height:760px}" +;
" #Tbl2 {position:absolute; left:0px; top:440px}}"
**
html = HDOCBGN(,{"files/event.js"},style,,"Events - edit",,,,,,,;
{HSETGUI(.T.,.T.)}) +;
HDLGBGN(,{1200},"Event management",icoPower,{,{,clrOldLace}},;
{,,,clrDefBG},{clrIvory,clrDCyan},,"C") +;
EvtHead(oSrv) +;
HHEAD({10,20,"M"},,"Edit event",,{,{"mediumblue"}}) +;
HFORMBGN({10,20,"R"},,,,,,,,,{"EvtForm"}) +;
HFORMTBL(,;
{{35,"Title:",{290},,m_title,,,{,"Title"}},;
{120,"Description:",{290,100},"ML",m_cmnt,,,{,"Comment"}},;
{35,"Start:",,"D",m_sdate,,,{,"S_date"}},;
{-5,,,"T",m_stime,,,{,"S_time"}},;
{35,"End:",,"D",m_edate,,,{,"E_date"}},;
{-5,,,"T",m_etime,,,{,"E_time"}},;
{35,"Category:",{200},"CB",m_cat,aCat,,{,"Category"}},;
{35,"Status:",{200},"CB",m_stat,aStat,,{,"Status"}},;
{120,"Language:",{100,110},"LB",m_lang,aLang,{.T.},{,"Lang"}}},;
{110,310}) +;
HFORMTBL(,;
{{35,"City:",{290},,m_city,,,{,"City"}},;
{35,"Country:",{250},"CB",m_cntr,aCntr,,{,"Country"}},;
{120,"Location:",{290,100},"ML",m_loc,,,{,"Location"}},;
{35,"Contact name:",{290},,m_name,,,{,"Cont_name"}},;
{35,"EMail:",{290},,m_email,,,{,"Cont_email"}},;
{35,"WWW:",{290},,m_www,,,{,"WWW"}}},;
{110,310},,,,,{"Tbl2"}) +;
HFORMEND() +;
HTOOLBAR({10,50,"M"},,;
{{"Save",bmpSave,"EvtSaveClk()"},;
{"Cancel",bmpDelete,HTTPREDIR("Evt",,"B")}},;
{{110,30},,{,,,clrDefBG}},{{,,10}}) +;
HBREAK(2) + HDLGEND() + HDOCEND()
RETURN html
*============================================================================*
FUNCTION EvtHead(oSrv,aCaps)
**
RETURN HMENU({3,3,"R"},,;
{{"Browse",bmpHome,"Evt"},;
{"Edit",icoEdit,"EvtEdit",,{,,,,.T.}},;
{"Exit",bmpExit,"EvtExit"}},;
{,,,{,,,clrDefBG}})
*============================================================================*