KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q237569: PRB: Scrolling a List Box with DELETED Off Moves Record Pointer

Article: Q237569
Product(s): Microsoft FoxPro
Version(s): WINDOWS:6.0
Operating System(s): 
Keyword(s): kbOOP kbvfp600 kbvfp600bug kbGrpDSFox kbDSupport
Last Modified: 09-SEP-1999

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft Visual FoxPro for Windows, version 6.0 
-------------------------------------------------------------------------------

SYMPTOMS
========

In Visual FoxPro 6.0, scrolling a list box using the thumb moves the record
pointer. This behavior occurs when the following is true:

1. The list box RowSourceType is set to "6-Fields."

2. The list box RowSource is set to a field in a cursor or table.

3. DELETED is OFF.

RESOLUTION
==========

Populate the list box with an alternate RowSourceType, such as an array.

MORE INFORMATION
================

Steps to Reproduce Behavior
---------------------------

1. Create a new program in Visual FoxPro 6.0.

2. Add the following code to the program, save it as LISTBOX.PRG and run it:

  *~~~~~~~~~~~~~~~~~~~
  *~~Code starts here
  *
  PUBLIC oLstForm
  oLstForm = CREATEOBJECT('FORM1')

  DEFINE CLASS form1 AS FORM

  	HEIGHT = 285
  	WIDTH = 184
  	DOCREATE = .T.
  	AUTOCENTER = .T.
  	BORDERSTYLE = 1
  	CAPTION = "List Box Problem"
  	MAXBUTTON = .F.
  	MINBUTTON = .F.
  	NAME = "form1"

  	ADD OBJECT list1 AS LISTBOX WITH ;
  		ROWSOURCETYPE = 6, ;
  		ROWSOURCE = "lst_test.id", ;
  		HEIGHT = 204, ;
  		LEFT = 17, ;
  		TOP = 8, ;
  		WIDTH = 150, ;
  		NAME = "List1"

  	ADD OBJECT command1 AS COMMANDBUTTON WITH ;
  		TOP = 219, ;
  		LEFT = 17, ;
  		HEIGHT = 27, ;
  		WIDTH = 150, ;
  		CAPTION = "Toggle SET DELETED", ;
  		NAME = "Command1"

  	ADD OBJECT text1 AS TEXTBOX WITH ;
  		ALIGNMENT = 2, ;
  		HEIGHT = 23, ;
  		LEFT = 17, ;
  		READONLY = .T., ;
  		TOP = 254, ;
  		WIDTH = 150, ;
  		NAME = "Text1"

  	PROCEDURE DESTROY
  		SET DELETED &cOldDel
  		SET STATUS BAR &cOldStatBar
  		USE IN LST_TEST
  	ENDPROC

  	PROCEDURE LOAD
  		THIS.VISIBLE = .T.
  		PUBLIC cOldDel, cOldStatBar
  		STORE SET('DELETED') TO cOldDel
  		STORE SET ('status bar') TO cOldStatBar
  		SET DELETED OFF
  		SET STATUS BAR ON

  		CREATE CURSOR LST_TEST (ID N(2))
  		FOR i = 1 TO 50
  			INSERT INTO LST_TEST (ID) VALUES (i)
  		ENDFOR
  	ENDPROC

  	PROCEDURE command1.CLICK
  		LOCAL cDelSet
  		cDelSet = SET('DELETED')
  		IF cDelSet = 'ON'
  			SET DELETED OFF
  		ELSE
  			SET DELETED ON
  		ENDIF
  		THISFORM.text1.VALUE = "DELETED IS " + SET('DELETED')
  	ENDPROC

  	PROCEDURE text1.INIT
  		THIS.VALUE = "DELETED IS " + SET('DELETED')
  	ENDPROC

  ENDDEFINE
  *
  *~~End Code
  *~~~~~~~~~~~~~~~~~~~~~

The list box is populated by a field in a temporary cursor. The field contains
numbers 1 through 50 (which correspond to the record number). When the form
initially starts, DELETED is OFF.

Scroll the list box using the thumb (not the ARROW keys) and watch the record
number in the STATUS BAR. Notice that the record pointer moves as the list box
is scrolled.

Click the command button to SET DELETED ON. Scroll the list box using the thumb
again. Watch the status bar and notice that the record pointer does not move.

REFERENCES
==========

For additional information about populating a list box with values from an
array, click on the article number below to view it in the Microsoft Knowledge
Base:

  Q129329 HOWTO: Populate a Form's List Box Object from an Array

(c) Microsoft Corporation 1999, All Rights Reserved.
Contributions by Trevor Hancock, Microsoft Corporation


Additional query words:

======================================================================
Keywords          : kbOOP kbvfp600 kbvfp600bug kbGrpDSFox kbDSupport 
Technology        : kbVFPsearch kbAudDeveloper kbVFP600
Version           : WINDOWS:6.0
Issue type        : kbprb
Solution Type     : kbpending

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.