Level Extreme .NET Magazine April 2008 issue

Universal Thread Magazine March 2007 issue

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003
2002

2006
2005
2004

2008
2007
2006
2005
2004

2007
2006
2005
2004
2003

2004
2003
2002
2001
2000
1998
1997
1996
1993

2003
2002

2003
2001

2003
2002
2001

2003
2001

Visual FoxPro 2001
Visual FoxPro 2000
Visual Studio 2000

West Wind 2002
Double Impact 2001
FoxTeach 2001
Jam sessions
Technical Guidelines

Universal Thread documentation

About
Acronyms
Contact information
Troubleshooting
Time zones
Web Service
Terms & Conditions
Copyright

Manage your account for the messages area options, your subscription information, your invoicing, youir banners and your pictures Subscribe to the Universal Thread and get all the benefits related to the messages area A corporate subscription is needed for companies that have more than one developer Access the Universal Thread store to purchase your subscription, corporate subscriptions and banners The Universal Thread is covering several conferences per year. On site, reporters cover the technical aspect of the conference as well as making interviews, taking pictures and videos and other related content. Get all the reports from our coverages site. Universal Thread home page Level Extreme .NET Magazine, a newly published online magazine by Level Extreme about Microsoft .NET technology and its community Universal Thread Magazine, a magazine dedicated to the Visual FoxPro community Praha 2006

Microsoft Czech Republic and DAQUAS organize a conference for developers who create applications using Microsoft Visual FoxPro. "Visual FoxPro DevCon, Praha 2006" takes place in Prague, Czech Republic in September 2006. Visual FoxPro DevCon, Praha 2006 comprises of at least 30 sessions out of which more than 10 are presented in English by worldwide respected FoxPro experts. This year is the 9th year of the event.

Date: 
Location: 

Monday, September 11

by Jan Vít and Jan Král

Hello again! Now we are in Prague or Praha, as it is known over here, in the Czech Republic. We will report about the 9th Praha FoxPro DevCon. As in the past we will start our reporting with a very short reference to the place, where we are now and where this event will take place.

 

The Pla(la)ce

This year not only the Visual FoxPro DevCon was moved from June to September, the location also changed from the Technical University to the large TOP HOTEL Praha, a member of the "TOP International Hotels" network.

This hotel is located within a quiet area of the Prague city. The entire hotel complex is one of the largest hotel premises in Europe with its area of 9 hectares (22 acres or 14 soccer fields or an unknown number of football fields.).

Under one roof, it offers accommodations, conference seats, restaurants, wellness and fitness centers, indoor tennis court and many other services.

So besides being a convention hotel of a rather elevated level, it offers a wide range of well assorted services including a swimming pool of Olympic proportions, beautiful Japanese Garden with a "singing fountain" and many other opportunities to relax and spend your time instead of doing the rather stressful job being a carefully listening attendee.

Except for the attendees of the Visual FoxPro DevCon, who postponed all leisure time activities until Wednesday, "the Day after".

 

Introduction
Darina Vodrážková and Igor Vít

Greeting a crowd of about 300 attendees (much more than Microsoft expected; the number of lunch portions had to be adjusted in a hurry) Darina and Igor explained the new arrangements of this developer conference:

This year's Visual FoxPro DevCon is an integral part of the Developer Days of the Czech Microsoft. Therefore the Visual FoxPro DevCon left its customary place in the calendar, which was June, and moved to mid September. This brings the additional advantage that each attendee can also go to any other of the sessions, which are presented these days.

Within the Developer Days of the Czech Microsoft the Visual FoxPro DevCon will have a prominent place being one of the largest events within the Developer Days of the Czech Microsoft. It will have more than 30 sessions out of which 12 will be presented in English.

All together attendees from 16 countries are present in the Visual FoxPro DevCon in Prague. This again is an outstanding feature within this event. Also it stipulates the idea that the Czech Visual FoxPro DevCon might be moving to something like the Pan-European Visual FoxPro DevCon.

Also one draw back has to be noted: The traditional Developer Party will not take place. But this will be overcome by providing a "Fox Corner" at the restaurant within Microsoft Developer party.

 

Key Notes
Yair Alan Griver

Well nothing has happened. We are still with Version 9 and SP1 is also not really fresh from the shop anymore. So after a while, nothing still seems to continue to happen.... (Douglas Adams) Really? Well, if you are still fostering this opinion you should better have come to this DevCon and listen to the fascinating new capabilities which Yag presented in the Key Notes.

But before he presented the news to us, he asked us to be silent for a contemplative minute, thinking about Drew Speedie and his son Brent, who perished September of last year in an unfortunate accident. This has been a great loss to the community and should be remembered for a long time.

Then Yag started his session with one of most unusual news, ever has been presented in a Key Note: With thanks to a person Kevin Ragsdale, Yag presented a Video clip right from the heart of every ardent Visual FoxPro programmer and Visual FoxPro fan. Visual FoxPro not only is alive, Visual FoxPro is thriving, being the foremost programming environment, you can think about, shown in a fashion that makes every marketing buff of consumer products becoming envious about. Don't believe it?

Well, you should see the VFP Videos specially manu(ally)factured by Kevin Ragsdale. Well done! And you will have a chance to help to promote Visual FoxPro as well. Just open the site and read on!

And we have another slogan for Visual FoxPro: Besides "Fox Rocks!" we now have
       VFP Connects!
