Zipping and Unzipping for Clients, Part 2 Richard David Hodder

Size: px
Start display at page:

Download "Zipping and Unzipping for Clients, Part 2 Richard David Hodder"

Transcription

1 Seite 1 von 8 Issue Date: FoxTalk June 2000 Zipping and Unzipping for Clients, Part 2 Richard David Hodder rickhodder@msn.com The first part of this article introduced us to the DynaZIP-AX controls from InnerMedia, Inc.: ActiveX controls that give developers programmatic control over creating and reading ZIP files. This month, Richard David Hodder takes a closer look at these controls, with particular emphasis on the features that provide for customization and internationalization of text and dialogs. In the first part of this article, back in the April edition of FoxTalk, I introduced you to the DynaZIP controls. This month, I ll delve deeper into the controls. One of the difficulties experienced when developing with ActiveX controls is that the controls are black boxes: Program source for the controls isn t included or accessible. Why is this important? Because there are often aspects of the control s visual interface that developers would like to change. Some controls (like the DynaZIP controls) can display status thermometers during processes. These thermometers might not look like the thermometers used in your application framework, and could interfere with the "look and feel" of your applications. Some message box dialogs that are presented to application users contain awkward or confusing messages. For example, when the DynaZIP Zip control can t find any files that match the ItemList while zipping, it pops up a dialog that says "Nothing to do!" Other message box dialogs are targeted toward developers more than application users (one of my favorites in FoxPro is the infamous "Fatal Error 6 while reporting Error 6"). Problems like these usually can t be addressed, because these elements have been hard-coded (compiled) into the ActiveX control. The DynaZIP controls have what are called "callback events" to provide hooks for addressing the problems mentioned above, as well as other amazing things. I ll begin this article by defining what callback events are, and then I ll describe the callback events that the DynaZIP controls have. Callback events C++ has a variable type called a function pointer, which, as the name suggests, is a pointer to the address of a function in memory. C++ can use this function pointer to call the function, rather than calling the function by its defined name. A function pointer (let s say a pointer to a function called CallDate) is often passed as a parameter to another function (let s say a function called AfterHotDateCheckList). At some point during the execution of AfterHotDateCheckList, the function pointer to CallDate is used to execute the CallDate function. Function pointers used in this manner are referred to as "Callback" functions. The behavior of the AfterHotDateCheckList function can be modified by passing different function pointers as a parameter. VFP doesn t have a function pointer type, but the DynaZIP ActiveX controls surface callback event methods that fire during the zipping and unzipping processes. The VFP developer can put code into these event methods to act on the information passed to them. I ll describe each of the callback events (MajorStatus, MinorStatus, Message, Rename and MemToMem) in the following sections. Both of the DynaZIP controls have the same callback events, which have the same basic functions, so I ll present them once for both. You won t find any events named MajorStatus, MinorStatus, Rename, Message, or MemToMem on the interface of the DynaZIP controls. On the ZIP control, you ll see ZIPMajorStatus, ZIPMinorStatus, ZIPRenameCallback, ZIPMessageCallback, and ZIPMemToMemCallback. On the UNZIP control, you ll see UNZIPMajorStatus, UNZIPMinorStatus, and so on. Each of the callback events also has a corresponding flag property that determines whether the callback event should fire. These flag properties are named MajorStatusFlag, MessageCallbackFlag, MinorStatusFlag, and RenameCallbackFlag. There s no MemToMemCallbackFlag, since a specific action starts the MemToMem (ZIP_MEMTOMEM or UNZIP_MEMTOMEM). The flag properties all hold logical values: If the value is.t., the corresponding event fires, otherwise the event does not fire. Important things about using the callback events All parameter information passed to the callback events is passed by reference. This allows you to change the information that DynaZIP is using by simply changing the value of the parameters. The callback events will fire only if AutoYield is set to.f. The appropriate callback flag (such as MajorStatusFlag) must be set to.t. for each callback event that should be processed. I ll begin my discussion of the DynaZIP callback events with the MajorStatus and MinorStatus callback events. These two callback events provide the ability to replace the progress thermometer included with DynaZIP-AX, with your own custom progress thermometer. The events intercept the status information (such as the name of item being zipped, percent complete, and similar items) that would be sent to the DynaZIP thermometer. The developer can then present the same information in a custom progress thermometer. MajorStatus callback event Information passed to this event conveys the overall status (a macro view) of the zipping/unzipping process. The following parameters are passed to the MajorStatus callback event:

