Creating Macros for a Slide-In Prompt and to Renumber
When using the Developer Studio IDE, I have always missed some of the functionality I added to my CodeWright environment using a custom .dll I wrote several years back. The two most useful functions I missed most were called SlideInPrompt and Renumber.
The SlideInPrompt macro inserts a text string into a selected column. If only one column was selected, the selected column is left intact and the text inserted at the beginning of the column. If more than one column is selected, the text under the column is deleted before the text is inserted.
The Renumber macro will sequentially renumber a selected column. It will prompt for a beginning number, delete the selected column, and then sequentially ordered numbers are inserted in its place.
The combination of these two macros are great time savers. Here is an example of how you might use them.
Simply select a blank column (hold down your Alt key while selecting, or press CTRL+SHIFT+F8 to go into column mode), and activate the SlideInPrompt macro (I have it tied to CTRL->). Enter your text, such as:
GetDlgItem(IDC_RADIO1)->Enable(FALSE);
You will end up with a column of text like this:
GetDlgItem(IDC_RADIO1)->Enable(FALSE); GetDlgItem(IDC_RADIO1)->Enable(FALSE); GetDlgItem(IDC_RADIO1)->Enable(FALSE); GetDlgItem(IDC_RADIO1)->Enable(FALSE); GetDlgItem(IDC_RADIO1)->Enable(FALSE); GetDlgItem(IDC_RADIO1)->Enable(FALSE);
Now comes the renumber macro. Highlight the columns of 1's and active the Renumber macro. It will prompt for a starting number; enter "1" and the column will be renumbered sequentially.
I had to calculate the number of columns selected because I couldn't find a function to return it. Anybody have any ideas on this?
To use this macro, simply highlight it and save it as a .dsm file in the "C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Macros" folder. Select Tools, Customize and go to the Add-Ins and Macros tab. Click the Browse button and select the macro.
'------------------------------------------------------------------ ' FILE DESCRIPTION: Two Macros: SlideInPrompt() slides text into ' selection; Renumber() renumbers a column of numbers ' Eric Sanders, February 12, 2001 '------------------------------------------------------------------ Sub SlideInPrompt() SlideString = InputBox ("Enter Slide-In string:") If SlideString <> "" Then SlideIn(SlideString) End If End Sub Function SlideIn(ByVal SlideString) nStartLine = ActiveDocument.Selection.TopLine nEndLine = ActiveDocument.Selection.BottomLine ' Calculate how many columns have been selected ' No direct function to retreive this? nChars = len(ActiveDocument.Selection) nColumns = ((nChars - 2 * (nEndLine - nStartLine + 1)) _ / (nEndLine - nStartLine + 1)) ' We cut to force cursor to the top left ActiveDocument.Selection.Cut ' If we only selected one column, then we want the original ' text so put it back if nColumns = 1 then ActiveDocument.Selection.Paste end if ' Now go through the column adding our string nStartColumn = ActiveDocument.Selection.CurrentColumn For i = nStartLine To nEndLine ActiveDocument.Selection.MoveTo i, nStartColumn ActiveDocument.Selection = SlideString Next End Function Sub Renumber() BegNum = InputBox ("Enter beginning number") If BegNum <> "" Then If IsNumeric(BegNum) Then nBegNum = Int(BegNum) RenumberColumnSelection(nBegNum) End If End If End Sub Function RenumberColumnSelection (ByVal nBegNum) nStartLine = ActiveDocument.Selection.TopLine nEndLine = ActiveDocument.Selection.BottomLine ActiveDocument.Selection.Delete nStartColumn = ActiveDocument.Selection.CurrentColumn For i = nStartLine To nEndLine ActiveDocument.Selection.MoveTo i, nStartColumn ActiveDocument.Selection = nBegNum nBegNum = nBegNum + 1 Next End Function
Downloads
Source Code (renumber.dsm) - 5kb
September 13, 2002

Comments
There are no comments yet. Be the first to comment!