Yag then showed, what Visual FoxPro is "connecting" and how it does it:

VFP Connects! You to your data!

The report generator has been completely renewed in Visual FoxPro 9. But this has been not the final stage of the evolution of this vital item of Visual FoxPro. Enhancements of the reporting are on the way. The runtime now is also decorator and visitor. You can preprocess a report to remove things that shouldn't show up - for instance, you can swap in a report at load time, create links for HTML, but prevent printing of the content (if this combination seems to be advisable), the properties of the report can now be handled dynamically at runtime, objects of the report can be rotated and quite a few more things of this type are likely to come to "connect the user to his/her data".

VFP Connects! You to SQL Server!

Visual FoxPro has its own strong database system, but SQL servers are around and are doing a job. So many people like them and most likely they will stay forever. So the Visual FoxPro team made a wise decision according one of the most basic rules of the successful: "If you can't fight them (these SQLs), join them (well that should read: integrate them). So the SQL Upsizing Wizard got a major refresh. Now it is a great tool to conquer the (data) world. Yag presented a demo, which had many of these quite convincing features. And he clearly demonstrated, how "visual" (= optically recognizable) a Visual Wizard can be.

Ease of use is one of the major features. So the SQL Upsizing Wizard can be started with default settings. Re-running it allows optimizing and customizing as needed. And for the speed fans: There have been improvements in the speed when upsizing to Yukon! Doug Hennig tested one table of over 300,000 records that used to take 2 hours. Now the upsizing takes 11 minutes!

VFP Connects! Us to Each Other!

Yag, in his career with Microsoft, is active in two fields: He is successfully overseeing the phenomenal implementation of data tools into Visual Studio and also is working actively with the developer communities.

Then CodePlex comes onto the stage, which is Microsoft's community development web site. CodePlex is a community platform, which allows developers to create new projects on topics they are interested in, in order to share their ideas and questions with fellow developers around the world. CodePlex allows developers to join others who have already started their projects in CodePlex and use whatever they learned from CodePlex projects and provide feedback.

Under these premises Yag actively promotes VFPX and VFPY, which is kind of the Visual FoxPro section within CodePlex. It is a Visual FoxPro Community effort to create open source add-ons for Visual FoxPro 9.0. In the keynote, Yag showed some enhancements from VFPX. Within VFPX code, classes, and libraries made available to the Visual FoxPro community. Presently these Projects are actively in development

  • ClassBrowserX
  • Code Analyst
  • ctl32 Statusbar
  • GDIPlusX
  • JustBehave
  • New Property and Method Replacement
  • OOP Menu Project
The results of these efforts will complement Microsoft's continuing efforts to improve and extend Visual FoxPro, code named Sedna.

VFP Connects! You to Visual Studio and .NET!

The NET4COM library is a collection of COM classes that wrap a subset of the .NET Framework 2.0. The .NET Framework is a rich collection of namespaces and API that provides a comprehensive set of functionality that developers can use to build applications that run on the .NET platform. While Visual FoxPro does have a rich library of API, there are some features that either do not exist in the Visual FoxPro libraries or are harder to use than in the Framework. NET4COM brings together a small subset of the .NET Framework - a collection of commonly used API that brings to Visual FoxPro functionality that does not exist.

The MY library for Visual FoxPro is similar to NET4COM. MY is implemented natively for Visual FoxPro and, similar to NET4COM, exposes commonly used functionality in a hierarchy that is easy to discover and navigate. The Sedna CTP Setup will install the MY library and related files in the "MY" folder under the selected install destination.

MY was introduced with Visual Basic DotNet. The MY namespace is a native Visual FoxPro class library that contains similar wrappers for SYS() functions, Windows API and Windows Script Host properties and methods. It allows statements like

       MY.Computer.FileSystem.SpecialFolder.MyDocuments
And provides an easy way to obtain information about various directories like my Temp Folder, Desktop folder and the like. MY returns folders and files as objects and allows you to manipulate them.

NET4COM and MY are included in the Microsoft Visual FoxPro Sedna - Community Technology Preview (CTP) June 2006

Data Designer Extensibility (DDEX) data object types represent data source objects from an external data source. They are offered by DDEX Providers and rendered in the Visual Studio IDE, which is defined in the data object support schema file. As Yag showed, DDEX integration allows Visual Studio developers to naturally access Visual FoxPro data.

Yag also showed us a new InteropForms toolkit coming from the Visual Basic team. It allows us to create a DLL with forms written in VB and access them like any other form in Visual FoxPro. Yag created a form using Visual FoxPro data (thru DDEX) in Visual Basic and saved it as a DLL, calling it from Visual FoxPro and mixing the access as needed.

VFP Connects! Us to Each Other!

There are a great variety of Sites on the web, which connects the community members, like

 

Reports in Visual FoxPro 9, part I
Martin Haluza

Many of us have been working with Reports in previous versions of Visual FoxPro and many of us were not satisfied. Nowadays we have here Visual FoxPro 9.0 and Martins session, which will show us some good features.

Martin started with a report designer. He mentioned some features in this area such as:

  • Safe mod (every single field has one safe mod). This means that programmer can forbid for example writing in the particular filed
  • Better UI (user interface which is much more flexible)
  • New forms

