FoxTalk. GOING through the classes provided in the FoxPro. More Gems in the FFC. Doug Hennig 6.0

Size: px
Start display at page:

Download "FoxTalk. GOING through the classes provided in the FoxPro. More Gems in the FFC. Doug Hennig 6.0"

Transcription

1 FoxTalk Solutions for Microsoft FoxPro and Visual FoxPro Developers This is an exclusive supplement for FoxTalk subscribers. For more information about FoxTalk, call us at or visit our Web site at Extended Article More Gems in the FFC Doug Hennig 6.0 This month, we ll look at classes in three categories of the FoxPro Foundation Classes: User Controls, Text Formatting, and Output. GOING through the classes provided in the FoxPro Foundation Classes (FFC) in VFP 6 makes you feel like a kid going through a stack of a friend s baseball cards: got it, don t want it, don t want it, got it, need it. Last month, we looked at some of the classes in the FFC (see Mining for Gold in the FFC ). This month, we ll take a look at more of them, deciding which ones are actually useful and when, which need to be subclassed to improve their behavior, and which ones are duds. User Controls The User Controls subfolder of the Foundation Classes folder in the Visual FoxPro Catalog of the Component Gallery contains a variety of controls intended for use in various dialog boxes you create. (From now on, I ll just refer to the subfolder without mentioning where it can be found, since they re all in the Foundation Classes folder.) We looked at Resize Object (the _Resizable class in _CONTROLS.VCX) last month. Get File and Directory (the _Folder class in _CONTROLS.VCX) is only useful if you re building project management tools for other developers; it has controls for the name and directory of a project, and a check box indicating that the project directory structure should be created. This could be used in a New Application Wizard, for example (in fact, it s used in the VFP Application Wizard, which is probably the only reason it s included in the FFC), but it has no place in the kinds of user apps we build. MouseOver Effects (the _MouseOverFX in _UI.VCX) provides coolbar effects for controls (making the object appear raised, like the buttons in the VFP Standard and Internet Explorer toolbars). In my opinion, this class is demoware ; if you want to create toolbars with this effect, use the Microsoft Coolbar ActiveX control that comes with VFP 6. For other kinds of controls, this just looks like showing off to me. The rest of the classes in the User Controls folder are mover classes components that present the traditional two lists (one of available items and one of selected items) and buttons for moving items between the lists. Mover (the _Mover class) is the parent class for all of these classes, all of which are defined in _MOVERS.VCX. It has the following methods: InitChoices: Sets the list of available items (the left list box) to the values in the passed array. If the SortLeft property is.t., the list will be sorted. If the UseArrays property is.t. (the default), the passed array is copied to the achoices array property and the list box is based on this array; otherwise, the entries in the passed array are copied to the list using AddItem. If some items are already selected, they shouldn t be in the array passed to this method. InitSelections: Sets the list of already selected items (the right list box) to the values in the passed array. As with InitChoices, the passed array is copied to the aselections array property, and the list box is based on this array if the UseArrays property is.t. SizeToContainer: Sizes and positions all of the objects appropriately based on the container size. GetSelections: Populates the passed array with the selected items and returns the number of items. The right list has mover bars, so the user can rearrange the list; GetSelections returns them in the order they appear in the list. _Mover has label objects (Label1 and Label2) above the lists that by default have no Caption values set but can be used as headings for the lists. It also has an Updated FoxTalk Extended Article: January

2 property that contains.t. if the user added items to or removed items from the selected list. There are a couple of bugs in _Mover. Unfortunately, you have to fix these bugs right in the class rather than creating a subclass and fixing them there, because the other mover classes in _MOVERS.VCX are subclasses of _Mover. The PopList method, which populates a list box with items in a passed array, doesn t handle singly dimensioned arrays correctly. Here s the fix: LPARAMETER alistarray,olstref EXTERNAL ARRAY alistarray private ctmpliststr,i m.ctmpliststr = "" *** NEW CODE if alen(alistarray, 2) = 0 for m.i=1 to alen(alistarray) m.olstref.additem(alistarray[m.i]) endfor else *** END OF NEW CODE for m.i=1 to alen(alistarray,1) m.olstref.additem(alistarray[m.i,1]) endfor *** NEXT LINE IS NEW endif alen(alistarray, 2) = 0 The Click method of cmdremove doesn t properly sort the left list when an item is moved to it from the right list. Here s a snippet of code from this method that shows the fix: * IF this.parent.lstleft.sorted IF this.parent.sortleft =ASORT(this.parent.aChoices) ENDIF MOVER1.SCX, available in the Subscriber Downloads at and shown in Figure 1, shows how _Mover is used. It displays a list of available company names and those already selected (I just picked a few at random). The form s Init method has the following code: local lachoices[1], ; laselections[3] use (_samples + 'DATA\CUSTOMER') select COMPANY from CUSTOMER into array lachoices * Preselect a few of these and remove them from the * choices list. laselections[1] = lachoices[4] laselections[2] = lachoices[8] laselections[3] = lachoices[11] Figure 1. MOVER1.SCX demos the _Mover class. adel(lachoices, 11) adel(lachoices, 8) adel(lachoices, 4) dimension lachoices[alen(lachoices) - 3] * Now populate the mover lists, set captions for the * labels, and size it appropriately. with This.oMover.InitChoices(@laChoices).InitSelections(@laSelections).Label1.Caption = 'Available companies:'.label2.caption = 'Selected companies:'.sizetocontainer() endwith Try moving some items between the lists and rearrange the items in the right list. Click on the Results button to display whether you made any changes or not, how many companies are selected, and what their names are. Super Mover (the _SuperMover class) is a subclass of _Mover that has additional behavior: It has add all and remove all buttons (and all buttons have pictures rather than text prompts) and supports a maximum number of items that may be selected (the MaxItems property with the error message to display in the MaxMessage property). Like _Mover, it has a bug dealing with sorting items in the left list after they ve been moved from the right. The following snippet shows the fix for the Click method of cmdremoveall: *lsorted = this.parent.lstleft.sorted lsorted = this.parent.sortleft To see how _SuperMover works, right-click on the class in the Component Gallery and run the sample from the context menu that appears. Field Mover (the _FieldMover class) is a subclass of _SuperMover, Table Mover (_TableMover) is a subclass of _FieldMover, and Sort Mover (_SortMover) is a subclass of _Mover; these classes provide field mover, field mover with database and table selection, and field and index mover features. The main problem with these classes is that they use actual field names rather than their captions. As a result, your users have to know the actual names of fields rather than the English names they probably know them by. Also, there s no facility for excluding certain fields, so the user will see primary key fields even if they never see them anywhere else in the application. These problems severely limit the usefulness of these classes in anything but tools intended for other developers (these classes are used in various wizards included with VFP), which is too bad, because I can see these classes could have been useful for things like allowing the user to select which fields should appear in a grid or how a report should be sorted. Let s subclass _FieldMover to give us some new functionality: displaying field captions rather than field names and providing the ability to remove certain fields 2 FoxTalk Extended Article: January

