Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations sizbut on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Problem with class definition in faq1254-5668

Status
Not open for further replies.

Nifrabar

Programmer
Mar 16, 2003
1,343
NL
In the FAQ we do find:

How do I create a SuperMover class? faq1254-5668

I tried as down below:
But originally this throws error:
Unknown member text1
For that I flagged all code giving such errors.
Also other flagged code gave error.

Any Idea how I can refer to 'text' as I presume this is required for the drag and drop actions.
I am using VFP9

TIA
-Bart
Code:
PUBLIC oForm

oForm = CREATEOBJECT('supermover')
oForm.show()



DEFINE CLASS supermover AS form


    Height = 171
    Width = 415
    ShowWindow = 0
    DoCreate = .T.
    ShowTips = .T.
    AutoCenter = .T.
    BorderStyle = 1
    Caption = "Field selector"
    MaxButton = .F.
    MinButton = .F.
    WindowType = 1
    candropicon = "dragmove.cur"
    nodropicon = "nodrop01.cur"
    nsourceno = 0
    nselectedno = 0
    nseconds = 0
    Name = "SUPERMOVER"


    ADD OBJECT grdsourcelist AS grid WITH ;
        ColumnCount = 1, ;
        AllowHeaderSizing = .F.,;
        AllowRowSizing = .F., ;
        HeaderHeight = 20, ;
        Height = 132, ;
        Left = 12, ;
        ReadOnly = .T., ;
        Top = 24, ;
        Width = 169, ;
        HighlightBackColor = RGB(10,36,106), ;
        HighlightStyle = 2, ;
        Name = "grdSOURCELIST", ;
        Column1.FontName = "MS Sans Serif", ;
        Column1.ControlSource = "", ;
        Column1.Width = 149, ;
        Column1.ReadOnly = .T., ;
        Column1.ToolTipText = "Double click to move or left mouse to drag and drop", ;
        Column1.Name = "Column1"



*	       grdSOURCELIST.column1.RemoveObject('Header1')


*!*	    ADD OBJECT grdsourcelist.column1.header1 AS header WITH ;
*!*	        Caption = "Header1", ;
*!*	        Name = "Header1"
*!*	        
*!*	    ADDOBJECT supermover.grdsourcelist.column1.text1 AS textbox WITH ;
*!*	        FontName = "MS Sans Serif", ;
*!*	        BorderStyle = 0, ;
*!*	        Margin = 0, ;
*!*	        MousePointer = 1, ;
*!*	        ReadOnly = .T., ;
*!*	        ForeColor = RGB(0,0,0), ;
*!*	        BackColor = RGB(255,255,255), ;
*!*	        Name = "Text1"


    ADD OBJECT cmdadd AS commandbutton WITH ;
        Top = 24, ;
        Left = 195, ;
        Height = 25, ;
        Width = 25, ;
        FontName = "Courier New", ;
        FontSize = 10, ;
        Caption = ">", ;
        ToolTipText = "Add this field", ;
        Name = "cmdAdd"


    ADD OBJECT cmdaddall AS commandbutton WITH ;
        Top = 50, ;
        Left = 195, ;
        Height = 25, ;
        Width = 25, ;
        FontName = "Courier New", ;
        FontSize = 10, ;
        Caption = ">>", ;
        ToolTipText = "Add all fields", ;
        Name = "cmdAddAll"


    ADD OBJECT cmdremove AS commandbutton WITH ;
        Top = 76, ;
        Left = 195, ;
        Height = 25, ;
        Width = 25, ;
        FontName = "Courier New", ;
        FontSize = 10, ;
        Caption = "<", ;
        Enabled = .F., ;
        ToolTipText = "Remove this field", ;
        Name = "cmdRemove"


    ADD OBJECT cmdremoveall AS commandbutton WITH ;
        Top = 102, ;
        Left = 195, ;
        Height = 25, ;
        Width = 25, ;
        FontName = "Courier New", ;
        FontSize = 10, ;
        Caption = "<<", ;
        Enabled = .F., ;
        ToolTipText = "Remove all fields", ;
        Name = "cmdRemoveAll"


    ADD OBJECT lblinstructions AS label WITH ;
        Caption = "Please select the fields you wish to add to the search and click on suitable button", ;
        Left = 13, ;
        Top = 5, ;
        Name = "lblInstructions",;
        Autosize = .T.


    ADD OBJECT grdselectedlist AS grid WITH ;
        ColumnCount = 1, ;
        AllowHeaderSizing = .F., ;
        AllowRowSizing = .F., ;
        HeaderHeight = 20, ;
        Height = 132, ;
        Left = 234, ;
        ReadOnly = .T., ;
        Top = 24, ;
        Width = 169, ;
        HighlightBackColor = RGB(10,36,106), ;
        HighlightStyle = 2, ;
        Name = "grdSELECTEDLIST",;
        Column1.FontName = "MS Sans Serif", ;
        Column1.ControlSource = "", ;
        Column1.Width = 149, ;
        Column1.ReadOnly = .T., ;
        Column1.ToolTipText = "Double click to move or left mouse to drag and drop", ;
        Column1.Name = "Column1"