Of course Martin did not forget to show us other very interesting and for many of us new things in report designer. For instance, he demonstrated us to work with system variable _reportbuilder. He did not any examples, instead he made a big effort to explain us how the report designer works and how the builder communicates with Report Designer.

  • Report Designer evaluate _reportbuilder variable and call the builder
  • Builder react on Report Designer and he can modify FRX and send it back
The session also discussed events in Report Designer such as reportclose, reportopen and print as well.

Another thing that he spoke about was ReportBuilder application (ReportBuilder.app), which is communicating with Report Designer. It can replace native dialogs (tooltips, review and so on). He showed us many examples such as processing events by ReportBuilder application or copying styles.

At the end he managed to mention something about running the reports and ReportListener (basic class in Visual FoxPro) and we couldn't forget of Report output application which maps codes numbers on instance of ReportListeners and so on.

The session was exhausting; nevertheless there were a lot of interesting information and good tips so we are looking forward to the second part (Reports in Visual FoxPro 9.0 part 2).

 

Visual FoxPro and Barcodes time
Jan Dudek

Barcodes had undoubtedly found its place in today's business. Even though their presence on various products never surprises anyone today, it has not always been this way.

The patent of this technology was made in 1949, but it took almost another three decades until the first barcode reader was actually produced in 1974 by a company named NCR. The first product whose barcode was actually read by such devices was Wrigley's Juicy Fruit packet in supermarket called MARSH and it can still be seen in the Smithonian Institution's National Museum of American History.

Just as Jan was examining all the various barcode formats, he also showed a few Visual FoxPro examples, which can be used for their generation. In order to have the attendees acquire a good understanding of the logic behind the barcodes, Jan provided quite in-depth information.

In the end Jan also mentioned the 2D codes, first introduced in 1988 and then spent some time talking about hardware devices usually present at the shop registers, such as the receipt printers, barcode readers, customer displays and cash drawers and how they are actually serviced from software applications.

 

Creating the Visual FoxPro project for the first time
Jan Vít

This was the first of the two Hands-on Labs (aka HOL) presented on this year's DevCon. Since this was the first time the organizers of the conference decided to introduce this kind of a seminar, they were themselves curious as to whether this seminar will actually get any attendees at all.

Organizers and speakers of both HOL were likewise surprised that both of the HOL sessions were filled to the last place shortly after the special registration for them was started.

This HOL in particular was targeted toward Visual FoxPro beginners and in short showed everything necessary to create a functional Visual FoxPro project with a simple form in it. The form was fairly simple. It used the NorthWind sample database and consisted of a grid and a few textboxes. Just enough to get everyone interested in the particular project and Visual FoxPro itself, of course.

At the end of the session Jan also pointed to some information sources a Visual FoxPro beginner should look at to get more information about Visual FoxPro. Moreover, he also created a document, which exactly copies everything that was mentioned in the session and will be available in the conference download together with the session source code. With help of such a document everyone should be able to re-create the project at home by just themselves. This happened to create a little smile on face of everybody present.

The second HOL was discussing the use of the SQL server from within Visual FoxPro. This HOL was presented by Igor Vít, a well recognized member of the Czech FoxPro community and the main person behind the organization of the entire conference. Unfortunately, none of the reporters were present at that particular session, but our spies reported with a great enthusiasm that he handled the session so well and is such an excellent speaker that he should try to have more sessions next year. Even if that would actually incur the cost of having less time to organize the conference, which, under his guidance, is always a wonderful experience!

 

Tips, tricks and forms
Martin Jindra

As last year, we followed Martin's session. This year his topic was forms. First of all we had to realize that within a single session Martin only presented some carefully selected topics of his vast knowledge of this topic.

He started with definitions of forms. Then he continued with how to create a form using command create form or how to run a form using command do form. Of course, Martin mentioned every single parameter of these commands.

Martin tried to point out differences between single form and formset and he mentioned some advantages and disadvantages as well.

Martin extended the session to classes and events as far as these topics are related to forms. He put a big emphasis to explain how an event evolves step by step. He helped us how to fix this problem using Visual FoxPro help, topic "Event sequence in Visual FoxPro". There you can find the events how they go systematically after each other. In this session Martin also discussed using SET EVENTTRACKING command for tracking events while your application is running.

The session tried to explain to us how we can effectively close the form, for example using command release window or clear windows, but he pointed out that sometimes it is not required to quit the form.

If you wanted to know something about data environment do not worry. Martin told us how the environment works. What is a cursor and how can we work with it, and many other things.

He spoke also about problems with modal and modeless form. For example, a frequent mistake is to run modeless forms from modal forms.

At the end, he showed us another tips and tricks such as running another form from exe/app or sharing data environment by more forms.

The session was full of more great tips and tricks, which are not mentioned here, but the good thing was that the session was determined not only for professionals but even for beginners. Every single programmer could get some good experience about forms and have fun at the same time.

 

Object Thinking
Craig Berntson

This session was basically filled with many rules of thumb on how to design a scalable application with help of objects.

The developer should first of all get a fine understanding of all the processes the business of the customers uses. The information gathered this way should then be used to create objects.

The classical school of thought consists of creating objects based on all the nouns collected from the text describing the future application. This text is generally referred to as the "Use Case". After determining the objects' names, the approach then recommends using the verbs in the text to identify methods and the adjectives are usually used as objects' attributes. According to Craig, this is not the right way. All objects are first of all to be characterized by their behavior which is why we should concentrate on the verbs in the "Use Case" before attempting to actually identify the object names itself.

