fivetouch

Moderator: Enrico Maria Giordano

fivetouch

Postby solving » Thu May 28, 2015 3:29 pm

salve

provengo da ambiente clipper/alaska e volevo fare qualche programmino in android, qualcosa di molto semplice.
Ho alcuni clienti a cui scarico un listino (un semplice browse di un dbf) su dei terminali ( vecchio dos - clipper ).

Tempo fa' volevo passare a dei terminali con windows ce ( avevo chiesto info su questo forum ) la cosa non e' andata avanti
per costo eccessivo di palmare con lettore barcode incorporato, adesso vedo che il mercato palmari windows ce va' a morire.

Con l'avvento di tablet android il costo e' contenuto ( tablet da 10" + lettore barcode su porta usb circa 200 E. )

Alla ricerca di clipper + android ( c'e' ne' abbastanza di harbour + android in giro , ma uno che spiega bene come preparare l'ambiente di lavoro in windows ? ) ho guardato qui e ho letto di fivetouch.

qualcuno gia' usa fivetouch ?

da quello che ho capito la versione base ( costo 200 E.) permette di usare il programma come il vecchio dbase
modalita' interprete.

La versione completa ( costo 500 e. oppure aggiungere 300 E. ai 200 E. gia' spesi ) permette di generare
i file .apk da spostare/installare sui dispositivi android e/o ios .

ho capito bene ?

forumisti italiani che gia' lo usano possono darmi le loro esperienze in merito ?

grazie
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Antonio Linares » Thu May 28, 2015 4:11 pm

Hello,

We started FiveTouch development several months ago and we offered a demo version:

https://bitbucket.org/fivetech/fivetouch-public-repository/downloads

This may the best way to test for yourself if it may be a good solution for you :-)

grazie,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: fivetouch

Postby solving » Fri May 29, 2015 6:13 pm

Ok
Con gli esempi a corredo funziona.

Esiste un Esempio con un dbf reale ?
il programma browse.prg e' un esempio ma senza aprire un dbf non riesco a capirlo.

Esiste un manuale con la sintassi dei comandi / funzioni ?

Grazie.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Enrico Maria Giordano » Sat May 30, 2015 7:00 am

Non funzionano i normali comandi USE, etc.?

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8243
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: fivetouch

Postby solving » Mon Jun 01, 2015 9:57 am

sono riuscito ad attenere qualcosa.

premetto che ho letto una guida di harbour + qt di Giovanni Di Maria ( http://www.elektrosoft.it/tutorials/hbqt/hbqt.asp )

ma fivetouch usa harbour + qt ? se si perche gli esempi di Di Maria non funzionano ?.

comunque dopo vari smanettamenti ecco il browse di esempio con fivetouch da me modificato per usare i dbf

non riesco a impostare una browse piu' corta in modo da far vedere i pulsanti fuori dal browse,
i pulsanti funzionano ( spostano il browser Top/Bottom ) ma danno un errore.

attendo suggerimenti.
Grazie.


#include "FiveTouch.ch"

function Main()

local oDlg := QDialog()
local oLayout := QVBoxLayout()
local oBrw := QTableView( oDlg )
local oModel := QStandardItemModel( 3, 4, oDlg )

LOCAL i, nNumRecord
LOCAL button_top, button_bottom

* --- Chiudo Tutto perche' se il programma va' in errore il file rimane in Uso
DBCLOSEALL()

USE "VIDEO.DBF" ALIAS Video NEW
nNumRecord := RecCount()

oModel:SetHorizontalHeaderItem( 0, QStandardItem( "Codice" ) )
oModel:SetHorizontalHeaderItem( 1, QStandardItem( "Titolo" ) )
oModel:SetHorizontalHeaderItem( 2, QStandardItem( "Genere" ) )
oModel:SetHorizontalHeaderItem( 3, QStandardItem( "Durata" ) )

For i = 0 TO nNumRecord

oModel:SetItem( i, 0, QStandardItem( Video->COD_CA ) )
oModel:SetItem( i, 1, QStandardItem( Video->TITOLO ) )
oModel:SetItem( i, 2, QStandardItem( Video->GENERE ) )
oModel:SetItem( i, 3, QStandardItem( STR(Video->DURATA) ) )

Video->( DBSKIP() )
NEXT

oDlg:SetLayout( oLayout )
oBrw:SetModel( oModel )
oLayout:AddWidget( oBrw )

//------------Button--------------
@ 300, 090 BUTTON button_top PROMPT "Inizio" OF oDlg ;
ACTION Top( oBrw )
@ 300, 210 BUTTON button_Bottom PROMPT "Fine" OF oDlg ;
ACTION Bot( oBrw )

oDlg:SetWindowTitle( "Elenco VideoCassette" )
oDlg:Resize( 500, 400 )
oDlg:Center()
oDlg:Exec()

Video->( DBCLOSEAREA() )

return nil

// ------------------------------------ Altre Funzioni

PROCEDURE Top( oT )
oT:scrollToTop()
oT:setCurrentCell( 0, 0 )
oT:setFocus()
RETURN

PROCEDURE Bot( oT )
oT:scrollToBottom()
oT:setCurrentCell( oT:rowCount() - 1, 0 )
oT:setFocus()
RETURN
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Enrico Maria Giordano » Mon Jun 01, 2015 10:15 am

Code: Select all  Expand view
oBrw:Resize( nWidth, nHeight )


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8243
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: fivetouch

Postby solving » Mon Jun 08, 2015 3:11 pm

Rieccomi , salve

1) Ma la sintassi dei comandi di FiveTouch quale' ? ( Mai usato FiveWin per Clipper e/o Harbour )
su quale mi devo basare ?, e possibile avere un manuale dei comandi / Funzione di base ?

Ecco un esempio che cerco di costruire guardando e "carpendo" istruzioni in giro nel forum Spagnolo.

Ho un problema nella funzione Vedi_P , quello che vorrei fare e' il seguente
(ho la procedura funzionante in clipper e cerco di convertirla) :

1) come limitare l'input della variabile a max 20 caratteri ?

