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".
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.
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?
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".
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.
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
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
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.
There are a great variety of Sites on the web, which connects the community members, like
Martin started with a report designer. He mentioned some features in this area such as:
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.
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).
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.
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.
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!
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.
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.
This session was basically filled with many rules of thumb on how to design a scalable application with help of 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.
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.
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.
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.
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.
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:
- Option
- windows
- files
- 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.