FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveTouch FiveTouch Preguntas frecuentes
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
FiveTouch Preguntas frecuentes
Posted: Sun Mar 08, 2015 12:38 AM

1. Que es FiveTouch

Es un nuevo producto que he desarrollado que te permite hacer aplicaciones para Android y Apple iOS sin tener que aprender a usar las herramientas de Google y de Apple, y sin tener que dedicar tiempo a aprender nuevos lenguajes, puesto que FiveTech usa Harbour y QT, permitiendo crear tu aplicaci贸n desde el mismo tablet, 贸 crearla en un PC y luego enviarte por email el PRG de tu aplicaci贸n para ejecutarlo en Android (por ejemplo: copiando el c贸digo del PRG desde un email y peg谩ndolo en el editor de FiveTouch).

Gracias a Harbour y a QT podemos usar el mismo c贸digo en Windows, Android y iOS, de esta forma, puedes desarrollar una aplicaci贸n que funcione en FiveTouch y que el mismo c贸digo funcione en todos.

Ofrecemos una versi贸n desarrollador de FiveTouch, por valor de 500 euros, en el que recibes las mismas herramientas que nosotros usamos y entrenamiento para aprender a usarlas por ti mismo, de esta forma puedes crear tus propias aplicaciones APK para Android. FiveTouch cuesta 200 euros, y puedes solicitarlo por PayPal a alinares@fivetechsoft.com. Puedes pasar en cualquier momento de la versi贸n b谩sica de 200 euros a la versi贸n desarrollador de 500 euros, abonando la diferencia. La idea es que subas a ese nivel cuando ya quieras usar el c贸digo que tienes funcionando en FiveTouch pero desees publicar una aplicaci贸n en el market 贸 no desees incluir FiveTouch en tu aplicaci贸n final.

FiveTouch es una especie de dBase moderno para Android e iOS. Tu construyes tus PRGs y FiveTouch los ejecuta. Igual que como se hacia en dBase. Pronto permitir谩 encriptar tus PRGs para que as铆 puedas proteger tu c贸digo fuente.

Adem谩s si nombras tu PRG como init.prg este se ejecutar谩 antes que FiveTouch, no vi茅ndose FiveTouch para nada, por lo que solo tu aplicaci贸n se ejecutar谩 al pulsar el icono de FiveTouch desde tu tablet 贸 tel茅fono.

En mi opini贸n FiveTouch es la forma m谩s r谩pida que existe de crear una aplicaci贸n para Android e iOS, ahorrando el mayor tiempo posible y aumentando mucho la productividad, para que tu aplicaci贸n para tablets y tel茅fonos est茅 lista cuanto antes :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: FiveTouch Preguntas frecuentes
Posted: Wed Nov 29, 2017 10:45 PM

El demo de Fivetouch, instalado en el Android,
驴no se pueden abrir prgs m谩s que los que estan en el demo???
Si pongo un prg en la SD del android, no lo puedo ejecutar???
Como asocio al prg que se abra con Fivetouch ???
Si le pongo el nombre init.prg, no se inicia al iniciar Fivetouch
Es una limitaci贸n de la demo???

De mo mento todo tiene buena pinta... falta hacerlo correr bien!!!

Un Saludo,
Xevi.

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Thu Nov 30, 2017 04:27 PM
Xevi,

> 驴no se pueden abrir prgs m谩s que los que estan en el demo???

Por supuesto que puedes abrir todos los que desees. Crea un nuevo PRG desde FiveTouch y pega el c贸digo en 茅l (c贸pialo desde un email, web, etc.) y finalmente s谩lvalo a disco (opci贸n "Save" desde FiveTouch) y ya lo puedes
abrir y ejecutar.

> Si pongo un prg en la SD del android, no lo puedo ejecutar???

Para ejecutarlo tienes que copiar el PRG a la carpeta indicada por la funci贸n DataLocation(). Lo m谩s sencillo es hacerlo como te acabo de indicar en la pregunta anterior, aunque tambien
puedes escribir un simple PRG desde FiveTouch que lo haga por ti:

Code (fw): Select all Collapse
#include "FiveTouch.ch"
聽 聽 聽 
function Main()
聽 聽 聽 
聽 聽local cFileName := QSelFile( ,, "/sdcard/*.prg" )

聽 聽MemoWrit( cFileName, MemoRead( cFileName ) )

return nil


> Como asocio al prg que se abra con Fivetouch ???

https://www.guidingtech.com/13517/change-default-program-android-file-type-open/