2 Seite 2 von 8 ItemName (Character): A string that describes the overall status of the zipping/unzipping progress currently in action (such as "Processing List. Please Wait ", "Item 1 of 32", and similar items). Percent (Numeric): This contains a number between 0 and 100 that corresponds to the overall percent completed. Cancel (Numeric): This provides a way to cancel the action currently in progress. Setting this value parameter to a non-zero value will cancel the current action. Your custom status thermometer might have a Cancel button on it. The Cancel button on your thermometer can set this parameter to a non-zero value to stop the zipping process. Since these parameters are all passed by reference, you might be tempted to internationalize/translate the ItemName parameter from within this event but don t. By the time the MajorStatus callback event fires, the text in ItemName has already passed through the Message callback event for customization/translation. The following must be true, or else the MajorStatus callback event won t fire: The MajorStatusFlag must be set to.t. Application.AutoYield must be set to.f. When zipping, the ZipSubOptions can t include ZSO_EXTERNALPROG (ZSO_EXTERNALPROG means that DynaZIP is using the thermometer display with which it ships, so there s no need to fire this event). When unzipping, the UnZipSubOptions can t include USO_EXTERNALPROG (USO_EXTERNALPROG means that DynaZIP is using the thermometer display with which it ships, so there s no need to fire this event). These last two items had me pulling my hair out for a while. I was trying to use the MajorStatus and MinorStatus callback events to present my own status thermometer while zipping files, but for some reason, neither of the callback methods was firing. It turned out that I had included ZSO_EXTERNALPROG as one of the ZIPSubOptions. MinorStatus callback event Information passed to this event conveys the status of the current item being zipped/unzipped (a micro view). The following parameters are passed to the MinorStatus callback event: ItemName (Character): A string that describes the status of the item that is currently being zipped/unzipped (the name of the file being zipped/unzipped). Percent (Numeric): This contains a number between 0 and 100 that corresponds to the percent completed of the item being zipped/unzipped. Cancel (Numeric): This provides for a way to cancel the action. Setting this value parameter to a non-zero value will cancel the current action. In contrast to the MajorStatus callback event, this parameter will cancel the action only if the MINORCANCEL suboption (ZIP_ MINORCANCEL or UNZIP_ MINORCANCEL) is set on the ZipSubOptions or the UnzipSubOptions properties. Similarly to the Major Status callback event, these parameters are all passed by reference, and you might be tempted to internationalize/translate the ItemName parameter from within this event but don t. By the time the MinorStatus callback event fires, the text in ItemName has already passed through the Message callback event for customization/translation. The following must be true, or else the MinorStatus callback event won t fire: The MinorStatusFlag must be set to.t. Application.AutoYield must be set to.f. When zipping, the ZipSubOptions can t include ZSO_EXTERNALPROG (ZSO_EXTERNALPROG means that DynaZIP is using the thermometer display with which it ships, so there s no need to fire this event). When unzipping, the UnZipSubOptions cannot include USO_EXTERNALPROG (USO_EXTERNALPROG means that DynaZIP is using the thermometer display with which it ships, so there s no need to fire this event). The following code demonstrates the use of both the MajorStatus and MinorStatus callback events to display a custom thermometer during the zipping progress: #INCLUDE DZ32.H *-- Create Thermometer form DO FORM Therm NAME gotherm LINKED *-- Create caretaker and get zip object LOCAL locaretaker, lozip locaretaker = CREATEOBJECT("ZipCaretaker") lozip = locaretaker.ozip *-- Tell the zip object what we want to do lozip.itemlist = SYS(5)+CURDIR()+"*.bak" lozip.zipfile = SYS(5)+CURDIR()+"bak.zip" lozip.zipsuboptions = 0

