Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

FoxInCloud 4

Status
Not open for further replies.

vj

Programmer
Nov 18, 2000
58
MU
Hi Everyone,

Has anyone worked on FoxInCloud ! how good is it ... is it possible to migrate the entire VisualFoxPro Application into FoxInCloud. Could this be the path forward for VFP , coz .. i think it is having problems running on windows 8 ... not sure if it even installs on windows 10.

thankx
vijay
 
Hi Vijay,

I reviewed FoxInCloud a couple of years ago on behalf of a client. My conclusions were somewhat negative. I can't give you the full content of my report here, but I'll give some bullet points:

1. FoxInCloud is essentially a mechanism for converting FoxPro applications to web-based applications. It does NOT provide a mechanism for running existing Fox code on a web server, nor is it a substitute for a full server-based platform such as .NET.

2. One of its main functions is to convert FoxPro forms to HTML forms. This seems to work adequately for forms with simple controls such as command buttons and textboxes, but not for more sophisticated forms that contain grids, listviews, treeviews, etc.

4. It makes extensive use of West Wind's WebConnect component, so is subject to that product's constraints and dependencies - but that's not likely to be a problem in most cases.

5. Reports are rendered as HTML pages. This probably works fine for simple reports, but in most applications you would soon come against its limitations.

6. I pointed out to my client that their website didn't give the company's contact details, or even say which country they are in, which doesn't inspire confidence. I had the impression that English was not their native language. That's not a criticism of course, but it was something that my client wanted to know.

Please keep in mind that all of the above information is a couple of years old. I haven't re-visited the product since then, so things might have changed.

To answer your specific questions:

- A migration path for VFP? Possibly, but with difficulty, and probably only for relatively simple applications.

- A solution to problems running under Windows 8? Definitely not. That would be like moving home because the shower is broken.

- The path forward for VFP? I doubt it.

Hope this helps.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
thankx alot mike for the info .... i guess nothing can beat the core foxpro programming language and environment or should i say it's the addiction to the VFP that keeps me from migrating to any thing else ! .... but I guess the time is running out for VFP. it's really sad to see doors closing on such a great and superb programming language.

thankx alot
Vijay
 
I know what you mean, Vijay, but as far as I'm concerned, the Fox has still got a lot of life in it. But let's not start that discussion yet again. It's been flogged to death in other threads and othe forums.

Mike


__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Mike
I am not sure that you looked hard enough for the credentials of FoxInCloud.
These can be found on their website:

Abaque is a privately held company with a capital of 41,200 € (app. $50,000) located in France, 66 rue Michel Ange 75016 Paris.


Hi my name is Thierry Nivelet, I founded Abaque in 1990 after a 10-year carrier in Steel Manufacturing, Management Information Consulting and Human Resources.




So they are located in Paris, France and their first language is French.

Mike Gagnon

If you want to get the best response to a question, please check out FAQ184-2483 first.
 
Mike,

I saw the Paris address at the foot of every page, but I assumed that it was the address of the website designer (because of the "Powered by" caption). Thanks for putting me right. I don't remember seeing Thierry Nivelet's name or phone number anywhere on their site. I think I would have remembered if I had, because his name is familiar to me from AtoutFox. But I'll take your word for it that it is present somewhere.