3 from the list. SFFieldMover (in SFFFC.VCX, available in the Subscriber Downloads) overrides the GetTableData method (which reads the structure of a table and adds the fields to the list boxes). Here s a snippet from this method that s the changed code: for lni = 1 to fcount() lcfield = field(lni) lcafield = alias() + '.' + lcfield if This.IsFieldValid(lcAField) lccaption = '' if not empty(dbc()) and indbc(lcafield, 'Field') lccaption = dbgetprop(lcafield, 'Field', ; 'Caption') endif not empty(dbc())... lccaption = iif(empty(lccaption), ; proper(strtran(lcfield, '_', ' ')), lccaption) lnfields = lnfields + 1 dimension apickfields[lnfields] dimension This.aFieldList[lnFields, 2] apickfields[lnfields] = lccaption This.aFieldList[lnFields, 1] = lccaption This.aFieldList[lnFields, 2] = lcfield endif This.IsFieldValid(lcAField) next lni Since we need to keep track of both the field caption and name, I added a new afieldlist array property to the class. The preceding code gets the caption of the field from the database container (or uses a cleaned up field name if it s a free table or the caption is blank) and adds the caption to apickfields (which will later be used to populated the available fields list box) and the caption and field name to This.aFieldList. I also added an abstract method, IsFieldValid, which determines whether the field can be added to the list. This method simply returns.t. in this class, but in a subclass or instance, you can put code (typically in a CASE statement) that returns.f. for certain fields. This can be hard-coded (by comparing the passed field name to a list of field names) or data-driven (using, for example, DBCX properties to determine whether the field should be used; see my article, DBCX 2: The Quickening, in the August 1998 issue of FoxTalk for details on DBCX). I also overrode the GetSelections method, since we want to return an array of field names, not the captions. Here s the code for that method: lparameters tafields local lncount, ; lafieldlist[1], ; lni, ; lcfield, ; lnfield with This lncount =.lstright.listcount if lncount > 0 acopy(.afieldlist, lafieldlist) dimension tafields[lncount] for lni = 1 to lncount lcfield =.lstright.list[lni] lnfield =.AColScan(@laFieldList, lcfield, 1) tafields[lni] = iif(lnfield = 0, '', ;.afieldlist[asubscript(.afieldlist, lnfield, ; 1), 2]) next lni endif lncount > 0 endwith return lncount MOVER2.SCX, shown in Figure 2, shows how SFFieldMover is used; it displays fields from the CUSTOMER sample table that comes with VFP. The IsFieldValid method of the SFFieldMover instance prevents the CUST_ID and MAXORDAMT fields from being available. The code in the Init method of this sample form is very simple: open database (_samples + 'DATA\TESTDATA') use CUSTOMER This.oFieldMover.InitData() This.oFieldMover.SizeToContainer() Text Formatting The Text Formatting subfolder of the Component Gallery contains several controls, all of which are contained in _FORMAT.VCX, for formatting text. Font Combobox (class _cbofontname) contains a list of fonts installed on the system (using VFP s AFONT() function) and Fontsize Combobox (_cbofontsize) contains font sizes for a specific font. RTF Controls (_RTFControls) and Format Toolbar (_tbrediting) are both toolbars consisting of controls for text formatting, but _tbrediting is the more feature-rich of the two. It has _cbofontname and _cbofontsize controls, command buttons for bold, italics, and underline settings, and a combo box for setting foreground and background colors. The toolbar has an nappliesto property that contains 1 if the settings apply to the current control in the active form, 2 if they apply to all text box and edit box objects in the form, or 3 if they apply to all controls in the form. The InteractiveChange event of each control adjusts the appropriate property of the appropriate controls (based on nappliesto) in the active form. The _cbofontname object also adjusts the _cbofontsize object so it displays sizes for the selected font. Although a sample is registered for these classes, it doesn t show how changing nappliesto affects the formatting, so I whipped up a quick and dirty demo, EDITING.SCX (shown in Figure 3), to do that. Type some text into the text box and edit box, then use the toolbar to change the formatting. Choose a different option in the option group, and notice that formatting then applies to different controls (even the option buttons). Notice that the toolbar reflects the settings of the current control; this Figure 2. MOVER2.SCX demos the SFFieldMover class. FoxTalk Extended Article: January

