Dicas 1a. Aplicação em xBase
Moderador: Moderadores
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dicas 1a. Aplicação em xBase
Olá,
Estou criando este tópico para fornecer as 1ªs dicas de como fazer uma aplicação simples em xBase
Esta aplicação é uma janela simples com o botão "cancel" para finalizar. Só isso.
Este exemplo servirá de "modelo master" para qualquer outra aplicação em xbase.
As dicas serão postadas em forma de resposta deste tópico.
Abraços.
Estou criando este tópico para fornecer as 1ªs dicas de como fazer uma aplicação simples em xBase
Esta aplicação é uma janela simples com o botão "cancel" para finalizar. Só isso.
Este exemplo servirá de "modelo master" para qualquer outra aplicação em xbase.
As dicas serão postadas em forma de resposta deste tópico.
Abraços.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 1: o primeiro PRG
Toda aplicação xbase iniciar com um prg contendo duas procedures, como segue:
(Neste exemplo o arquivo prg se chama "MyApp1.prg" )
(Neste exemplo o arquivo prg se chama "MyApp1.prg" )
Código: Selecionar todos
#include "INCDEFS.CH"
#include "Common.ch"
#include "Box.ch"
#include "gra.ch"
#include "xbp.ch"
#include "Appevent.ch"
Procedure Main
LOCAL nEvent, mp1, mp2, oXbp
// Create pushbutton
oXbp:= XbpPushButton():new( SetAppWindow():drawingArea )
oXbp:caption := "Cancel"
oXbp:create( , , {10,20}, {100,40} )
oXbp:activate := {|| PostAppEvent( xbeP_Close) }
// Event loop
nEvent := 0
DO WHILE nEvent <> xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:HandleEvent( nEvent, mp1, mp2 )
ENDDO
RETURN
PROCEDURE AppSys
LOCAL nEvent, mp1, mp2
LOCAL oDlg, oXbp, aPos[2], aSize, nHeight:=100, nWidth := 250
Local cTitle
cTitle := "My App1"
tdOneInst(cTitle)
aSize := SetAppWindow():currentSize()
aPos[1] := Int( (aSize[1]-nWidth ) / 2 )
aPos[2] := Int( (aSize[2]-nHeight) / 2 )
// Create application window
oDlg := XbpDialog():new()
oDlg:title := cTitle
oDlg:border:= XBPDLG_THINBORDER
oDlg:create( ,, aPos, {nWidth, nHeight},, .F. )
// Set background color for drawing area
oDlg:drawingArea:SetColorBG( GRA_CLR_PALEGRAY )
// Select font
oDlg:drawingArea:SetFontCompoundName( "8.Arial" )
// Display application window and set focus to it
oDlg:show()
SetAppWindow( oDlg )
SetAppFocus ( oDlg )
RETURN
Editado pela última vez por DinhoNetGomes em 22 Fev 2010 14:40, em um total de 1 vez.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 2: Compilar o Prg
Para compilar, use o console do MS-DOS para invocar o XPP.EXE que compila o PRG e gera um OBJ, semelhante ao clipper.
Abaixo segue um exemplo bat (clp.bat) que invoca o compilador com todos os seus parâmetros
(atenção que os paths estão configurados para meu computador)
Abaixo segue um exemplo bat (clp.bat) que invoca o compilador com todos os seus parâmetros
(atenção que os paths estão configurados para meu computador)
Código: Selecionar todos
@u:\Alaska\xppw32\bin\XPP %1 /M %2 %3 /OOBJ41\ /n /m /q /iu:\alaska\xppw32\include /rxppui2.lib
Editado pela última vez por DinhoNetGomes em 22 Fev 2010 14:40, em um total de 1 vez.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 3: Gerar o Executável
Para gerar o executável deve-se usar o Alink.exe para fazer isso.
Quando se tem muitos Objs e muitas Libs pode-se fazer uma lista dos mesmo em um arquivo LNK (semelhante ao clipper)
Segue o exemplo do LNK ("myapp1.lnk")
E o exemplo de um BAT ("mkApp.bat") que faz a compilação e a linkedição
Quando se tem muitos Objs e muitas Libs pode-se fazer uma lista dos mesmo em um arquivo LNK (semelhante ao clipper)
Segue o exemplo do LNK ("myapp1.lnk")
Código: Selecionar todos
obj41\MyApp1.obj
..\lib\lib3d\topDown.lib
Código: Selecionar todos
@echo off
@call clp MyApp1
@Alink @MyApp1.LNK /Force:Unresolved /PM:PM
Editado pela última vez por DinhoNetGomes em 22 Fev 2010 14:42, em um total de 1 vez.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 4: Variáveis ambientais
Como no clipper, o xBase usa variáveis ambientais para o ambiente de compilação.
Segue um BAT que coloca todas as principais variáveis na memória:
(atenção que estão configuradas para meu computador)
Segue um BAT que coloca todas as principais variáveis na memória:
(atenção que estão configuradas para meu computador)
Código: Selecionar todos
@echo off
rem R:\ALASKA\XPPW32\AUTOXPP.BAT - environment for Alaska Xbase++
rem created by Alaska Xbase++ installation
SET LIB=C:\ALASKA\XPPW32\LIB;C:\ALASKA\XBTW32\LIB;C:\ALASKA\DBEW32\LIB
SET INCLUDE=C:\ALASKA\DBEW32\INCLUDE;C:\ALASKA\XPAPW32\INCLUDE;C:\ALASKA\XBTW32\INCLUDE
SET OBJ=\MYAPP1\OBJ
SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE\BITMAP;
SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE\ICON;%XPPRESOURCE%
SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE\FONT;%XPPRESOURCE%
SET XPPRESOURCE=C:\ALASKA\XPPW32\RESOURCE\POINTER;%XPPRESOURCE%
SET XPPROOT=C:\ALASKA\XPPW32\
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 5: Use a biblioteca TopDown
A dica final fica a recomendação para conhecer e usar a TopDown.
é como a Ca-tools... é uma biblioteca com funções visuais que incrementa o xBase e facilita a programação.
No site da Alaska xBase tem como baixa o programa demonstração.
Baixem e veja como o xbase fica muito profissional e com recursos excelentes.
Abraços.
é como a Ca-tools... é uma biblioteca com funções visuais que incrementa o xBase e facilita a programação.
No site da Alaska xBase tem como baixa o programa demonstração.
Baixem e veja como o xbase fica muito profissional e com recursos excelentes.
Abraços.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Dica 6: Aplicações Complexas
Para Aplicações complexas e que envolvam muitos arquivos *.prg e *.ch deve-se criar um arquivo denominado "xbase project" e que terá extensão "xpj"
Assim, ao invés de usar clp.bat para cada prg, usa-se o programa PBUILD e passa-se o xpj como parametro.
todos os programas (*.prg) e arquivos include (*.ch) serão compilados de uma vez só.
Exemplos de arquivos xpj tem vários no xbase 1.90 após a instalação na pasta SOURCE
Até mais
Assim, ao invés de usar clp.bat para cada prg, usa-se o programa PBUILD e passa-se o xpj como parametro.
todos os programas (*.prg) e arquivos include (*.ch) serão compilados de uma vez só.
Exemplos de arquivos xpj tem vários no xbase 1.90 após a instalação na pasta SOURCE
Até mais
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
Re: Dicas 1a. Aplicação em xBase
Legal, Dinho.
Desconheço completamento , por isso, desculpe se for uma pergunta idiota, mas eu queria saber se ele é 32 bits e se é tão gráfico quanto o xharbour + as libs q ele usa e, naturalemnte, se é 100% free...
Gabriel
Desconheço completamento , por isso, desculpe se for uma pergunta idiota, mas eu queria saber se ele é 32 bits e se é tão gráfico quanto o xharbour + as libs q ele usa e, naturalemnte, se é 100% free...
Gabriel
lugab
-
DinhoNetGomes
- Usuário Nível 2

