Visual FoxPro users have long benefited from the Project Manager. It gives them a way to easily organize and manage all the components for a project including programs, forms, reports, data, graphic files, and so forth. However, programming methodology has evolved. Now there exists a huge mass of reusable resources, which permits you to be much more productive. A new problem emerges: managing all these objects, resources, wizards, and tools. The Visual FoxPro Component Gallery is the solution to this problem.
The Component Gallery, shown in Figure 19.1, is a container that you can use to organize and maintain all your available Visual FoxPro resources. You can store visual class libraries, components, forms, programs, applications, graphics, tools, projects, and so forth. Furthermore, you can customize the Component Gallery any way you please. You can even create a visual representation of the same components in different logical groupings.
Figure 19.1 : The Visual FoxPro Component Gallery.
You can drag components from the Component Gallery and drop them on a form or project, as illustrated in Chapter 18, "The Visual FoxPro Foundation Classes." But then the Component Gallery supports all the functionality of the Project Manager and Class Browser, as you'll see later in this chapter.
All you have to do to open the Component Gallery is to choose Tools, Component Gallery. You can open the Component Gallery from the Command Window by typing the following:
DO (_GALLERY)
In either event, the Component Gallery appears as shown in Figure 19.1. As you can see, the resources are organized in logical groupings similar to the Windows Explorer. The logical groupings are visually represented in the left pane as folders, or catalogs. A visual representation of the resources is associated with each folder or catalog in the right pane. The right pane is called the Object Pane. The left pane is referred to as the Catalog Pane.
By default, the Catalogs item in the left pane refers to the group of available catalogs. The set of catalogs shipped with the Visual FoxPro Component Gallery is presented in Table 19.1. When you highlight the Catalogs object in the Catalog Pane, all catalogs appear in the Object Pane. Then you can click on a catalog object to display its contents.
Catalog |
Description |
Catalogs | This catalog contains all the other catalogs. |
VFP Main | This catalog contains components used by other catalogs in the gallery; it contains everything. |
Favorites | This catalog is empty. You can put your favorite things here. When you create a program component from a wizard, it is placed in this folder. Note that the Favorites catalog is a global catalog. Global catalogs are always opened. |
Visual FoxPro | This default catalog contains all the Visual FoxPro components, templates, and tools. |
Data | This folder contains data-related tools and data sources. |
Foundation Classes | This catalog contains all of the Visual FoxPro Foundation Classes. The classes are organized in categories with a folder for each class. |
Help | This folder contains various readme files. |
Templates | This catalog contains folders containing categories of wizard templates. |
Tools | This folder contains tools and utilities that you might need while developing applications. |
My Base Classes | This catalog contains subclassed Visual FoxPro base classes. They are for you to customize as you please. |
ActiveX | This dynamic catalog contains either a list of all registered ActiveX Controls or a list of all Visual FoxPro ActiveX Controls. |
World Wide Web | This catalog contains folders. Each folder contains useful Web site URLs. You can double-click one, and the Internet Explorer is launched to connect to the associated Web site. Most of the folders contain Microsoft Web site URLs. However, some folders contain URLs for Visual FoxPro user groups and other Visual FoxPro resources that you might find useful. |
Multimedia | This catalog contains folders with various images, sounds, and video files you can use in your applications. |
Samples | This catalog contains folders with references to Visual FoxPro sample programs such as Tastrade, Solutions, and so forth. |
The Component Gallery is an extremely powerful context-sensitive system. It is pretty good at guessing what you normally want to do with an item when you select it based on the type of object you select. To perform an action on an item, you can do the following:
You can drag an object from the Component Gallery and drop it on a form or project. The Component Gallery knows what kind of object you are dragging and won't let you drop it in the wrong place. And when the Component Gallery does drop the object, it knows what you want done with the object. Table 19.2 describes what happens when you drag and drop particular object types onto other particular object types.
TIP |
You can use another unique drag-and-drop technique to perform an action on an object. It involves using the Move icon located at the far left of the toolbar. First, click an object in the Object Pane to select the object. Then drag the Move icon to the desired target and drop it. The selected object also is dropped. You'll learn more about the Move icon later in this chapter. |
Item Type |
Target |
Action |
Class | Form | Adds a class to a form |
Project | Adds a visual class library to a project | |
Any item | Catalog | Adds an item to a catalog |
Folder | Adds an item to a folder | |
Data | Form | Creates a grid object containing the table or view |
Form | Project | Adds a form to a visual class library or a project |
HTML Help File | Form | Adds an HTML button class to a form that launches the help |
Image File | Form | Adds an Image class or sets the Picture property |
Control | Adds an Image class or sets the Picture property | |
Screen | Sets the FoxPro wallpaper | |
Menu | Form | Adds a shortcut menu to a form |
Screen | Opens the Menu Designer to edit a menu | |
Program | Project | Adds a program to a project |
Screen | Opens designer to modify a program | |
Project | Screen | Opens the project |
Sound File | Form | Adds a multimedia class to a form |
Report | Form | Adds a button class to launch a report |
Template | Project | Opens an appropriate wizard to create a program component and adds it to a project |
Tool | Screen | Executes Tool |
URL | Form | Opens a Web browser to connect to a Web site |
Video File | Form | Adds a multimedia class to a form |
Item Type |
Action |
Catalog | Opens that catalog in the Object Pane |
Class | Opens the Class Designer |
Form | Opens the Form Designer |
HTML Help Files | Opens Help |
Image File | Opens the Image Editor (MS Paint) |
Menu | Opens the Menu Designer |
Project | Opens the project |
Program File | Opens a text editor |
Sound or Video File | Opens the Media Player |
Report | Opens the Report Designer |
Template | Opens an appropriate wizard to create a program component and adds it to a project |
Tool | Executes Tool |
URL | Opens a Web browser to connect to a Web site |
Figure 19.2 : The Component Gallery item shortcut menu.
Item |
Action |
Add to Project | If the Property Manager is open, and the selected object can be added to a project, this item appears in the list. This item is described in Chapter 18, "The Visual FoxPro Foundation Classes." |
Add to Form | If the Form Designer is open, and the selected object can be added to a project, this item appears in the list. This item is discussed in Chapter 18, "The Visual FoxPro Foundation Classes." |
Build | This item builds a project. If the selected object is a project, this menu item appears. |
Modify | If a designer that can modify the selected object exists, this item appears in the menu. It opens the appropriate designer to edit the object. For example, if the selected object is a form, the Form Designer is opened. |
View in Browser | If the selected object is a class-type object, this item opens the FoxPro Class Browser so that you can look at its properties and methods. |
Cut | This item moves the selected object to the Gallery Clipboard, then dims the object. When a Paste operation is performed, the dimmed object is removed from the location of the cut. |
Copy | This item copies the selected object to the Gallery Clipboard. |
Create Link | This item creates a link to the selected object that can be inserted in a dynamic folder. |
New Item | This item adds a new item to a folder or catalog. Highlight this menu item, and you can choose an object type from a submenu that appears. You can create a new folder or add an existing object to the Object Pane. The Item Shortcut menu contains this item if you right-click on an empty spot in the Object Pane. |
Paste | This item adds the contents of the Gallery Clipboard to the selected folder. |
Remove | This item deletes the selected object from the component gallery. A message box appears, in which you can confirm or reject the deletion operation. |
Rename | This item enables you to rename the selected object. |
Properties | This item displays the Properties dialog box so that you can review or modify the properties for the selected object. |
The Component Gallery Toolbar, shown in Figure 19.3, consists of a Move icon, a view type drop-down list, and some toolbar buttons. At the right side of the toolbar are four buttons that control the display of the components in the Object Pane. The options are also present on the Windows Explorer. In other words, you can display the components as large icons, small icons, a list, or a detailed list.
Figure 19.3 : The Component Gallery toolbar.
The Move icon is used as an alternative scheme for drag-and-drop operations. You can select an object in the Object Pane and then drag and drop the Move icon to a form or project. For example, you can select a class component and drag the Move icon to a form. You might consider the Move icon to be a strange interface operation. On the contrary, it is quite innovative. Suppose you want to drag a component from the Component Gallery to a large form; you might discover that the Component Gallery covers the drop spot. The solution is to select the component, move the Component Gallery so that only its upper-left corner is visible, and then drag the Move icon to the drop spot on the form.
You can use the View Items drop-down list to select the default and various user-defined views of the catalogs in the Component Gallery. You can define a view using the Find Component dialog box to search for components that match designated search criteria. You can activate the Find Component dialog box by doing the following:
The Class Browser button is a toggle between the Component Gallery and the Class Browser. You use the Class Browser to examine and edit class methods, events, and properties.
The Open Catalog button displays the Open dialog box shown in Figure 19.4. You can specify a catalog to open by indicating either the name or filename of the catalog.
Figure 19.4 : The dialog box to open a catalog in the Component Gallery.
The Options button displays the Component Gallery Options dialog box, as shown in Figure 19.5. In it, you can alter the behavior of the Component Gallery.
Figure 19.5 : The Component Gallery Options dialog box with the Standard tab selected.
The Options dialog box has the following three tabs:
Table 19.5 Standard Tab Option Dialog Box Items
Item |
Action |
Enable Item Renaming | If this check box is checked, you can rename a component in the Component Gallery by clicking on the component's label and typing a new name. The Item Shortcut menu renaming method is always available. |
FFC Builder Lock | If this check box is checked, you can designate that a builder opens when you drop a FoxPro Foundation Class on a form. |
Drag and Drop to Desktop | If this check box is checked, when you drop a visual class on the desktop, it appears as a sample on the desktop. For example, if you drop a control button on the desktop, a button will appear just as it would appear if it were dropped on a form. However, it has no functionality. You perform this test so that you can see what a class object looks like. |
Advanced Editing Enabled | If this check box is checked, a more complex set of tabs is added to the Class Item Properties dialog box. If you want to make any advanced modifications to the Component Gallery, you should set this tab. |
Catalog Default Behavior | |
Open File as New View | If this option is selected, when you double-click on a Component Gallery item that can be either opened or added, the item will be opened. (default) |
Add File to Current View | If If this option is selected, when you double-click on a Component Gallery item that can be either opened or added, the item will be added. |
Items Default Behavior | |
Modify Item File | If this option is selected, when you double-click on a Component Gallery item that can be either run or modified (such as a Form), the item will be run. |
Run Item File | If this option is selected, when you double-click on a Component Gallery item that can be either run or modified (such as a Form), the item will be modified. |
The Find Component button opens the Find Component dialog box, as shown in Figure 19.6. You can search the entire Component Gallery for a component or group of components and save the search results as a new Component Gallery view. You can specify search criteria for the components you want to include in the view.
Figure 19.6 : The Component Gallery Find Component dialog box.
Now that you have looked at all facets of the Component Gallery, it is time to work with the Component Gallery. In the next section, you will create an application.
You can easily create and maintain applications from the Component Gallery. Creating the application using the wizard templates is also easy. For this example, create a recipe book application. All you have to do is to open the Templates folder and click on the Recipes Template. The Enter Project Name dialog box then appears, as shown in Figure 19.7. Enter the name of the project for your new application, and adjust the directory if you want. Then click OK, and the application is created.
Figure 19.7 : The Component Gallery and the Enter Project Name dialog box.
If you examine Figure 19.8, you will see that the template-driven Application Wizard automatically built the application complete with a project. The project was placed in the Component Gallery Favorites folder.
Now, click on Build with the Build and Run option set, and presto, you have an operational Recipe book application, as shown in Figure 19.9. Notice that it has multiple forms, and that Forms and Reports menus were added to the system menu.
If this recipe book application is too simple for your needs, you can use the Component Gallery to enhance it. Perhaps you want to add a meal planner with an option to connect to the Internet grocery and order the ingredients automatically. Well, that might be a little ambitious. For now, use a simpler example. Let's use the Component Gallery to add a button that launches the Windows Calculator to the Ingredients form. Here are the steps:
NOTE |
During the build process, you might have to supply the directory of the FoxPro Foundation Classes directory containing the Launch Button class. It is ...\VFP98\ffc. |
As you become more familiar with the Component Gallery, you might want to revise it to conform to your lifestyle. You might want to create your own catalogs or folders, and rearrange the components and structure of the Component Gallery treeview.
If you want to create a new catalog, just click on the Options button on the toolbar, and the Component Gallery Options dialog box appears. Click on the Catalogs tab, click the New button, and enter the name of the new catalog. Finally, click OK and exit from the Options dialog box. The catalog is added to the treeview.
With the exception of the Catalogs catalog, a catalog can contain only folders and items. Folders cannot be at the top level of the treeview. Therefore, if you want a catalog to be a folder, you can drag and drop your catalog into another catalog or folder. The former catalog becomes a folder, and its icon changes automatically from a catalog to a folder.
If you want to change the configuration of a folder or catalog, right-click on the catalog or folder, and the Folder Properties dialog box appears. The dialog box contains the General, Node, Script, and Comments tabs. In the subsequent discussion, I will refer to a catalog, but the discussion relates to both catalogs and folders.
The General tab contains several text boxes, which are described in Table 19.6.
Item |
Description |
Name | Designates the catalog's text label. |
Description | Displays text in the Description Pane when the catalog is selected. It is located at the bottom of the Gallery Window. |
Picture | Contains the path and filename of the icon file used to visually represent the catalog in the Gallery Window. Typically, the only field you will change is the Description text box to provide a useful description of the catalog. |
Item Picture | Specifies a default path and filename of the icon used to visually represent items in the catalog. |
Item Desc. | Designates the default text for the Description Pane when the item is selected. |
Item |
Description |
ID | Assigned when the catalog is created. |
Link ID | Specifies the link to other catalogs in the treeview. It is set when you use drag-and-drop operations to reposition a catalog in the treeview. |
Class name | Specifies the name of the class of the catalog. |
Class Library | Specifies the path and filename of the visual class library for the catalog. |
Item class | Specifies the class names of items in the catalog that have not yet been assigned classes. |
Dynamic Catalog | Specifies the expression, filename, or URL that launches when you select this catalog. |
When you select the Windows Directory folder, the appearance of the Component Gallery changes, as illustrated in Figure 19.11. Notice that even the folder icon changes.
Figure 19.11: Component Gallery folder with the characteristics of the Windows Explorer.
The preceding example is an exception. Typically, the only Node tab field that you have to set is Item class to define default class items. For example, if a folder normally contains templates, specify _templateItem for the Class Name field. The interface and behaviors of the Component Gallery are maintained by classes in the Component Gallery class library (VpfGallery.vcx). Its path and filename are ...\VFP98\gallery\VpfGallery.vcx.
The Class Name field in the Node tab for catalogs and items refers to classes in the Component Gallery class library. The types of classes are presented in Table 19.8.
Item |
Class Name |
Object Types |
ActiveX | _ActiveXItem | ActiveX control or server file (.ocx, .exe, .dll) |
Catalog | _CatalogItem | Open Visual FoxPro catalogs |
Class | _ClassItem | Any Visual FoxPro class from Visual class library file (.vcx) or from program file (.prg) |
Data | _DataItem | Visual FoxPro data source (.dbc, .dbf, .qry, and so on) |
Form | _FormItem | Visual FoxPro form file (.scx) |
File | _FileItem | Any file with a valid associated application |
Image | _ImageItem | Image files (.ani, .bmp, .cur, .dib, .gif, .ico, .jpg) |
Menu | _MenuItem | Visual FoxPro menu (.mnx) |
Program | _ProgramItem | Visual FoxPro program file (.prg) |
Project | _ProjectItem | Visual FoxPro project file (.pjx) |
Report | _ReportItem | Visual FoxPro report file (.frx) |
Sample | _SampleItem | Visual FoxPro executable file (.app, .exe, .frx, .prg, .scx) |
Sound | _SoundItem | Sound files (.wav, .rmi, .mid, .snd) |
Template | _TemplateItem | Script Item Type |
URL | _UrlItem | Web Item Type:Web documents (URLs)Local document file (.htm)Active document file |
Video | _VideoItem | Video file (.avi, .mov) |
The Comments tab lets you save comments related to a specific catalog. You might find it useful to place programming notes in the Comments tab fields.
You can modify the behavior of a Component Gallery item in the Class Item Properties dialog box. To display this dialog box, right-click on an item in the Object Pane, and choose Properties from the shortcut menu. Table 19.9 describes the contents of the Class Item Properties dialog box.
NOTE |
The Class Item Properties dialog box contains a group of advanced editing features that are not available by default because the item properties are usually handled automatically by the Component Gallery. If you need to access them, select the Advanced Editing Enabled check box in the Component Gallery Options dialog box. Then the Type, Scripts, Views, and Comments tabs appear. |
Item |
Action |
General Tab | |
Name | Specifies the text value used as the component label. |
Description | Specifies the text that displays in the Component Gallery Description Pane. |
Picture | Specifies the path and filename of an icon, which provides visual representation of the item in the Component Gallery. Specifies |
Views Tab | |
Views |
Specifies Designates the view and folder that contains the selected item in the form: viewName=folderName |
Keywords | Specifies keywords that can be used to locate the selected item using the Find Component command. The Find Component command generates a view; you execute it by clicking the toolbar's Find Component button. |
Node Tab | |
ID | Contains the item identification information. |
Link | Contains the name of the source item if the selected object is a link. |
Class Name | Specifies the Component Gallery class (refer to Table 19.8). |
Class Library | Specifies the path and filename of the visual class library containing the specified class. |
Scripts Tab | |
Script | Specifies an event script associated with the selected item. |
Properties | Specifies property assignments. |
Comments Tab | |
Comments | Specifies optional user comments. |
User | Specifies optional usage-related comments. |
If the object is a project, the Item tab contains the path and filename of the project plus some build options that designate what happens if you right-click on a project file and choose Build from the Items shortcut menu. The build actions include Rebuild All, Show Errors, and Run After Build. They are the same build options supported by the Project Manager.
The Item tab for a class object lets you specify the class name, its base class, and its visual class library path and filename. In addition, it specifies the path and filename of a file containing an example of the selected class item.