> Si le pongo el nombre init.prg, no se inicia al iniciar Fivetouch

Vamos a comprobarlo
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Thu Nov 30, 2017 04:37 PM
Hay un peque帽o error en el c贸digo anterior. Este seria un ejemplo completo:

Tenemos un PRG en esta direcci贸n:
https://bitbucket.org/fivetech/fivetouch-public-repository/downloads/test.prg

1. Lo descargamos desde nuestro dispositivo Android

2. Ejecutamos este c贸digo desde FiveTouch:
Code (fw): Select all Collapse
#include "FiveTouch.ch"
      
function Main()
      
   local cFileName := QSelFile( ,, "/sdcard/*.prg" )

   MsgInfo( cFileName )

   MemoWrit( "test.prg", MemoRead( cFileName ) )

return nil


3. test.prg ya aparece en los PRGs disponibles al pulsar "Open" desde FiveTouch :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Thu Nov 30, 2017 05:19 PM
Aqui tenemos otra forma, a煤n m谩s sencilla, de ejecutar cualquier PRG que hayamos descargado:

Code (fw): Select all Collapse
#include "FiveTouch.ch"

function Test()

   local cCode := MemoRead( QSelFile( ,, "/sdcard/*.prg" ) )

   RunScript( cCode )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Thu Nov 30, 2017 05:24 PM
A煤n m谩s simple :-)

Code (fw): Select all Collapse
#include "FiveTouch.ch"

function Test()

   OpenFile( QSelFile( ,, "/sdcard/*.prg" ) )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Thu Nov 30, 2017 05:30 PM
E incluso directamente desde la carpeta de descargas

Las posibilidades de FiveTouch son enormes! :-)

Code (fw): Select all Collapse
#include "FiveTouch.ch"
      
function Main()
      
   OpenFile( QSelFile( ,, DownloadLocation() + "/*.prg" ) )

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Fri Dec 01, 2017 09:08 AM
Est谩 muy bueno el demo. Desp煤es de ejecutarlo pude oibervar en el dispositivo que es muy dif铆cil leer el texto de los botones, debido a su tama帽o muy reducido.

Me surgieron las sigueintes Preguntas acerca de lo que actualmente podr铆a alcanzar con
FiveTouch DEVELOPER EDITION:

Modificar propiedades como el tama帽o y/o color de los siguientes controles:
- botones
- tree view ?

- FiveTouch DEVELOPER EDITION Incluye todos los componentes necesarios para generar la aplicaci贸n?

Qu茅 tipo de soporte se incluye para lograr todo lo necesario:
- MANIFIESTO: Properties, AndroidManifiest.xml, etc
- REFERENCES (System, System.Xml)
- ASSETS
- RESOURCES


FiveTouch usa QT y QT admite hojas de estilo (CSS) de la web. De hecho el color negro y naranja que usa es un estilo CSS que se puede modificar a voluntad:

QApplication():SetStyleSheet( DarkOrangeStyle() )

DarkOrangeStyle() es una funci贸n propia de FiveTouch, pero puedes usar cualquier otra definida por ti :-) (por ejemplo, MiNuevoEstilo() )

Prueba a modificarla (aqui te env铆o el c贸digo fuente), dale otro nombre a la funci贸n y llama a QApplication():SetStyleSheet( MiNuevoEstilo() )

FiveTouch Developers Edition es m谩s un conjunto de instrucciones y componentes para poder crear tu propia aplicaci贸n usando QT Creator. Es m谩s caro
porque requiere m谩s soporte t茅cnico por nuestra parte para poder ayudarte a configurar todo y a solucionar los problemas que se te puedan presentar. No es
un producto cerrado como FiveTouch estandard que precisa poca ayuda por nuestra parte :-)

saludos,

#xcommand TEXT INTO <v> => #pragma __cstream|<v>:=%s

function DarkOrangeStyle()

local cCSS

TEXT INTO cCSS
QToolTip
{
border: 1px solid black;
background-color: #ffa02f;
padding: 1px;
border-radius: 3px;
opacity: 100;
}

QWidget
{
color: #b1b1b1;
background-color: #323232;
}

QWidget:hover
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #ca0619);
color: #000000;
}

QWidget:selected
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}

QMenuBar::item
{
background: transparent;
}

QMenuBar::selected
{
background: transparent;
border: 1px solid #ffaa00;
}