3 Seite 3 von 8 lozip.extprogtitle = "Zipping up bak files..." gotherm.caption = lozip.extprogtitle *-- Set flags to allow events to fire lozip.majorstatusflag =.T. lozip.minorstatusflag =.T. Application.AutoYield =.F. lozip.actiondz=zip_add Application.AutoYield =.T. DEFINE CLASS ZipCaretaker AS FORM *-- adds an instance of ZipControl to *-- the form with the name ozip ADD OBJECT ozip AS ZipControl ENDDEFINE DEFINE CLASS ZipControl AS OLEControl OLEClass="dzactxctrl.dzactxctrl.1" PROC ZipMajorStatus LPARAMETERS itemname,percent,cancel *-- Tell thermometer form to update the major status gotherm.updatemajor(itemname,percent,cancel) gotherm.resetminorpercent() ENDPROC PROC ZipMinorStatus LPARAMETERS itemname,percent,cancel *-- Tell thermometer form to update the minor status gotherm.updateminor(itemname,percent,cancel) ENDPROC ENDDEFINE Figure 1 shows a screen shot of the thermometer displayed to the user. The Therm form is available in the accompanying Download file. Figure 1: Shows a screen shot of the thermometer. Message callback event During the process of zipping and unzipping information, many text messages are generated by the DynaZIP controls: Text is displayed on status thermometers (such as "Processing List of Files. Please Wait "). Information is written to log files (such as "XYZ.TXT [added]"). Message boxes are displayed to prompt or inform the user of a situation (such as "Please insert the first disk of the Multi-

4 Seite 4 von 8 Volume set. Press OK when ready or Cancel to abort.") Before a text message is displayed to the user, written to the log file, or displayed in a message box, the DynaZIP controls pass the text message to the Message callback event. This provides the perfect opportunity for the developer to customize or internationalize the message, or even to use a VFP message box or custom dialog to present the information to the user where a message box is called for (such as "Please insert the first diskette "). Here s an example of customizing a message. When zipping, the first thing that the DynaZIP Zip control does is build a list of the information that is about to be zipped. The control generates the message "Processing List of Files. Please Wait " to display on the thermometer. Before being displayed, the message is sent to the Message callback event. A grumpy developer could then change the message to "I am building your #@$%&!! list of files. Keep your pants on, I m going as fast as I can. " Text messages like the one presented in the last paragraph are pretty straightforward, but certain messages are more tricky to customize. Some messages contain what I call "embedded variable information." For example, consider the string "Item 1 of 10." This string raises several questions: How do I know which item is currently being processed, or how many total items need to be processed? (In other words, where do I get the 1 and the 10?) Do I need to keep a running count? Do I have to parse out the 1 and the 10, in order to put them in the correct places in the customized string? (Do I have to parse out what s between the word "Item" and the word "of" to extract the "1" and then parse out what follows the word "of" to extract the "10"?) The DynaZIP controls use a technique similar to the MsgSvc utility in Steven Black s INTL Toolkit to handle this situation. The message passed to the message callback event can contain placeholders for pieces of information embedded in the text message. For example, the "Item 1 of 10" text message arrives in the message callback event as the text message "Item %s of %s." To customize this message, create a message that includes the two %s placeholders. For example, the developer could change the string "Item %s of %s" to "File %s of %s." What happens to the placeholders? When you leave the message callback event, DynaZIP substitutes the values for the embedded parameters. For example, the change above converts the "Item 1 of 10" message to "File 1 of 10." No intervention is required. Piece of cake! The following parameters are passed to the Message callback event: MsgID (Numeric): This parameter is an ID that conveys what type of message event has occurred. There are basically two types of message events. First, there are event types that require a message box dialog to be displayed to the user. For example, when unzipping a multivolume ZIP file, a message event will fire with a MsgId of MSGID_DISK. This message event fires because it s necessary to present a message box to the user prompting for a particular diskette. Second, there s an event type (MSGID_CHANGE) that receives a string that s about to be presented to the user. The #DEFINEs for these IDs all have "MSGID" prefixes. MbType (Numeric): This parameter indicates which message box dialog should be displayed to the user. Its value is equivalent to the ndialogboxtype parameter in VFP s MESSAGE BOX() command: It determines things such as which buttons are on the message box, which button has focus, and similar items. p1 (Numeric) and p2 (Numeric): These are general parameters passed by the DynaZIP controls that have meaning for certain MsgId values. For instance, when a message event occurs with a MsgId of MSGID_ZFORMAT, it means that there was a ZIP Multi-Volume Disk Formatting/Wiping Failure. The p1 value conveys whether it was a disk formatting error (p1=0) or a disk wiping failure (p1=1). These codes are covered in the manual. sz1 (Character): This parameter holds the text of the message. If the MsgId is of the type that requires a dialog to be displayed, then this is the text that will be shown in the message box window. Otherwise this value is the string that the developer is being given the opportunity to customize. sz2 (Character): This parameter holds the text that will be used as the titlebar caption of the message box if DynaZIP presents it to the user. rc (Numeric): An integer value corresponding to one of the acceptable standard Message box return values for the associated MsgId. These values all have the prefix "ID" (such as IDOK, IDCANCEL, and similar items) and can be found in Foxpro.H. If you choose to replace the DynaZIP dialog with your own, it s important that you set the value of this parameter to the return value of the message box you surface. The return codes that apply to each of the MsgIds can be found in the manual. If rc is 0, then DynaZIP will present a dialog to the user. Here are two examples that demonstrate the two message event type categories. This first example demonstrates a message event type that doesn t require a dialog. During the zipping and unzipping process, the DynaZIP controls generate messages that convey the current status of the process. As each file is being processed, a message callback event is fired with a MsgId equal to MSGID_CHANGE and an sz1 equal to "Item %s of %s." The developer can change this message by overwriting the value of the sz1 parameter. Here s an example of customizing a message using the Message callback event: LPARAMETERS MsgId, MbType, sz1, sz2, rc *-- Customize the "Item %s of %s." *-- message only. IF MsgId = MSGID_CHANGE AND ; sz1 = "Item %s of %s." sz1 = "Scooby Snack %s out of %s"

5 Seite 5 von 8 ENDIF RETURN This code was obviously written by a developer for Hanna-Barbera, Inc. (the producers of the cartoon "Scooby Doo"). Any embedded placeholders (such as %s) in the sz1 parameter are resolved automatically at the end of each MSGID_CHANGE event. For example, in the code above, if the DynaZIP control is currently processing the fourth file out of 10 files, sz1 will contain "Scooby Snack 4 out of 10." The message for this event type (MSGID_CHANGE) could easily be internationalized by passing the value in sz1 to the I() function of INTL. This next example demonstrates a message event type that requires a dialog. Message events that require a dialog actually generate several message events. For instance, if no files match the ItemList during the creation of a ZIP file called "c:\rick.zip," a message box needs to be presented to the user, saying that there is nothing to do. Here are the message callback events that fire: First, a message event fires with a MsgId of MSGID_CHANGE and an sz1 of "Nothing to do!" (the contents of the message box). Next, a message event fires with a MsgId of MSGID_CHANGE and an sz1 of "DynaZIP Zip Error" (the title of the message box). Finally, a message event fires with a MsgId of MSGID_ERROR (requires a message box dialog) and an sz1 of "Nothing to do! (c:\rick.zip)" and an sz2 of "DynaZIP Zip Error." Notice that the individual text messages that make up the message box dialog each generate a message event. Since embedded parameters (such as %s) are resolved at the end of each of the individual MSGID_CHANGE events, by the time the MSGID_ERROR event type fires, any embedded parameters (such as Item %s of %s) have already been resolved (such as Item 1 of 10). This means that if you want to customize the text of a dialog, it s important to customize it when the MSGID_CHANGE events fire. Presenting your own special dialog to present the message can be done for any MsgId not equal to MSGID_CHANGE. Here s an example of customizing a dialog using the Message callback event: LPARAMETERS MsgId, MbType, sz1, sz2, rc *-- Customize the "Nothing To Do!" *-- dialog only. IF MsgId = MSGID_ERROR AND p1 = ZE_NONE *-- Display a VFP message box using the *-- passed message box contents (sz1) *-- with a customized title caption rc = MESSAGEBOX(sz1,MbType,"My Application Name") ENDIF RETURN The message box used for this event type could easily be internationalized by using the INTL MsgSvc utility: rc = MsgSvc("MSGID_ERROR", sz1) Rename callback event This callback event falls under the category of "Way Cool!" This event fires once per file that s being zipped or unzipped. Information passed to this event pertains to the file currently being processed (name, date, time, and attributes). The Rename callback event gives you the opportunity to change the information regarding the file being zipped or unzipped. When zipping, changing this information means that the entry in the ZIP file will have updated information (the original entry that was being zipped is untouched). When unzipping, changing this information means that the file being written to disk will have updated information (the entry in the ZIP file is untouched). The following is the list of parameters passed to the Rename callback event: ItemName (Character): This is the name of the file being zipped or unzipped. While zipping, changing this parameter changes the name of the item in the ZIP file. While unzipping, changing this parameter changes the name of the file being written to disk. IDate (Numeric): This is a binary representation of the file s last modification date. You can read the manual to find out more about this binary format. I ve included two functions in a program called ZIPFXN.PRG. These functions help with conversion between this binary format and the VFP date format. ConvertIDateToDate(IDate) returns the VFP date corresponding to the passed IDate value. ConvertDateToIDate(VFPDate) returns the IDate value corresponding to the passed VFP date value. ITime (Numeric): This is a binary representation of the file s last modification time. You can read the manual to find out more about this binary format. I ve included two functions in a program called ZIPFXN.PRG. These functions help with conversion between this binary format and the VFP 24-hour time character format. ConvertITimeToTime(ITime) returns the VFP 24-hour time character value corresponding to the passed ITime value. ConvertTimeToITime(VFPTime) returns the ITime value corresponding to the passed VFP 24-hour time character value.

6 Seite 6 von 8 LAttrib (Numeric): This is a binary representation of the attributes of the file. You can read the manual to find out more about this binary format. I ve included two functions in a program called ZIPFXN.PRG in this month s files. These functions help with conversion between this binary format and a string that represents all attributes of the file. ("R" for ReadOnly, "H" for Hidden, "S" for System, and "A" for Archive: in other words, a hidden system file would return the string "HS"). ConvertLAttribToString (LAttrib) returns the string corresponding to the passed Lattrib value. ConvertStringToLAttrib(AttributeString) returns the LAttrib value corresponding to the attribute string. OrigItemName (Character): When unzipping, this is the original item name as it appears in the ZIP file. When zipping, this is the original unmodified name of the file being zipped (including drive and path). Changing this parameter has no effect. Rc (Numeric): Setting this variable to zero means that the renaming was successful. I ll now present two examples of how this callback event can be used. The first example will demonstrate how to use the Rename callback event during unzipping. For the sake of example, let s say that your accountant periodically sends you a ZIP file containing spreadsheets regarding the invoices and receipts your business has received by month. He uses the naming convention XXXInv.XLS for invoices and XXXRec.XLS for receipts, where XXX is the three-letter month abbreviation (such as JAN,FEB, and similar abbreviations). The following is an example of the contents of a ZIP file you might receive: MARInv.XLS MARRec.XLS APRInv.XLS APRRec.XLS Your application requires a different organization of the XLS files. There s a Year directory with subdirectories for each month. Another requirement is that when the files get put into this new directory structure, the three-letter month designation will be stripped off. So after the unzipping is done, the files should be organized as follows: Year +-- MAR +--- Inv.XLS (formerly MARInv.XLS) +--- Rec.XLS (formerly MARRec.XLS) +-- APR +--- Inv.XLS (formerly APRInv.XLS) +--- Rec.XLS (formerly APRRec. XLS) When unzipping, you could put the following code into the Rename callback event to strip off the month from the name of the XLS, and add the path to put it into a directory corresponding to the month: LPARAMETERS ItemName,iDate,iTime, ; lattrib,origitemname,rc LOCAL lcmonthdirectory, ; lcfile, lcitemname *-- ItemName is the file being unzipped *-- Get name of file without directory IF AT("\",ItemName)!=0 lcfile = SUBSTRC(ItemName,RAT("\",ItemName)+1) ELSE lcfile = ItemName ENDIF *-- Get Month from file name lcmonthdirectory = LEFTC(lcFile,3)+"\" *-- Strip month from file name lcfile = SUBSTRC(lcFile,4) *-- Build the new name and path lcitemname = this.destination+ ;

7 Seite 7 von 8 "\Year\"+lcMonthDirectory+lcFile *-- overwriting value of itemname renames *-- the file being written out ItemName = lcitemname So if the ItemName = "MARInv.XLS," then the event changes the ItemName to "Year\MAR\Inv.XLS." Very powerful indeed! I m now going to demonstrate how to tackle the same problem from the zipping side of things, also using the Rename callback event. For the sake of example, you decide that the accountant should be giving you a ZIP file that knows where to put the files: In other words, it has already renamed the files and includes the proper paths. All you have to do, then, is unzip the ZIP file (without using DynaZIP if you want) and everything will fall into its proper place. The code that will accomplish this is very similar to the code we saw previously: LPARAMETERS ItemName,iDate,iTime, ; lattrib,origitemname,rc LOCAL lcmonthdirectory, ; lcfile, lcitemname lcitemname = "" *-- ItemName is the file being zipped *-- Get name of file without directory IF AT("/",ItemName)!=0 lcfile = SUBSTRC(ItemName,RAT("/",ItemName)+1) lcitemname = SUBSTRC(ItemName,1,RAT("/",ItemName)-1) ELSE lcfile = ItemName ENDIF *-- Get Month from file name lcmonthdirectory = LEFTC(lcFile,3)+"/" *-- Strip month from file name lcfile = SUBSTRC(lcFile,4) lcitemname = lcitemname+ ; "Year/"+lcMonthDirectory+lcFile *-- overwriting value of itemname renames *-- the file being written out ItemName = lcitemname Using such code, the ZIP file would contain the following pathed items: Year\MAR\Inv.XLS Year\MAR\Rec.XLS Year\APR\Inv.XLS Year\APR\Rec.XLS Pretty snazzy, huh? The previous two Rename event code samples are nearly identical. However, there s an important, subtle difference: the direction of the slashes. For some reason, the direction of the "slashes" in the path of the item in the itemname parameter is reversed when zipping. In other words, forward slashes ("/") are used in the path instead of the normal DOS back

8 Seite 8 von 8 slashes ("\"): in other words, the file name \MYDIR\ABC.TXT comes across as /MYDIR/ABC.TXT.! There are two files called ZIPREN.PRG and UNZREN.PRG that contain the full source code for the two code samples above in the accompanying Download file. MemToMem callback event I m afraid I have to retract a statement that I made in April s article. In that piece, I said that the ZIP_MEMTOMEM AND UNZIP_MEMTOMEM actions couldn t be used from VFP. That statement was incorrect. Mea culpa, mea culpa, mea maxima! Please do your part to spread the word to any VFP developers you meet. In fact, do yourself the service of pulling out April s article and striking through the statements with a big honking permanent red marker! The MemToMem callback event allows you to compress a string into another string (hence the name MemToMem). This has applications in compressing (and uncompressing) string information into memo fields and when encrypting the information with a password as well. I won t go into the specifics of this callback event in this article because it would take up too much space. A demonstration of the use of this callback event can be found in the sample files included with the DynaZIP-AX installation: These files are named VFPMEMTOMEM*.*. Order of callback event firing To get a better idea of how the callback events work together, I ve created a program file called CALLORD.PRG that logs the callback events that fire, as well as what was passed to them, and then uses a form called ZIPLOG to display the information. These files are available in the accompanying Download file. Summary This month I described the DynaZIP features that help developers to customize/internationalize text and dialogs presented to the user. Once more, I have nothing but high praise for the DynaZIP product. Feel free to contact me with your feedback or thoughts. Next time I ll present a small framework that makes the controls easier to use and extend.

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

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

## 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

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

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

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

Spectroscopic Analysis: Peak Detector

Spectroscopic Analysis: Peak Detector Electronics and Instrumentation Laboratory Sacramento State Physics Department Spectroscopic Analysis: Peak Detector Purpose: The purpose of this experiment is a common sort of experiment in spectroscopy.

More information

Window Server 2012 Hyper-V Virtual Machine Snapshots

Window Server 2012 Hyper-V Virtual Machine Snapshots Window Server 2012 Hyper-V Virtual Machine Snapshots Creating a Snapshot Hyper-V makes it easy to create snapshots. To do so, open the Hyper-V Manager, right click on the virtual machine that you want

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

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

Access Intermediate

Access Intermediate Access 2010 - Intermediate (103-134) Building Access Databases Notes Quick Links Building Databases Pages AC52 AC56 AC91 AC93 Building Access Tables Pages AC59 AC67 Field Types Pages AC54 AC56 AC267 AC270

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

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

Creating If/Then/Else Routines

Creating If/Then/Else Routines 10 ch10.indd 147 Creating If/Then/Else Routines You can use If/Then/Else routines to give logic to your macros. The process of the macro proceeds in different directions depending on the results of an

More information

Running Java Programs

Running Java Programs Running Java Programs Written by: Keith Fenske, http://www.psc-consulting.ca/fenske/ First version: Thursday, 10 January 2008 Document revised: Saturday, 13 February 2010 Copyright 2008, 2010 by Keith

More information

If Statements, For Loops, Functions

If Statements, For Loops, Functions Fundamentals of Programming If Statements, For Loops, Functions Table of Contents Hello World Types of Variables Integers and Floats String Boolean Relational Operators Lists Conditionals If and Else Statements

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

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read)

What is version control? (discuss) Who has used version control? Favorite VCS? Uses of version control (read) 1 For the remainder of the class today, I want to introduce you to a topic we will spend one or two more classes discussing and that is source code control or version control. What is version control?

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

Project Collaboration

Project Collaboration Bonus Chapter 8 Project Collaboration It s quite ironic that the last bonus chapter of this book contains information that many of you will need to get your first Autodesk Revit Architecture project off

More information

Excel for Algebra 1 Lesson 5: The Solver

Excel for Algebra 1 Lesson 5: The Solver Excel for Algebra 1 Lesson 5: The Solver OK, what s The Solver? Speaking very informally, the Solver is like Goal Seek on steroids. It s a lot more powerful, but it s also more challenging to control.

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

Taking Advantage of ADSI

Taking Advantage of ADSI Taking Advantage of ADSI Active Directory Service Interfaces (ADSI), is a COM-based set of interfaces that allow you to interact and manipulate directory service interfaces. OK, now in English that means

More information

Rescuing Lost Files from CDs and DVDs

Rescuing Lost Files from CDs and DVDs Rescuing Lost Files from CDs and DVDs R 200 / 1 Damaged CD? No Problem Let this Clever Software Recover Your Files! CDs and DVDs are among the most reliable types of computer disk to use for storing your

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

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

» How do I Integrate Excel information and objects in Word documents? How Do I... Page 2 of 10 How do I Integrate Excel information and objects in Word documents? Date: July 16th, 2007 Blogger: Scott Lowe

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

It s possible to get your inbox to zero and keep it there, even if you get hundreds of s a day.

It s possible to get your  inbox to zero and keep it there, even if you get hundreds of  s a day. It s possible to get your email inbox to zero and keep it there, even if you get hundreds of emails a day. It s not super complicated, though it does take effort and discipline. Many people simply need

More information

In this chapter, I m going to show you how to create a working

In this chapter, I m going to show you how to create a working Codeless Database Programming In this chapter, I m going to show you how to create a working Visual Basic database program without writing a single line of code. I ll use the ADO Data Control and some

More information

Taskbar: Working with Several Windows at Once

Taskbar: Working with Several Windows at Once Taskbar: Working with Several Windows at Once Your Best Friend at the Bottom of the Screen How to Make the Most of Your Taskbar The taskbar is the wide bar that stretches across the bottom of your screen,

More information

Clean & Speed Up Windows with AWO

Clean & Speed Up Windows with AWO Clean & Speed Up Windows with AWO C 400 / 1 Manage Windows with this Powerful Collection of System Tools Every version of Windows comes with at least a few programs for managing different aspects of your

More information

Instructions for Using the Databases

Instructions for Using the Databases Appendix D Instructions for Using the Databases Two sets of databases have been created for you if you choose to use the Documenting Our Work forms. One set is in Access and one set is in Excel. They are

More information

Finance Systems Management. Scheduling Reports Using Report Caster

Finance Systems Management. Scheduling Reports Using Report Caster Finance Systems Management Date: 1/2016 Scheduling Reports Using Report Caster Contents Section 1: Scheduling Published Reports to be delivered via Email Section 2: Scheduling InfoAssist Reports to be

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

[Compatibility Mode] Confusion in Office 2007

[Compatibility Mode] Confusion in Office 2007 [Compatibility Mode] Confusion in Office 2007 Confused by [Compatibility Mode] in Office 2007? You re Not Alone, and Here s Why Funnybroad@gmail.com 8/30/2007 This paper demonstrates how [Compatibility

More information

DETECTING ANOMALIES IN YOUR DATA USING ROUNDED NUMBERS Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA

DETECTING ANOMALIES IN YOUR DATA USING ROUNDED NUMBERS Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA DETECTING ANOMALIES IN YOUR DATA USING ROUNDED NUMBERS Curtis A. Smith, Defense Contract Audit Agency, La Mirada, CA ABSTRACT Analyzing large amounts of data looking for anomalies can be a disheartening

More information

QuickBooks 2008 Software Installation Guide

QuickBooks 2008 Software Installation Guide 12/11/07; Ver. APD-1.2 Welcome This guide is designed to support users installing QuickBooks: Pro or Premier 2008 financial accounting software, especially in a networked environment. The guide also covers

More information

Troubleshooting BPMS Errors

Troubleshooting BPMS Errors BPMS SOFTWARE bpms@bpms.net 877-250-2698 Troubleshooting BPMS Errors Last Updated: 3 July 2017 Table of Contents ERROR #2501 THE OPENFORM ACTION WAS CANCELLED... 5 APPLIES TO... 5 SYMPTOMS... 5 CAUSE...

More information

All textures produced with Texture Maker. Not Applicable. Beginner.

All textures produced with Texture Maker. Not Applicable. Beginner. Tutorial for Texture Maker 2.8 or above. Note:- Texture Maker is a texture creation tool by Tobias Reichert. For further product information please visit the official site at http://www.texturemaker.com

More information

MySQL: an application

MySQL: an application Data Types and other stuff you should know in order to amaze and dazzle your friends at parties after you finally give up that dream of being a magician and stop making ridiculous balloon animals and begin

More information

MANAGING YOUR MAILBOX: TRIMMING AN OUT OF CONTROL MAILBOX

MANAGING YOUR MAILBOX: TRIMMING AN OUT OF CONTROL MAILBOX MANAGING YOUR : DEALING WITH AN OVERSIZE - WHY BOTHER? It s amazing how many e-mails you can get in a day, and it can quickly become overwhelming. Before you know it, you have hundreds, even thousands

More information

Microsoft SharePoint 2010

Microsoft SharePoint 2010 BrainStorm Quick Start Card for Microsoft SharePoint 2010 Getting Started Microsoft SharePoint 2010 brings together your organization s people, documents, information, and ideas in a customizable space

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

Just Do This: Back Up!

Just Do This: Back Up! Just Do This: Back Up A Step-by-Step Plan To Back Up Your Computer Version 1.1 by Leo A. Notenboom An Ask Leo! ebook https:// ISBN: 978-1-937018-26-9 (PDF) ISBN: 978-1-937018-27-6 (ebook) ISBN: 978-1-937018-28-3

More information

Lab 1: Silver Dollar Game 1 CSCI 2101B Fall 2018

Lab 1: Silver Dollar Game 1 CSCI 2101B Fall 2018 Lab 1: Silver Dollar Game 1 CSCI 2101B Fall 2018 Due: Tuesday, September 18, 11:59 pm Collaboration Policy: Level 1 (review full policy for details) Group Policy: Individual This lab will give you experience

More information

Intro. Scheme Basics. scm> 5 5. scm>

Intro. Scheme Basics. scm> 5 5. scm> Intro Let s take some time to talk about LISP. It stands for LISt Processing a way of coding using only lists! It sounds pretty radical, and it is. There are lots of cool things to know about LISP; if

More information

5. Excel Fundamentals

5. Excel Fundamentals 5. Excel Fundamentals Excel is a software product that falls into the general category of spreadsheets. Excel is one of several spreadsheet products that you can run on your PC. Others include 1-2-3 and

More information

Keeping Sane - Managing your

Keeping Sane - Managing your WITH KEVIN Keeping Sane - Managing your Email TODAY S COFFEE TALK Email is a wonderful tool for sending and receiving a lot of information quickly and securely. However, it s important that your personal

More information

There are many other applications like constructing the expression tree from the postorder expression. I leave you with an idea as how to do it.

There are many other applications like constructing the expression tree from the postorder expression. I leave you with an idea as how to do it. Programming, Data Structures and Algorithms Prof. Hema Murthy Department of Computer Science and Engineering Indian Institute of Technology, Madras Lecture 49 Module 09 Other applications: expression tree

More information

Heuristic Evaluation of igetyou

Heuristic Evaluation of igetyou Heuristic Evaluation of igetyou 1. Problem i get you is a social platform for people to share their own, or read and respond to others stories, with the goal of creating more understanding about living

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

Visual Basic 2008 Anne Boehm

Visual Basic 2008 Anne Boehm TRAINING & REFERENCE murach s Visual Basic 2008 Anne Boehm (Chapter 3) Thanks for downloading this chapter from Murach s Visual Basic 2008. We hope it will show you how easy it is to learn from any Murach

More information

Getting started in Outlook Web App

Getting started in Outlook Web App Getting started in Outlook Web App Outlook Web App is a way of getting to your mail from a browser connection, either at the campuses or from home. Everything you do in Outlook Web App will be transferred

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

1 Start Ubuntu Privacy Remix

1 Start Ubuntu Privacy Remix Table of Contents 1 Start Ubuntu Privacy Remix...1 2 Working with USB flash drives and diskettes...2 3 Open extended TrueCrypt volume...3 4 Open normal TrueCrypt Volume...4 5 Open and store data in the

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

Objective- Students will be able to use the Order of Operations to evaluate algebraic expressions. Evaluating Algebraic Expressions

Objective- Students will be able to use the Order of Operations to evaluate algebraic expressions. Evaluating Algebraic Expressions Objective- Students will be able to use the Order of Operations to evaluate algebraic expressions. Evaluating Algebraic Expressions Variable is a letter or symbol that represents a number. Variable (algebraic)

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

SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman

SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman SharePoint 2010 Site Owner s Manual by Yvonne M. Harryman Chapter 9 Copyright 2012 Manning Publications Brief contents PART 1 GETTING STARTED WITH SHAREPOINT 1 1 Leveraging the power of SharePoint 3 2

More information

Performer to DP2 Hot Folder Reference Manual Rev There is only one file involved with installing the Performer to DP2 Hot Folder.

Performer to DP2 Hot Folder Reference Manual Rev There is only one file involved with installing the Performer to DP2 Hot Folder. Performer to DP2 Hot Folder Reference Manual Rev. 07.11.05 Install Files: There is only one file involved with installing the Performer to DP2 Hot Folder. The installer file is named PP2DP2_1.x.x.EXE.

More information

Chapter 1: Getting Started

Chapter 1: Getting Started Chapter 1: Getting Started 1 Chapter 1 Getting Started In OpenOffice.org, macros and dialogs are stored in documents and libraries. The included integrated development environment (IDE) is used to create

More information

The smarter, faster guide to Microsoft Outlook

The smarter, faster guide to Microsoft Outlook The smarter, faster guide to Microsoft Outlook Settings... 1 The Inbox... 1 Using E-Mail... 4 Sending Attachments... 6 Some things to watch out for with File Attachments:... 7 Creating an Email Signature...

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

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

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

Creating a new form with check boxes, drop-down list boxes, and text box fill-ins. Customizing each of the three form fields.

Creating a new form with check boxes, drop-down list boxes, and text box fill-ins. Customizing each of the three form fields. In This Chapter Creating a new form with check boxes, drop-down list boxes, and text box fill-ins. Customizing each of the three form fields. Adding help text to any field to assist users as they fill

More information

Learner. Help Guide. Page 1 of 36 Training Partner (Learner Help Guide) Revised 09/16/09

Learner. Help Guide. Page 1 of 36 Training Partner (Learner Help Guide) Revised 09/16/09 Learner Help Guide Page 1 of 36 Table of Contents ACCESS INFORMATION Accessing Training Partner on the Web..... 3 Login to Training Partner........ 4 Add/Change Email Address....... 6 Change Password.........

More information

Binary, Hexadecimal and Octal number system

Binary, Hexadecimal and Octal number system Binary, Hexadecimal and Octal number system Binary, hexadecimal, and octal refer to different number systems. The one that we typically use is called decimal. These number systems refer to the number of

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

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

Editing and Formatting Worksheets

Editing and Formatting Worksheets LESSON 2 Editing and Formatting Worksheets 2.1 After completing this lesson, you will be able to: Format numeric data. Adjust the size of rows and columns. Align cell contents. Create and apply conditional

More information

Adding Information to a Worksheet

Adding Information to a Worksheet Figure 1-1 Excel s welcome page lets you create a new, blank worksheet or a readymade workbook from a template. For now, click the Blank workbook picture to create a new spreadsheet with no formatting

More information

W W W. M A X I M I Z E R. C O M

W W W. M A X I M I Z E R. C O M W W W. M A X I M I Z E R. C O M Notice of Copyright Published by Maximizer Software Inc. Copyright 2018 All rights reserved Registered Trademarks and Proprietary Names Product names mentioned in this document

More information

FoxTalk. PKZIP and PKUNZIP by PKWARE, Inc. have become household names in. Zipping and Unzipping for Clients. Richard David Hodder. April

FoxTalk. PKZIP and PKUNZIP by PKWARE, Inc. have become household names in. Zipping and Unzipping for Clients. Richard David Hodder. April FoxTalk Solutions for Microsoft FoxPro and Visual FoxPro Developers April 2000 Volume 12, Number 4 Zipping and Unzipping for Clients Richard David Hodder 6.0 Compression software is a staple tool on the

More information

Paul's Online Math Notes Calculus III (Notes) / Applications of Partial Derivatives / Lagrange Multipliers Problems][Assignment Problems]

Paul's Online Math Notes Calculus III (Notes) / Applications of Partial Derivatives / Lagrange Multipliers Problems][Assignment Problems] 1 of 9 25/04/2016 13:15 Paul's Online Math Notes Calculus III (Notes) / Applications of Partial Derivatives / Lagrange Multipliers Problems][Assignment Problems] [Notes] [Practice Calculus III - Notes

More information

TeamSpot 3. Introducing TeamSpot. TeamSpot 3 (rev. 25 October 2006)

TeamSpot 3. Introducing TeamSpot. TeamSpot 3 (rev. 25 October 2006) TeamSpot 3 Introducing TeamSpot TeamSpot 3 (rev. 25 October 2006) Table of Contents AN INTRODUCTION TO TEAMSPOT...3 INSTALLING AND CONNECTING (WINDOWS XP/2000)... 4 INSTALLING AND CONNECTING (MACINTOSH

More information

PRIAM Installation Instructions 1.2.1

PRIAM Installation Instructions 1.2.1 PRIAM Installation Instructions 1.2.1 Published 1 October 2009 Contents 1.0 Introduction... 2 1.1The PRIAM Product range... 2 1.2 Document contents... 2 2.0 Downloading PRIAM Products... 3 3.0 Installing

More information

Moving Materials from Blackboard to Moodle

Moving Materials from Blackboard to Moodle Moving Materials from Blackboard to Moodle Blackboard and Moodle organize course material somewhat differently and the conversion process can be a little messy (but worth it). Because of this, we ve gathered

More information

Karlen Communications

Karlen Communications Karlen Communications Karen McCall, M.Ed. Using Style Sets in Word 2007 and 2010 Phone: 1-519-442-2856 E-mail: info@karlencommunications.com Web: karlencommunications.com This material copyright 2010 Karen

More information

GUARD1 PLUS Documentation. Version TimeKeeping Systems, Inc. GUARD1 PLUS and THE PIPE are registered trademarks

GUARD1 PLUS Documentation. Version TimeKeeping Systems, Inc. GUARD1 PLUS and THE PIPE are registered trademarks GUARD1 PLUS Documentation Version 3.02 2000-2005 TimeKeeping Systems, Inc. GUARD1 PLUS and THE PIPE are registered trademarks i of TimeKeeping Systems, Inc. Table of Contents Welcome to Guard1 Plus...

More information

Roc Model and Density Dependence, Part 1

Roc Model and Density Dependence, Part 1 POPULATION MODELS Roc Model and Density Dependence, Part 1 Terri Donovan recorded: February, 2012 You ve now completed several modeling exercises dealing with the Roc population. So far, the caliph of

More information

National Weather Service Weather Forecast Office Norman, OK Website Redesign Proposal Report 12/14/2015

National Weather Service Weather Forecast Office Norman, OK Website Redesign Proposal Report 12/14/2015 National Weather Service Weather Forecast Office Norman, OK Website Redesign Proposal Report 12/14/2015 Lindsay Boerman, Brian Creekmore, Myleigh Neill TABLE OF CONTENTS Parts PAGE Abstract... 3 Introduction...

More information

12 MEL. Getting Started with Maya 631

12 MEL. Getting Started with Maya 631 12 MEL MEL (Maya Embedded Language) is a powerful command and scripting language that gives you direct control over Maya's features, processes, and workflow. Maya s user interface is built using MEL scripts

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

GUARD1 PLUS Manual Version 2.8

GUARD1 PLUS Manual Version 2.8 GUARD1 PLUS Manual Version 2.8 2002 TimeKeeping Systems, Inc. GUARD1 PLUS and THE PIPE are registered trademarks of TimeKeeping Systems, Inc. Table of Contents GUARD1 PLUS... 1 Introduction How to get

More information

Installing the WHI Virtual Private Network (VPN) for WHIX Users Updated 12/16/2016

Installing the WHI Virtual Private Network (VPN) for WHIX Users Updated 12/16/2016 Installing the WHI Virtual Private Network (VPN) for WHIX Users Updated 12/16/2016 Note: Please read the FAQ section at the end of this document. I. Overview The way in which you connect to the WHI network

More information

_CH17_525_10/31/06 CAL 101

_CH17_525_10/31/06 CAL 101 1-59863-307-4_CH17_525_10/31/06 17 One advantage that SONAR has over any other music-sequencing product I ve worked with is that it enables the user to extend its functionality. If you find yourself in

More information

Q: I've been playing with the Microsoft Internet Transfer Control (inetctls.inet.1) and it would be great if only it worked.

Q: I've been playing with the Microsoft Internet Transfer Control (inetctls.inet.1) and it would be great if only it worked. August, 2000 Advisor Answers Using the Internet Transfer Control Visual FoxPro 6.0/5.0 Q: I've been playing with the Microsoft Internet Transfer Control (inetctls.inet.1) and it would be great if only

More information

Creating tables of contents

Creating tables of contents Creating tables of contents A table of contents (TOC) can list the contents of a book, magazine, or other publication; display a list of illustrations, advertisers, or photo credits; or include other information

More information

INTERFACE CHANGES. In This Chapter

INTERFACE CHANGES. In This Chapter 3 INTERFACE CHANGES In This Chapter A cool new look, without all the fluff, page 32. Save disk space, page 32. Create your own CDs, page 34. Getting Support, page 37. What s New This chapter touches on

More information

Saving and Restoring the System on the Fast Internet Computers CFS-249 December 15, 2004

Saving and Restoring the System on the Fast Internet Computers CFS-249 December 15, 2004 Saving and Restoring the System on the Fast Internet Computers CFS-249 December 15, 2004 David Dunthorn www.c-f-systems.com Comment This is a long document to describe what really turns out to be a simple

More information

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller

Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Excel Basics Rice Digital Media Commons Guide Written for Microsoft Excel 2010 Windows Edition by Eric Miller Table of Contents Introduction!... 1 Part 1: Entering Data!... 2 1.a: Typing!... 2 1.b: Editing

More information

DMG Master 2.6 User Guide

DMG Master 2.6 User Guide ! DMG Master 2.6 User Guide We Make Software - Ecleti.com DMG Master 2007-2018 Ecleti - Roberto Panetta all rights reserved Every effort has been made to ensure that the information in this manual is accurate.

More information

Part 1: Understanding Windows XP Basics

Part 1: Understanding Windows XP Basics 542362 Ch01.qxd 9/18/03 9:54 PM Page 1 Part 1: Understanding Windows XP Basics 1: Starting Up and Logging In 2: Logging Off and Shutting Down 3: Activating Windows 4: Enabling Fast Switching between Users

More information

VERSION GROUPWISE WEBACCESS USER'S GUIDE

VERSION GROUPWISE WEBACCESS USER'S GUIDE VERSION GROUPWISE WEBACCESS USER'S GUIDE TM Novell, Inc. makes no representations or warranties with respect to the contents or use of this manual, and specifically disclaims any express or implied warranties

More information

HOUR 18 Collaborating on Documents

HOUR 18 Collaborating on Documents HOUR 18 Collaborating on Documents In today s office environments, people are increasingly abandoning red ink pens, highlighters, and post-it slips in favor of software tools that enable them to collaborate

More information

How to Make a Book Interior File

How to Make a Book Interior File How to Make a Book Interior File These instructions are for paperbacks or ebooks that are supposed to be a duplicate of paperback copies. (Note: This is not for getting a document ready for Kindle or for

More information

Using Microsoft Word. Text Tools. Spell Check

Using Microsoft Word. Text Tools. Spell Check Using Microsoft Word In addition to the editing tools covered in the previous section, Word has a number of other tools to assist in working with test documents. There are tools to help you find and correct

More information