Clipper On Line • Ver Tópico - Site Harbour?
Página 1 de 1

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:12
por JoséQuintas
Tanta coisa pra usar Harbour na internet..... mas...
Uma coisa diferente:

parte 1
Editar/cadastrar pelo Harbour

site1.png


site2.png

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:18
por JoséQuintas
Parte 2:
No site usar o MySQL

site3.png


site4.png


site5.png

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:19
por JoséQuintas
Parte 3
Se divertir

site6.png


Nota:
Por causa do Edge Chromium, tive que descobrir como embutir flash no html.
Resolvido assim.

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:23
por JoséQuintas
O fonte do cadastro.
Apenas pra curiosidade, não vai funcionar porque faltam minhas funções.

/*
PSITEJPA - SITE DA JPA
1997 - José Quintas
*/

#include "inkey.ch"
#include "hbclass.ch"

PROCEDURE pSiteJPA

   LOCAL oFrm := JPSITEClass():New()

   oFrm:Execute()
   oFrm:cnSQL:CloseConnection()

   RETURN

CREATE CLASS JPSITEClass INHERIT FrmCadastroClass

   VAR cDataTable INIT "WEBSITE"
   VAR cDataField INIT "IDSITE"
   VAR axKeyValue INIT { 0 }
   VAR cnSQL      INIT ADOClass():New( AppcnInternet() )
   VAR lWriteLog  INIT .F.

   METHOD Especifico( lExiste )
   METHOD TelaDados( lEdit )
   METHOD GridSelection()

   ENDCLASS

METHOD GridSelection() CLASS JPSITEClass

   LOCAL oTBrowse, cnSQL := ADOClass():New( AppcnInternet() )

   WITH OBJECT cnSQL
      :cSql := "SELECT IDSITE, SITITULO FROM WEBSITE ORDER BY IDSITE"
      :Execute()
      OTBrowse := { ;
         { "ID", { || Str( :Number( "IDSITE" ), 6 ) } }, ;
         { "TITULO", { || :String( "SITITULO", 100 ) } } }
      BrowseADO( cnSQL, oTBrowse, "SITITULO", { || StrZero( :Number( "IDSITE" ), 6 ) } )
      :CloseRecordset()
   ENDWITH

   RETURN NIL

METHOD Especifico( lExiste ) CLASS JPSITEClass

   LOCAL GetList := {}, mIdSite

   IF ::cOpc == "I"
      mIdSite := 0
   ELSE
      mIdSite := ::axKeyValue[ 1 ]
   ENDIF
   @ ::RowIni(), 0 SAY ""
   @ Row() + 1, 20 GET mIdSite PICTURE "@K 999999" VALID mIdSite > 0 .OR. ( ::cOpc == "I" .AND. mIdSite = 0 )
   Mensagem( "Digite código, F9 pesquisa, ESC sai" )
   READ
   Mensagem()
   IF LastKey() == K_ESC .OR. ( mIdSite == 0 .AND. ::cOpc != "I" )
      RETURN .F.
   ENDIF
   ::cnSQL:cSql := "SELECT COUNT(*) AS QTD FROM WEBSITE WHERE IDSITE=" + NumberSQL( mIdSite )
   IF ! ::EspecificoExiste( lExiste, ::cnSQL:ReturnValueAndClose( "QTD" ) == 0 )
      RETURN .F.
   ENDIF
   ::axKeyValue := { mIdSite }

   RETURN .T.