QMenuBar::pressed
{
background: #444;
border: 1px solid #000;
background-color: QLinearGradient(
x1:0, y1:0,
x2:0, y2:1,
stop:1 #212121,
stop:0.4 #343434/*,
stop:0.2 #343434,
stop:0.1 #ffaa00*/
);
margin-bottom:-1px;
padding-bottom:1px;
}

QMenu
{
border: 1px solid #000;
}

QMenu::item
{
padding: 2px 20px 2px 20px;
}

QMenu::selected
{
color: #000000;
}

QWidget:disabled
{
color: #404040;
background-color: #323232;
}

QAbstractItemView
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0.1 #646464, stop: 1 #5d5d5d);
}

QWidget:focus
{
/*border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);*/
}

QLineEdit
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #4d4d4d, stop: 0 #646464, stop: 1 #5d5d5d);
padding: 1px;
border-style: solid;
border: 1px solid #1e1e1e;
border-radius: 5;
}

QPushButton
{
color: #b1b1b1;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
border-width: 1px;
border-color: #1e1e1e;
border-style: solid;
border-radius: 6;
padding: 3px;
font-size: 12px;
padding-left: 5px;
padding-right: 5px;
height: 25px;
min-width: 60px;
}

QPushButton:pressed
{
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
}

QComboBox
{
selection-background-color: #ffaa00;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
border-style: solid;
border: 1px solid #1e1e1e;
border-radius: 5;
}

QComboBox:hover,QPushButton:hover
{
border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}


QComboBox:on
{
padding-top: 3px;
padding-left: 4px;
background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #2d2d2d, stop: 0.1 #2b2b2b, stop: 0.5 #292929, stop: 0.9 #282828, stop: 1 #252525);
selection-background-color: #ffaa00;
}

QComboBox QAbstractItemView
{
border: 2px solid darkgray;
selection-background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}

QComboBox::drop-down
{
subcontrol-origin: padding;
subcontrol-position: top right;
width: 15px;

border-left-width: 0px;
border-left-color: darkgray;
border-left-style: solid; /* just a single line */
border-top-right-radius: 3px; /* same radius as the QComboBox */
border-bottom-right-radius: 3px;
}

QComboBox::down-arrow
{
image: url(:/down_arrow.png);
}

QGroupBox:focus
{
border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}

QTextEdit:focus
{
border: 2px solid QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
}

QScrollBar:horizontal {
border: 1px solid #222222;
background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848);
height: 40px;
margin: 0px 16px 0 16px;
}

QScrollBar::horizontal
{
background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f);
min-height: 20px;
border-radius: 2px;
}

QScrollBar::add-line:horizontal {
border: 1px solid #1b1b19;
border-radius: 2px;
background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a);
width: 14px;
subcontrol-position: right;
subcontrol-origin: margin;
}

QScrollBar::sub-line:horizontal {
border: 1px solid #1b1b19;
border-radius: 2px;
background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0 #ffa02f, stop: 1 #d7801a);
width: 14px;
subcontrol-position: left;
subcontrol-origin: margin;
}

QScrollBar::right-arrow:horizontal, QScrollBar::left-arrow:horizontal
{
border: 1px solid black;
width: 1px;
height: 1px;
background: white;
}

QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal
{
background: none;
}

QScrollBar:vertical
{
background: QLinearGradient( x1: 0, y1: 0, x2: 1, y2: 0, stop: 0.0 #121212, stop: 0.2 #282828, stop: 1 #484848);
width: 24px;
margin: 16px 0 16px 0;
border: 1px solid #222222;
}

QScrollBar::vertical
{
background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 0.5 #d7801a, stop: 1 #ffa02f);
min-height: 20px;
border-radius: 2px;
}

QScrollBar::add-line:vertical
{
border: 1px solid #1b1b19;
border-radius: 2px;
background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffa02f, stop: 1 #d7801a);
height: 14px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}

QScrollBar::sub-line:vertical
{
border: 1px solid #1b1b19;
border-radius: 2px;
background: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #d7801a, stop: 1 #ffa02f);
height: 14px;
subcontrol-position: top;
subcontrol-origin: margin;
}

QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical
{
border: 1px solid black;
width: 1px;
height: 1px;
background: white;
}


QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical
{
background: none;
}

QTextEdit
{
background-color: #242424;
}

QPlainTextEdit
{
background-color: #242424;
}

QHeaderView::section
{
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
}

QCheckBox:disabled
{
color: #414141;
}

QDockWidget::title
{
text-align: center;
spacing: 3px; /* spacing between items in the tool bar */
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232);
}

