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)