Ola!
digamos assim, eu sinceramente não imagino como faria isso q vc fez no Harbour, não sei se é complexo ou não ou tudo q teria q instalar/ter pra funcionar.
Acredite, não tem nada de mais.
É só HTML, as frescuras dos botões etc, vc vê na web vc mesmo copia e cola o código que vc gostar.
O código do Harbour é esse mesmo que todos usamos.
É a mesma coisa que vcs fazem ai no programa de vcs porque ele converte para HTML e CSS.
Quem sabe HTML faz tela para qualquer tamanho. Quem tem uma simples noção de CGI faz até sem usar Harbour.
Já escrevi aqui outras vezes. Vc acessa sites da WEB com seu celular correto ? Tem alguma coisa instalada no seu celular ?
VC acessa o pctoledo com a opção MOBILE, tem alguma coisa instalada no seu celular ?
É simples de mais. O problema é que poucos querem estudar. O Antonio Linares esta fazendo muita, mas muita coisa para celulares etc... com Harbour. Mas cadê os Brasileiros lá interagindo ?
Tem infinitas formas de fazer. Inclusive com as novas IDE´s que vc só cola! Nem código tem, para no caso de força de vendas, já olhei o de entrega de gás, o rapaz dá de graça os fontes, fácil de entender grava tudo lá nas nuvens via FIREBASE.
https://www.kodular.io/ Enfim tem miríades de opções inclusive com Harbour.
Eu fiz com harbour pq, ficou mais rápido a parte de "back end"
FUNCTION HRBMAIN(...)
Local n, cArq, aImpressoras := {}
LOCAL cHtml := "", cRDD := "DBFCDX", nRec := 0
LOCAL nConnect, cPATH := "//localhost:2812/"
Local cPDV := uhttpd_GetField( "cPDV" )
Local cLogin := uhttpd_GetField( "cLogin" )
Local cAbrir := uhttpd_GetField( "abrir" )
If ValType(cLogin) == "U"
cLogin := "U"
EndIf
RDDSetDefault("LETO")
leto_commit()
DBCloseAll()
If select('im') > 0
im->(DBCloseArea())
EndIf
cIndex := cPATH+"impressoras.cdx"
cDBF := cPATH+"impressoras.dbf"
DbUseArea(.t.,'LETO',cDbf,"im",.T.,.F.,'PTISO')
If leto_file(cIndex) //não precisa leto_file!
DBSETINDEX( cIndex )
Else
index on area tag im01
EndIf
im->(dbGoTop())
Do While im->(!eof())
AAdd(aImpressoras,{im->area,im->impressora,im->pularlinha,im->copia,im->guilhotina,im->corte})
im->(DbSkip())
EndDo
im->(DbCloseArea())
If select('pdv') > 0
pdv->(DBCloseArea())
EndIf
cIndex := cPATH+"pdv"+cPDV+".cdx"
cDbPDV := cPATH+"pdv"+cPDV+".dbf"
DbUseArea(.t.,'LETO',cDbPDV,"pdv",.T.,.F.,'PTISO')
If leto_file(cIndex) //não precisa leto_file!
DBSETINDEX( cIndex )
Else
index on Cod_Mercad tag tag01
index on AreaPrint tag tag02
EndIf
nRec := pdv->(LastRec())
Arquivo farolweb.hbp
#
# $Id$
#
-3rd=hbide_version=1.0
-3rd=hbide_type=Lib
-3rd=hbide_title=farolweb
-3rd=hbide_output=farolweb
-gh
farolweb.hbc
-o../home/cgi-bin/
index.prg
grupos.prg
login.prg
logout.prg
produtos.prg
info.prg
comandas.prg
fechar.prg
cozinha.prg
portaria.prg
destravar.prg
farol_lib.prg
toplist.prg
imprime.prg
hbwin.hbc
Vai gerar arquivos com o mesmo nome só que com HRB na pasta CGI, compilado ninguém mexe nos fontes. Isso é beeeemmm velho no harbour, mas o povo não acompanha e tem que pagar(ás vezes) para algum intermediário explicar.
Com algumas horas de estudo a pessoa aprende a lógica, não pode é achar que é coisa do outro mundo.
Saudações,
Itamar M. Lins Jr.