Microsoft KB Archive/248226
Article ID: 248226
Article Last Modified on 10/15/2002
- Microsoft Visual FoxPro 6.0 Professional Edition
This article was previously published under Q248226
Adding items in a list box using the AddItem method and including the ListIndex property in a loop gives unordered entries in the list box.
The problem is due to the fact that the value of ListIndex, which is being used to increment ListIndex property, does not return the correct value.
Use a memory variable to store the incrementing value instead of the ListIndex property.
Replace the Click event of the Command1 with the following:
PROCEDURE command1.Click local lnI, nCn with thisform nCn=.list1.ListIndex FOR lnI = 1 TO 50 .list1.AddItem(" "+STR(lnCounter), nCn+1, 1) nCn = nCn + 1 lnCounter = lnCounter + 1 .list1.ListIndex=ncn NEXT Endwith ENDPROC
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.
Steps to Reproduce Behavior
Create a program and include the following code in it. Save and run the program.
******* Start of the Code PUBLIC oform1 oform1=NEWOBJECT("form1") oform1.Show RETURN DEFINE CLASS form1 AS form Top = 0 Left = 0 Height = 452 Width = 633 DoCreate = .T. Caption = "Form1" WindowState = 2 Name = "Form1" ADD OBJECT command1 AS commandbutton WITH ; Top = 180, ; Left = 144, ; Height = 48, ; Width = 216, ; FontBold = .T., ; FontSize = 15, ; Caption = "Add Item", ; Name = "Command1" ADD OBJECT list1 AS listbox WITH ; ColumnCount = 1, ; ColumnWidths = "60", ; RowSourceType = 1, ; Height = 120, ; Left = 144, ; Top = 24, ; Width = 204, ; Name = "List1" ADD OBJECT command2 AS commandbutton WITH ; Top = 240, ; Left = 144, ; Height = 48, ; Width = 216, ; FontBold = .T., ; FontSize = 15, ; Caption = "Quit", ; Name = "Command2" PROCEDURE Load PUBLIC lnCounter lnCounter = 0 ENDPROC PROCEDURE command1.Click local lnI with thisform FOR lnI = 1 TO 50 .list1.AddItem(" "+STR(lnCounter), .list1.ListiNDEX+1, 1) .list1.ListIndex = .list1.ListIndex + 1 lnCounter = lnCounter + 1 NEXT Endwith ENDPROC PROCEDURE command2.Click thisform.release ENDPROC ENDDEFINE ******* End of the Code
- Click the command button Add Item.
- Notice the contents of the list box are not ordered correctly.
Additional query words: KBDSE
Keywords: kbbug kbcodesnippet kbcontainer kbctrl kbpending KB248226