4 is done by refreshing the toolbar in the GotFocus method of each control. I haven t used the toolbar for an actual project, but I have used the _cbofontname and _cbofontsize classes in a preferences form where the user could choose the font and size for grids in an application. These settings were stored in the Registry (see last month s column for the SFRegistry class that handles reading from and writing to the Registry) and restored in the Init method of the grid class. Output As you might guess from its name, the Output subfolder of the Component Gallery contains controls related to outputting information. These classes are all located in _REPORTS.VCX. Text Preview (the _ShowText class) displays the contents of a text file; I think this is one of those yes, you can do this in VFP, but why would you kind of things, since Notepad works just fine for me (although if you really need to display a text file within VFP with more control than MODIFY FILE, this class would do the trick). Output Control (_OutputChoices) is a container class with options for output type (report, export file, HTML, and so forth), output options (which printer, export file type, and so on), and output filename. Output Dialog (_OutputDialog) is a form class with an _OutputChoices control plus options for which records to output, and which report and data sources to use. If you can live with the behavior and appearance of these classes, they d likely be useful to you. Unfortunately, the user interface isn t something I d want to give to a typical user, so I m going to bypass these classes. Output Object (_Output) is the gem in this bunch. This class has properties and methods for outputting data in a variety of ways: printing or previewing a report, printing to a text file, outputting to HTML, displaying a read-only browse window, exporting to any export file type supported by VFP, and so forth. _Output is actually a container class that includes a _WindowHandler object (also from the FFC) to manage output windows; we might take a look at closer look at this class in a future column. Let s take a look at the more important properties and methods of _Output. The cdestination property contains the type of output the class produces. The expected values for this property are PRINTREPORT (prints the report file named in the creport property), PRINTLIST (does the equivalent of LIST TO PRINT), SCREEN (previews the creport report, browses the table, or outputs and displays a text file from either the report or LIST TO FILE), TEXTFILE (prints the creport report using REPORT FORM TO FILE ASCII), PRINTFILE (prints the creport report using REPORT FORM TO FILE), EXPORT (exports to any export file type supported by VFP), and HTMLFILE (creates and optionally displays an HTML file using Figure 3. EDITING.SCX demos the _tbrediting class. GENHTML.PRG). The assign method for this property calls the SetDestinations method (which is also called from Init); this method populates the adestinations array property with the preceding list of choices in the second column and the display version of these choices in the first column. This array can thus be used as the RowSource for a combo box (set its ControlSource to cdestination and its BoundColumn to 2), allowing the user to choose the output destination. If you don t like the text displayed to the user, you can edit the constants defined in _REPORTS.H, the include file for this class. The calias property is the data source for output. Its assign method also calls the SetDestinations method, because the list of available destinations depends on whether calias is filled in or not. For example, if calias is empty, PRINTREPORT is still available (because the DataEnvironment for the report might contain the tables required in the report), but PRINTLIST isn t. The creport property contains the name of an FRX file to use for output. As with calias, its assign method calls SetDestinations (if creport is empty, for example, PRINTREPORT isn t available, but PRINTLIST is). The coption property contains the option for the desired destination. Here are the expected values: If cdestination is SCREEN, coption can be GRAPHICAL (perform a REPORT FORM PREVIEW), ASCII (perform a REPORT FORM TO FILE and display the text file), BROWSE (browse the table), and LIST (display the text file created with LIST TO FILE), although not all of these options are always available (for example, if creport is empty, GRAPHICAL and ASCII obviously don t apply). If cdestination is PRINTREPORT, PRINTLIST, or PRINTFILE, the choices are WINDEFAULT (use the Windows default printer), VFPDEFAULT (use the VFP default printer), or SETVFPDEFAULT (display a print dialog box and set the selected printer to the VFP default). 4 FoxTalk Extended Article: January

5 If cdestination is EXPORT, coption is the desired file type (for example, DBF for table, XLS for Excel, or SDF for an ASCII file with fixed length fields). If cdestination is HTMLFILE, coption can be FILEONLY (generate the HTML file but don t display it), VIEWSOURCE (generate the HTML file and display the source), or WEBVIEW (generate the HTML file and display it in a browser). If cdestination is TEXTFILE, coption is ignored. Like adestinations, the aoptions array property is filled with the appropriate range of values (based on cdestination) by the SetOptions method. The first column of the array is the display version; and the second column is the option. This array can be used as the RowSource for a combo box (set its ControlSource to coption and its BoundColumn to 2) so the user can choose from the options applicable for the selected destination (call the SetOptions method in the InteractiveChange method of the destination combo box, and then requery the options combo box so the user can only choose from appropriate values). The cfieldlist property contains a comma-delimited list of fields for options other than those based on a report; if this property is empty, all fields are output, even calculated fields defined with SET FIELDS. If the laddsourcenametodropdown property is.t. (the default), _Output adds the contents of creport, calias, or both (depending on whether they re filled in or not) to the display values in adestinations. I doubt the user will want to see this, so I d set the property to.f. cscope contains the scope clauses used for output. If this is empty, all records are output; otherwise, it should contain a value scope expression ( REST, WHILE <expression>, FOR <expression>, and so forth). cdisplayfontname contains the font to use for browse or text file viewing windows; the default is Courier New. ctextfile is the name of the text or export file to create; if it s empty, a unique filename (based on SYS(2015)) is assigned. chtmlclass is the class GENHTML.PRG should use for the instantiated HTML object; if this is left blank, GENHTML will use the appropriate class for the type of source it s working with. chtmlstyleid specifies a style to apply to the HTML file if it s created from the table (that is, creport is empty). It should be empty or the ID value from the appropriate record in GENHTML.DBF (in the VFP home directory). The Output method does all the work of performing the output based on the calias, creport, cdestination, and coption properties. It calls the appropriate method based on how cdestination is set; for example, OutputToScreen is used when cdestination contains SCREEN. I subclassed _Output into SFOutput (in SFFFC.VCX). I didn t change a lot; I just set laddsourcenametodropdown to.f. (as I mentioned earlier) and made the SetDestinations method call the SetOptions method because changing something (such as creport) that affects the list of destinations also affects the list of options. Okay, that s a lot of background detail; let s put this sucker to work. The sample available for this and other classes in the Output folder is okay, but it doesn t give you much opportunity to try out some of the options, so I created a simple form (OUTPUT.SCX) you can use for this. This form will demonstrate output against the CUSTOMER sample table that comes with VFP. It has an SFOutput object, two combo boxes (one for destination and one for options, as I described earlier), a check box that allows you to determine whether a report file is used or not (the Init of the form creates a simple report file), and a command button that just calls the Output method of the SFOutput object. Run the form, then set the destination and notice the choice of options available. Uncheck Use report and see how the list of destinations and options change. To see how different HTML styles work, uncheck Use report (so the HTML file will be produced from the table) and set destination to HTML file and option to View output in Web browser, then click on the Output button to see the default style. To change to a different style, enter the following in the Command window, then click on the Output button again: _screen.activeform.ooutput.chtmlstyleid = "<style>" For example, try DesertCalmStyle or Graffiti (browse the GENHTML table to see what choices are available). To see how cscope works, try the following: _screen.activeform.ooutput.cscope = ; 'for COUNTRY = "Germany"' Of course, you don t have to use a dialog box with combo boxes based on adestinations and aoptions (for example, you might not want to provide all options to your users); you simply have to set cdestination and coption to appropriate values before calling the Output method. Although there s nothing in the class you couldn t do in code yourself, you ll find this class very easy to use for producing output, especially HTML files, in your applications. Conclusion We looked at the classes in the User Controls, Text Formatting, and Output folders in the Component Gallery. In my opinion, some of the classes are demoware, but others are very useful, especially with a bit of tweaking in subclasses. Of course, beauty is in the eye of FoxTalk Extended Article: January