2) ho costruito un ciclo Do while .T. ed esco dalla funzione Vedi_P o quando premo il pulsante "abbandona" o quando lascio
vuoto il campo oCod.
quello che non riesco a fare e' : alla pressione del pulsante "Cerca" di chiamare una funzione che mi esegua la seek
sul file mi faccia vedere un campo ( es. descrizione + prezzo ) mi svuoti la get e ritorni nel ciclo Do while .T.
in attesa da altro input.

In clipper lo faccio in un battito di ciglia ma in Fivetouch ( dato che non conosco la giusta sintassi ) non riesco.

Grazie.


#include "FiveTouch.ch"

function Main()local oDlg,;
oBtnPre,;
oBtnInv,;
oBtnEnd

LOCAL fDbf := "_DATIL.DBF",;
fNtx := "_DATIL.NTX"

SET DELETE ON
SET CENTURY ON
SET ESCAPE ON
SET DATE ITALIAN
SETCANCEL(.T.)

CLEAR SCREEN

// --- Verifico se Esiste File e Indice Altrimenti li Creo
Crea_File( fDbf, fNtx )

DEFINE DIALOG oDlg

oDlg:setWindowTitle( "Gestione Prezzi" )

// --- Definizione Pulsanti
@ 10, 90 BUTTON oBtnPre PROMPT "Prezzi" OF oDlg ;
ACTION Vedi_P( fDbf, fNtx )

@ 50, 90 BUTTON oBtnInv PROMPT "Inventario" OF oDlg ;
ACTION oDlg:End()

@ 90, 90 BUTTON oBtnCancel PROMPT "Fine" OF oDlg ;
ACTION oDlg:End()

ACTIVATE DIALOG oDlg CENTERED

return nil