In his session Craig explained many terms used in object oriented development, such as encapsulation, polymorphism. He also explained many of the, usually, indigestible definitions in the object oriented world. To make sure all attendees understood all the concepts, he often used several real world examples. For example to explain the "behavior" of an object, he used a comparison between mouse and his presenter he uses for switching slides. They are both used for different purposes and therefore they need to be different objects. Keeping that in mind, we should always subclass when there is a difference in behavior, not when we just need one more property to an already existing object.

Make sure to divide everything to as many objects as logically and technically possible. Do not overload them with things they should not care about. To handle more complicated tasks objects should communicate with one another by means of massages. Your only job should be to make them understand each other, to make them you the same "language". Craig compared this to attempting to write a Visual FoxPro code to look like C# code. Remember, C# uses the semicolon to end the line whereas Visual FoxPro uses it to continue the line!

Finally, always remember: "Objects should do all the things in the application, yet they are lazy and they should not depend on other objects, yet they need to collaborate..."

If you are wondering how to make sense out of the last paragraph, let me help you a bit. The solution should be to divide large tasks into multiple objects and make the collaboration work using the factory design pattern to maintain the loose coupling of all the objects.

 

Client/Server without Server
Norbert Kustra

As the last attendees were coming to the conference room, those already in there kept themselves occupied by trying to figure out what this session was really going to be about.

When Norbert started his session, everyone immediately began to understand what the name of the session really stood for - creating a server with the help of Visual FoxPro.

First of all, Norbert explained the basics of the TCP/IP protocol and made sure everyone was familiar with all the networking terminology he was going to use throughout his session.

The whole solution, as presented by numerous examples, comprised of utilizing the WinSock component. This is an OCX component installed together with Visual Studio version 6 and provides the means to Visual FoxPro developers to actually use TCP/IP calls directly in their applications. Just by knowing the IP address of the target computer it allows the application to easily send any string from one computer to another over TCP/IP.

The rest of the examples presented showed an implementation of a powerful way to control the server from the client. The client sent a command string over the wire (wireless also, of course) to the server and it just executed the received command in a simple EXECSCRIPT(), in order for attendees to actually see that something had happened.

Yet powerful, this approach also introduces a big security risk. A Risk too high actually, that it prevents the shown implementation to be directly used in a real world application. This, of course, is something Norbert pointed out and stressed that this was actually only for demo purposes and that some security measures should be taken into account before using such a concept in the open of world wi(l)de web.

 

Adding IntelliSense to your applications
Doug Hennig

IntelliSense is one of the most powerful tool in Visual FoxPro. When the IntelliSense first appeared in Visual FoxPro 7.0 it was revolution. Nowadays it is indispensable and very important tool for developing. Developing applications became much easier and faster then before. But how about having IntelliSense in an application? Is this possible?

In his session Doug showed that "Adding IntelliSense to Your Application" can be made to become a functional and efficient part of any application.

The main topic of this session was to show you how to incorporate IntelliSense into your runtime. This are the main advantages to do so.

  • Your customer will be able to change the behavior of the application.
  • It is scriptable and autocorrect as well.

