Migrar formularios FW a la Web (WebForm) Ver 1.1

Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Vladimir Zorrilla » Thu Jan 28, 2010 5:49 am

Amigos

La idea es poder migrar los formularios que hacemos en FW ya sea con workshop o codigo puro a formularios html
(WebForm) conservando el diseño , color , fuentes , datos de los combos , mascaras de edicion y que se pueda usar
ENTER en vez de TABS.

Como lograr esto.

Pues aqui os dejo una simple funcion que uds pueden invocar en cualquier evento luego de la creacion del dialogo

Ejemplo

DEFINE DIALOG oDlg

/// AQUI ESTAN TUS CONTROLES

ACTIVATE DIALOG oDlg CENTERED ;
ON LEFT CLICK GenWebForm(oDlg,"MIFORMFW")


Esto genera un archivo MIFORMFW.htm que recrea tu formulario en la web.


Func GenWebForm(oForm,filefrm)
Local cHtm:="<html>"+H(),octrl,K:=1,cstyle,i,ctype
htmlhead( @cHtm ,filefrm )
cHtm+="<body>"+h()
cHtm+='<form name="'+filefrm+'" action="'+filefrm+'.php" method="post">'+h()

WHILE K<=len(oForm:aControls) // DISCRIMINAR el resto de las CLASES
//msgalert( oForm:aControls[K]:classname() )
IF oForm:aControls[K]:classname()="TSAY" .or. oForm:aControls[K]:classname()="TGET" .or. oForm:aControls[K]:classname()="TBUTTON" .or. oForm:aControls[K]:classname()="TRADIO" .or. oForm:aControls[K]:classname()="TCHECKBOX" .or. oForm:aControls[K]:classname()="TBITMAP" .or. oForm:aControls[K]:classname()="TIMAGE" .or. oForm:aControls[K]:classname()="TCOMBOBOX"
octrl:=oForm:aControls[K]
cstyle:=' style="width: '+ltrim(str(octrl:nwidth))+'px; height: '+ltrim(str(octrl:nheight))+'px"'
cHtm+='<div class="Estilo1" style="position:absolute; top:'+ltrim(str(octrl:nTop))+'px; left:'+ltrim(str(octrl:nleft))+'px;">'+h()
do case
case octrl:classname()="TSAY"
cHtm+=octrl:cCaption+h()
case octrl:classname()="TGET"
cHtm+='<input '+cstyle+' type="Text" onkeypress="return tabular(event,this)" name="'+qcosaesname(octrl)+'" id="'+ltrim(str(octrl:nId))+'" value="" size="12">'+h()
case octrl:classname()="TCOMBOBOX"
//cHtm+='<SELECT multiple size="4" name="elegir-componente">
cHtm+='<SELECT '+cstyle+' onkeypress="return tabular(event,this)" id="'+ltrim(str(octrl:nId))+'" name="'+qcosaesname(octrl)+'">'+h()
//<OPTION selected value="Componente_1_a">Componente_1</OPTION>
For i=1 to len(octrl:aItems)
cHtm+='<OPTION>'+octrl:aItems[i]+'</OPTION>'+h()
Next i
cHtm+='</SELECT>'+h()
case octrl:classname()="TBUTTON"
ctype="button"
if alltrim(uppe(octrl:cCaption))="GRABAR"; ctype="submit"; endif
if alltrim(uppe(octrl:cCaption))="RESTAURAR"; ctype="reset"; endif
// usar solo apostrofes dentro del blcliked
cHtm+='<BUTTON '+cstyle+' id="'+ltrim(str(octrl:nId))+'" name="'+qcosaesname(octrl)+'" value="'+octrl:cCaption+'" type="'+ctype+'" >'+h()
cHtm+=octrl:cCaption+'</BUTTON>'+h()