FUNCTION Crea_File( fDbf, fNtx )
LOCAL aDbf := {}

//*** Crea Archivio se non esiste
IF !FILE( fDbf )
AADD(aDbf,{"CODICE","C",13,0})
AADD(aDbf,{"DESC","C",15,0})
AADD(aDbf,{"QTA","N",6,2})
AADD(aDbf,{"PRE","N",9,3})
DBCREATE(fDbf,aDbf)
FERASE(fNtx)
ENDIF

//*** Crea Indice se non esiste
IF !FILE( fNtx )
CLEAR SCREEN
* @ 1,0 SAY "Attendere ..."
* @ 2,0 SAY "Ricostruzione"
* @ 3,0 SAY "Indice"
USE( fDbf ) ALIAS Dati NEW
INDEX ON Dati->CODICE TO ( fNtx )
CLOSE DATABASES
ENDIF

RETURN NIL

FUNCTION Vedi_P( fDbf, fNtx )
LOCAL oCod, oDlg, cCod := SPACE(20)
LOCAL oBtnEnd, oBtnOk

DEFINE DIALOG oDlg TITLE "Vedi Prezzi" ;
SIZE 300, 200

@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()

@ 160, 150 BUTTON oBtnOk PROMPT "Cerca" OF oDlg ;
ACTION MsgInfo( "Ok!" )

*USE( fDbf ) INDEX ( fNtx ) ALIAS Dati NEW

DO WHILE .T.

@ 20, 020 SAY oSay PROMPT "Codice" OF oDlg
@ 20, 060 GET oCod VAR cCod OF oDlg
oCod:setFixedSize(130,25)

IF EMPTY( cCod )
EXIT
oDlg:End()
ELSE
MsgInfo( "Ok!" )
ENDIF

END DO

ACTIVATE DIALOG oDlg CENTERED

*Dati->( DBCLOSEAREA() )

RETURN NIL
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Antonio Linares » Mon Jun 08, 2015 4:14 pm

1) come limitare l'input della variabile a max 20 caratteri ?


Please review QLineEdit() DATA nMaxLength:

http://doc.qt.io/qt-4.8/qlineedit.html

oCod:nMaxLength = 20

I don't understand your second question, sorry
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: fivetouch

Postby Antonio Linares » Mon Jun 08, 2015 4:15 pm

Please review FiveTouch.ch for currently supported syntax

FiveTouch uses QT, so all QT docs are usefull to use FiveTouch
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: fivetouch

Postby solving » Mon Jun 08, 2015 4:37 pm

salve Antonio


second question :

Questa la mia funzione in Clipper :

*-------------------------------------------------- VEDI_P
STATIC FUNCTION Vedi_P( fDbf, fNtx )
LOCAL GetList := {}

LOCAL cBar := SPACE(13) ,;
cDes := SPACE(15) ,;
nPre := 0, xBar := ""

USE( fDbf ) INDEX (fNtx) ALIAS Dati NEW

DO WHILE .T.
CLEAR

cBar := SPACE(13)

@ 0,0 SAY "Vedi Prezzo"

@ 1,0 SAY "Cod " GET cBar PICTURE "@!"
READ

xBar := ALLTRIM( cBar )

IF !EMPTY( xBar )

IF Dati->( DBSEEK(xBar) )
cBar := Dati->CODICE
cDes := Dati->DESC
nPre := Dati->PRE

@ 2,0 SAY "Codice " + cBar
@ 3,0 SAY "Desc. " + cDes
@ 4,0 SAY "Prezzo " + ALLTRIM( TRANSFORM(nPre,"99999.999") )
ELSE
@ 2,0 SAY SPACE(40)
@ 3,0 SAY SPACE(40)
@ 4,0 SAY SPACE(40)

@ 2,0 SAY "-Non Trovato-"
ENDIF

@ 3,0 SAY "Premi Enter"
INKEY(0)
ELSE
EXIT
ENDIF

ENDDO

Dati->( DBCLOSEAREA() )

RETURN NIL


Come Convertire in fivetouch ?

Grazie
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby solving » Mon Jun 08, 2015 5:03 pm

oCod:nMaxLength = 20 -> ERRORE
oCod:MaxLength = 20 -> ERRORE

oCod:SetMaxLength(20) -> OK


Se Dichiaro oCod := SPACE(1) -> OK

Se Dichiaro oCod := SPACE(20) -> stranamente il cursore non si pone all'inizio della Get ma al Centro
Devo prima usare il tasto Canc per vuotare il campo della Get anche se vuoto e poi posso digitare .

Grazie.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Antonio Linares » Mon Jun 08, 2015 6:26 pm

solving wrote:salve Antonio


second question :

Questa la mia funzione in Clipper :

*-------------------------------------------------- VEDI_P
STATIC FUNCTION Vedi_P( fDbf, fNtx )
LOCAL GetList := {}

LOCAL cBar := SPACE(13) ,;
cDes := SPACE(15) ,;
nPre := 0, xBar := ""

USE( fDbf ) INDEX (fNtx) ALIAS Dati NEW

DO WHILE .T.
CLEAR

cBar := SPACE(13)

@ 0,0 SAY "Vedi Prezzo"

@ 1,0 SAY "Cod " GET cBar PICTURE "@!"
READ

xBar := ALLTRIM( cBar )

IF !EMPTY( xBar )

IF Dati->( DBSEEK(xBar) )
cBar := Dati->CODICE
cDes := Dati->DESC
nPre := Dati->PRE

@ 2,0 SAY "Codice " + cBar
@ 3,0 SAY "Desc. " + cDes
@ 4,0 SAY "Prezzo " + ALLTRIM( TRANSFORM(nPre,"99999.999") )
ELSE
@ 2,0 SAY SPACE(40)
@ 3,0 SAY SPACE(40)
@ 4,0 SAY SPACE(40)

@ 2,0 SAY "-Non Trovato-"
ENDIF

@ 3,0 SAY "Premi Enter"
INKEY(0)
ELSE
EXIT
ENDIF

ENDDO

Dati->( DBCLOSEAREA() )

RETURN NIL


Come Convertire in fivetouch ?

Grazie


Que error te da en FiveTouch ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: fivetouch

Postby solving » Tue Jun 09, 2015 9:02 am

el procedimiento vedi_p trabaja en clipper
No funciona en fivetouch ¿cómo puedo convertir ?

esta es mi función en fivetouch

// ----------------------- VEDI_P
FUNCTION Vedi_P( fDbf, fNtx )
LOCAL oBar, oDlg, cBar := SPACE(1)
LOCAL oBtnEnd, oBtnOk

USE( fDbf ) INDEX ( fNtx ) ALIAS Dati NEW

DEFINE DIALOG oDlg TITLE "Vedi Prezzi" ;
SIZE 300, 200

@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()

@ 160, 150 BUTTON oBtnOk PROMPT "Cerca" OF oDlg ;
ACTION Prezzo(oDlg, ALLTRIM(cBar))

DO WHILE .T.

@ 20, 020 SAY oSay PROMPT "Codice" OF oDlg
@ 20, 060 GET oBar VAR cBar OF oDlg
oBar:setFixedSize(130,25)
oBar:SetMaxLength(20)

@ 60, 020 SAY oSay PROMPT "Desc. " OF oDlg ******* 1 *****
@ 90, 020 SAY oSay PROMPT "Prezzo " OF oDlg ******* 2 *****

IF EMPTY( cBar )
EXIT
oDlg:End()
ELSE
MsgInfo( "Ok!" )
ENDIF

END DO

ACTIVATE DIALOG oDlg CENTERED

Dati->( DBCLOSEAREA() )
RETURN NIL

// ----------------------- PREZZO
FUNCTION Prezzo( ODlg, cBar )

IF Dati->( DBSeek(cBar) )

// MsgInfo("Desc. " + Dati->DESC )


********************* Cómo mostrar ESTA LÍNEA EN PUNTO ***** 1 ****
@ 60, 050 SAY oSay PROMPT Dati->DESC OF oDlg

******************* Cómo mostrar ESTA LÍNEA EN PUNTO ***** 2 ****
@ 90, 050 SAY oSay PROMPT Dati->PREZZO OF oDlg

ENDIF

RETURN NIL

Grazie
Estoy utilizando un TRADUCTOR PARA ESPAÑOLES :-)
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Re: fivetouch

Postby Antonio Linares » Tue Jun 09, 2015 12:16 pm

Aqui tienes un ejemplo:

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: fivetouch

Postby solving » Tue Jun 09, 2015 3:32 pm

salve

Sono riuscito ad ottenere quello che volevo, vi posto l'esempio :

*******************************************************************
// ----------------------- VEDI_P
FUNCTION Vedi_P( fDbf, fNtx )
LOCAL oCod, oDlg, cCod := SPACE(1)
LOCAL oBtnEnd, oBtnOk

USE( fDbf ) INDEX ( fNtx ) ALIAS Dati NEW

DEFINE DIALOG oDlg TITLE "Vedi Prezzi" ;
SIZE 300, 200

@ 160, 25 BUTTON oBtnEnd PROMPT "Abbandona" OF oDlg ;
ACTION oDlg:End()

@ 160, 150 BUTTON oBtnOk PROMPT "Cerca" OF oDlg ;
ACTION Prezzo(oDlg, ALLTRIM(cCod))

DO WHILE .T.

@ 20, 020 SAY oSay PROMPT "Codice" OF oDlg
@ 15, 060 GET oCod VAR cCod OF oDlg
oCod:setFixedSize(130,25)
oCod:SetMaxLength(20)

@ 60, 020 SAY oSay PROMPT "Codice " OF oDlg
@ 90, 020 SAY oSay PROMPT "Desc. " OF oDlg
@ 120,020 SAY oSay PROMPT "Prezzo " OF oDlg

IF EMPTY( cCod )
EXIT
oDlg:End()
ELSE
MsgInfo( "Ok!" )
ENDIF

END DO

ACTIVATE DIALOG oDlg CENTERED

Dati->( DBCLOSEAREA() )
RETURN NIL

// ----------------------- PREZZO
FUNCTION Prezzo( oDlg, cCod )
LOCAL cBar := "",;
cDes := "",;
nPre := 0

LOCAL oLab1 := QLabel( oDlg ),;
oLab2 := QLabel( oDlg ),;
oLab3 := QLabel( oDlg )

IF !EMPTY( cCod )
IF Dati->( DBSeek(cCod) )
cBar := Dati->CODICE
cDes := Dati->DESC
nPre := Dati->PRE
ELSE
cDes := "Codice " + cCod + " Non Trovato"
ENDIF
ELSE
cDes := "Codice Vuoto"
ENDIF

oLab1:setText( cBar )
oLab1:move( 65 , 60 )
oLab1:show()

oLab2:setText( cDes )
oLab2:move( 65 , 90 )
oLab2:show()

oLab3:setText( STR(nPre) )
oLab3:move( 65 , 120 )
oLab3:show()

RETURN NIL
*************************************************************+

adesso qualcuno puo' indicarmi come far funzionare il ciclo do while .t. end do
perche vorrei restare nella funzione Vedi_P fino a quando non premo il pulsante abbandona.

Grazie

scusa Antonio forse non so' spiegare bene i miei problemi .

comunque Fivetouch e' OK ( sono un principiante di Qt )
ancora alcuni test prima dell'eventuale acquisto.

p.s. ma nessun italiano del forum che usa FiveTouch ?.
solving
 
Posts: 65
Joined: Fri Jun 05, 2009 7:55 am
Location: Sicily ( ct ) - Italy

Next

Return to All products support

Who is online

Users browsing this forum: No registered users and 3 guests