There are also problems. Doug mentioned for example that we could not input foxcode database straight into the project, because this does not work. The same problem is with foxcode.prg. We cannot put it into our project as well. If we did, there will be an error (something like Couldn't find the foxcode.prg). We should create our own customize IntelliSense using clone of foxcode.prg with some changes. He explained us that IntelliSense in runtime is supported in prg or memo window, but not supported in EditBox. After all we don't have much control in prg window.

Have you ever dreamt about IntelliSense with your own favorite methods and properties? No problem. Doug showed us how to reach this. Using FFIBuilder these thing come true. This builder adds two records to your IntelliSense table.

  • First one record for HandleFFI script record.
  • Second one record for namespace.

Updating was no problem. To update foxcode.exe just add FFI.vcx and FFI.dbf into the project, but he warned us not to add the images. Images must be kept in the main application.

This session was something like an information tornado. There were many tips, which can actually make your developer life much easier. It is very hard to describe feeling from this session. I can only quote Doug Hennig: "Developers cannot live without IntelliSense".

 

Tuesday, September 12

by Jan Vít and Jan Král

HTML Help and using in Visual FoxPro
Rudolf Jalovecký

If you are developing an application you usually have in there forms, reports, programs, icons and other many things, but what about help? Help is very useful and in these days even necessary. It helps your customers to solve a lot of problems, but it helps you as well.

In order to promote the use of the vital tool Rudolf decided to present a session about how to build help using HTML WorkShop.

First of all Rudolf started speaking about what help really is, how it looks like and what is it consisting of. He also mentioned how to add additional benefits to help files, which are one or more file(s) with the chm extension. Possibilities are calling e-mail clients (independent on your help) and web pages or the ability to show videos or pictures as well (mostly gif).

Next topic was work with HTML WorkShop. Important things that he tried to point out were conscientious and precise preparation of help. Bad preparation could cause wrong and not enough functional help, which is actually not our goal.

Segmentation of the content of the help is also important. Rudolf showed us how to effectively use chapters and subhead. In his example, he showed us how to nest the content and advised us what we should do to keep our help lucid and cohesive. One thing that can help us is the use of icons. HTML WorkShop provides us a total of 42 Icons, which can improve the navigation and the functionality of your help.

The session discussed internal structure of hhp file (main file of your help), which is consisting of:

  1. Option
  2. windows
  3. files
  4. alias (without alias help wont work in Visual FoxPro or Delphi)
All these sections could be edited in simple notepad, but he put a big accent on not editing Option and Windows sections.

At the end of the session he just showed us how to run help in Visual FoxPro 3 and 5, which is much more difficult to reach this then in Visual FoxPro 6, 7, 8 and 9.0. Implementation is simple using just SET HELP TO command.

If you have ever been afraid of creating your own help, then after this session this fear should have been gone. Unless you missed this session. Rudolf showed us a brilliant way how to build help and provide us with useful materials so now it is up to us to try it.

 

Windows Component Services (aka COM+)
Craig Berntson

In these two sessions on COM and COM+ Craig gave a really comprehensive overview of COM+ services, beginning with the basics of COM and how the design changed under COM+. In order to make this tough stuff better digestible for the audience he enriched it with a great wealth of well structured examples. The best of all: Two lengthy papers on these topics as well as the sample code can soon be downloaded by the attendee from the DAQUAS internet site. Another reason to attend this excellent DevCon.

Since a long time (at least measured in computer years) COM has been the method used to integrate and automate applications under Windows. Well known examples are the "automation" (= remote control) of Word, Excel, or Outlook e.g. from within a Visual FoxPro application. As its name says (COM = Component Object Model) it is a specification for writing reusable software that runs in component-based systems.

With the help of this code examples Craig explained the two types of COM: in-process components and out-of-process components. An in-process component is compiled as a DLL and requires an EXE to host it. Thus it runs in that application's memory space on the same computer. An out-of-process component is compiled as a separate EXE and runs in its own memory space usually on the same computer.

The application, that uses COM components, is usually called "the client". The COM component is called the server. This should not be confused with Client/Server databases configurations.

There are pros and cons of each method. If an in-process DLL should crash, it could corrupt the memory space of the containing EXE and may cause it to crash too. This isn't the case with a separately compiled component COM EXE. Because it is running "in its own memory space", it is considered safer to run, because it may crash on its own by itself alone. However, the data transfer across the process boundaries between the client EXE and the server COM EXE takes longer than if the in-process setup is used, making the out-of-process setup slower.

Visual FoxPro provides the capability to create clients and both in-process and out-of-process servers, with one caveat. Visual FoxPro in-process components do not support their "own" user interfaces, so it is not possible to get any screen output from them.

Whether you compile an in-process DLL or an out-of-process EXE, what happens "under the hood" is pretty much the same. You application never directly talks to the COM component. Instead, it talks to a proxy. The data is communicated across the process boundary to a stub, which then passes communication on to the COM component. Windows, the OS, does all that. So the developer has not to worry about creating the proxy and stub or a communication channel for the data. This kind of work that Windows does for this is also known as "plumbing".

Now Craig introduced another item, the DCOM or Distributed Component Object Model. This acronym has been coined to describe the situation, when the DCOM component is installed on a remote computer, typically a server. The component runs in memory on the server, rather than that of the work station. An in-process DLL still needs to be hosted by an EXE. In the case of DCOM, this is typically DLLHost.exe.

The plumbing for a DCOM application is very similar to that of a COM application, except that the communication is across a computer boundary. Windows still provides all the plumbing for this to happen. However, the workstation running the EXE has to be configured properly so it knows on which server it will find the component it is looking for. And again: DCOM is slower than COM because the communication from the application to the component needs to go across the network.

One major advantage of DCOM over COM is that the DCOM component can be located centrally on the server. This simplifies operations and maintenance. For instance business rules and similar procedure, which apply for a variety of applications, should be handled with this setup. Yet DCOM applications, as well as COM applications, are typically also stateful, which means their operations are closely connected to the clients run timed or, expressed in another way: They need to be accessible, whenever the clients starts operations.

Such a centralized setup requires additional considerations to handle all possible situations, friendly and unfriendly alike. This is where the Windows Component Services, also called COM+, comes onto the stage. COM+ is a set of services that host COM components for DCOM-type communication. At a basic level, COM+ works the same way as DCOM. However, unlike DCOM, COM+ applications get much of their scalability and extensibility from stateless connections. When using stateless connections, the client can connect to the component, run one or more of the component's methods and then disconnect.

With his well known care for detailed, yet simple and easily to be understood examples Craig then demonstrated how to use COM+, especially using Visual FoxPro's power. He also covered the use of Transactions in this context and explained, what ACIDity stands for: It denotes a set of four rules, which a complete transaction must follow:

  • Atomicity: This means the entire transaction commits or nothing commits.
  • Consistency: The transaction is a correct transformation of the system state
  • Isolation: Transactions are protected by seeing each other's partial or uncommitted results
  • Durability: Committed updates to managed resources can survive failures. For example, if the server should lose power before all the tables have been updated, the partial updates are automatically rolled back.

Craig then went on to explain features like

  • Compensating Resource Managers
  • Queued Components
  • Loosely Coupled Events
and other services, which Windows supplies that make applications more robust and easier to design, develop, manage, and configure. Yet the development did not yet come to an end, as Craig explained. These developments will enhance COM+ and other Windows services to make them easier to use. That means that COM+ will be here for many years to come.

Just seconds before everybody stood, Craig made some major remarks, which should make life easier for the normal down-to-earth developer to handle COM, COM+ and the like

  • write it as a Visual FoxPro class and test it until it does, what it is supposed to do
  • upgrade to COM and test it until it does, what it is supposed to do
  • add the COM+ Feature and test it until it does what it is supposed to do
and have a decent error recording built-in.

 

Visual FoxPro and .NET joined in a partnership
Jan Vít

Since .NET phenomenon is starting to spread to Visual FoxPro world as well, some need for creating Visual FoxPro applications that talk to .NET will surely arise, if not already had. This session looked at this kind of cooperation from three different perspectives.

Firstly it was a simple example showing how to access DBF data residing in a DBC through OleDB provider from .NET WinForm. This is pretty straightforward and can easily be implemented anywhere where it is needed.

Second way of interconnecting Visual FoxPro and .NET is using COM interoperability. Jan went through both, creating a Visual FoxPro COM object and accessing it through .NET using interop wrapper as well as .NET Reflection and creating a .NET COM object and accessing it from within Visual FoxPro.

The first of the two ways (using VFP COM object in .NET) is according to Jan the one which is most likely to be used more frequently. This is because many applications already have an existing middle tier developed in Visual FoxPro and want to "go web" using ASP.NET for example. Using .NET COM in Visual FoxPro, that is the other way around, might be used to get some of the functionality available in .NET framework into Visual FoxPro. The drawback here is, of course, that the .NET framework has to be installed on every such machine that wants to use that particular .NET COM component.

The last two examples showed how to call .NET Web Services from Visual FoxPro. The first one used simple data types like string and datetime so that everyone could see that using web services is actually very easy, when these simple data types are translated automatically. The more complex web service showed in the second example returned a dataset, the data type which Visual FoxPro has no equivalent to. When this happened, the SOAP toolkit handling the web service call on the Visual FoxPro side did not perform any data type conversion and returned a NodeList object. This object is containing the dataset in an XML string, which then can be used to create a cursor. This works also with parameters, so after the data was modified on the Visual FoxPro side, Visual FoxPro was able to generate a diffgram and saved the changes back to the database with help of another method of the web service.

As Jan mentioned, since all the data behind was first retrieved and then saved back into a DBC, all of this could have been easily accomplished by USE and REPLACE command directly from Visual FoxPro. But that would just be too easy, wouldn't it?

 

Reports in Visual FoxPro 9.0
Martin Haluza

Hello everybody, I hope you enjoyed the first part of Martin's session Reports in Visual FoxPro 9.0, because we are back here to bring you some new information about Reports in Martin's second part.

At the beginning, Martin made a small overview of the things that we will go through and then he did not hesitate and started with communication between reports and listener. He showed us what is for listener possible and what is not. Events and methods were also another topic. We went through Load report event, which runs at first, Render method which tells to listener what, where and how to draw the things what Report generator wants. He did not forget to point out EvaluateContents method, which checks all the value and then calls the Render method.

He spoke also, about what we are able to do with Listener. He demonstrated us how to change colors, but only in expression not in labels, fonts or size of a row. Set the transparency and so on.

Maybe you were thinking of using more than one listener. No problem, Martin told us basics of using two or three listeners. Listeners are sharing the data and settings as well.

Compatibility was another thing that we paid attention, according to the old one generator, which is much more compatible (using GDI) then the new one (using GDI+). The amount of data generated by GDI+ is much bigger then using GDI.

Approaching to the end of the session Martin mentioned some new features in Report viewer. Appreciated features were for instance the possibility to put together reports into one single output. Another great feature is that Visual FoxPro 9.0 generates all pages at once, but Visual FoxPro 8.0 generate page at the moment you want to see the page.

At the end of this session, Martin had a small surprise for us. The surprise was a unique video made by an independent developer, working for Microsoft, Lisa Slater Nicholls. Martin tried to comment the video and after all, we ended the session with questions.

The session was well arranged and if you didn't see the first part it was not so big a problem, because Martin summarized very quickly his first part. So if you are going to work with Reports or you have been already working with them you had a great opportunity to learn something more!

 

An Introduction to Language Integrated Query (LINQ)
Yair Alan Griver

LINQ, also known as "Language Integrated Query" is a new technology that simplifies and abstracts the data retrieval and filtering. This is accomplished by introducing a new language which basically uses the same syntax no matter what the source of the data is. The language happens to have a similar syntax as SQL commands.

Right now you might think of data sources as different databases, such as SQL Servers or Visual FoxPro DBC. That, however, in this case is not all. A "data source" for LINQ can also be an XML string or a collection object.

Using DLinq, we can access relational data. A simple example getting data in VB.NET from the NorthWind database might look like this:

Dim db As New Northwind(...)
Dim contacts = _  
    From c in db.Customers _
    Where c.City = "London"
    Select c.Name, c.Phone
XLinq, on the other hand is used for getting data from an XML string. The example, believe it or not looks quite similar to the previous one:
Dim contacts As New XElement("contacts", _
    From c in customers _ 
    Where c.Country = "USA" _
    Select New XElement("contact", _
        new XElement("name", c.CompanyName), _
        new XElement("phone", c.Phone) _
    )
)
That is what makes the LINQ so powerful. In order to access various types of data, you only need to know one language (one interface). LINQ can sometimes be even faster than the data-specific methods we use today and more performance improvements, such as using the full power of Duo Core processors on your laptops are already under way.

If you are eager to see this in action, feel free to download a CTP from Microsoft web and test it for yourselves. Also be sure to provide feedback, it is still a work-in-progress and by providing your feedback you could influence its final shape.

 

Communication Visual FoxPro and SQL Server
Ivan Arnold

Every year we usually have session focused on SQL Server and Visual FoxPro. Neither this year was different. Ivan Arnold decided to tell us something about SQL Server in general point of view, but also about communicating between SQL Server and Visual FoxPro.

He started with introduction of SQL 2000 MSDE, which is actually high-performance SQL machine available in Visual FoxPro or Office installation. He also told us that this machine is free, but it does not have administrator tools.

Then Ivan focused on Microsoft SQL Server 2005 Express, which is also high-performance machine without any connection restriction, but he pointed out that it needs .NET framework 2.0 to work. Ivan also outlined the restrictions of this SQL Server.

Ivan also introduced SQL Manager 2005 to the audience, which was developed in .NET. Besides being the necessary management tool for this SQL Server, it also provides an excellent query builder.

ODBC drivers are very important for connection between Visual FoxPro and SQL Server. Ivan knew that and he spoke a little bit about these drivers. He mentioned SQL 2000 driver and new SQL Native client driver as well. After that, we used these drivers to connect to the database. We also used SQL profiler, which can monitor all activities passing through to the SQL Server. It is a trace program, which is able to remember all executed commands.

If you were afraid that this session gives you only basic information about SQL Server, you were terribly wrong. The session was perfectly interlaced with many and many great examples how to do it effectively and without mistakes and if you were lucky and smart enough you could win a t-shirt.

 

Mining for Gold in XSource
Doug Hennig

This is one of the sessions which after you leave the room makes you think: "Wow! Do I really have all of these tools and other classes already installed on my machine?" Yes! This session went through everything the Visual FoxPro developers get right out of the box in the XSource directory where Visual FoxPro gets installed.

The examples showed ranged from displaying video files to show a flying paper from one folder to another to symbolize a file being copied to examples a bit more complex such as a toolkit for creating builders.

Ever needed to get the list of the SQL server instances installed? To show in a drop down list, perhaps? There is an easy way. Just use SQLDatabaseMgmt to get the collection containing these server names. This, however, is not the only functionality of SQLDatabaseMgmt. It can also get you a lot of information about databases and tables contained in the SQL server.

If you need a progress bar, you can find one in there as well and if you like those messages saying something like "4 second remaining", which change the number to various values every second, you can use a trick of substituting this value with the result of a RAND() function. As you might have guessed, it works just as nice as other applications trying to come up with real values.

Another example showed how to simply store the position and size of a form. Ever changed a resolution of your display (laptop in a dock with separate monitor perhaps) and your windows found their place outside of your screen? Yes? Then this is also something to look into XSource.

 

Tips & Tricks
Pavel Celba

The conference is not only studying news, but it is about friendship, good atmosphere and fun as well. If you can put these things together, you can have an unforgettable session. As in the last years every participant of conference was looking forward to Pavel Celba's session.

As a warming up Pavel started with a report preview and continued with SQL Select commands. He was speaking about Escape clause or how to use Set fields command in a different way.

If you didn't see Doug Henning's session (Adding IntelliSense to Your Applications) you had a good chance to learn something about IntelliSense. Pavel showed us some good tips and tricks with IntelliSense such as how to add your own commands into it or where IntelliSense definition is stored (FoxCode.dbf).

Pavel mixed useful knowledge with a lot of humor. For example he showed us some tips from the internet. The best one was definitely the process of creating an empty zip file. Very helpful, don't you think? But this is not everything, if you were able to answer his tricky questions for example:
      -> How do we get a consecutive number of the last day of a month.
If you answered correctly, then you could win a t-shirt or a cap with the Daquas logo. But Pavel soon run out of t-shirts. So he changed to biscuits as a reward for the first correct answer. It seems that Visual FoxPro programmers are capable to handle almost every kind of situation :-)).