QDockWidget::close-button, QDockWidget::float-button
{
text-align: center;
spacing: 1px; /* spacing between items in the tool bar */
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #323232, stop: 0.5 #242424, stop:1 #323232);
}

QDockWidget::close-button:hover, QDockWidget::float-button:hover
{
background: #242424;
}

QDockWidget::close-button:pressed, QDockWidget::float-button:pressed
{
padding: 1px -1px -1px 1px;
}

QMainWindow::separator
{
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434);
color: white;
padding-left: 4px;
border: 1px solid #4c4c4c;
spacing: 3px; /* spacing between items in the tool bar */
}

QMainWindow::separator:hover
{

background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #d7801a, stop:0.5 #b56c17 stop:1 #ffa02f);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
spacing: 3px; /* spacing between items in the tool bar */
}

QToolBar::handle
{
spacing: 3px; /* spacing between items in the tool bar */
background: url(:/images/handle.png);
}

QMenu::separator
{
height: 2px;
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:0 #161616, stop: 0.5 #151515, stop: 0.6 #212121, stop:1 #343434);
color: white;
padding-left: 4px;
margin-left: 10px;
margin-right: 5px;
}

QProgressBar
{
border: 2px solid grey;
border-radius: 5px;
text-align: center;
}

QProgressBar::chunk
{
background-color: #d7801a;
width: 2.15px;
margin: 0.5px;
}

QTabBar::tab {
color: #b1b1b1;
border: 1px solid #444;
border-bottom-style: none;
background-color: #323232;
padding-left: 10px;
padding-right: 10px;
padding-top: 3px;
padding-bottom: 2px;
margin-right: -1px;
}

QTabWidget::pane {
border: 1px solid #444;
top: 1px;
}

QTabBar::tab:last
{
margin-right: 0; /* the last selected tab has nothing to overlap with on the right */
border-top-right-radius: 3px;
}

QTabBar::tab:!selected
{
margin-left: 0px; /* the last selected tab has nothing to overlap with on the right */


border-top-left-radius: 3px;
}

QTabBar::tab:!selected
{
color: #b1b1b1;
border-bottom-style: solid;
margin-top: 3px;
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:.4 #343434);
}

QTabBar::tab:selected
{
border-top-left-radius: 3px;
border-top-right-radius: 3px;
margin-bottom: 0px;
}

QTabBar::tab:!selected:hover
{
/*border-top: 2px solid #ffaa00;
padding-bottom: 3px;*/
border-top-left-radius: 3px;
border-top-right-radius: 3px;
background-color: QLinearGradient(x1:0, y1:0, x2:0, y2:1, stop:1 #212121, stop:0.4 #343434, stop:0.2 #343434, stop:0.1 #ffaa00);
}

QRadioButton::indicator:checked, QRadioButton::indicator:unchecked{
color: #b1b1b1;
background-color: #323232;
border: 1px solid #b1b1b1;
border-radius: 6px;
}

QRadioButton::indicator:checked
{
background-color: qradialgradient(
cx: 0.5, cy: 0.5,
fx: 0.5, fy: 0.5,
radius: 1.0,
stop: 0.25 #ffaa00,
stop: 0.3 #323232
);
}

QCheckBox::indicator{
color: #b1b1b1;
background-color: #323232;
border: 1px solid #b1b1b1;
width: 12px;
height: 12px;
}

QRadioButton::indicator
{
border-radius: 6px;
}

QRadioButton::indicator:hover, QCheckBox::indicator:hover
{
border: 1px solid #ffaa00;
}

QCheckBox::indicator:checked
{
image:url(:\images\checkbox.png);
}

QCheckBox::indicator:disabled, QRadioButton::indicator:disabled
{
border: 1px solid #444;
}

ENDTEXT

return cCSS
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: FiveTouch Preguntas frecuentes
Posted: Tue Dec 12, 2017 10:18 AM

En FiveTouch... es posible utilizar la clase TSocket para enviar/recibir datos entre mobile y ordenador/Server???

Lo digo, porque tengo una aplicaci贸n que abastece datos a una petici贸n via web y aprovechando, pues igual me tiro al rio y ataco los datos por ah铆, no???

Gracias.

Un Saludo,
Xevi.

Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: FiveTouch Preguntas frecuentes
Posted: Tue Dec 12, 2017 12:19 PM

Xevi,

Lo m谩s sencillo es que uses web services usando este ejemplo:

viewtopic.php?f=33t=31621start=0hilit=fivetouch+webservice

&&&

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion