PowerWeb application examples (Part 3)

Moderator: Moderatoren

Antworten
Benutzeravatar
Slavko
Rookie
Rookie
Beiträge: 9
Registriert: Mi, 20. Dez 2023 11:03
Wohnort: Negotin
Danksagung erhalten: 3 Mal
Kontaktdaten:

PowerWeb application examples (Part 3)

Beitrag von Slavko »

Hi,

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()

*============================================================================*
Bild

Bild


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%")

*============================================================================*
Bild

Bild


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}})

*============================================================================*
Bild

Bild
Best regards,

Slavoljub Damnjanovic
SD-SoftDesign, Alaska Software Technology Partner
https://www.sd-softdesign.com
https://www.sd-softdesign.rs
Antworten