Visual Extend 7.1 Change History
Copyright © dFPUG c/o ISYS GmbH 2003
Date: 2002-12-12
Classlibrary: VFXFORM
Class: cPickDialog
Method: Init
Classification:
Enhancement
Reason for change:
Enable the hotkey for ‘maintenance’ in pickdialogs.
New Code:
LPARAMETERS topickfield, tnsqlconnection
THISFORM.extrabuffer = "[CANCEL]"
topickfield.ldovalid = .F.
THIS.opickfield = .NULL.
THIS.opickfieldref = topickfield
THIS.lworkonview = THIS.opickfieldref.lworkonview
IF !EMPTY(topickfield.cpickcaption)
THIS.CAPTION = topickfield.cpickcaption
ENDIF
THISFORM.cformname = "_PickDialog"+ALLTRIM(topickfield.ctablename)
IF !THIS.lsaveposition
THIS.AUTOCENTER = .T.
ENDIF
THIS.cworkalias = "X"+SUBSTR(SYS(2015),4,7)
LOCAL lctable, lctag, lccursor
lctable = topickfield.ctablename
lctag = topickfield.ctagname
lccursor = THIS.cworkalias
IF THIS.lworkonview
DO CASE
CASE topickfield.luserpreparepickdata
LOCAL loform
loform = getparentform(topickfield)
IF !ISNULL(loform)
SET DATASESSION TO loform.DATASESSIONID
topickfield.preparepickdata(lccursor)
ENDIF
loform = .NULL.
RELEASE loform
IF !USED(lccursor)
THISFORM.RELEASE()
RETURN .F.
ENDIF
THISFORM.cqueryarg = ""
CASE topickfield.lusespt
IF !EMPTY(NVL(tnsqlconnection, 0)) AND tnsqlconnection > 0
LOCAL lcsql
THISFORM.nsqlsharedconnection = tnsqlconnection
lcsql = DBGETPROP(lctable, "VIEW", "SQL")
IF AT("?", lcsql) > 0
lcsql = clearsqlparameters(lcsql)
ENDIF
vfxsqlexec(THISFORM.nsqlsharedconnection, lcsql, (lccursor))
THISFORM.cqueryarg = ""
ELSE
USE (lctable) IN 0 ALIAS &lccursor AGAIN SHARED NODATA
ENDIF
OTHERWISE
USE (lctable) IN 0 ALIAS &lccursor AGAIN SHARED NODATA
ENDCASE
SELECT (lccursor)
IF !EMPTY(topickfield.cindexexpr)
lcindexexpr = topickfield.cindexexpr
INDEX ON &lcindexexpr TAG (lccursor)
SET ORDER TO TAG (lccursor)
ENDIF
IF !EMPTY(topickfield.cfilterexpr)
LOCAL lcfilterexpr
lcfilterexpr = topickfield.cfilterexpr
SET FILTER TO &lcfilterexpr
ENDIF
ELSE
IF EMPTY(lctag)
USE (lctable) IN 0 ALIAS &lccursor AGAIN SHARED
SELECT (lccursor)
IF !EMPTY(topickfield.cindexexpr)
lcindexexpr = topickfield.cindexexpr
INDEX ON &lcindexexpr TAG (lccursor)
SET ORDER TO TAG (lccursor)
ENDIF
ELSE
USE (lctable) IN 0 ALIAS &lccursor ORDER TAG (lctag) AGAIN SHARED
SELECT (lccursor)
lcindexexpr = KEY()
ENDIF
SELECT (lccursor)
LOCAL lcseek
IF EMPTY(topickfield.cseekvalue)
IF UPPER(topickfield.BASECLASS) = "CONTAINER"
lcseek = IIF(ISNULL(topickfield.txtfield.VALUE),'',topickfield.txtfield.VALUE)
ELSE
lcseek = IIF(ISNULL(topickfield.VALUE),'',topickfield.VALUE)
ENDIF
ELSE
lcseek = IIF(ISNULL(topickfield.cseekvalue),'',topickfield.cseekvalue)
ENDIF
IF !EMPTY(topickfield.cfilterexpr)
LOCAL lcfilterexpr
lcfilterexpr = topickfield.cfilterexpr
SET FILTER TO &lcfilterexpr
ENDIF
IF !EMPTY(lcseek)
IF "UPPER" $ lcindexexpr
=SEEK(UPPER(lcseek), lccursor)
ELSE
=SEEK(lcseek, lccursor)
ENDIF
ENDIF
IF !FOUND(lccursor)
LOCATE
ENDIF
ENDIF
THIS.cnttoolbar.cmdmaintenance.ENABLED = !EMPTY(topickfield.cdataform)
LOCAL cfieldname, maxfieldno, cfield, ccaption
IF !EMPTY(topickfield.cfieldlist)
maxfieldno = getargcount(topickfield.cfieldlist)
ELSE
maxfieldno = FCOUNT()
ENDIF
THIS.grdgrid.RECORDSOURCE = ALIAS()
THIS.grdgrid.COLUMNCOUNT = MIN(THIS.grdgrid.COLUMNCOUNT, maxfieldno)
THIS.grdgrid.READONLY = .T.
THIS.grdgrid.DELETEMARK = .F.
FOR j = 1 TO THIS.grdgrid.COLUMNCOUNT
IF j <= maxfieldno
ccaption = ""
IF !EMPTY(topickfield.cfieldlist)
cfieldname = ALLTRIM(getarg(topickfield.cfieldlist,j))
THIS.grdgrid.COLUMNS[j].CONTROLSOURCE = cfieldname
ELSE
cfieldname = FIELD(j)
ENDIF
IF AT(".",cfieldname) = 0
cfield = ALLTRIM(topickfield.ctablename) +"."+ ALLTRIM(cfieldname)
ENDIF
IF !EMPTY(DBC())
IF INDBC(cfield,"FIELD")
ccaption = DBGETPROP(cfield, "FIELD", "CAPTION")
ENDIF
ENDIF
IF !EMPTY(topickfield.cfieldtitle)
ccaption = ALLTRIM(getarg(topickfield.cfieldtitle,j))
ENDIF
IF EMPTY(ccaption)
ccaption = PROPER(STRTRAN(cfieldname,'_',' '))
ENDIF
ccaption = ALLTRIM(ccaption)
THIS.grdgrid.COLUMNS[j].header1.CAPTION = ccaption
LOCAL lnwidth, lcbufferm, lnsize1, lnsize2
lcbuffer = REPLICATE('H',FSIZE(cfieldname))
ccaption = REPLICATE('H',LEN(ccaption))
lnsize1 = TXTWIDTH(lcbuffer,'Arial',8,'') * FONTMETRIC(6, 'Arial', 8, '')
lnsize2 = TXTWIDTH(ccaption,'Arial',8,'') * FONTMETRIC(6, 'Arial', 8, '')
THIS.grdgrid.COLUMNS[j].WIDTH = MAX(lnsize1,lnsize2)
ELSE
THIS.grdgrid.COLUMNS[j].VISIBLE = .F.
ENDIF
NEXT
LOCAL _lnrecno
_lnrecno = IIF(EOF(), 0, RECNO())
DODEFAULT(.F.)
IF !EMPTY(_lnrecno)
GO _lnrecno
ENDIF
IF (THIS.lworkonview)
LOCAL luvalue, lcfieldexpr
lcfieldexpr = topickfield.creturnexpr
IF EMPTY(topickfield.cseekvalue)
IF UPPER(topickfield.BASECLASS) = "CONTAINER"
luvalue = topickfield.txtfield.VALUE
ELSE
luvalue = topickfield.VALUE
ENDIF
ELSE
luvalue = topickfield.cseekvalue
ENDIF
* position on View
THIS.jumpto(lcfieldexpr, luvalue)
ELSE
IF VARTYPE(__VFX_FromValid) = "L" AND __vfx_fromvalid
LOCAL luvalue, lcfieldexpr
lcfieldexpr = topickfield.creturnexpr
luvalue = topickfield.cseekvalue
* position on View
THIS.jumpto(lcfieldexpr, luvalue)
ENDIF
ENDIF
THIS.grdgrid.onsetorder()
ON KEY LABEL Ctrl+N _screen.activeform.cnttoolbar.cmdmaintenance.CLICK(.T.)
ON KEY LABEL Ctrl+E _screen.activeform.cnttoolbar.cmdmaintenance.CLICK()
Date: 2002-12-12
Classlibrary: VFXFORM
Class: cPickDialog
Method: Destroy
Classification:
Enhancement
Reason for change:
Enable the hotkey for ‘maintenance’ in pickdialogs.
New Code:
DODEFAULT()
LOCAL lctmpindex
lctmpindex = THIS.cworkalias+".IDX"
CLOSE INDEX
IF FILE(lctmpindex)
ERASE(lctmpindex)
ENDIF
ON KEY LABEL Ctrl+N
ON KEY LABEL Ctrl+E
Date: 2002-12-16
Classlibrary: VFXCTRL
Class: cRecordManager
Method: Update
Classification:
Correction
Reason for change:
Changed the visibility of the method update from protected to public.
New Code:
-
Date: 2003-01-03
Classlibrary: VFXFORM
Class: cDataForm
Method: OnSearch
Classification:
Bugfix
Reason for change:
After using the search dialog child forms did not refresh properly.
New Code:
LPARAMETERS tofieldlist
LOCAL lcfilterexpr, lnoldrec
SELECT (THISFORM.cworkalias)
IF THISFORM.lusehook
LOCAL luhookvalue
luhookvalue = THISFORM.oneventhook("OnSearch",THIS,THISFORM)
DO CASE
CASE VARTYPE(luhookvalue)="L"
IF !luhookvalue
RETURN .T.
ENDIF
CASE VARTYPE(luhookvalue)="N"
RETURN luhookvalue=0
ENDCASE
ENDIF
IF EMPTY(THISFORM.csearchform)
RETURN .F.
ENDIF
IF THISFORM.nformstatus > id_normal_mode
IF THISFORM.recordchanged() OR THISFORM.nformstatus = id_insert_mode
IF !THISFORM.asktosave()
** Do Nothing
RETURN .F.
ENDIF
ELSE
THISFORM.nformstatus = id_normal_mode
THISFORM.CAPTION = THISFORM.coldtitle
THISFORM.refreshtoolbar(.T.)
THISFORM.onformstatuschange()
THISFORM.REFRESH()
ENDIF
ENDIF
* Enhancement to use fields used in grid.
* goProgram.nOnSearchUseGrid=0 use form setting
* goProgram.nOnSearchUseGrid=1 use grid in all forms
* goProgram.nOnSearchUseGrid=2 use fields in all forms
IF TYPE("toFieldlist")#"O"
IF TYPE("goProgram.nOnSearchUseGrid")="N"
IF goprogram.nonsearchusegrid>0
THISFORM.lonsearchusegrid=(goprogram.nonsearchusegrid=1)
ENDIF
ENDIF
IF THISFORM.lonsearchusegrid
LOCAL lnz,lcz
DO CASE
CASE UPPER(THIS._vfxclassname)="CDATAFORMPAGE" OR UPPER(THIS._vfxclassname)="CONETOMANY"
IF THIS.npagelist>0
*!* Delayed instatiation: grid may not be instantiated...
IF TYPE("this.pgfPageFrame.pages(this.nPageList).grdGrid")#"O"
THIS.pgfpageframe.PAGES(THIS.npagelist).ACTIVATE()
ENDIF
tofieldlist=CREATEOBJECT("cFieldlist")
tofieldlist.ctablelist=""
WITH THIS.pgfpageframe.PAGES(THIS.npagelist).grdgrid
FOR lnz=1 TO .COLUMNCOUNT
tofieldlist.addcontrolsource(.COLUMNS(lnz).CONTROLSOURCE,.COLUMNS(lnz).header1.CAPTION)
NEXT
ENDWITH
ENDIF
*!* Use _vfxclassname
CASE UPPER(THIS._vfxclassname)="CTABLEFORM"
tofieldlist=CREATEOBJECT("cfieldlist")
tofieldlist.ctablelist=""
WITH THIS.cntpanel.grdgrid
FOR lnz=1 TO .COLUMNCOUNT
lcz=TRANSFORM(m.lnz)
tofieldlist.addcontrolsource(.COLUMN&lcz..CONTROLSOURCE,.COLUMN&lcz..header1.CAPTION)
NEXT
ENDWITH
ENDCASE
ENDIF
ENDIF
lcfilterexpr = THISFORM.csearchfilterexpr
lnoldrec = IIF(EOF() OR DELETE() ,0,RECNO())
DO FORM (THISFORM.csearchform) WITH tofieldlist TO THISFORM.csearchfilterexpr
SELECT (THISFORM.cworkalias)
IF TYPE("thisForm.cSearchFilterExpr") # "C"
RETURN .T.
ENDIF
IF !EMPTY(THISFORM.csearchfilterexpr)
IF !EMPTY(THISFORM.cfilterexpr)
lcfilterexpr = THISFORM.cfilterexpr + " AND " + THISFORM.csearchfilterexpr
ELSE
lcfilterexpr = THISFORM.csearchfilterexpr
ENDIF
LOCAL lcerror,lerror
lcerror = ON('ERROR')
ON ERROR lerror=.T.
SET FILTER TO &lcfilterexpr
ON ERROR &lcerror
THISFORM.orecord.gotop()
*!* Check for errors in the filter condition
IF EOF() OR DELETE() OR lerror
= MESSAGEBOX(msg_no_record_found,mb_iconinformation,msg_attention)
THISFORM.csearchfilterexpr = ""
IF !EMPTY(THISFORM.cfilterexpr)
lcfilterexpr = UPPER(THISFORM.cfilterexpr)
ELSE
lcfilterexpr = THISFORM.csearchfilterexpr
ENDIF
SET FILTER TO &lcfilterexpr
IF lnoldrec # 0
GO lnoldrec
ELSE
THISFORM.orecord.gotop()
ENDIF
ENDIF
ELSE
IF !EMPTY(THISFORM.cfilterexpr)
lcfilterexpr = UPPER(THISFORM.cfilterexpr)
ELSE
lcfilterexpr = ''
ENDIF
SET FILTER TO &lcfilterexpr
IF lnoldrec # 0
GO lnoldrec
ELSE
THISFORM.orecord.gotop()
ENDIF
ENDIF
IF EMPTY(THISFORM.csearchfilterexpr)
THISFORM.CAPTION = STRTRAN(THISFORM.CAPTION, " ["+msg_filter_on+"]", "")
THISFORM.lfilteron = .F.
ELSE
LOCAL lctext
lctext = STRTRAN(THISFORM.CAPTION, " ["+msg_filter_on+"]", "")
THISFORM.CAPTION = lctext + " ["+msg_filter_on+"]"
THISFORM.lfilteron = .T.
ENDIF
THISFORM.refreshtoolbar(.T.)
THISFORM.REFRESH()
THISFORM.onrecordmove()
Date: 2003-01-15
Classlibrary: VFXFORM
Class: cDataForm
Method: OnEdit
Classification:
Bugfix
Reason for change:
The cursor was set to the parent part of the form on onetomany forms.
New Code:
IF THISFORM.lusehook
LOCAL luhookvalue
luhookvalue = THISFORM.oneventhook("OnEdit",THIS,THISFORM)
DO CASE
CASE VARTYPE(luhookvalue)="L"
IF !luhookvalue
RETURN .T.
ENDIF
CASE VARTYPE(luhookvalue)="N"
RETURN luhookvalue=0
ENDCASE
ENDIF
LOCAL lbypass
lbypass = THISFORM.nformstatus # 1
SELECT (THISFORM.cworkalias)
THISFORM.noldrecno = IIF(EOF() OR DELETED(), 0, RECNO())
IF DELETED()
=MESSAGEBOX(msg_record_deleted_from_others,48,THISFORM.CAPTION)
THISFORM.orecord.gotop()
THISFORM.onrecordmove()
THISFORM.REFRESH()
RETURN .F.
ENDIF
IF !THISFORM.lcanedit
WAIT WINDOW msg_cant_edit
THISFORM.onundo()
RETURN .F.
ENDIF
THIS.lactcanedit = THIS.lcanedit
IF !THISFORM.lempty
IF THISFORM.onpreedit()
SELECT (THISFORM.cworkalias)
IF VARTYPE(goProgram)="O"
IF !goprogram.lnoclearidxonedit
goprogram.clearallidx()
ENDIF
ELSE
THISFORM.clearidx()
ENDIF
IF THISFORM.nformstatus != 0 AND !EMPTY(THISFORM.coldtitle)
THISFORM.CAPTION = THISFORM.coldtitle
ENDIF
THISFORM.nformstatus = id_edit_mode
THISFORM.coldtitle = THISFORM.CAPTION
THISFORM.CAPTION = msg_editmode + " " + ALLTRIM(THISFORM.CAPTION)
THISFORM.refreshtoolbar(.T.)
THISFORM.onformstatuschange()
IF lbypass
THISFORM.REFRESH()
IF this._VFXClassName#"COneToMany"
THISFORM.setobjectfocus()
ENDIF
ENDIF
ELSE
THISFORM.onundo()
RETURN .F.
ENDIF
ENDIF
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cGrid
Method: SetColumn
Classification:
Enhancement
Reason for change:
Show sorted columns with a picture rather than colored in VFP 8 applications.
Add the files asc.msk and desc.msk to your existing projects!!!
New Code:
LPARAMETERS tocolumn, tlmultisort
IF TYPE("goProgram.nShowGridOrderType")#"N"
RETURN .T.
ENDIF
LOCAL lscreen, lni, locolumn
lscreen = THISFORM.LOCKSCREEN
IF !lscreen
THISFORM.LOCKSCREEN = .T.
ENDIF
IF goprogram.nshowgridordertype = 2 & Colors
IF THIS.ctitlecolor = -1
IF TYPE("this.Columns[1].Header1") = "O"
THIS.ctitlecolor = THIS.COLUMNS[1].header1.BACKCOLOR
ELSE
THIS.ctitlecolor = RGB(192,192,192)
ENDIF
ENDIF
IF !tlmultisort
THIS.SETALL('BackColor',THIS.ctitlecolor,'Header')
IF VERSION(5)>799
this.SetAll('Picture',"",'Header')
ENDIF
ENDIF
ELSE
THIS.SETALL('FontUnderline',.F.,'Header')
ENDIF
IF !tlmultisort
FOR lni = 1 TO THIS.COLUMNCOUNT
IF TYPE("this.columns[lni].header1") = "O" AND ;
CHR(160) $ THIS.COLUMNS[lni].header1.CAPTION
WITH THIS.COLUMNS[lni].header1
.CAPTION = SUBSTR(.CAPTION, 1, AT(CHR(160), .CAPTION) -1)
ENDWITH
ENDIF
NEXT lni
ENDIF
IF TYPE("toColumn")="O" OR tlmultisort
LOCAL llmorethanone, lccaption
llmorethanone = AT(";", THIS.csortcolumns, 2) > 0
DO CASE
CASE goprogram.nshowgridordertype = 1 & Header
IF tlmultisort
FOR lni = 1 TO THIS.COLUMNCOUNT
locolumn = "this." + getarg(THIS.csortcolumns, lni)
IF TYPE(locolumn) > "O"
EXIT
ELSE
&locolumn..SETALL('FontUnderline',.T.,'Header')
IF llmorethanone AND TYPE("&locolumn..header1") = "O"
lccaption = &locolumn..header1.CAPTION
IF CHR(160) $ lccaption
lccaption = SUBSTR(lccaption, 1, AT(CHR(160), lccaption) -1)
ENDIF
&locolumn..header1.CAPTION = lccaption + CHR(160) + " (" + TRANSFORM(lni) + ")"
ENDIF
ENDIF
NEXT lni
ELSE
tocolumn.SETALL('FontUnderline',.T.,'Header')
ENDIF
CASE goprogram.nshowgridordertype = 2 & Colors
IF !EMPTY("goProgram.cAscOrderRGB")
THIS.cascorderrgb = goprogram.cascorderrgb
ENDIF
IF !EMPTY("goProgram.cDescOrderRGB")
THIS.cdescorderrgb = goprogram.cdescorderrgb
ENDIF
IF tlmultisort
FOR lni = 1 TO THIS.COLUMNCOUNT
locolumn = "this." + getarg(THIS.csortcolumns, lni)
IF TYPE(locolumn) > "O"
EXIT
ELSE
IF DESCENDING()
&locolumn..SETALL('BackColor',EVAL(THIS.cdescorderrgb),'Header')
ELSE
&locolumn..SETALL('BackColor',EVAL(THIS.cascorderrgb),'Header')
ENDIF
IF VERSION(5)>799
IF DESCENDING()
&locolumn..SETALL('Picture',"bitmap\desc.msk",'Header')
ELSE
&locolumn..SETALL('Picture',"bitmap\asc.msk",'Header')
ENDIF
ENDIF
IF llmorethanone AND TYPE("&locolumn..header1") = "O"
lccaption = &locolumn..header1.CAPTION
IF CHR(160) $ lccaption
lccaption = SUBSTR(lccaption, 1, AT(CHR(160), lccaption) -1)
ENDIF
&locolumn..header1.CAPTION = lccaption + CHR(160) + " (" + TRANSFORM(lni) + ")"
ENDIF
ENDIF
NEXT lni
ELSE
IF DESCENDING()
tocolumn.SETALL('BackColor',EVAL(THIS.cdescorderrgb),'Header')
ELSE
tocolumn.SETALL('BackColor',EVAL(THIS.cascorderrgb),'Header')
ENDIF
IF VERSION(5)>799
IF DESCENDING()
tocolumn.SETALL('Picture',"bitmap\desc.msk",'Header')
ELSE
tocolumn.SETALL('Picture',"bitmap\asc.msk",'Header')
ENDIF
ENDIF
ENDIF
ENDCASE
ENDIF
THISFORM.LOCKSCREEN = lscreen
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cActivedoc
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cCheckbox
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cCombobox
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
IF THIS.lusespt AND !EMPTY(NVL(THIS.ctablename,"")) AND USED(THIS.ctablename)
USE IN (THIS.ctablename)
ENDIF
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cCommandbutton
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cCommandGroup
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cContainer
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cEditbox
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cForm
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem, lloldflag
IF !EMPTY(THISFORM.cmenuform)
POP MENU _MSYSMENU
ENDIF
IF ISNULL(THISFORM.otoolbar)
THISFORM.lshowtoolbar = .F.
ENDIF
LOCAL lwinmenu
lwinmenu = THISFORM.lputinwindowmenu
THISFORM.lputinwindowmenu = .F.
IF TYPE("goProgram")="O"
goprogram.refreshwindowmenu()
IF lwinmenu
IF goprogram.nwinmnucount > 0
goprogram.nwinmnucount = goprogram.nwinmnucount -1
ENDIF
ENDIF
IF goprogram.nformcount > 0
LOCAL lninstance, lnformcount
lninstance = 0
lnformcount = goprogram.nformcount
IF THISFORM.lsaveposition
THISFORM.saveposition()
ENDIF
FOR lnitem = 1 TO lnformcount
IF TYPE("goProgram.aFormList[lnItem,3]")="O"
IF goprogram.aformlist[lnItem,1] == THISFORM.NAME
=ADEL(goprogram.aformlist, lnitem)
EXIT
ENDIF
ENDIF
NEXT
IF goprogram.nformcount > 0
goprogram.nformcount = goprogram.nformcount - 1
IF goprogram.nformcount > 0
DIMENSION goprogram.aformlist[goProgram.nFormCount,4]
ELSE
DIMENSION goprogram.aformlist[1,4]
goprogram.aformlist[1,1] = .F.
goprogram.aformlist[1,2] = .F.
goprogram.aformlist[1,3] = .F.
goprogram.aformlist[1,4] = .NULL.
ENDIF
ENDIF
ENDIF
ENDIF
IF TYPE("goProgram")="O"
IF !EMPTY(THISFORM.ctoolbarclass)
goprogram.removetoolbar(THISFORM.ctoolbarclass)
ENDIF
goprogram.lopendialog = .F.
goprogram.showtoolbar()
ENDIF
IF TYPE("thisForm.oResizeControl") = "O"
THISFORM.REMOVEOBJECT('oResizeControl')
ENDIF
THISFORM.otoolbar = .NULL.
THISFORM.lshowtoolbar = .F.
THISFORM.onresetenv()
IF THISFORM.WINDOWTYPE = 0
THISFORM.VISIBLE = .F.
THISFORM.refreshtoolbar(.F.)
ENDIF
FOR lnitem = 1 TO ALEN(THISFORM.acargo,1)
THISFORM.acargo[lnItem] = .NULL.
NEXT
THISFORM.cleanobjectref()
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cGrid
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
IF VARTYPE(THIS.extrabuffer)="C" AND THIS.extrabuffer = "_VFX_FORM_WIZARD"
THIS.extrabuffer = .F.
ENDIF
IF THIS.lusespt AND !EMPTY(NVL(THIS.ctablename,"")) AND USED(THIS.ctablename)
USE IN (THIS.ctablename)
ENDIF
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cHyperLink
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cImage
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cLabel
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cLine
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cListbox
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cOLEBoundControl
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cOLEBoundControl
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cOptionGroup
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cOptionGroup
Method: Init
Classification:
Enhancement
Reason for change:
Make all options transparent to support themes.
New Code:
IF TYPE("thisForm.nFormStatus")="U"
THIS.lautosetup = .F.
ENDIF
this.SetAll("BackStyle",0)
IF TYPE("thisForm")="O"
IF pemstatus(THISFORM,"lUseHook",5)
IF THISFORM.lusehook
LOCAL luhookvalue
luhookvalue = THISFORM.oneventhook("Init",THIS,THISFORM)
DO CASE
CASE VARTYPE(luhookvalue)="L"
IF !luhookvalue
RETURN .T.
ENDIF
CASE VARTYPE(luhookvalue)="N"
RETURN luhookvalue=0
ENDCASE
ENDIF
ENDIF
ENDIF
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cPageFrame
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)
THIS.acargo[lnItem] = .NULL.
NEXT
#ifdef _screen.themes
UNBINDEVENTS(this)
#endif
Date: 2002-02-26
Classlibrary: VFXOBJ
Class: cShape
Method: Destroy
Classification:
Enhancement
Reason for change:
Release all BINDEVENTs.
New Code:
LOCAL lnitem
FOR lnitem = 1 TO ALEN(THIS.acargo,1)