Building a Text Editor, Part III

n this article, you’ll continue building on the text editor that you created in Part I and Part II. As usual, the code is available for download by clicking here. This article will add a few more features to the application, including the ability to pick a file from the most-recently-used list (MRU) and automatically open it. To save space, the complete code listing won’t be shown in this article, so be sure to download it before reading the article.

Right now, the code to open a file is located in the event handler for the File->Open menu choice. If we want to allow the user to pick a file from the list and open it, we need to make the code a bit more modular. In addition, when the user picks a file, we don’t have to show the Common Dialog to allow the user to pick a file. In this case, we’re going to take the code that actually loads the file and put it in a subroutine that can be called from multiple places. The filename that the user picks will still be stored in the module level variable m_strFilename, so that means we don’t have to pass that variable as a parameter to our new LoadFile subroutine that you’ll see shortly. The menu choice for File->Open will still show the common dialog, but the menu choice for the MRU list won’t need to.

Here is the new mnuFileOpen_Click event handler, with the subroutine call bolded:

Private Sub mnuFileOpen_Click()      If Not SaveComplete() Then Exit Sub      '   ' Select file to open using   ' Common Dialog control   '   On Error GoTo EH   With ComDlg      .CancelError = True      .Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"      .DefaultExt = ".txt"      .DialogTitle = "Open File"      .FilterIndex = 1      .Flags = cdlOFNHideReadOnly      .ShowOpen      If .FileName <> "" Then m_strFilename = .FileName   End With      LoadFile   AddToMRUList m_strFilename   Exit Sub      '   ' This will catch any errors, such   ' as when the user hits the Cancel   ' button to exit the dialog.   'EH:   If Err.Number = cdlCancel Then      Exit Sub   Else      MsgBox "ERROR: " & Err.Description _         & ". [Error #" & Err.Number & "]", vbCritical   End If   End Sub

The last change we need to put in is to create an event handler for when a user clicks a file on the MRU list. With the LoadFile subroutine in place, this code is easy to write. The key is that the filename to open is already available to uswe just have to read it from the Caption property of the menu choice that is selected.

Here’s the code you need to add:

Private Sub mnuFileMRU_Click(Index As Integer)   If Not SaveComplete() Then Exit Sub      m_strFilename = Mid(mnuFileMRU(Index).Caption, 4)   LoadFileEnd SubIf you look at the menu, the format of an entry in the MRU list is as follows:#[space]filename

However, in order to get the number to be underlined and be selectable, we have an ampersand preceding the number in the Caption property. For this reason, the filename starts at the fourth, not third, character of the Caption property. The Mid function, using only the two arguments, will start at character 4 and retrieve everything to the end. We then call the LoadFile routine, as we did before. Before we do that, we check to make sure that any changes have been saved. Once you have two files in your MRU list, you can switch back and forth like any other application.

In the next part of this article, you’ll learn to create a find function that will both find text and allow you to find other occurrences of that same piece of text.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


The Latest

homes in the real estate industry

Exploring the Latest Tech Trends Impacting the Real Estate Industry

The real estate industry is changing thanks to the newest technological advancements. These new developments — from blockchain and AI to virtual reality and 3D printing — are poised to change how we buy and sell homes. Real estate brokers, buyers, sellers, wholesale real estate professionals, fix and flippers, and beyond may

man on floor with data

DevX Quick Guide to Data Ingestion

One of the biggest trends of the 21st century is the massive surge in internet usage. With major innovations such as smart technology, social media, and online shopping sites, the internet has become an essential part of everyday life for a large portion of the population. Due to this internet

payment via phone

7 Ways Technology Has Changed Traditional Payments

In today’s digital world, technology has changed how we make payments. From contactless cards to mobile wallets, it’s now easier to pay for goods and services without carrying cash or using a checkbook. This article will look at seven of the most significant ways technology has transformed traditional payment methods.