Migrar formularios FW a la Web (WebForm) Ver 1.1

Post Reply
Vladimir Zorrilla
Posts: 225
Joined: Tue Feb 28, 2006 4:25 pm
Location: PERU

Migrar formularios FW a la Web (WebForm) Ver 1.1

Post by Vladimir Zorrilla »

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+'</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==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
csincuir
Posts: 305
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala
Contact:

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

Post by csincuir »

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

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

Post by Silvio »

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

Falconi Silvio
WilliamAdami
Posts: 65
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

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

Post by WilliamAdami »

muy interessante, existe algum exemplo funcionando en la web ?

Muchas Gracias

William
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

Post by Silvio »

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

Falconi Silvio
WilliamAdami
Posts: 65
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

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

Post by WilliamAdami »

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

Gracias

William
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

Post by Silvio »

Search Olivares group
Best Regards, Saludos

Falconi Silvio
User avatar
jll-fwh
Posts: 385
Joined: Fri Jan 29, 2010 8:14 pm
Location: Meliana - Valencia
Contact:

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

Post by jll-fwh »

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 3.1.1 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA + OURXDBU -
S.O: XP / Win 7
Blog: http://javierlloris.blogspot.com.es/
e-mail: jllorispersonal@gmail.com
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

Post by Silvio »

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

Falconi Silvio
WilliamAdami
Posts: 65
Joined: Tue Apr 14, 2009 9:26 pm
Location: Brasil

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

Post by WilliamAdami »

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

Post by Silvio »

perhaps some erase it now
Best Regards, Saludos

Falconi Silvio
Post Reply