METHOD TelaDados( lEdit ) CLASS JPSITEClass

   LOCAL GetList := {}
   LOCAL msiTitulo := Space(100)
   LOCAL msiData   := Ctod("")
   LOCAL msiTexto  := Space(1)
   LOCAL msiPriori := "5"
   LOCAL msiInfAlt := ""
   LOCAL mIdSite

   hb_Default( @lEdit, .F. )
   mIdSite := ::axKeyValue[ 1 ]
   WITH OBJECT ::cnSQL
      :Open()
      :cSql := "SELECT SITITULO, SIDATA, SITEXTO, SIPRIORIDADE, SIINFALT FROM WEBSITE WHERE IDSITE = " + NumberSQL( mIdSite )
      :Execute()
      IF ! :Eof()
         msiTitulo := :String( "SITITULO", 100 )
         msiData   := :Date( "SIDATA" )
         msiTexto  := :String( "SITEXTO" )
         msiPriori := :String( "SIPRIORIDADE", 1 )
         msiInfAlt := :String( "SIINFALT", 60 )
      ENDIF
      :CloseRecordset()
   ENDWITH
   @ ::RowIni(), 0 SAY ""
   @ Row() + 1, 1    SAY "Num.Lancto.......:" GET mIdSite PICTURE "999999" WHEN .F.
   @ Row() + 2, 1    SAY "Titulo...........:" GET msiTitulo
   @ Row() + 1, 1    SAY "Data.............:" GET msiData
   @ Row() + 1, 1    SAY "Prioridade.......:" GET msiPriori PICTURE "@K 999999"
   KEYBOARD Chr( K_ESC )
   MemoEdit( msiTexto, ::RowIni() + 6, 1, MaxRow() - 5, MaxCol(), .F. )
   @ MaxRow() - 3, 1 SAY "Inf.Alt..........:" GET msiInfAlt WHEN .F.
   //SetPaintGetList( GetList )
   IF ! lEdit
      CLEAR GETS
      RETURN NIL
   ENDIF
   Mensagem( "Digite campos, F9 Pesquisa, ESC Sai" )
   READ
   Mensagem()
   IF LastKey() == K_ESC
      RETURN NIL
   ENDIF
   msiTexto := MemoEdit( msiTexto, ::RowIni() + 6, 1, MaxRow() - 5, MaxCol(), .T. )
   IF LastKey() != K_ESC
      WITH OBJECT ::cnSQL
         :QueryCreate()
         :QueryAdd( "SITITULO", Trim( msiTitulo ) )
         :QueryAdd( "SIDATA", msiData )
         :QueryAdd( "SITEXTO", Trim( msiTexto ) )
         :QueryAdd( "SIPRIORIDADE", msiPriori )
         IF ::cOpc == "I"
            :QueryAdd( "SIINFINC", LogInfo() )
            mIdSite := :QueryExecuteInsert( "WEBSITE" )
         ELSE
            :QueryAdd( "SIINFALT", LogInfo() )
            :QueryExecuteUpdate( "WEBSITE", "IDSITE = " + NumberSql( mIdSite ) )
         ENDIF
      ENDWITH
   ENDIF
   ::axKeyValue[ 1 ] := mIdSite

   RETURN NIL

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:29
por JoséQuintas
Também só pra curiosidade, parte do fonte responsável por TODO site, em ASP

   cSql = "SELECT SIDATA, IDSITE, SITITULO, SITEXTO, SIPRIORIDADE FROM WEBSITE WHERE SITITULO LIKE ... ORDER BY SIPRIORIDADE, SIDATA DESC, IDSITE DESC LIMIT 30;"
   oRegistro.Open cSql, oConexao
   %>
   <table width="100%" border="0" cellpadding="0" cellspacing="5" bordercolor="#000000" bordercolordark="#000000" bordercolorlight="#000000">
   <%
   DO WHILE NOT oRegistro.Eof
      %>
      <tr width="100%">
      <td width="100%" bgcolor="#A4E1FF"></td>
      <table style="border-top: 1 solid #777792; border-left: 1 solid #777792; border-right: 1 solid #777792; border-bottom: 1 solid #777792; width:100%">
      <tr>
      <td width="3%" bgcolor="#9CB8CF"><img src="/imagem/jpa40x40.jpg" width="32" height="32"></td>
      <td width="97%" background="/imagem/bgnews.jpg"><p align="center"><font color="#FFFFFF" size="3">
      <%
      cTexto = oRegistro.Fields( "SITITULO" ).Value
      cTexto1 = ""
      cTexto2 = ""
      IF InStr( cTexto, ":" ) <> 0 THEN
         cTexto1 = mid( cTexto, 1, Instr( cTexto, ":" ) )
         cTexto2 = Mid( cTexto, InStr( cTexto, ":" ) + 1 )
      ELSE
         cTexto1 = ""
         cTexto2 = cTexto
      END IF
      %>
      <font class="grande" color="#FFFF00">
      <%
      Response.Write cTexto1
      %>
      <font class="grande">
      <%
      Response.Write cTexto2 & " (" & oregistro.Fields( "SIPRIORIDADE" ).Value & "-" & oregistro.fields( "IDSITE" ).Value & "-" & oregistro.fields( "SIDATA" ).Value & ")"
      %>
      </font></p>
      </td></tr></table></tr>
      <tr><td width="100%" bgcolor="#EBECEA" ><p align="center"><font class="normal">
      <%
      cTexto = oRegistro.Fields( "SITEXTO" ).Value
      cTexto = Replace( cTexto, "<a href", " <a href")
      cTexto = Replace( cTexto, vbCrLf & "<", "<" )
      cTexto = Replace( cTexto, ">" & vbCrLf, ">" )
      cTexto = Replace( cTexto, vbCrLf, "<br>" )
      cTexto = Replace( cTexto, "<code>", cCodeIni )
      cTexto = Replace( cTexto, "</code>", cCodeFim )
      response.write cTexto
      %>
      </font></p>
      </td>
      </tr>
      <%
      oRegistro.Movenext
   LOOP
   %>
   </table>
   </center>
   <%

   END FUNCTION