Other specialties were problems with Visual FoxPro. He advised us what to do when the FoxPro is running incorrectly. An important source of failure could be a faulty resource file.

After that he showed us how to shutdown Visual FoxPro 9.0 It took a while because Pavel had brought with him a really slow laptop. He outlined how he carefully selected the slowest one he could get, because he wanted to show us how Visual FoxPro 9.0 is brilliant program that is even able to run on such slow computer. Thank you, Pavel.

At the end Pavel asked us what is our opinion of what is missing in Visual FoxPro. People usual answer is that Unicode support or encryption are missing.

Finally he told us where we can find inspirations for our development (internet web pages, magazines, e-mail conferences and so on). Nevertheless the session didn't give you a chance to get bored or think about any thing else but listing. It was instructive and entertaining as well.

 

Cool Uses for ReportListeners
Doug Hennig

Since Visual FoxPro 9 shipped out, Visual FoxPro developers have had a powerful feature at their fingertips. I am talking about the new reporting engine and especially the report listener class which it uses to generate various report outputs.

There are a few report listeners shipping together with Visual FoxPro. Apart from generating a standard report for printing, they can also create an HTML or XML output. By creating your own you can also allow for other output formats or just simply tweak the existing ones.

This session aimed at the latter. Doug showed how to add various new features to report generation or report previews. Enabling hyperlinks in the report is one of such features. By clicking a link on the report, the user can trigger opening a new web page, displaying another report (also called drilldown report) or it can simply open another Visual FoxPro form.