*!*	   ADD OBJECT header1 AS header WITH ;
*!*	        Caption = "Header1", ;
*!*	        Name = "Header1"
*!*	        
*!*	    ADD OBJECT supermover.grdselectedlist.column1.text1 AS textbox WITH ;
*!*	        FontName = "MS Sans Serif", ;
*!*	        BorderStyle = 0, ;
*!*	        Margin = 0, ;
*!*	        MousePointer = 1, ;
*!*	        ReadOnly = .T., ;
*!*	        ForeColor = RGB(0,0,0), ;
*!*	        BackColor = RGB(255,255,255), ;
*!*	        Name = "Text1"


    PROCEDURE Destroy
        USE IN SOURCELIST
        USE IN SELECTEDLIST
    ENDPROC


    PROCEDURE Init
        WITH THISFORM
            .LockScreen = .T.

            SET DELETED ON

            CREATE CURSOR sourcelist    ;
                (fieldname     C(50)        ,;
                selected    L)

            CREATE CURSOR selectedlist    ;
                (fieldname     C(50)        ,;
                selected    L)

            IF !USED([PATIENTS])
                USE data1!patients IN 0
            ENDIF

            lnFields = AFIELDS(laTemp,[PATIENTS])
            FOR i = 1 TO lnFields
                DO CASE
                CASE laTemp[i,2] = [L]
                    * Exclude from list, logical field
                OTHE
                    INSERT INTO SOURCELIST (        ;
                        fieldname                    ,;
                        selected)                    ;
                        VALUES                         ;
                        (PROPER(LOWER(laTemp[i,1]))    ,;
                        .T.)
                    INSERT INTO SELECTEDLIST (        ;
                        fieldname                    ,;
                        selected)                    ;
                        VALUES                         ;
                        (PROPER(LOWER(laTemp[i,1])),;
                        .F.)
                ENDC
            ENDF

            WITH .grdSOURCELIST
                SET FILTER TO SOURCELIST.selected     IN SOURCELIST
                .RecordSource            = [SOURCELIST]
                .Column1.ControlSource     = [SOURCELIST.fieldname]
                GO TOP IN SOURCELIST
                .Refresh()
            ENDWITH

            WITH .grdSELECTEDLIST
                SET FILTER TO SELECTEDLIST.selected IN SELECTEDLIST
                .RecordSource            = [SELECTEDLIST]
                .Column1.ControlSource     = [SELECTEDLIST.fieldname]
            ENDWITH      

            .LockScreen = .F.
        ENDW


    ENDPROC


    PROCEDURE grdsourcelist.DragDrop
        LPARAMETERS oSource, nXCoord, nYCoord

        IF !EMPTY(oSource.Value)
            THISFORM.cmdRemove.Click()
        ENDI
    ENDPROC


    PROCEDURE grdsourcelist.DragOver
        LPARAMETERS oSource, nXCoord, nYCoord, nState

        DO CASE
            CASE nState = 0
                oSource.DragIcon = THISFORM.CanDropIcon
            CASE nState = 1
                oSource.DragIcon = THISFORM.NoDropIcon
        ENDCASE
    ENDPROC

  
    PROCEDURE text1.DblClick
        THISFORM.cmdAdd.Click()
    ENDPROC


*!*	    PROCEDURE text1.MouseDown
*!*	        LPARAMETERS nButton, nShift, nXCoord, nYCoord