As for their native language being French, obviously that's not a problem or concern. I only mentioned it because my original client has made a point of asking about it.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
FoxPro installs and runs fine on Windows 8(8.1 which I use in production. And also on 10, as you can also see at thread184-1738491

FoxInCloud actually targets people wanting to move away from the worries of keeping Foxpro Runtimes and applications running locally (or in a corporate network) and move this external; to the cloud.
That's also their "motto" - "FoxInCloud gives your VFP app a second life in the cloud".

I wasn't impressed by the performance of the demo. ActiveX also is not as easy as one would think. And actually you're not really migrating away from VFP, the server is VFP based, that's how it executes VFP code. It may spare you to run VMs in the far future, but to keep the concept up and running they will need to reimplement the language like the GuiNeu effort of Christof Wollenhaupt was doing or the VFP Compiler.

I also still see no stable alternative you can switch to. Silverlight already is a dead end. Recently read a pessimistic article about the future of WPF:
Windows 10 actually is placing the desktop to the center again, even for WinRT applications, so an investement in XAML as a codebase for the future Windows UI may not be wrong, but the most stable thing with support from any platform is HTML. For LOB applications a HTML form can surely be sufficient so going into web development even for desktop applications is the only sure investment I still believe in. I still go forward in C# and XAML, which are the base languages and technologies of the windows world, even if Silverlight and WPF will not be a future.

Bye, Olaf.
 
hi guys ,

ya mike i agree with you ... there's still a lot of life left in VFP ... And i had the same feeling, that foxincloud could work but of-course only for some very small applications with very simple & basic forms.
and Olaf i did'nt try running my apps on win 8 or 10 ... but it's great to know now .... that VFP installs on them so .. the app's will also work fine .
however iam doing a very small and basic app in VFP and am thinking of then migrateing it to foxincloud , i guess that'll give me a first hand insight into it. I'll post my reviews about it then ... !

thankx alot guys
Vijay
 
Another approach you might want to consider is FoxWeb. This is different from FoxInCloud in that you create the user interface yourself, using HTML and possibly Javascript, but you use your existing VFP code for background processing and database access, and run this on the server. It's not an ideal solution, but it has a number of advantages.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Hi All,

Just came across this thread by a routine Google search on "FoxInCloud".

Read many inexact statements, and unanswered questions about FoxInCloud, will give my vision.

I'll make sure to respect the Tek Tips posting guidelines "Promoting, selling, recruiting, coursework and thesis posting is forbidden."
Unfortunately, "Tek-Tips Posting Policies" ( brings up a blank page to me.

I'll concentrate on facts, only facts, and most (if not all) of what I'll write is public information.

@ vj (OP)
=========

vj said:
migrate the entire VisualFoxPro Application into FoxInCloud

1/ FoxInCloud lets you ADAPT your existing VFP desktop application to the Web - as your adapted application still runs the same on the desktop, there is no migration nor conversion involved

2/ You can download and run for free the FoxInCloud Adaptation Assistant (FAA) on your application: FAA will tell you exactly which parts of your application are currently supported, and which parts should be delayed until FoxInCloud later support.

In short, as of today, FoxInCloud supports:
- almost all native VFP controls including grid
- almost all VFP events including .QueryUnload(), .When(), .*Click(), .Mouse*() (FAA will tell you precisely which couple class-event is not supported, if ever this occurs in your application; as these are very marginal cases, it'll probably will not occur)
- VFP menus, either through menu designer or code

Will be later supported:
- classes: formset, hyperlink, toolbar, separator - as toolbars and formset are not very suited to a browser display, especially on mobile devices, we are thinking to a more adapted way to render these controls.
- events: mainly .Resize() and dynamic control resizing

You can easily know what is and what will be supported by using the above mentioned FAA, and browsing
Last thinking: you, and probably your users and clients, don't need your whole application adapted at once...
You can start with some forms (generally in the client service area such as ordering, invoicing, etc.), and add new forms later on.

What is very important is that FoxInCloud never disrupts your usual developement cycle: once you've got the FoxInCloud adapation logic, all the code you write works in either desktop or web mode.

@ Mike Lewis
============
I wonder where and how you could find, and state such an amount of wrong and/or misunderstood information. Must be another consultant secret...

From our records it appears that, unless you use a pseudo (which per se would be unfair), Mr. Mike Lewis has not asked any question to FoxInCloud, nor did he download the (free) trial version of the FoxInCloud Application Server, and thus did not test FoxInCloud.

Mike Lewis said:
1. FoxInCloud is essentially a mechanism for converting FoxPro applications to web-based applications. It does NOT provide a mechanism for running existing Fox code on a web server, nor is it a substitute for a full server-based platform such as .NET.

All Wrong:
1/ As explained above, FoxInCloud converts nothing; FoxInCloud is a VFP and JavaScript software layer hosting an ADAPTED VFP desktop application on a Web server.
2/ FoxInCloud runs the VFP application code, the whole VFP application code and only the VFP application code on a web server.
3/ Acting as a wrapper around the application, FoxInCloud is a indeed a full server-based platform.

Mike Lewis said:
2. One of its main functions is to convert FoxPro forms to HTML forms. This seems to work adequately for forms with simple controls such as command buttons and textboxes, but not for more sophisticated forms that contain grids, listviews, treeviews, etc.

1/ As mentioned above, FoxInCloud supports the most commonly used VFP controls and events, including grids.
2/ Adapting the whole application at once is not a requirement: you can add new forms down the road and expand your web application at your own pace.
3/ TreeView: often a requirement, though seldom vital; we are working on it
4/ ListView: we have no urgent demand for this control; most developers who mentioning ListView indicated they could do without

This demonstrates the current control, menu and event support: This demonstrates the smartphone support:
Mike Lewis said:
4. It makes extensive use of West Wind's WebConnect component, so is subject to that product's constraints and dependencies - but that's not likely to be a problem in most cases.

Wrong - FoxInCloud makes a minimal use of West Wind WebConnect; in fact FoxInCloud only uses the 'connect' part of Web Connect, and not the HTML/CSS/JS and Web Control framework stuffs;

To be specific, FoxInCloud uses:
- Framework classes ( all 5/5
- Framework support classes ( 3/6: wwSession, ww*Config
- Web Control Framework ( 0/30
- JavaScript Client Classes ( none (could use more in the future)
- Utility classes ( 7/30: mainly West-Wind Internet Protocols (wwHTTP, wwFTP, etc.), wwAPI, wwUtils, wwCodeUpdate


Mike Lewis said:
5. Reports are rendered as HTML pages. This probably works fine for simple reports, but in most applications you would soon come against its limitations.

Wrong: FoxInCloud users are free to generat reports in their preferred format, most of them use PDF;
FoxInCloud Application Server, trial edition (free to download and install @ comes with a demo app using either FoxyPreviewer, frx2any or XFRX

Delivering the report to the user requires a single instruction working in either desktop or web mode:
Code:
thisForm.wFileSaveAs(myFile)

Mike Lewis said:
6. I pointed out to my client that their website didn't give the company's contact details, or even say which country they are in, which doesn't inspire confidence. I had the impression that English was not their native language. That's not a criticism of course, but it was something that my client wanted to know.

Thanks Mike for anwering this one.
Just moved the 'powered by zenbuyer' stuff to the end of line, and added '66 rue Michel Ange - 75016 Paris - France' in the 'about' page

Mike Lewis said:
A migration path for VFP? Possibly, but with difficulty, and probably only for relatively simple applications.

With difficulty: FoxInCloud requires no additional knowledge but VFP development; if one consider the Web as the only really viable migration target, whatever web dev environment you'll choose (.NET, php, java, FoxWeb, activeVFP, etc.) will require, to make a web application similar to existing VFP desktop applications, an extensive knowledge and practise of HTML, CSS and JavaScript.
You may find a lot of tools and helpers out there, but none of them - I mean a serious, professional one - will write HTML CSS and JS for you.
Been involved in Web development for 15 year, seen how far it has extended, and really not sure someone with absolutely no knowledge in this area can catch up so fast in order to be able to:
1/ develop a new web base application,
2/ continue the normal maintenance and support routine on the existing desktop application,
3/ pay the bill at the end of the month,
4/ spare some time to sleep.

For relatively simple applications

Some applications currently in production with FoxInCloud:

60 forms, 1,056 objects, 996 event methods, 50 reports, PostgreSQL database with 29 tables (largest holds 2M records), VFP database with 26 remote views, 150 named users, up to 20 concurrent users, 6 server COM objects, hosted in France, operated in Madagascar.
ctb.home.png

ctb.ordonnance.png

ctb.consultation.png

ctb.analyse.png

ctb.foxincloud.status.png

ctb.ISAPI.png



8 forms, 340 objects, 280 events, VFP database with 14 tables, 20 views
ip.dbc.png

ip-invoice.png

ip-invoice-audit-large.png



Mike Lewis said:
A solution to problems running under Windows 8? Definitely not. That would be like moving home because the shower is broken.

Though desktop VFP runs perfectly on Windows 8 and Windows 9/10 desktop, and will probably work just fine for another 15 years,
Definitely YES

Whenever a desktop application is adapted to the web using FoxInCloud, it only depends on:
- MS C++ redistributable (msvcr*.dll) - like 100s of 1,000s of other softwares all around the place, including Visual Studio
- COM system: counting the COM objects that Windows Server installs by default helps measure the risk that Microsoft discontinues this technology anytime soon.

In short, a VFP application running on a Web server using FoxInCloud no longer depends on:
- GUI layers like graphic boards and/or drivers
- Printer drivers: reporting into a file
- Networking protocol such as SMB: VFP data on the same machine or SQL database.

Mike Lewis said:
The path forward for VFP? I doubt it.

Let's expand a little more on that ...
FoxInCloud is an affordable solution to offer a Web application to users of an existing desktop application who prefers to keep a similar user experience.
From the real life one learns that clients of a desktop software will pay no more than a license for an additional module to get a web interface to an existing software; they never accept to repay for the full software or anything close to that.
If you compare this commercial reality to the expenses exposed by the development of a brand new Web Application, you can measure your risk.

FoxInCloud not only minimizes the amount of development required (1% of code refactoring - no rewriting or learning a different dev paradigm, just adding instruction, moving code between methods and changing native commands, methods and functions into FoxInCloud methods), FoxInCloud also delivers a real Web application using the latest Web technologies: HTML5, CSS3, AJAX, jQuery, JSON, etc.

The simple fact of manipulating these generated HTML, CSS & JS objects helps the developer enter into the Web world from a shop floor perspective, learning by practice rather than through theoretical courses: you can immediatly fill the gap between your VFP knowledge and the web world, map your VFP forms and controls to HTML forms and controls, see the equivalent for VFP events in HTML, see HTTP requests that the browser sends to the server, discover the JavaScript generated.

This kind of 'hands-on' learning can be very beneficial to many VFP developers who have not - yet - digged into the Web.

Mike Lewis said:
Thanks for putting me right. I don't remember seeing Thierry Nivelet's name or phone number anywhere on their site.
The 'about' section where I introduce myself has been on the foxincloud site since the initial startup, beginning of october 2010.
You've simply overlooked this section, like you probably did for the 'white paper', the 'how-to' and FAQ sections.
Did your client really pay for this study?

@ Olaf
=======

Olaf said:
I wasn't impressed by the performance of the demo.
What did not impress you? the speed or the range of functionalities?
- Speed: this past summer we've finally changed our old Win2k server for a brand new Win 2012 server - response time ÷ 3 - current average read in Firebug (or any similar browser developer tool): .45 s / user action
- Functionalities: a demo is necessarily simple - here are some more sophisticated/complete demos:
(controls & events overview - mentioned above)
(iPhone support, mentioned above)
(login/pass SG/SG) - full application including large datase, grid paging and navigation, printing into a pdf, sending emails and more.

Olaf said:
ActiveX also is not as easy as one would think.
What would you think / what experience do you have about ActiveX?

Thierry Nivelet (French native speaker)
FoxInCloud, ZenBuyer, IntuiCat
 
Hi all,

Regarding this:
Mike Lewis said:
4. It makes extensive use of West Wind's WebConnect component, so is subject to that product's constraints and dependencies - but that's not likely to be a problem in most cases.

Here is a comparison of the West-Wind Web Connect and the FoxInCloud code bases:

JavaScript code:
West-Wind Web Connect: ww.jQuery.js : 2,100 lines of code
FoxInCloud.js: 3,800 lines of code

VFP code:
West-Wind Web Connect (version 5.70):
*.prg: 35,600 LOC
*.vcx: 6,200 LOC
total: 41,800 LOC

FoxInCloud (version 2.20 beta 3):
*.prg: 58,600 LOC
*.vcx: 19,573 LOC
total: 78,200 LOC

FoxInCloud (first released in 2010) has almost twice as much code as West-Wind Web Connect (first released in 1996/7).

As FoxInCloud uses 18% of West-Wind Web Connect, it runs about 10 times more FoxInCloud code than West-Wind Web Connect code.
 
I use foxpro since 1989 and i'm using foxincloud since spring 2013 both for developing mobile app and for substituting my ERP desktop application. I totally agree with what Thierry Nivelet has written. All points he analyzed are correct. I had not to change my programming operations in vfp and now i have a web app (two apps for precision). Almost all functions and command of foxpro are supported. The user that look at my apps thins that these are totally html and java apps. There is anything that can take the user to imagine that these are foxpro apps. If someone wants to test my app please contact me and i'll be happy to give the correct address and credentials to access these apps. At the moment they are only in italian language. The same apps can work both in web mode or in desktop mode, no double forms or other...only a different project with a different main document. Foxincloud really gives foxpro a second life in cloud!!!
 
You're addressing me, I will respond to that later, if at all.

For now, as said elsewhere, this is promoting and thus against posting policies of tek-tips. I was almost red flagging it, but I will not, as it is useful to the community. The product is of interest here. In my eyes it can merely be a first step to migrate to anything else though, simply in the light of less and less active foxpro experts and developers. My boss was at the last Frankfurt VFP and MSSQL Server conference and reported, he saw mostly old and known faces, some new faces, mainly young employees of companies learning VFP to be able to understand and port old application into the .NET world than anything else.

Besides that elsewhere you, Thierry, said it's unimportant, whether it's really cloud or not. One of the disappointments about FoxInCloud I had and still have is its not based on Azure and making use of the scalability of cloud solutions which on top of simply running in the internet means running on easily cloned virtual machines in multiple datacenters with distributed synced data. I only see FoxInCloud as a good base for making fox apps intranet applications, where you have less problems with the response times. As with vfp2iis I am partly impressed with the porting VFP forms to html, but also partly shaking my head about all that effort, as we had activedocument for that matter. The only reason to make that step is activedocument is deprecated unfortunately and would only run on IE on Windows OSes anyway, as that needs ActiveX.

As said, I may respond to your questions later, perhaps. I've got more personal problems to solve this year.

Bye, Olaf.



 
Hi Olaf,

First let me wish you a happy new year; I hope your personal issues won't be too hard...

Olaf said:
this is promoting

I just answered wrong assertions flagged as expertise about FoxInCloud... just used a 'right to answer' existing in any free & fair system.

If promotion is against posting policies, then writing about a system without specific knowledge or experience should also be against these policies. Otherwise anyone can 'demolish' a system just because he/she does not like it ... and this also appeals the right to restore the truth.

Sharing user experience / facts is fair, asserting on's belief and/or preferences as a general evidence is not.

Olaf said:
the scalability of cloud solutions

There is no scalibity issue with FoxinCloud for the business applications currently developed with VFP.
Your concern could apply to a mass market application such as en e-commerce site with commercial operations/events such as promotions...
A business application usage profile is much stable, predictable within a working day. You can even have paradox such as less load with more users: e.g. a small number of users doing order entry makes more load than a large number of users browsing invoices.

Based on experience, here is what a FoxInCloud app. can do using a single physical server:
- run 32 COM objects
- serve 160 concurrent users
- serve about 1,600 named users *

* we take the concurrent to named users ratio from experience:
- named users: 200, active users: 70, max concurrent users: 20, concurrent:named ratio: 1:10
- named users: 90, active users: 32, max concurrent users: 5, concurrent:named ratio: 1:18

As each customer of a VFP app prefers isolate its data from other customers (probably on a private server) these figures apply to a single VFP app customer company, not all customers of a given software vendor.

1,600 named users is the upper range of what a VFP application usually delivers; so, in most cases, a single Web server supports the load without the need for additional capacity such as what the 'cloud' can deliver.

About the cloud, please keep in mind that many companies, especially among the smaller, feel more secure having their data on a private server rather than 'somewhere in the cloud'. I saw this issue discussed several times on various newsgroups, and as an objection raised against web applications in general.

Olaf said:
distributed synced data

For application using a VFP database (or free tables) rather than a SQL database (with built-in synchronization mechanism), FoxInCloud provides a VFP Data Sychronization class.
This sample code synchronizes the complete database for
Code:
* {fr} Teste la classe cwDataSync
* {en} cwDataSync class tester
LPARAMETERS ;
	ttHisto,; && {fr} [Date()-7] Profondeur d'historique
	tlUp && {fr} [.F.] Synchro montante

ttHisto = Evl(m.ttHisto, Date()-7)
tlUp = Vartype(m.tlUp) == 'L' AND m.tlUp

AC()
SET PROCEDURE TO (cModuleInfo(Sys(16,0), 'Path') + 'utile.prg') ADDITIVE
CLEAR

LOCAL loAssert AS abSet;
	, loEnv AS blEnv OF utile.prg;
	, loData AS acDataSyncVFP OF ac.prg, llResult

loAssert = abSet('ASSERTS', 'ON')

loEnv = utile()
llResult = Vartype(m.loEnv) == 'O'
ASSERT m.llResult MESSAGE [Impossible d'établir l'environnement CALweb, abandon]
IF m.llResult

	loData = CreateObject('cwDataSyncProd')
	llResult = Vartype(m.loData) == 'O'
	ASSERT m.llResult MESSAGE Textmerge([Impossible de créer l'objet cwDataSync, abandon])
	IF m.llResult

		* ============================================
		llResult = Iif(m.tlUp;
			, loData.DBCSyncUp('bioweb', m.ttHisto);
			, loData.DBCSyncDown('bioweb', m.ttHisto);
		)
		* ============================================

		ASSERT m.llResult MESSAGE m.loData.cResult
		? loData.cResult
	ENDIF
ENDIF

RETURN m.llResult

*==================================================================
DEFINE CLASS cwDataSyncProd AS cwDataSync && {fr} Version de production

	cSiteDomain = '[URL unfurl="true"]www.calweb.fr'[/URL] && {fr} Domaine ou adresse IP du site

ENDDEFINE && {fr} CLASS cwDataSyncProd
*==================================================================

*==================================================================
DEFINE CLASS cwDataSync AS acDataSyncVFP OF acData.prg && {fr} Synchronizes VFP local data <> site && {fr} Synchronise les données VFP locales <> site
*==================================================================

	cSite = 'CalWeb' && {fr} Nom du site
	lHTTPS = .F. && {fr} Connecter en mode sécurisé HTTPS
	nHTTPPort = 80 && {fr} [80/443 selon lHTTPS] Port HTTP
	nTimeOut = 20 && {fr} Secondes d'attente avant que le site réponde

	lModCheck = .F. && {fr} Vérifier que les données ont changé avant de remplacer && {fr} évite une mise à jour inutile de la date de modification
	cTablesIgnore = Space(0) && {fr} tables à ignorer (cf. this.DBCSync())
	lSyncDeleted = .T. && {fr} Synchroniser les enregistrements deletés

	cTimeStampField = 'DATEHEURE' && {fr} clé & champ date et heure de dernière modification d'une table ; pris en compte dans le réglage de plSync
	clSyncField = 'lSync' && {fr} champ indiquant si l'enregistrement a été mis à jour par synchronisation && {fr} 'lSync' est le standard FoxInCloud

	cFolderTemp = Addbs(Sys(2023)) && {fr} Adresse du dossier où stocker les tables temporaires
	cTablesIgnore = Space(0) && {fr} tables à ignorer (cf. this.DBCSync())
	
	*-------------------------------------------------
	PROTECTED PROCEDURE TableSyncUp_File_cPath && {en} Address of a file to be sent to site {fr} Adresse d'un fichier à envoyer au site
	LPARAMETERS tcFile

	RETURN m.tcFile && m._disque + 

	*-------------------------------------------------
	PROTECTED PROCEDURE TableSyncUp_File_cType && {en} Type of a file to be sent to site {fr} Type d'un fichier à envoyer au site pour savoir où le ranger
	LPARAMETERS tcFile

	RETURN Addbs(JustPath(m.tcFile))

	*-------------------------------------------------
	PROTECTED PROCEDURE TableSyncDown_File_cPath && {en} Address where a file received from site should be stored {fr} Adresse où ranger un fichier téléchargé depuis le site
	LPARAMETERS tcFile && {fr} NOM du fichier

	RETURN m._disque + m.tcFile

*==================================================================
ENDDEFINE && {fr} CLASS cwDataSync
*==================================================================


Olaf said:
making fox apps intranet applications

All the Web applications pictured earlier in this thread are Internet Applications, used not only by employees, but also by clients and suppliers of the related companies (As mentioned, one application is hosted in France and operated in Madagascar).
The very few that are hosted in a in-house server will soon move to an outside hosting service because the servers you can get there generally have much better performance, and upgrading to a newer server is much easier as nothing else is involved, compared to an internal server where you can have a lot of additional stuff.

Olaf said:
less problems with the response times

Why do you assume/assert that FoxInCloud response time make a problem? For which factual reason?
Please consider this real-life screenshot:
ctb.ISAPI.png


The total number of hits (16,840) was served in 11,405 seconds; this is an average of .67 sec. per request, which is perfectly comfortable (In A study on tolerable waiting time: how long are Web users willing to wait?:
1.0 second is about the limit for the user’s flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data.).

This .67 sec. average delay hides a wide spread dispersion: as some long transactions such as printing daily reports, sending customer emails, etc. can take up to 20 seconds, most 'interactive' events take less around .5 seconds.

Thanks to these response time, this application is used for order entry at the welcome desk, in front of the client (patient) just like if it was a desktop application.

Can you (or someone else) provide similar figure for another web application technology such as .net or .php?
Can you compare these response time with what you get from your bank's on-line service (and I'm sure your bank has far more resource and knowledge to develop a Web Application ...)
While considering these figures please keep in mind that this application implements 60 forms, over 1,000 objects and 1,000 events. If you have some experience developing Web Applications, just think of the time it takes to develop one single event using AJAX, updating the HTML page in JavaScript from a JSON response, etc., or the time it takes to understand and use high level JS frameworks such as Angular ...

Olaf said:
shaking my head about all that effort

FoxInCloud mainly addresses ISVs serving a large client base with a S/W written in VFP, and want to lighten the cost of providing a web solution, and/or spread it along the years...

As Michele65 pointed out in a previous post, they can have a real Web application at about 1/100 th of the cost of developing it from scratch, with exactly the same level of performance, the same UI enhancement capability (standard HTML/CSS/JS); no need to hire Web developers, no need to maintain 2 similar version of the same software (desktop and Web), no need to design a Web app, pay for errors, etc.

We are perfectly conscious that, in their vast majority, developers prefer being taught a new technology like the Web, spend time on training, design and building something brand new and write a bunch of new sexy lines on their resume rather than continue with VFP.

What I try to explain is that working with FoxInCloud is taking the Web from a broad perspective: request/response, client/server architecture, stateless operations, etc. rather than starting from the ground up, learning each detail about HTML CSS, spending hours fixing a CSS, learning new languages (and we all know how long it takes to become fluent in a language).

Someone with a significant experience of FoxInCloud will value this experience in real, complete web development: he/she will be 'familiar' with the Web, compared to someone who only has developed for the desktop.

Because we've seen over and over that 'radically' changing everything at once always fail, we tend to consider that entering this way to a new 'paradigm' is rather smart an efficient...

Olaf said:
porting VFP forms to html ... we had activedocument for that matter

We now/also have RDP, TSplus and many other solutions to 'replicate' the desktop inside another container. A very partial point I'm afraid... The real issue is to run the same User Interface in any browser and on any device, with any resolution and orientation, and without the need to install anything, not even Flash / Silverlight runtimes.

That's where FoxInCloud is a good Web citizen, by using the full capability of standard HTML/CSS/JS: from a VFP form FoxInCloud creates:
- a HTML structure similar to the VFP form structure (same containerships)
- a separate presentation layer in CSS
- a separate interaction layer in JS
Developer can choose either to keep the default CSS and JS just like the original VFP application, or to overload these defaults with his/her specific CSS/JS.

This way the developer can very easily create a completely different look and feel for smartphones and/or tablets without writing a single line on the server side, not even write HTML, just copy, paste and adjust the code generated by FoxInCloud into the app's specific files (that FoxInCloud never overwrites).

The simple fact of reading, understanding and adapting the code generated by FoxInCloud (which always relates to some known VFP structure/code) is a tremendous way to get acquainted to web development, some sort of free, complimentary and targeted training.

To help understand these concepts, here is a sample code that FoxInCloud generates from a (simple) VFP form:
HTML:
<!-- Generated on 12/31/14 01:13:36 PM in 0.434 sec by FoxInCloud version 2.20 beta03 /-->
<div id="invoice_scx" class="form awfrm ipwfrm">
<div id="invoice_scx-cntreview" class="container awcnt ipwcnt" style="display:none;">
<label id="invoice_scx-cntreview-lbldispute" class="label awlbl ipwlbl" style="display:block;">Dispute</label>
<label id="invoice_scx-cntreview-lblapprove" class="label awlbl ipwlbl" style="display:block;">Approve</label>
<label id="invoice_scx-cntreview-lblpay" class="label awlbl ipwlbl" style="display:block;">Pay</label>
<img id="invoice_scx-cntreview-imgdispute" class="image awimg ipwimg" src="Images/chkd.png" alt="Pending or paid invoice can't be modified" title="Pending or paid invoice can&#39;t be modified" style="display:block;" disabled="disabled" />
<img id="invoice_scx-cntreview-imgapprove" class="image awimg ipwimg" src="Images/chkd.png" alt="Pending or paid invoice can't be modified" title="Pending or paid invoice can&#39;t be modified" style="display:block;" disabled="disabled" />
<img id="invoice_scx-cntreview-imgpay" class="image awimg ipwimg" src="Images/chkd.png" alt="Pending or paid invoice can't be modified" title="Pending or paid invoice can&#39;t be modified" style="display:block;" disabled="disabled" />
</div>

<div id="invoice_scx-cntaudit" class="container awcnt ipwcnt" style="display:none;">
<img id="invoice_scx-cntaudit-img" class="image awimg ipwimg" src="Images/red_shield_4240.png" alt="red_shield_4240" style="display:block;" />
<label id="invoice_scx-cntaudit-lbl" class="label awlbl ipwlbl" style="display:block;">Unaudited</label>
</div>

<select id="invoice_scx-cboaudit" class="combobox awcbo ipwcbo" style="display:none;" tabindex="153" disabled="disabled" size="1" autocomplete="off">
	<option selected="selected">Unaudited</option>
	<option>Fully Audited</option>
	<option>Pending for further carrier review</option>
	<option>Pending for further client review</option>
	<option>Pending for further STI review</option>
	<option>Carrier Invoice PDF missing or invalid</option>
</select>
<button id="invoice_scx-cmdnext" class="commandbutton awcmd ipwcmd" style="display:none;" tabindex="173" disabled="disabled" type="button">&#62;</button>
<button id="invoice_scx-cmdprev" class="commandbutton awcmd ipwcmd" style="display:none;" tabindex="172" disabled="disabled" type="button">&#60;</button>
<div id="invoice_scx-cntbottom" class="container awcnt ipwcnt" style="display:block;">
<button id="invoice_scx-cntbottom-cmdclose" class="commandbutton awcmd ipwcmd" style="display:block;" title="Close invoice details" tabindex="174" accesskey="C" type="button">Close</button>
<label id="invoice_scx-cntbottom-lblpay" class="label awlbl ipwlbl" style="display:none;">$0.00 paid on / / reference ''</label>
<button id="invoice_scx-cntbottom-cmdemail" class="commandbutton awcmd ipwcmd" style="display:none;" tabindex="175" type="button">Email Invoice Notes ...</button>
</div>

<div id="invoice_scx-olepdf" style="display:none;" tabindex="191"><p style="text-align:center; font-size:14pt; margin-top:5em;"><p></div>
<input id="invoice_scx-txtshipper" class="textbox awtxt ipwtxt" style="display:block;" tabindex="181" readonly="readonly" type="text" onfocus="this.select();" value="" autocomplete="off" />
<input id="invoice_scx-txtconsignee" class="textbox awtxt ipwtxt" style="display:block;" tabindex="182" readonly="readonly" type="text" onfocus="this.select();" value="" autocomplete="off" />
<img id="invoice_scx-imghelp" class="image awimg ipwimg" src="Images/help12.png" alt="help12" style="display:block;" />
<label id="invoice_scx-lblship" class="label awlbl ipwlbl" style="display:block;">Shipper</label>
<label id="invoice_scx-lblcons" class="label awlbl ipwlbl" style="display:block;">Consignee</label>
<label id="invoice_scx-lblinv" class="label awlbl ipwlbl" style="display:block;"><br />/ /</label>
<label id="invoice_scx-lblfic" class="label awlbl ipwlbl" style="display:block;">Powered by <a href="[URL unfurl="true"]http://foxincloud.com/"[/URL] target="_blank">FoxInCloud</a></label>
<img id="invoice_scx-waitpic" class="image awimg" src="Images/preloader_16.gif" alt="preloader_16" style="display:none;" />
<textarea id="invoice_scx-ebxpaynotes" class="editbox awebx ipwebx" style="display:block;" tabindex="185" readonly="readonly" autocomplete="off"></textarea>
<textarea id="invoice_scx-ebxpaynotesad" class="editbox awebx ipwebx" style="display:none;" tabindex="177" autocomplete="off"></textarea>
<label id="invoice_scx-lblamounts" class="label awlbl ipwlbl" style="display:block;">Amount</label>
<img id="invoice_scx-imglogo" class="image awimg ipwimg" alt="Ooops, check 'Picture'$.wcPropSave" style="display:block;" />
<label id="invoice_scx-ipwlbl2" class="label awlbl ipwlbl" style="display:block;">=</label>
<label id="invoice_scx-ipwlbl1" class="label awlbl ipwlbl" style="display:block;">±</label>
<img id="invoice_scx-imgpriority" class="image awimg ipwimg" src="Images/flag_green.png" alt="flag_green" style="display:block;" />
<label id="invoice_scx-lblpriority" class="label awlbl ipwlbl" style="display:block;">Low priority</label>
<img id="invoice_scx-imgvoid" class="image awimg ipwimg" src="Images/cross.png" alt="cross" style="display:block;" disabled="disabled" />
<a id="invoice_scx-lblvoid" class="label awlbl ipwlbl" style="display:block;" disabled="disabled">Valid</a>
<input id="invoice_scx-txtadj" class="textbox awtxt ipwtxt" style="display:block;" title="± $ or %" tabindex="176" readonly="readonly" placeholder="± $ or %" type="text" onfocus="this.select();" value="" autocomplete="off" />
<input id="invoice_scx-txtdue" class="textbox awtxt ipwtxt" style="display:block;" tabindex="184" readonly="readonly" type="text" onfocus="this.select();" value=" $0.00" autocomplete="off" />
<img id="invoice_scx-imgdap" class="image awimg ipwimg" alt="Ooops, check 'Picture'$.wcPropSave" style="display:none;" />
<input id="invoice_scx-txtadjusted" class="textbox awtxt ipwtxt" style="display:block;" tabindex="183" readonly="readonly" type="text" onfocus="this.select();" value=" $0.00" autocomplete="off" />
<img id="invoice_scx-imgaudit" class="image awimg ipwimg" src="Images/red_help_shield_4233.png" alt="Click for quick Audit" title="Click for quick Audit" style="display:none;" disabled="disabled" />
</div>
<!--/ Generated on 12/31/14 01:13:36 PM in 0.434 sec by FoxInCloud version 2.20 beta03 -->
CSS:
/* -- Classes as 'Checkbox' -- */
.checkbox {height:17px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.checkbox.standard {background:#FFFFFF no-repeat center;padding-top:0px;}
.awchk {}
.awchk.standard {}
.ipwchk {color:#CCCCCC;height:19px;font-family:Calibri;}
.ipwchk.standard {background:transparent;padding-top:0px;}
/* -- / Classes as 'Checkbox' -- */

/* -- Classes as 'Combobox' -- */
.combobox {background:#FFFFFF;border:1px solid #646464;width:94px;height:18px;padding:2px 2px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.awcbo {}
.ipwcbo {background:#4B4B4B;border-color:#FFFFFF;color:#FFFFFF;height:24px;font-family:Calibri;}
.ipwcboglcode {}
/* -- / Classes as 'Combobox' -- */

/* -- Classes as 'Commandbutton' -- */
.commandbutton {width:98px;height:15px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.awcmd {}
.ipwcmd {padding-top:0px;height:28px;font-family:Calibri;}
.awcmdok {padding-top:0px;cursor:pointer;width:36px;height:23px;}
.ipwcmdok {width:48px;font-family:Calibri;}
/* -- / Classes as 'Commandbutton' -- */

/* -- Classes as 'Container' -- */
.container {background:#F0F0F0;border:1px solid #646464;width:73px;height:73px;margin:0;overflow:hidden;position:absolute;left:0px;top:0px;}
.awcnt {}
.ipwcnt {background:transparent;border-width:0px;}
.ipwcntglcode {width:570px;height:24px;}
.ipwcntcompany {}
.ipwcntrights {width:435px;height:338px;}
.ipwcntright {width:438px;height:73px;}
/* -- / Classes as 'Container' -- */

/* -- Classes as 'Editbox' -- */
.editbox {background:#FFFFFF;border:1px solid #646464;width:94px;height:69px;padding:2px 2px;margin:0;font:normal normal 9pt Arial; text-decoration:none;overflow:auto;position:absolute;left:0px;top:0px;}
.awebx {width:216px;}
.ipwebx {border-color:#C0C0C0;font-family:Calibri;}
/* -- / Classes as 'Editbox' -- */

/* -- Classes as 'Form' -- */
.form {background:#F0F0F0;width:375px;height:250px;margin:0;overflow:hidden;position:relative;}
.awfrm {}
.ipwfrm {background:#333333;}
.awfrmib {width:415px;height:74px;}
.ipwfrmib {}
.awfrmmb {width:512px;height:145px;}
.ipwfrmmb {background:#333333;height:190px;}
/* -- / Classes as 'Form' -- */

/* -- Classes as 'Image' -- */
.image {border:none;width:100px;height:17px;left:0px;top:0px;clip:inherit;overflow:hidden;position:absolute;left:0px;top:0px;}
.awimg {}
.ipwimg {}
/* -- / Classes as 'Image' -- */

/* -- Classes as 'Label' -- */
.label {text-align:left;background:#FFFFFF;border:none;width:100px;height:17px;margin:0;font:normal normal 9pt Arial; text-decoration:none;overflow:hidden;position:absolute;left:0px;top:0px;}
.awlbl {}
.ipwlbl {background:transparent;color:#CCCCCC;font-weight:bold;font-size:10pt;}
/* -- / Classes as 'Label' -- */

/* -- Classes as 'Line' -- */
.line {border-width:1px 0 0 0;border-style:solid;border-color:#646464;width:98px;height:15px;margin:0;position:absolute;left:0px;top:0px;}
.awlin {}
.ipwlin {border-color:#FFFFFF;height:0px;}
/* -- / Classes as 'Line' -- */

/* -- Classes as 'Listbox' -- */
.listbox {border-color:#646464;width:100px;height:170px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.awlst {}
.ipwlst {font-family:Calibri;}
/* -- / Classes as 'Listbox' -- */

/* -- Classes as 'Optionbutton' -- */
.optionbutton {height:16px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.optionbutton.standard {background:#FFFFFF no-repeat center;padding-top:0px;}
.awopt {}
.awopt.standard {}
.ipwopt {color:#FFFFFF;font-family:Calibri;}
.ipwopt.standard {background:transparent;}
/* -- / Classes as 'Optionbutton' -- */

/* -- Classes as 'Optiongroup' -- */
.optiongroup {background:#FFFFFF;border:1px solid #646464;width:8px;height:13px;margin:0;position:absolute;left:0px;top:0px;}
.awopg {}
.ipwopg {background:transparent;border:none;}
/* -- / Classes as 'Optiongroup' -- */

/* -- Classes as 'Shape' -- */
.shape {background:#F0F0F0;border:1px solid #646464;width:98px;height:15px;margin:0;position:absolute;left:0px;top:0px;}
.awshp {}
.ipwshp {}
/* -- / Classes as 'Shape' -- */

/* -- Classes as 'Spinner' -- */
.spinner {background:#FFFFFF;border:1px solid #646464;width:94px;height:18px;padding:2px 2px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.awspn {}
.ipwspn {font-family:Calibri;}
/* -- / Classes as 'Spinner' -- */

/* -- Classes as 'Textbox' -- */
.textbox {text-align:left;background:#FFFFFF;border:1px solid #646464;width:94px;height:15px;padding:2px 2px;margin:0;font:normal normal 9pt Arial; text-decoration:none;position:absolute;left:0px;top:0px;}
.awtxt {}
.ipwtxt {border-color:#C0C0C0;font-family:Calibri;}
/* -- / Classes as 'Textbox' -- */


/* -- Form 'Invoice.scx' -- */
/* These CSS directives were updated in production CSS file 'awDefaultAll.css' on 12/31/14 01:13:36 PM */
/* Please note that only form members directives are updated automatically. */
/* As updating class directives requires scanning all forms and objects, you need to (re)run xxxTest|Prod.css.prg */
#invoice_scx {width:454px;height:570px;}
#invoice_scx-cboaudit {background:#F0F0F0;color:#6D6D6D;cursor:default;width:169px;left:191px;top:142px;}
#invoice_scx-cmdnext {color:#6D6D6D;width:24px;height:22px;left:418px;top:143px;}
#invoice_scx-cmdprev {color:#6D6D6D;width:23px;height:22px;left:388px;top:143px;}
#invoice_scx-cntaudit {width:246px;height:25px;left:194px;top:143px;}
#invoice_scx-cntaudit-img {width:16px;height:20px;left:2px;top:0px;clip:inherit;}
#invoice_scx-cntaudit-lbl {color:#FF0000;width:267px;left:25px;top:2px;}
#invoice_scx-cntbottom {width:435px;height:74px;left:9px;top:494px;}
#invoice_scx-cntbottom-cmdclose {padding-top:0px;width:66px;height:25px;left:365px;top:40px;}
#invoice_scx-cntbottom-cmdemail {padding-top:0px;width:152px;height:25px;left:205px;top:40px;}
#invoice_scx-cntbottom-lblpay {width:456px;height:32px;white-space:normal;}
#invoice_scx-cntreview {width:185px;height:44px;left:189px;top:145px;}
#invoice_scx-cntreview-imgapprove {width:12px;height:12px;left:90px;top:19px;clip:rect(0px,12px,12px,0px);left:90px;top:19px;}
#invoice_scx-cntreview-imgdispute {width:12px;height:12px;left:17px;top:18px;clip:rect(0px,12px,12px,0px);left:17px;top:18px;}
#invoice_scx-cntreview-imgpay {width:12px;height:12px;left:157px;top:17px;clip:rect(0px,12px,12px,0px);left:157px;top:17px;}
#invoice_scx-cntreview-lblapprove {text-align:center;width:63px;left:72px;}
#invoice_scx-cntreview-lbldispute {text-align:center;width:63px;left:-1px;}
#invoice_scx-cntreview-lblpay {text-align:center;width:63px;left:133px;}
#invoice_scx-ebxpaynotes {width:429px;height:204px;left:9px;top:274px;}
#invoice_scx-ebxpaynotesad {width:429px;height:74px;left:9px;top:189px;}
#invoice_scx-imgaudit {width:16px;height:20px;left:366px;top:144px;clip:inherit;left:363px;top:143px;}
#invoice_scx-imgdap {width:24px;height:22px;left:424px;top:10px;clip:inherit;left:423px;top:9px;}
#invoice_scx-imghelp {cursor:pointer;width:12px;height:12px;left:5px;top:6px;clip:rect(0px,12px,12px,0px);left:4px;top:5px;}
#invoice_scx-imglogo {width:90px;height:34px;left:24px;top:14px;clip:inherit;left:23px;top:13px;}
#invoice_scx-imgpriority {cursor:pointer;width:16px;height:16px;left:10px;top:148px;clip:rect(0px,16px,16px,0px);left:9px;top:147px;}
#invoice_scx-imgvoid {width:16px;height:16px;left:125px;top:146px;clip:inherit;left:124px;top:145px;}
#invoice_scx-ipwlbl1 {text-align:center;width:15px;left:204px;top:109px;}
#invoice_scx-ipwlbl2 {text-align:center;width:15px;left:319px;top:109px;}
#invoice_scx-lblamounts {width:76px;left:9px;top:110px;}
#invoice_scx-lblcons {width:76px;left:9px;top:86px;}
#invoice_scx-lblfic {width:142px;height:22px;font-style:italic;font-weight:normal;font-size:8pt;left:9px;top:546px;}
#invoice_scx-lblinv {text-align:center;width:348px;height:45px;font-size:12pt;white-space:normal;left:96px;top:9px;}
#invoice_scx-lblpriority {color:#00D200;cursor:pointer;width:93px;left:32px;top:145px;}
#invoice_scx-lblship {width:76px;left:9px;top:61px;}
#invoice_scx-lblvoid {color:#6D6D6D;width:52px;left:144px;top:145px;}
#invoice_scx-olepdf {width:625px;height:560px;margin:0;position:absolute;left:454px;top:4px;}
#invoice_scx-txtadj {text-align:right;background:#E4E4E4;width:85px;left:224px;top:109px;}
#invoice_scx-txtadjusted {text-align:right;background:#E4E4E4;width:99px;font-weight:bold;left:339px;top:109px;}
#invoice_scx-txtconsignee {width:354px;left:84px;top:84px;}
#invoice_scx-txtdue {text-align:right;width:109px;left:84px;top:109px;}
#invoice_scx-txtshipper {width:354px;left:84px;top:59px;}
#invoice_scx-waitpic {background:transparent;width:16px;height:16px;left:405px;top:10px;clip:rect(0px,16px,16px,0px);left:404px;top:9px;}
/* -- / Form 'Invoice.scx' -- */
Code:
/* Generated on 12/31/14 01:13:36 PM in 0.434 sec by FoxInCloud version 2.20 beta03 -- */
jQuery.datepicker.setDefaults(Object.extend(jQuery.datepicker.regional['en']||jQuery.datepicker.regional[''], {dateFormat: 'mm/dd/y', onSelect: function(date){FoxInCloud.EventRequest('DOMEvent','blur', this, date)}, altField: ''}));
$('invoice_scx-cntreview-imgdispute').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cntreview-imgdispute').disabled=true;
$('invoice_scx-cntreview-imgapprove').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cntreview-imgapprove').disabled=true;
$('invoice_scx-cntreview-imgpay').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cntreview-imgpay').disabled=true;
$('invoice_scx-cboaudit').observe('change', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-cboaudit').disabled=true;
$('invoice_scx-cmdnext').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cmdnext').disabled=true;
$('invoice_scx-cmdprev').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cmdprev').disabled=true;
$('invoice_scx-cntbottom-cmdclose').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-cntbottom-cmdemail').observe('click', function(event){
event = Event.extend(event);
if (false
|| event.eventPhase === event.AT_TARGET
|| event.type.toLowerCase().substr(0, 3) === 'key'
|| (event.target || event.srcElement).tagName.toLowerCase() === 'select'
) {
event.stopPropagation();
$('invoice_scx-olepdf').hide();FoxInCloud.LeftClick.bind(FoxInCloud)(event)}
});
$('invoice_scx-txtshipper').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-txtshipper').readOnly=true;
$('invoice_scx-txtconsignee').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-txtconsignee').readOnly=true;
$('invoice_scx-imghelp').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-ebxpaynotes').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-ebxpaynotes').readOnly=true;
$('invoice_scx-ebxpaynotesad').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-imgpriority').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-lblpriority').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-imgvoid').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-imgvoid').disabled=true;
$('invoice_scx-lblvoid').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-lblvoid').disabled=true;
$('invoice_scx-txtadj').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-txtadj').readOnly=true;
$('invoice_scx-txtdue').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-txtdue').readOnly=true;
$('invoice_scx-txtadjusted').observe('blur', FoxInCloud.DOMEvent.bind(FoxInCloud));
$('invoice_scx-txtadjusted').readOnly=true;
FoxInCloud.tmrReg('invoice_scx-tmranim', '');
FoxInCloud.tmrStop('invoice_scx-tmranim');
$('invoice_scx-imgaudit').observe('click', FoxInCloud.LeftClick.bind(FoxInCloud));
$('invoice_scx-imgaudit').disabled=true;
$('invoice_scx').wuValue = null;
FoxInCloud.documentInit('invoice_scx');
/* -- Generated on 12/31/14 01:13:36 PM in 0.434 sec by FoxInCloud version 2.20 beta03 */
 
You overdo this. While it's your right to reestablish a truth you think of as hurt, your posts are overwhelming just in their length I won't spend my time reading all this and defending my experiences. You're already failing from the diplomatic point of view with me here. I see your anger and how you're burying arguments against FoxInCloud by impressing with figures which you even don't explain well.

As said, I don't really have the time, I have a few free days till monday and then I'll be gone here for a while.

The main point against FoxInCloud is it's still Fox. It can only be a temporary solution. And I don't see how you could pick up from the generated code and continue in the html/css/js development stack.

Bye, Olaf.
 
OK Olaf, much better you give the real reason.
What I really bother is what people find when they type 'foxincloud'.
Take care,

Thierry Nivelet (French native speaker)
FoxInCloud, ZenBuyer, IntuiCat
 
I may be way off the mark here but I simply do not trust any of these 'cloud' type solutions.
In theory it is a great idea but are they reliable in practice?
I have a few Fox applications out there and over the years they have quite reliable but I feel that introducing another variable ie. a link over the internet which may or may not connect depending on the direction of the prevailing wind is a risk too far.

I may be old fashioned but I view the cloud as a large cupboard in a strangers garage and we are invited to store our secret stuff and the stranger promises to protect it for us.

Keith
 
Audio, i respectfully disagree with you.

All of my VFP apps, and some are used with 700+ retailes, are now desktop and Web enabled (Cloudified - if there is such term).

and It makes the apps way more powerfull.

Ez Logic
Michigan
 
I am not sure what you mean by desktop and web enabled although if cloudified isn't a word I believe we should adopt it.
Perhaps you can expand on what you mean by 'desktop and web enabled' and how the cloud has benefitted you with real world examples.
What safeguards are there against FoxPro tables getting corrupted simply because the internet chooses the wrong moment to throw it's toys out of the pram?
Are the cloud apps remote server based or hosted on a local machine and synched from there?


Keith
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top