- Mensagens: 99
- Registrado em: 14 Nov 2005 09:36
Sobre o Alaska xBase
Caro amigo, tem um outro tópico que estamos conversando sobre este assunto, este tópico é apenas para dicas e aprendizado.
https://pctoledo.org/forum/viewto ... =28&t=8028
Mas respondendo a vc.
1. Sim é totalmente gráfico e orientado a objeto
2. eu não conheço o xHarbour, só posso falar pelo xbase.
3. Não é free, nada nele é free...
O conceito dele vem da Europa onde lá se paga por software sim, principalmente quando se visualiza e obtem os ganhos que o mesmo pode dar. Claro que a pirataria de plantão vai te fornecer versões crackeadas, é óbvio.
ok?
Abraço
https://pctoledo.org/forum/viewto ... =28&t=8028
Mas respondendo a vc.
1. Sim é totalmente gráfico e orientado a objeto
2. eu não conheço o xHarbour, só posso falar pelo xbase.
3. Não é free, nada nele é free...
O conceito dele vem da Europa onde lá se paga por software sim, principalmente quando se visualiza e obtem os ganhos que o mesmo pode dar. Claro que a pirataria de plantão vai te fornecer versões crackeadas, é óbvio.
ok?
Abraço
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
Alaska xBase 1.9
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Dicas 1a. Aplicação em xBase
Olá Dinho,
Talvez eu tenha entendido errado, mas pelo que entendi o xBase usa os comando clipper para gera uma tela Grafica é isso ?
Tipo:
FUNC MAIN()
Local vDIG:=''
@ 10,10 SAY ' OLA MUNDO'
@ 10,11 GET vDIG
READ
RETURN
Uma tela assim não roda no xBase e já gera em tela gráfica ?
Talvez eu tenha entendido errado, mas pelo que entendi o xBase usa os comando clipper para gera uma tela Grafica é isso ?
Tipo:
FUNC MAIN()
Local vDIG:=''
@ 10,10 SAY ' OLA MUNDO'
@ 10,11 GET vDIG
READ
RETURN
Uma tela assim não roda no xBase e já gera em tela gráfica ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
- mhackervix
- Usuário Nível 3