case octrl:classname()="TRADIO"
cHtm+='<input '+cstyle+' type="radio" name="'+qcosaesname(octrl)+'" id="'+ltrim(str(octrl:nId))+'" value="'+ltrim(str(octrl:nId))+'" size="12">'+octrl:cCaption+h()

case octrl:classname()="TCHECKBOX"
cHtm+='<input '+cstyle+' type="checkbox" name="'+qcosaesname(octrl)+'" id="'+ltrim(str(octrl:nId))+'" value="" size="12">'+octrl:cCaption+h()

case octrl:classname()="TBITMAP" .OR. octrl:classname()="TIMAGE"
//cHtm+='<IMG '+cstyle+' id="'+ltrim(str(octrl:nId))+'" SRC="'+alltrim(octrl:crutabitmap)+'">'+h()

endcase
cHtm+='</div>'+h()

ENDIF
K++
ENDDO
cHtm+="</body>"+H()
cHtm+="</html>"+H()
FERASE(filefrm+".HTM")
MEMOWRIT(filefrm+".HTM",cHtm)
WAITRUN( "c:\archiv~1\intern~1\iexplore "+filefrm+".HTM")
RETU .T.

Func qcosaesname(octrl)
retu(ltrim(str(octrl:nId)) )


FUNC htmlhead( cHtm,filefrm )
cHtm+="<head>"+H()
cHtm+="<title>"+filefrm+"</title>"+H()
cHtm+='<style type="text/css">'+H()
cHtm+='<!--'+H()
cHtm+='.Estilo1 {'+H()
cHtm+=' font-size: 11px;'+H()
cHtm+=' font-family: Geneva, Arial, Helvetica, sans-serif;'+H()
cHtm+='}'+H()
cHtm+='body {'+H()
cHtm+=' background-color: #E8E8E8;'+H()
cHtm+='}'+H()
cHtm+='-->'+H()
cHtm+='</style>'+H()

cHtm+="<script>"+H()
cHtm+="function tabular(e,obj) {"+H()
cHtm+=" tecla=(document.all) ? e.keyCode : e.which;"+H()
cHtm+=" if(tecla!=13) return;"+H()
cHtm+=" frm=obj.form;"+H()
cHtm+=" for(i=0;i<frm.elements.length;i++)"+H()
cHtm+=" if(frm.elements[i]==obj)"+H()
cHtm+=" {"+H()
cHtm+=" if (i==frm.elements.length-1)"+H()
cHtm+=" i=-1;"+H()
cHtm+=" break"+H()
cHtm+=" }"+H()
/*ACA ESTA EL CAMBIO disabled, Y PARA SALTEAR CAMPOS HIDDEN*/
cHtm+=" if ((frm.elements[i+1].disabled ==true) || (frm.elements[i+1].type=='hidden') )"+H()
cHtm+=" tabular(e,frm.elements[i+1]);"+H()
/*ACA ESTA EL CAMBIO readOnly */
cHtm+=" else if (frm.elements[i+1].readOnly ==true )"+H()
cHtm+=" tabular(e,frm.elements[i+1]);"+H()
cHtm+=" else {"+H()
cHtm+=" frm.elements[i+1].select(); /* AÑADIR LOS CORCHETES Y ESTA INSTRUCCION */"+H()
cHtm+=" frm.elements[i+1].focus();"+H()
cHtm+=" }"+H()
cHtm+=" return false;"+H()
cHtm+="}"+H()
cHtm+=""+H()
cHtm+="</script>"+H()
cHtm+="</head>"+H()
retu .t.

Func h
retu( chr(13)+chr(10))







Las etiquetas en el objeto DOM se dibujan en los editores html por defecto en posiciones realtivas es decir se van colocando una detras de otra y responden a un flujo , de manera que si colocan otra etiqueta estas se acomodan a esa insercion.

Esta funcion crea los controles FW en etiquetas encerradas en capas DIV y establece posiciones absolutas fijas que coinciden
con los valores ntop nleft de dichos controles en FW.