6 the beholder, so I suggest you examine these classes and decide which ones you ll want to use yourself. 01DHENSC.ZIP at Doug Hennig is a partner with Stonefield Systems Group Inc. in Regina, Saskatchewan, Canada. He is the author of Stonefield s add-on tools for FoxPro developers, including Stonefield Database Toolkit and Stonefield Query. He is also the author of The Visual FoxPro Data Dictionary in Pinnacle Publishing s The Pros Talk Visual FoxPro series. Doug has spoken at the 1997 and 1998 Microsoft FoxPro Developers Conferences (DevCon) as well as user groups and regional conferences all over North America. He is a Microsoft Most Valuable Professional (MVP) @compuserve.com, dhennig@stonefield.com. 6 FoxTalk Extended Article: January

Mining for Gold in the FFC

Mining for Gold in the FFC Mining for Gold in the FFC Doug Hennig Introduction One of the design goals for VFP 6 was to make it easier for programmers new to VFP to get up and running with the tool. The FoxPro Foundation Classes,

More information

May I See Your License? Doug Hennig

May I See Your License? Doug Hennig May I See Your License? Doug Hennig If you develop commercial applications, you may want to provide multiple levels of your application depending on what your users paid for, and prevent unauthorized users

More information

The Mother of All TreeViews, Part 2 Doug Hennig

The Mother of All TreeViews, Part 2 Doug Hennig The Mother of All TreeViews, Part 2 Doug Hennig Last month, Doug presented a reusable class that encapsulates most of the desired behavior for a TreeView control. He discussed controlling the appearance

More information

A Generic Import Utility, Part 2

A Generic Import Utility, Part 2 A Generic Import Utility, Part 2 Doug Hennig Part 1 of this two-part series presented a set of classes making up a generic import utility you can add to your applications to provide import capabilities

More information

IntelliSense at Runtime Doug Hennig

IntelliSense at Runtime Doug Hennig IntelliSense at Runtime Doug Hennig VFP 9 provides support for IntelliSense at runtime. This month, Doug Hennig examines why this is useful, discusses how to implement it, and extends Favorites for IntelliSense

More information

Zip it, Zip it Good Doug Hennig

Zip it, Zip it Good Doug Hennig Zip it, Zip it Good Doug Hennig This month s article presents a class to zip and pack the files in a project, and a class to interface VFP with a zipping utility like WinZip. Combining these classes with

More information

Splitting Up is Hard to Do Doug Hennig

Splitting Up is Hard to Do Doug Hennig Splitting Up is Hard to Do Doug Hennig While they aren t used everywhere, splitter controls can add a professional look to your applications when you have left/right or top/bottom panes in a window. This

More information

uilding Your Own Builders with BuilderB Doug Hennig and Yuanitta Morhart

uilding Your Own Builders with BuilderB Doug Hennig and Yuanitta Morhart uilding Your Own Builders with BuilderB Doug Hennig and Yuanitta Morhart Builders make it easy to set properties for objects at design time, which is especially handy for containers which you normally

More information

Taking Control Doug Hennig

Taking Control Doug Hennig Taking Control Doug Hennig This month, Doug Hennig discusses a simple way to make anchoring work the way you expect it to and how to control the appearance and behavior of a report preview window. There

More information

Manage Your Applications Doug Hennig