*!*	        DO CASE
*!*	        CASE nButton = 1
*!*	            IF (SECONDS() - THISFORM.nSeconds ) > _DBLCLICK
*!*	                THISFORM.nSeconds = SECONDS()
*!*	                THIS.Drag(1)
*!*	            ELSE
*!*	                THIS.DblClick()
*!*	            ENDI
*!*	        ENDC
*!*	    ENDPROC


*!*	    PROCEDURE text1.DragOver
*!*	        LPARAMETERS oSource, nXCoord, nYCoord, nState

*!*	        DO CASE
*!*	            CASE nState = 0
*!*	                oSource.DragIcon = THISFORM.CanDropIcon
*!*	            CASE nState = 1

*!*	                oSource.DragIcon = THISFORM.NoDropIcon
*!*	        ENDCASE
*!*	    ENDPROC


    PROCEDURE cmdadd.Click
        WITH THISFORM
            .LockScreen = .T.

            REPLACE SOURCELIST.selected WITH .F. IN SOURCELIST

            SELECT SELECTEDLIST
            SET FILTER TO IN SELECTEDLIST

            LOCATE FOR UPPER(ALLTRIM(SOURCELIST.fieldname))     ;
                = UPPER(ALLTRIM(SELECTEDLIST.fieldname))

            REPLACE SELECTEDLIST.selected WITH .T. IN SELECTEDLIST
            SET FILTER TO SELECTEDLIST.selected IN SELECTEDLIST

            .cmdRemove.Enabled        = .T.
            .cmdRemoveAll.Enabled    = .T.

            SELECT SOURCELIST
            LOCATE FOR SOURCELIST.selected
            IF !FOUND()
                .cmdAdd.Enabled        = .F.
                .cmdAddAll.Enabled    = .F.
            ELSE
                .cmdAdd.Enabled        = .T.
                .cmdAddAll.Enabled    = .T.
            ENDIF

            *.cmdFind.Enabled    = .T.

            GO TOP IN SOURCELIST
            GO TOP IN SELECTEDLIST

            .grdSOURCELIST.Refresh()
            .grdSELECTEDLIST.Refresh()

            .LockScreen = .F.
        ENDW
    ENDPROC


    PROCEDURE cmdaddall.Click
*    SET STEP ON
    
        WITH THISFORM
            .LockScreen = .T.

            SET FILTER TO IN SOURCELIST
            REPLACE SOURCELIST.selected WITH .F. ALL IN SOURCELIST

            SET FILTER TO IN SELECTEDLIST
            REPLACE SELECTEDLIST.selected WITH .T. ALL IN SELECTEDLIST

            SET FILTER TO SOURCELIST.selected IN SOURCELIST
            SET FILTER TO SELECTEDLIST.selected IN SELECTEDLIST

            GO TOP IN SOURCELIST
            GO TOP IN SELECTEDLIST

            .cmdAdd.Enabled            = .F.
            .cmdAddAll.Enabled        = .F.
            .cmdRemove.Enabled        = .T.
            .cmdRemoveAll.Enabled    = .T.
            *.cmdFind.Enabled        = .T.

            .grdSOURCELIST.Refresh()
            .grdSELECTEDLIST.Refresh()

            .LockScreen = .F.
        ENDW
    ENDPROC


    PROCEDURE cmdremove.Click
        WITH THISFORM
            .LockScreen = .T.

            REPLACE SELECTEDLIST.selected WITH .F. IN SELECTEDLIST

            SELECT SOURCELIST
            SET FILTER TO IN SOURCELIST

            LOCATE FOR UPPER(ALLTRIM(SELECTEDLIST.fieldname))     ;
                = UPPER(ALLTRIM(SOURCELIST.fieldname))

            REPLACE SOURCELIST.selected WITH .T. IN SOURCELIST
            SET FILTER TO SOURCELIST.selected IN SOURCELIST

            .cmdAdd.Enabled            = .T.
            .cmdAddAll.Enabled        = .T.

            SELECT SELECTEDLIST
            LOCATE FOR SELECTEDLIST.selected
            IF !FOUND()
                .cmdRemove.Enabled        = .F.
                .cmdRemoveAll.Enabled    = .F.
                *.cmdFind.Enabled        = .F.
            ELSE
                .cmdRemove.Enabled        = .T.
                .cmdRemoveAll.Enabled    = .T.
                *.cmdFind.Enabled        = .T.
            ENDIF

            GO TOP IN SOURCELIST
            GO TOP IN SELECTEDLIST

            .grdSOURCELIST.Refresh()
            .grdSELECTEDLIST.Refresh()

            .LockScreen = .F.
        ENDW
    ENDPROC


    PROCEDURE cmdremoveall.Click
        WITH THISFORM
            .LockScreen = .T.

            SET FILTER TO IN SELECTEDLIST
            REPLACE SELECTEDLIST.selected WITH .F. ALL IN SELECTEDLIST

            SET FILTER TO IN SOURCELIST
            REPLACE SOURCELIST.selected WITH .T. ALL IN SOURCELIST

            SET FILTER TO SOURCELIST.selected IN SOURCELIST
            SET FILTER TO SELECTEDLIST.selected IN SELECTEDLIST

            GO TOP IN SOURCELIST
            GO TOP IN SELECTEDLIST

            .cmdAdd.Enabled            = .T.
            .cmdAddAll.Enabled        = .T.
            .cmdRemove.Enabled        = .F.
            .cmdRemoveAll.Enabled    = .F.
            *.cmdFind.Enabled        = .F.

            .grdSOURCELIST.Refresh()
            .grdSELECTEDLIST.Refresh()

            .LockScreen = .F.
        ENDW
    ENDPROC


    PROCEDURE grdselectedlist.DragDrop
        LPARAMETERS oSource, nXCoord, nYCoord

        IF !EMPTY(oSource.Value)
            THISFORM.cmdAdd.Click()
        ENDI
    ENDPROC


    PROCEDURE grdselectedlist.DragOver
        LPARAMETERS oSource, nXCoord, nYCoord, nState

        DO CASE
            CASE nState = 0
                oSource.DragIcon = THISFORM.CanDropIcon
            CASE nState = 1
                oSource.DragIcon = THISFORM.NoDropIcon
        ENDCASE
    ENDPROC
    