- Mensagens: 105
- Registrado em: 11 Fev 2008 02:06
- Localização: ES
Dicas 1a. Aplicação em xBase
O Xbase tem 3 modos: Visual (GUI) , Texto e Hibrido(GUI+TEXT). Um código como acima gera uma saida tipo TEXTO idêntica a qual seria gerada pelo CLIPPER. O modo Hibrido permitiria que elementos gráficos possam ser inseridos sobre esta "tela de texto" (na realidade uma tela Gráfica simulando Texto).sygecom escreveu:Olá Dinho,
Talvez eu tenha entendido errado, mas pelo que entendi o xBase usa os comando clipper para gera uma tela Grafica é isso ?
Tipo:
FUNC MAIN()
Local vDIG:=''
@ 10,10 SAY ' OLA MUNDO'
@ 10,11 GET vDIG
READ
RETURN
Uma tela assim não roda no xBase e já gera em tela gráfica ?
Att.
Marcelo
Mhackervix, Msc.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Dicas 1a. Aplicação em xBase
Por um momento pensei que era Harbour com GTWVG, porque a sintaxe é a mesma.
Mas isto mostra que é o Alaska xbase
Mas isto mostra que é o Alaska xbase
@u:\Alaska\xppw32\bin\XPP %1 /M %2 %3 /OOBJ41\ /n /m /q /iu:\alaska\xppw32\include /rxppui2.lib
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Dicas 1a. Aplicação em xBase
Ola!
O Harbour tem uma lib de compatibilidade.
\contrib\hbxpp
description=Xbase++ compatibility
Na QtContribs do Pritpal tem alguns exemplos, ele portou algumas coisas do xBase++
Tava olhando o xBase++ 2.0
Diz que faz para: Xbase++ beyond Clipper | Web, Desktop and Mobile
Quando vamos para ver a parte Mobile, achamos lá o que tenho dito aqui faz tempo!
Agora com esta versão 2.0 ele está compatível com campos do foxpro, e outras coisas que já tem no harbour há mais de 5 anos.
Pedaço do código exemplo... QtCOntribs, de 2016!
Saudações,
Itamar M. Lins Jr.
O Harbour tem uma lib de compatibilidade.
\contrib\hbxpp
description=Xbase++ compatibility
Na QtContribs do Pritpal tem alguns exemplos, ele portou algumas coisas do xBase++
Tava olhando o xBase++ 2.0
Diz que faz para: Xbase++ beyond Clipper | Web, Desktop and Mobile
Quando vamos para ver a parte Mobile, achamos lá o que tenho dito aqui faz tempo!
Eles chamam de WebUI! Que é um browse para visualizar as telas no padrão mobile (HTML+CSS) e deve ter provavelmente muitos bons recursos.Create views with HTML and CSS using the CXP View-Engine
Agora com esta versão 2.0 ele está compatível com campos do foxpro, e outras coisas que já tem no harbour há mais de 5 anos.
Pedaço do código exemplo... QtCOntribs, de 2016!
Código: Selecionar todos
PROCEDURE BuildADialog()
LOCAL oDlg, mp1, mp2, oXbp, nEvent, aSize, oDa
/* Create Application Window */
oDlg := GuiStdDialog( "Harbour - hbQT - hbXBP + GtQtc ( Xbase++ )" )
oDlg:close := {|| MsgBox( "You can also close me by pressing [ESC]" ) }
SetAppWindow( oDlg )
oDlg:Show()
oDa := oDlg:drawingArea
/* Obtain desktop dimensions */
aSize := AppDesktop():currentSize()
/* Place on the center of desktop */
oDlg:setPos( { ( aSize[ 1 ] - oDlg:currentSize()[ 1 ] ) / 2, ;
( aSize[ 2 ] - oDlg:currentSize()[ 2 ] ) / 2 } )
/* Make background color of :drawingArea different */
oDa:setFontCompoundName( "10.Tohama italics" )
//oDa:setColorFG( GraMakeRGBColor( { 255,255,255 } ) )
/* Install menu system */
Build_MenuBar( oDlg )
/* Install Statusbar */
Build_StatusBar( oDa )
/* Install Toolbar */
Build_ToolBar( oDlg )
s_oDlg := oDlg
/* Present the dialog on the screen */
oDlg:Show()
/* Enter Xbase++ Event Loop - working */
DO WHILE .t.
nEvent := AppEvent( @mp1, @mp2, @oXbp )
IF ( nEvent == xbeP_Close ) .OR. ( nEvent == xbeP_Keyboard .and. mp1 == xbeK_ESC )
EXIT
ENDIF
HB_TRACE( HB_TR_DEBUG, nEvent, valtype( oXbp ), iif( HB_ISOBJECT( oXbp ), oXbp:title, "Nothing" ) )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
oDlg:destroy()
RETURN
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