Manage Your Applications Doug Hennig Manage Your Applications Doug Hennig This month s article presents a simple yet useful tool, and discusses several reusable techniques used in this tool. If you re like me, your hard drive (or your server

More information

A File Open Dialog Doug Hennig

A File Open Dialog Doug Hennig A File Open Dialog Doug Hennig A File Open dialog is a better approach than having a long list of forms appear in the File menu. This article presents a reusable File Open dialog that supports grouping

More information

A New Beginning Doug Hennig

A New Beginning Doug Hennig A New Beginning Doug Hennig The development world is moving to reusable components. As goes the world, so goes Doug s column. We ll start off the new Best Tools column with SFThermometer, a handy progress

More information

CATCH Me if You Can Doug Hennig

CATCH Me if You Can Doug Hennig CATCH Me if You Can Doug Hennig VFP 8 has structured error handling, featuring the new TRY... CATCH... FINALLY... ENDTRY structure. This powerful new feature provides a third layer of error handling and

More information

Role-Based Security, Part III Doug Hennig

Role-Based Security, Part III Doug Hennig Role-Based Security, Part III Doug Hennig This month, Doug Hennig winds up his series on role-based security by examining a form class responsible for maintaining users and roles. In my previous two articles,

More information

Base Classes Revisited Doug Hennig

Base Classes Revisited Doug Hennig Base Classes Revisited Doug Hennig Most VFP developers know you should never use the VFP base classes, but instead create your own set of base classes. It s time to blow the dust off the set of base classes

More information

Data-Drive Your Applications Doug Hennig

Data-Drive Your Applications Doug Hennig Data-Drive Your Applications Doug Hennig As VFP developers, we re used to storing application data in tables. However, another use for tables is to store information about application behavior. This month

More information

More Flexible Reporting With XFRX Doug Hennig

More Flexible Reporting With XFRX Doug Hennig More Flexible Reporting With XFRX Doug Hennig XFRX can make your reporting solutions more flexible since it allows you to output FRX reports to PDF, Microsoft Word, Microsoft Excel, and HTML files. This

More information

A New IDE Add-on: FoxTabs Doug Hennig

A New IDE Add-on: FoxTabs Doug Hennig A New IDE Add-on: FoxTabs Doug Hennig FoxTabs provides easy access to all open windows in your VFP IDE. However, not only is it a great tool, it uses some very cool techniques to do its magic, including

More information

Christmas Stocking Stuffers Doug Hennig

Christmas Stocking Stuffers Doug Hennig Christmas Stocking Stuffers Doug Hennig Visual FoxPro has a lot more places to put code than FoxPro 2.x. This month s column examines the advantages and disadvantages of creating classes for library routines.

More information

Data Handling Issues, Part I Doug Hennig

Data Handling Issues, Part I Doug Hennig Data Handling Issues, Part I Doug Hennig The ability to handle multiple sets of data is a frequent requirement in business applications. So is the management of primary key values for tables. In this first

More information

Extending the VFP 9 IDE Doug Hennig

Extending the VFP 9 IDE Doug Hennig Extending the VFP 9 IDE Doug Hennig One of the key themes in VFP 9 is extensibility. You can extend the VFP 9 Report Designer through report events and the reporting engine through the new ReportListener

More information

I Got Rendered Where? Part II Doug Hennig

I Got Rendered Where? Part II Doug Hennig I Got Rendered Where? Part II Doug Hennig Thanks to the new ReportListener in VFP 9, we have a lot more control over where reports are rendered. Last month, Doug Hennig showed a listener that collaborates

More information

Report Objects Doug Hennig

Report Objects Doug Hennig Report Objects Doug Hennig FoxPro developers have wanted an object-oriented report writer since VFP 3 was released. Although the classes presented in this article don t have a pretty visual designer tool,

More information

Session V-STON Stonefield Query: The Next Generation of Reporting

Session V-STON Stonefield Query: The Next Generation of Reporting Session V-STON Stonefield Query: The Next Generation of Reporting Doug Hennig Overview Are you being inundated with requests from the users of your applications to create new reports or tweak existing

More information

Data Handling Issues, Part II Doug Hennig

Data Handling Issues, Part II Doug Hennig Data Handling Issues, Part II Doug Hennig While field and table validation rules protect your tables from invalid data, they also make data entry forms harder to use. In this second of a two-part article,

More information

Try Thor s Terrific Tools, Part 2

Try Thor s Terrific Tools, Part 2 Try Thor s Terrific Tools, Part 2 Thor offers lots of tools for working with classes and forms. Learning to use them can make you more productive. Tamar E. Granor, Ph.D. In my last article, I showed a

More information

Cool Tools by Craig Boyd, Part II Doug Hennig

Cool Tools by Craig Boyd, Part II Doug Hennig Cool Tools by Craig Boyd, Part II Doug Hennig Doug Hennig continues his examination of cool tools provided to the VFP community by Craig Boyd. Last month, I discussed several tools generously provided

More information

pdating an Application over the Internet, Part II Doug Hennig

pdating an Application over the Internet, Part II Doug Hennig pdating an Application over the Internet, Part II Doug Hennig This second of a two-part series looks at several strategies for automating the process of distributing application updates by downloading

More information

anguage Enhancements in VFP 7, Part V Doug Hennig

anguage Enhancements in VFP 7, Part V Doug Hennig anguage Enhancements in VFP 7, Part V Doug Hennig This fifth in a series of articles on language enhancements in VFP 7 covers the remaining new general-purpose commands and functions. GETWORDCOUNT() and

More information

Making the Most of the Toolbox

Making the Most of the Toolbox Making the Most of the Toolbox Session 15 Tamar E. Granor, Ph.D. Tomorrow s Solutions, LLC 8201 Cedar Road Elkins Park, PA 19027 Phone: 215-635-1958 Email: tamar@tomorrowssolutionsllc.com Web: www.tomorrowssolutionsllc.com

More information

Putting Parameters in Perspective Doug Hennig

Putting Parameters in Perspective Doug Hennig Putting Parameters in Perspective Doug Hennig Concentrating on communication between routines can reduce up to one-third of the errors in your applications. This month s column examines some Best Practices

More information

Advanced Uses for Dynamic Form

Advanced Uses for Dynamic Form Advanced Uses for Dynamic Form Doug Hennig Dynamic Form is an under-used project in VFPX. Its ability to create forms quickly and dynamically isn t something every developer needs but if you need it, Dynamic

More information

Custom UI Controls: Splitter

Custom UI Controls: Splitter Custom UI Controls: Splitter Doug Hennig Adding a splitter control to your forms gives them a more professional behavior and allows your users to decide the relative sizes of resizable controls. Over the

More information

Access and Assign Methods in VFP

Access and Assign Methods in VFP Access and Assign Methods in VFP By Doug Hennig Introduction In my opinion, one of the most useful and powerful additions in Visual FoxPro 6 is access and assign methods. It may seem strange that something

More information

University of North Dakota PeopleSoft Finance Tip Sheets. Utilizing the Query Download Feature

University of North Dakota PeopleSoft Finance Tip Sheets. Utilizing the Query Download Feature There is a custom feature available in Query Viewer that allows files to be created from queries and copied to a user s PC. This feature doesn t have the same size limitations as running a query to HTML

More information

Windows Event Binding Made Easy Doug Hennig

Windows Event Binding Made Easy Doug Hennig Windows Event Binding Made Easy Doug Hennig A feature available in other development environments but missing in VFP is the ability to capture Windows events. VFP 9 extends the BINDEVENT() function to

More information

Web Page Components Doug Hennig

Web Page Components Doug Hennig Web Page Components Doug Hennig With its fast and powerful string functions, VFP is a great tool for generating HTML. This month, Doug Hennig shows how you can treat Web pages as a collection of reusable

More information

Chapter 18 Outputting Data

Chapter 18 Outputting Data Chapter 18: Outputting Data 231 Chapter 18 Outputting Data The main purpose of most business applications is to collect data and produce information. The most common way of returning the information is

More information

NiceForm User Guide. English Edition. Rev Euro Plus d.o.o. & Niceware International LLC All rights reserved.

NiceForm User Guide. English Edition. Rev Euro Plus d.o.o. & Niceware International LLC All rights reserved. www.nicelabel.com, info@nicelabel.com English Edition Rev-0910 2009 Euro Plus d.o.o. & Niceware International LLC All rights reserved. www.nicelabel.com Head Office Euro Plus d.o.o. Ulica Lojzeta Hrovata

More information

Much ADO About Something Doug Hennig

Much ADO About Something Doug Hennig Much ADO About Something Doug Hennig The release of the OLE DB provider for VFP means better performance and scalability for applications that need to access VFP data via ADO. However, there are some interesting

More information

Installation... 3 Starting the installation... 3 The installation instructions... 3 Welcome... 3 Software License Agreement... 3 Choose Destination

Installation... 3 Starting the installation... 3 The installation instructions... 3 Welcome... 3 Software License Agreement... 3 Choose Destination Installation... 3 Starting the installation... 3 The installation instructions... 3 Welcome... 3 Software License Agreement... 3 Choose Destination Location... 4 Select Program Folder... 4 Copying Files...

More information

anguage Enhancements in VFP 7, Part I Doug Hennig

anguage Enhancements in VFP 7, Part I Doug Hennig anguage Enhancements in VFP 7, Part I Doug Hennig Want an early peek at what s new in VFP 7? This is the first article in a series discussing the language enhancements Microsoft is implementing and how

More information

Creating a new project To start a new project, select New from the File menu. The Select Insert dialog box will appear.

Creating a new project To start a new project, select New from the File menu. The Select Insert dialog box will appear. Users Guide Creating a new project To start a new project, select New from the File menu. The Select Insert dialog box will appear. Select an insert size When creating a new project, the first thing you

More information

The Best of Both Worlds

The Best of Both Worlds The Best of Both Worlds Doug Hennig You don t have to sacrifice performance for ease of installing new versions of applications. Using STARTAPP, you can run applications from local drives for best performance,

More information

A File Open Dialog Box Doug Hennig

A File Open Dialog Box Doug Hennig Seite 1 von 7 Issue Date: FoxTalk November 1997 A File Open Dialog Box Doug Hennig dhennig@stonefield.com A File Open dialog box is a superior alternative to having a long list of forms appear in the File

More information

Advisor Answers. January, Visual FoxPro 3.0 and 5.0

Advisor Answers. January, Visual FoxPro 3.0 and 5.0 January, 1998 Advisor Answers Visual FoxPro 3.0 and 5.0 Q: I would like to create a combo box that functions exactly like the FoxPro help index, that is, when the user types in a value, that value is automatically

More information

APPENDIX. Using Google Sites. After you read this appendix, you will be able to:

APPENDIX. Using Google Sites. After you read this appendix, you will be able to: APPENDIX B Using Google Sites Objectives After you read this appendix, you will be able to: 1. Create a New Site 2. Manage Your Sites 3. Collaborate on a Shared Site The following Hands-On Exercises will

More information

Creating an with Constant Contact. A step-by-step guide

Creating an  with Constant Contact. A step-by-step guide Creating an Email with Constant Contact A step-by-step guide About this Manual Once your Constant Contact account is established, use this manual as a guide to help you create your email campaign Here

More information

Introduction to Cascade Server (web content management system) Logging in to Cascade Server Remember me Messages Dashboard Home

Introduction to Cascade Server (web content management system) Logging in to Cascade Server Remember me Messages Dashboard Home Introduction to Cascade Server (web content management system) Last Updated on Jul 14th, 2010 The College of Charleston's web site is being produced using a Content Management System (CMS) called Cascade

More information

A Step by Step Guide to Postcard Marketing Success

A Step by Step Guide to Postcard Marketing Success A Step by Step Guide to Postcard Marketing Success Table of Contents Why VerticalResponse?...3 Why Postcards?...4 So why use postcards in this modern era?...4 Quickstart Guide...6 Step 1: Setup Your Account...8

More information

TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL

TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL We have spent the first part of the course learning Excel: importing files, cleaning, sorting, filtering, pivot tables and exporting

More information

## Version: FoxPro 7.0 ## Figures: ## File for Subscriber Downloads: Publishing Your First Web Service Whil Hentzen

## Version: FoxPro 7.0 ## Figures: ## File for Subscriber Downloads: Publishing Your First Web Service Whil Hentzen ## Version: FoxPro 7.0 ## Figures: ## File for Subscriber Downloads: Publishing Your First Web Service Whil Hentzen Web Services The Buzzword of the 02s! It s nothing really new, however, any more than

More information

Financial Statements Using Crystal Reports

Financial Statements Using Crystal Reports Sessions 6-7 & 6-8 Friday, October 13, 2017 8:30 am 1:00 pm Room 616B Sessions 6-7 & 6-8 Financial Statements Using Crystal Reports Presented By: David Hardy Progressive Reports Original Author(s): David

More information

TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL

TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL TUTORIAL FOR IMPORTING OTTAWA FIRE HYDRANT PARKING VIOLATION DATA INTO MYSQL We have spent the first part of the course learning Excel: importing files, cleaning, sorting, filtering, pivot tables and exporting

More information

Creating an with Constant Contact. A step-by-step guide

Creating an  with Constant Contact. A step-by-step guide Creating an Email with Constant Contact A step-by-step guide About this Manual Once your Constant Contact account is established, use this manual as a guide to help you create your email campaign Here

More information

P6 Professional Reporting Guide Version 18

P6 Professional Reporting Guide Version 18 P6 Professional Reporting Guide Version 18 August 2018 Contents About the P6 Professional Reporting Guide... 7 Producing Reports and Graphics... 9 Report Basics... 9 Reporting features... 9 Report Wizard...

More information

Drilling Down Into Your Data Doug Hennig

Drilling Down Into Your Data Doug Hennig Drilling Down Into Your Data Doug Hennig Do your users want to drill down into their data to see increasing levels of detail? You might think the TreeView control discussed last month is perfect for this,

More information

DESIGN YOUR OWN BUSINESS CARDS

DESIGN YOUR OWN BUSINESS CARDS DESIGN YOUR OWN BUSINESS CARDS USING VISTA PRINT FREE CARDS I m sure we ve all seen and probably bought the free business cards from Vista print by now. What most people don t realize is that you can customize

More information

MAPLOGIC CORPORATION. GIS Software Solutions. Getting Started. With MapLogic Layout Manager

MAPLOGIC CORPORATION. GIS Software Solutions. Getting Started. With MapLogic Layout Manager MAPLOGIC CORPORATION GIS Software Solutions Getting Started With MapLogic Layout Manager Getting Started with MapLogic Layout Manager 2008 MapLogic Corporation All Rights Reserved 330 West Canton Ave.,

More information

FoxTalk. LET S face it. You re going to have to learn Visual. Visual Basic for Dataheads: A New Beginning. Whil Hentzen

FoxTalk. LET S face it. You re going to have to learn Visual. Visual Basic for Dataheads: A New Beginning. Whil Hentzen FoxTalk Solutions for Microsoft FoxPro and Visual FoxPro Developers This is an exclusive supplement for FoxTalk subscribers. For more information about FoxTalk, call us at 1-800-788-1900 or visit our Web

More information

Handling crosstabs and other wide data in VFP reports

Handling crosstabs and other wide data in VFP reports Handling crosstabs and other wide data in VFP reports When the data you want to report on has many columns, you have a few options. One takes advantage of VFP s fl exibility. Tamar E. Granor, Ph.D. In

More information

Working with Mailings

Working with Mailings 10 Working with Mailings An Overview of the Mail Merge Process... 202 Step 1: Setting Up the Main Document... 204 Step 2: Creating a Data Source... 205 Create a data source... 205 Customize data source

More information

Workshop. Import Workshop

Workshop. Import Workshop Import Overview This workshop will help participants understand the tools and techniques used in importing a variety of different types of data. It will also showcase a couple of the new import features

More information

CheckBook Pro 2 Help

CheckBook Pro 2 Help Get started with CheckBook Pro 9 Introduction 9 Create your Accounts document 10 Name your first Account 11 Your Starting Balance 12 Currency 13 We're not done yet! 14 AutoCompletion 15 Descriptions 16

More information

Sisulizer Three simple steps to localize

Sisulizer Three simple steps to localize About this manual Sisulizer Three simple steps to localize Copyright 2006 Sisulizer Ltd. & Co KG Content changes reserved. All rights reserved, especially the permission to copy, distribute and translate

More information

Word: Print Address Labels Using Mail Merge

Word: Print Address Labels Using Mail Merge Word: Print Address Labels Using Mail Merge No Typing! The Quick and Easy Way to Print Sheets of Address Labels Here at PC Knowledge for Seniors we re often asked how to print sticky address labels in

More information

How to Rescue a Deleted File Using the Free Undelete 360 Program

How to Rescue a Deleted File Using the Free Undelete 360 Program R 095/1 How to Rescue a Deleted File Using the Free Program This article shows you how to: Maximise your chances of recovering the lost file View a list of all your deleted files in the free Restore a

More information

One of Excel 2000 s distinguishing new features relates to sharing information both

One of Excel 2000 s distinguishing new features relates to sharing information both Chapter 7 SHARING WORKBOOKS In This Chapter Using OLE with Excel Sharing Workbook Files Sharing Excel Data Over the Web Retrieving External Data with Excel One of Excel 2000 s distinguishing new features

More information

Access Intermediate

Access Intermediate Access 2010 - Intermediate 103-134 Unit 6 - Data Integration Quick Links & Text References Overview Pages AC418 AC419 Showing Data on the Web Pages AC420 AC423 CSV Files Pages AC423 AC428 XML Files Pages

More information

Windows 2000 Professional

Windows 2000 Professional The American University in Cairo Academic Computing Services Windows 2000 Professional prepared by Soumaia Ahmed Al Ayyat 4 August 2003 Table of Contents Starting Up the Computer Windows Environment Start

More information

Chapter 25. Build Creations with Your Photos

Chapter 25. Build Creations with Your Photos Chapter 25 Build Creations with Your Photos 2 How to Do Everything with Photoshop Elements How to Create a slide show to show off your images Post your images in web pages Build cards, calendars, and postcards

More information

Hello! ios Development

Hello! ios Development SAMPLE CHAPTER Hello! ios Development by Lou Franco Eitan Mendelowitz Chapter 1 Copyright 2013 Manning Publications Brief contents PART 1 HELLO! IPHONE 1 1 Hello! iphone 3 2 Thinking like an iphone developer

More information

CREATING CUSTOMER MAILING LABELS

CREATING CUSTOMER MAILING LABELS CREATING CUSTOMER MAILING LABELS agrē has a built-in exports to make it easy to create a data file of customer address information, but how do you turn a list of names and addresses into mailing labels?

More information

Printing Envelopes in Microsoft Word

Printing Envelopes in Microsoft Word Printing Envelopes in Microsoft Word P 730 / 1 Stop Addressing Envelopes by Hand Let Word Print Them for You! One of the most common uses of Microsoft Word is for writing letters. With very little effort

More information

Multi-User and Data Buffering Issues

Multi-User and Data Buffering Issues Multi-User and Data Buffering Issues Doug Hennig Partner Stonefield Systems Group Inc. 1112 Winnipeg Street, Suite 200 Regina, SK Canada S4R 1J6 Phone: (306) 586-3341 Fax: (306) 586-5080 Email: dhennig@stonefield.com

More information

A Step-by-Step Guide to Survey Success

A Step-by-Step Guide to Survey Success A Step-by-Step Guide to Survey Success Table of Contents Why VerticalResponse?... 3 Quickstart Guide... 4 Step 1: Setup Your Account... 4 Step 2: Create Your Survey... 6 Step 3. Access Your Dashboard and

More information

Pro Users Guide Pro Desktop Signmaking Software

Pro Users Guide Pro Desktop Signmaking Software SignWord T Pro Users Guide Sign Systems Since 1966 For use with Microsoft Windows 9x, Windows NT Windows 2000, XP, ME operating systems Copyright 2003, APCO Graphics, Inc. Atlanta, GA. USA All rights reserved.

More information

How To Upload Your Newsletter

How To Upload Your Newsletter How To Upload Your Newsletter Using The WS_FTP Client Copyright 2005, DPW Enterprises All Rights Reserved Welcome, Hi, my name is Donna Warren. I m a certified Webmaster and have been teaching web design

More information

Exercise 1: Introduction to MapInfo

Exercise 1: Introduction to MapInfo Geog 578 Exercise 1: Introduction to MapInfo Page: 1/22 Geog 578: GIS Applications Exercise 1: Introduction to MapInfo Assigned on January 25 th, 2006 Due on February 1 st, 2006 Total Points: 10 0. Convention

More information

Contents. Common Site Operations. Home actions. Using SharePoint

Contents. Common Site Operations. Home actions. Using SharePoint This is a companion document to About Share-Point. That document describes the features of a SharePoint website in as much detail as possible with an emphasis on the relationships between features. This

More information

Designer TM for Microsoft Access

Designer TM for Microsoft Access Designer TM for Microsoft Access Application Guide 1.7.2018 This document is copyright 2009-2018 OpenGate Software. The information contained in this document is subject to change without notice. If you

More information

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below.

The first thing we ll need is some numbers. I m going to use the set of times and drug concentration levels in a patient s bloodstream given below. Graphing in Excel featuring Excel 2007 1 A spreadsheet can be a powerful tool for analyzing and graphing data, but it works completely differently from the graphing calculator that you re used to. If you

More information

Extending the VFP 9 Reporting System, Part I: Design-Time

Extending the VFP 9 Reporting System, Part I: Design-Time Extending the VFP 9 Reporting System, Part I: Design-Time Doug Hennig Stonefield Software Inc. 1112 Winnipeg Street, Suite 200 Regina, SK Canada S4R 1J6 Voice: 306-586-3341 Fax: 306-586-5080 Email: dhennig@stonefield.com

More information

Furl Furled Furling. Social on-line book marking for the masses. Jim Wenzloff Blog:

Furl Furled Furling. Social on-line book marking for the masses. Jim Wenzloff Blog: Furl Furled Furling Social on-line book marking for the masses. Jim Wenzloff jwenzloff@misd.net Blog: http://www.visitmyclass.com/blog/wenzloff February 7, 2005 This work is licensed under a Creative Commons

More information

VUEWorks Report Generation Training Packet

VUEWorks Report Generation Training Packet VUEWorks Report Generation Training Packet Thursday, June 21, 2018 Copyright 2017 VUEWorks, LLC. All rights reserved. Page 1 of 53 Table of Contents VUEWorks Reporting Course Description... 3 Generating

More information

Combos and Lists - The Forgotten Controls

Combos and Lists - The Forgotten Controls "Session #" Combos and Lists - The Forgotten Controls Tamar E. Granor Editor, FoxPro Advisor Overview Grids and pageframes may get all the attention, but combo boxes and list boxes are pretty powerful

More information

You might think of Windows XP as a set of cool accessories, such as

You might think of Windows XP as a set of cool accessories, such as Controlling Applications under Windows You might think of Windows XP as a set of cool accessories, such as games, a calculator, and an address book, but Windows is first and foremost an operating system.

More information

2 Frequently Asked... Questions. 4 How Do I... 1 Working within... Entries

2 Frequently Asked... Questions. 4 How Do I... 1 Working within... Entries Contents I Table of Contents Part I Welcome 6 1 Welcome... 6 2 Frequently Asked... Questions 6 Part II Getting Started 6 1 Getting Started... 6 2... 7 Create a New Database... 7 Open an Existing... Database

More information

Sample Chapters. To learn more about this book, visit the detail page at: go.microsoft.com/fwlink/?linkid= Copyright 2010 by Curtis Frye

Sample Chapters. To learn more about this book, visit the detail page at: go.microsoft.com/fwlink/?linkid= Copyright 2010 by Curtis Frye Sample Chapters Copyright 2010 by Curtis Frye All rights reserved. To learn more about this book, visit the detail page at: go.microsoft.com/fwlink/?linkid=191751 Chapter at a Glance Analyze data dynamically

More information

Keep Track of Your Passwords Easily

Keep Track of Your Passwords Easily Keep Track of Your Passwords Easily K 100 / 1 The Useful Free Program that Means You ll Never Forget a Password Again These days, everything you do seems to involve a username, a password or a reference

More information

XP: Backup Your Important Files for Safety

XP: Backup Your Important Files for Safety XP: Backup Your Important Files for Safety X 380 / 1 Protect Your Personal Files Against Accidental Loss with XP s Backup Wizard Your computer contains a great many important files, but when it comes to

More information

Speed in Object Creation and. Destruction. March 2016 Number 49. Tamar E. Granor, Ph.D.

Speed in Object Creation and. Destruction. March 2016 Number 49. Tamar E. Granor, Ph.D. Speed in Object Creation and Destruction Does the approach you choose for creating and destroying objects have an impact on performance? Tamar E. Granor, Ph.D. March 2016 Number 49 1 Know How... Speed

More information

RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016

RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016 RC Justified Gallery User guide for version 3.2.X. Last modified: 06/09/2016 This document may not be reproduced or redistributed without the permission of the copyright holder. It may not be posted on

More information

EST151: Maintain Parts

EST151: Maintain Parts EST151: Maintain Parts CERTIFIED COURSE CURRICULUM SAGE UNIVERSITY IMPORTANT NOTICE This document and the Sage 100 Contractor software may be used only in accordance with the Sage 100 Contractor End User

More information

Microsoft Office 2016 Mail Merge

Microsoft Office 2016 Mail Merge Microsoft Office 2016 Mail Merge Mail Merge Components In order to understand how mail merge works you need to examine the elements involved in the process. In any mail merge, you'll deal with three different

More information

Creating Reports in Access 2007 Table of Contents GUIDE TO DESIGNING REPORTS... 3 DECIDE HOW TO LAY OUT YOUR REPORT... 3 MAKE A SKETCH OF YOUR

Creating Reports in Access 2007 Table of Contents GUIDE TO DESIGNING REPORTS... 3 DECIDE HOW TO LAY OUT YOUR REPORT... 3 MAKE A SKETCH OF YOUR Creating Reports in Access 2007 Table of Contents GUIDE TO DESIGNING REPORTS... 3 DECIDE HOW TO LAY OUT YOUR REPORT... 3 MAKE A SKETCH OF YOUR REPORT... 3 DECIDE WHICH DATA TO PUT IN EACH REPORT SECTION...

More information

Authoring World Wide Web Pages with Dreamweaver

Authoring World Wide Web Pages with Dreamweaver Authoring World Wide Web Pages with Dreamweaver Overview: Now that you have read a little bit about HTML in the textbook, we turn our attention to creating basic web pages using HTML and a WYSIWYG Web

More information

SCHULICH MEDICINE & DENTISTRY Website Updates August 30, Administrative Web Editor Guide v6

SCHULICH MEDICINE & DENTISTRY Website Updates August 30, Administrative Web Editor Guide v6 SCHULICH MEDICINE & DENTISTRY Website Updates August 30, 2012 Administrative Web Editor Guide v6 Table of Contents Chapter 1 Web Anatomy... 1 1.1 What You Need To Know First... 1 1.2 Anatomy of a Home

More information

Using Dreamweaver CS6

Using Dreamweaver CS6 3 Now that you should know some basic HTML, it s time to get in to using the general editing features of Dreamweaver. In this section we ll create a basic website for a small business. We ll start by looking

More information

Using Dreamweaver CC. 3 Basic Page Editing. Planning. Viewing Different Design Styles

Using Dreamweaver CC. 3 Basic Page Editing. Planning. Viewing Different Design Styles 3 Now that you should know some basic HTML, it s time to get in to using the general editing features of Dreamweaver. In this section we ll create a basic website for a small business. We ll start by looking

More information