El dato nID de cada control FW pasa a ser el ID de cada etiqueta oara identificar al control.

Esto es solo un inicio estan solo controles basicos y no se como leer los eventos asociados a un control en tiempo de ejecución
La idea seria leerlos y asignarlos a funciones Java Script.



Agradeceria se sirvan expresar sus ideas de como poder migrar una aplicacion FW a la WEB usando
JQUERY AJAX y PHP.

De momento estoy trabajando la migracion de los browses usando las librerias GRID de JavaScript

La idea es que lo hagamos en FW se migre a la web, es decir usar FW como un framework y a la vez poder
tener el trabajo en ambiente escritorio y ambiente web.


Saludos
ME INTERESA FW Y XHB POR SER OPEN SOURCE
Vladimir Zorrilla
 
Posts: 225
Joined: Tue Feb 28, 2006 4:25 pm
Location: PERU

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby csincuir » Fri Jan 29, 2010 11:15 am

Hola Vladimir.
Felicitaciones por tu trabajo, esta muy Interesante.
He hecho pruebas con tu codigo, y me he dado cuenta que se necesita que todo control sea definido y tener una variable de objeto.
Me explico; yo tengo por costumbre que a los controles say's creados desde el workshop, no los defino, y muchas veces los botones no les coloco una variable:
Code: Select all  Expand view
DEFINE BUTTON ID 20 OF oDlg ACTION oDlg:End() CANCEL

Con esta deficion, obtengo un error, ya que "octrl:cCaption" de devuelve NIL
Y con todas las etiquetas Say's que tengo en el dialog .rc, y que no defino, simplemente no aparecen en el formulario Web.

Pero bueno, es una buena manera de optimizar mas la forma de programar.

Nuevamente felicitaciones y gracias por compartir tus conocimientos.

Carlos Sincuir
csincuir
 
Posts: 396
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Silvio » Sat Jan 30, 2010 8:26 am

there is a old class no fwh made for it...
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby WilliamAdami » Mon Feb 01, 2010 11:40 am

muy interessante, existe algum exemplo funcionando en la web ?

Muchas Gracias

William
WilliamAdami
 
Posts: 68
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Silvio » Mon Feb 01, 2010 6:07 pm

There was a class (xWeb) of francisco Garcia many year ago made : if you search U found!!
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby WilliamAdami » Wed Feb 03, 2010 8:22 pm

Silvio, no encontro la classe Xweb , usted possui o LINK ?

Gracias

William
WilliamAdami
 
Posts: 68
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Silvio » Thu Feb 04, 2010 10:26 am

Search Olivares group
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby jll-fwh » Fri Feb 05, 2010 3:47 am

Hola Vladimir Zorrilla:

Como dice Silvio, francisco garcia ( un genio de FW ) hace años creo una clase ( TWeb sino recuerdo mal ) muy buena para crear entornos .HTML con FW16bits, en su momento la testee y era fantastica y tenia todos los controles.

Ponte en contacto con Paco y te la enviara gustosamente, es una persona genial.

Sino tienes su correo, enviame un correo a mi cuenta personal y te doy su cuenta de e-mail.

Un saludo
JLL
jllorispersonal@ono.com
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
User avatar
jll-fwh
 
Posts: 408
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Silvio » Sat Feb 06, 2010 8:46 am

RIght I found also in fivewin.br.com
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby WilliamAdami » Sat Feb 06, 2010 10:25 am

Silvio, the tool inside of www.fivewin.com.br is WxWEB of Vailton Renato. The xWeb of francisco Gracia i don´t found. The Olivares Group page don´t exist.

I don´t found the xWeb class for download

WilliamAdami
WilliamAdami
 
Posts: 68
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

Re: Migrar formularios FW a la Web (WebForm) Ver 1.1

Postby Silvio » Sat Feb 06, 2010 10:58 am

perhaps some erase it now
Best Regards, Saludos

Falconi Silvio
User avatar
Silvio
 
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 88 guests