DOCUMENT:Q276554 09-NOV-2000 [foxpro] TITLE :INFO: How To Modify a Resize Object to Work with an OptionGroup PRODUCT :Microsoft FoxPro PROD/VER::6.0 OPER/SYS: KEYWORDS:kbOOP kbvfp600 kbFFC kbGrpDSFox kbDSupport kbCodeSnippet ====================================================================== ------------------------------------------------------------------------------- The information in this article applies to: - Microsoft Visual FoxPro for Windows, version 6.0 ------------------------------------------------------------------------------- SUMMARY ======= If you use the OptionGroup control on a form with the Resize object, the option button group does not resize automatically. This article describes how to make an option button group resize and move with the other controls on the form. MORE INFORMATION ================ NOTE: The code in the following set of instructions works for an option button group with either horizontal buttons or vertical buttons, but not both. 1. Start Visual FoxPro version 6.0. 2. On the File menu, click Open, and then browse to the Vfp98\FFC folder. (This folder is a subfolder of the folder in which Microsoft Visual Studio is installed.) 3. Select the _controls.vcx file. In the Class Name list, click _controls, and then double-click _resizable. 4. In the Properties window, double-click the LoopThroughControls method. 5. Add "Optiongroup" (without the quotation marks) to the end of line 11 as follows: #define BASE_CLASS "Commandbutton Combobox Checkbox Listbox Form Grid Textbox Label Shape Editbox Olecontrol Pageframe Image Spinner Optiongroup" 6. In the Procedure drop-down list box, click SetSize, and then add the following code after the existing code: * Resize Option Group. IF oControl.BaseClass $ "Optiongroup" THEN LOCAL nNumButtons,nLoop, nHorzSpaceBtwnButtons, nVertSpaceBtwnButtons, nButtonHeight, nWidestButton * Initialize Variables. nNumButtons = oControl.ButtonCount nButtonHeight = oControl.Buttons(1).Height && Assume all the buttons are the same height nWidestButton = 0 * Find the widest button. FOR nLoop = 1 TO nNumButtons IF (oControl.Buttons(nLoop).Width > nWidestButton) THEN nWidestButton = oControl.Buttons(nLoop).Width ENDIF ENDFOR * Determine whether the buttons are horizontal or vertical. IF (oControl.Buttons(1).Top != oControl.Buttons(2).Top) THEN lVertical = .T. && Vertical Buttons ELSE lVertical = .F. && Horizontal Buttons ENDIF * Take care of the vertical buttons. IF (lVertical) THEN nVertSpaceBtwnButtons = (oControl.Height - (nNumButtons * nButtonHeight)) / (nNumButtons + 1) FOR nLoop = 1 TO nNumButtons oControl.Buttons(nLoop).Left = (oControl.Width - nWidestButton) / 2 IF nLoop = 1 THEN oControl.Buttons(nLoop).Top = nVertSpaceBtwnButtons ELSE oControl.Buttons(nLoop).Top = (nLoop * nVertSpaceBtwnButtons) + (nButtonHeight * (nLoop - 1)) ENDIF ENDFOR ELSE * Take care of the horizontal buttons. nHorzSpaceBtwnButtons =(oControl.Width - (nNumButtons * nWidestButton)) / (nNumButtons + 1) FOR nLoop = 1 TO nNumButtons oControl.Buttons(nLoop).Top = (oControl.Height - nButtonHeight) / 2 IF (nLoop = 1) THEN oControl.Buttons(nLoop).Left = nHorzSpaceBtwnButtons ELSE oControl.Buttons(nLoop).Left = (nLoop * nHorzSpaceBtwnButtons) + (nWidestButton * (nLoop - 1)) ENDIF ENDFOR ENDIF ENDIF && Optiongroup resize 7. Save the class. 8. Create a form and place the Resize object on the form. 9. Add the following code to the Resize event of the form: THISFORM._resizable1.adjustcontrols 10. Add a command button, an option button group, and text box objects to the form. 11. Run the form, and then resize the form. The option button group now moves with the rest of the controls on the form. REFERENCES ========== For additional information about the Resize object, consult the Visual FoxPro 6 Help file. (c) Microsoft Corporation 2000, All Rights Reserved. Contributions by Mark Barnard, Microsoft Corporation. Additional query words: ====================================================================== Keywords : kbOOP kbvfp600 kbFFC kbGrpDSFox kbDSupport kbCodeSnippet Technology : kbVFPsearch kbAudDeveloper kbVFP600 Version : :6.0 Issue type : kbinfo ============================================================================= 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 2000.