Só pra curiosidade.
Meu html é fraco, meu ASP também, mas quebra o galho.
Aí mistura o fonte VB/ASP com html.

ADO e MySQL, igual no aplicativo e no ASP.

Poderia ser Harbour na internet?
Precisaria autorização da hospedagem, e aprender o que já existe no ASP, então.... mais fácil usar ASP mesmo.

Site Harbour?

MensagemEnviado: 09 Mai 2020 01:45
por JoséQuintas
Ainda nisso....

Considerando quem usa Windows

- Windows tem servidor de internet
- Windows tem IIS/ASP
- Windows tem VBScript
- Windows tem ADO
- Windows tem até compilador VB.NET

Se está tudo na mão... NÃO usar porque?

E com certeza no meu provedor de hospedagem também tem, e faço uso.
Mas... meu site poderia estar até mesmo no meu servidor aqui, pra ser acessado externamente.

Por isso tenho usado essas coisas faz tempo, desde os tempos do Clipper.
No Clipper pra salvar no MySQL, e atualizar on line via internet.
No Harbour... tudo se expandiu.

Site Harbour?

MensagemEnviado: 27 Mai 2020 20:59
por lwinter
O Toledo me disse que tinha um indiano passando o harbour para funcionar na web. Semelhante ao conceito do react.
Toledo, como anda este projeto?

Site Harbour?

MensagemEnviado: 27 Mai 2020 22:33
por JoséQuintas
Vi comentários nestes dias sobre HMG Extended pra WEB.

Se considerar que GUI monta a dialog pra ser executada pelo Windows.....

A Web acaba sendo parecido, porque o Harbour montaria a página pro navegador fazer o resto...

Lógico... isso deixaria limitado, mas.... aplicativo funcionar no navegador seria o principal, o resto vém com o tempo.

Site Harbour?

MensagemEnviado: 27 Mai 2020 22:42
por JoséQuintas
De repente um trem doido destes, levando o sistema operacional para o navegador.

http://www.virtualdesktop.org/complete/index.html

Site Harbour?

MensagemEnviado: 28 Mai 2020 06:10
por Toledo
Leonardo, o projeto é este:

https://github.com/alkresin/HDroidGUI

Mas está parado desde Março/2015.

Site Harbour?

MensagemEnviado: 30 Mai 2020 16:33
por lwinter
Ah, obrigado Toledo!
Uma pena que esteje parado.

rgds,