If you are interested in having a table of contents for your HTML report, be sure to take a look at Fabio Vazquez's NavPaneListener, which can generate a thumbnail picture for every report page.

The report can also be rendered into a cursor. This might be useful in cases when you need to get as many information about the report generated as possible. Moreover the report can then become searchable and with a few GDI tricks also "alive" so that it can be aware of user clicking it.

 

Questions and Answers

Every single year our conference has different topics, but only one is still the same: Questions and Answers.

People are not coming to conferences only for attending sessions and learning something more or just to get materials, they also hope to find solutions for their imminent problems and this is something this session usually helps them with.

There were a lot of questions. Some of them were interesting more some less, some were even funny.

Developers asked for example if there will be support for Unicode in Visual FoxPro. It didn't take a long time and Alan Griver answered that they are not planning any future support of Unicode in Visual FoxPro.

Another question was if there will be some kind of Visual FoxPro Express edition. Unexpectedly, Alan asked for a microphone and said: "It doesn't make any sense. If we want an express version we must put something out, but you probably wouldn't want this. "

These were not the only questions Alan answered. Another one went like this: "Are there any difficulties installing service pack 1 for Visual FoxPro 9.0?" The answer was, yes, you guessed it, a simple "NO".

There were also other interesting questions. Some asked about whether Visual FoxPro will be integrated into the Visual Studio or if there is going to be a Visual FoxPro 11. The first one came back with a simple "NO" and the second one did not get an answer at all. It is just too early for that.