*!*	    PROCEDURE text1.MouseDown
*!*	        LPARAMETERS nButton, nShift, nXCoord, nYCoord

*!*	        DO CASE
*!*	        CASE nButton = 1
*!*	            IF (SECONDS() - THISFORM.nSeconds) > _DBLCLICK
*!*	                THISFORM.nSeconds = SECONDS()
*!*	                THIS.Drag(1)
*!*	            ELSE
*!*	                THIS.DblClick()
*!*	            ENDI
*!*	        ENDC
*!*	    ENDPROC


*!*	    PROCEDURE text1.DblClick
*!*	        THISFORM.cmdRemove.Click()
*!*	    ENDPROC


	ENDDEFINE
*
*-- EndDefine: supermover
 
Bart,

You seem to have commented out the lines that create the objects Text1:
Code:
*!*        ADD OBJECT supermover.grdselectedlist.column1.text1 AS textbox WITH ;
*!*            FontName = "MS Sans Serif", ;

.
.
.
under both the grdsourcelist & grdselectedlist.

That means that the objects won't exist when you run the form and so you get your error "Unknown member text1". Why did you comment these lines out? Were they causing errors as well?


Hope that helps,

Stewart
PS If you want to get the best response to a question, please check out FAQ184-2483 first.
 
Stewart,
Yes,
those also throw errors.
Presume that by adding a grid-object automaticly column and textbox are added too.
-Bart
 
Bart,

I might be wrong, but I think the textbox is only added automatically when you add the grid to a form in the designer. I don't think it happens when building the grid in code like this.

What error do you get on the lines that add the text boxes?

Stewart
 
Stewart,
If I uncomment this:
Code:
ADDOBJECT supermover.grdsourcelist.column1.text1 AS textbox WITH ;
FontName = "MS Sans Serif", ;
BorderStyle = 0, ;
Margin = 0, ;
MousePointer = 1, ;
ReadOnly = .T., ;
ForeColor = RGB(0,0,0), ;
BackColor = RGB(255,255,255), ;
Name = "Text1"
Than 'Syntax Error' is thrown.
Using the debugger I found that by adding a grid automaticly a header and textbox has been added.
So by trying to add again textbox1 that is interpreted as syntax errot.
The starnge thing is that if I comment that line out I still can't refer to the textbox.

Any idea?

-Bart
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top