Speakers weren't able to answer all questions, but don't worry this is not the last DevCon. Good luck with development and see you again on Question and Answers.

 

Acknowledgements

Final Words and Words of Thanks.

The DevCon ended at Tuesday night. Everybody went home.

Thank you for reading so far!

This has been the report about this year's DevCon in Prague. Now we are done with it. Well, really? Well, not exactly, because some very important topics have still to be covered. As in previous years we, the reporters, have had the honor to write this report. We are very grateful for this opportunity.

Though nobody authorized us to do so, we think that we do not speak only for ourselves, but also for all attendees including the speakers and everybody else who attended this event as a guest:

We want to extend our thanks to the people and to the management of Daquas: you have done an excellent job, carefully preparing and arranging this beautiful event. We thank you for your ever present attention, for your care for even the smallest details, for your endless friendliness and your seemingly inexhaustible wits, which you invested into all the big and small things, which made this an unforgettable event.

Whatever has happened you quickly found a solution, did what was necessary and did that with dignity and reliability. None was too shy to do immediately, whatever the situation required, even if this happened to be the most unpleasant things.

You won our hearts and our affection!

This great Visual FoxPro DevCon organized by DAQUAS just finished here in Prague. This is the 9th DevCon in sequence arranged by DAQUAS as an integral part of the Developer Days 2006, arranged by Microsoft Česká republika a Slovensko.

The official attendees count this year was 303, including the speakers. 36 people came from 14 countries other than the Czech Republic or Slovakia, mostly European countries. (Didn't we say "Pan-European"?)

This DevCon lasted for 2 days. It covered 31 sessions (including the Q&A session), out of which 18 were presented in Czech or Slovak, 11 in English and 2 were "almost simultaneously" translated by Igor Vít.

At the end we, Jan Vít and Jan Král, want to extend our personal thanks to everybody who helped us preparing this report. Quite a few people supported us by supplying with their material and in many other ways in writing this report. Thank you all! Special thanks go to

  • Igor Vít - his persistence, creativity and never ending friendliness helped a great deal. Thank you, Igor!
  • Darina Vodrážková - her ability to keep lots of open ends in her hand without losing control of any of them and her warm smile held the organization together. Thank you, Darina!
  • Michel Fournier - he enabled UT, he invented this type of reporting and, above all, showed remarkable patience with us because we constantly missed the deadlines. Thank you, Michel!
  • All speakers, who - with utmost care - gave us useful hints and practical help in preparing various sections of this report.

This all by itself already makes sure that we will meet again next year at the jubilee 10th Visual FoxPro DevCon in Prague. Make sure you'll be there!

 
Jan Vít, Vitsoft 
Jan Vít is a student of the University Of Economics in Prague. Since 1993 he has been actively interested in programming as well as other areas of information technology. His computer experience started with PC 80386 with FoxPro 1.02, later followed by higher versions for the DOS platform and since 1999 he has been using the newest Visual FoxPro versions together with other programming languages and tools. Presently he spends most of his time with Visual FoxPro 9.0, MS SQL Server and C# in WinForms as well as WebForms development. He has been a regular speaker on the Czech Visual FoxPro DevCons since 2004 and is also the co-author of many DevCon conference reports from Prague and Germany. His work now mainly consists of developing software for pharmacies.

 
Jan Kral 
My name is Jan Kral and I am studying Third Faculty of Medicine, Charles University in Prague. I am interested in computer technology and medical science. In my free time I develop applications using Visual FoxPro 7,8 and nowadays I use VFP 9.0, all mostly for my personal use. I have been a co-author of several Czech VFP DevCons' UT reports. I also develop internet web pages using PHP, JavaScript, CSS and so on. Feel free contact me at my email.



Copyright © 1993-2008, Level Extreme Inc., All Rights Reserved
62 Rue Doucet, Petit-Rocher, New Brunswick, E8J 1L3
Telephone: 1-506-783-9007 Email: mfournier@levelextreme.com