Página 1 de 1
Dicas 1a. Aplicação em xBase
Enviado: 22 Fev 2010 13:36
por DinhoNetGomes
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.
Dica 1: o primeiro PRG
Enviado: 22 Fev 2010 13:39
por DinhoNetGomes
Toda aplicação xbase iniciar com um prg contendo duas procedures, como segue:
(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
Dica 2: Compilar o Prg
Enviado: 22 Fev 2010 13:44
por DinhoNetGomes
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)
Código: Selecionar todos
@u:\Alaska\xppw32\bin\XPP %1 /M %2 %3 /OOBJ41\ /n /m /q /iu:\alaska\xppw32\include /rxppui2.lib
Dica 3: Gerar o Executável
Enviado: 22 Fev 2010 13:51
por DinhoNetGomes
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
Código: Selecionar todos
@echo off
@call clp MyApp1
@Alink @MyApp1.LNK /Force:Unresolved /PM:PM
Dica 4: Variáveis ambientais
Enviado: 22 Fev 2010 13:56
por DinhoNetGomes
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)
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\
Dica 5: Use a biblioteca TopDown
Enviado: 22 Fev 2010 14:00
por DinhoNetGomes
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.
Dica 6: Aplicações Complexas
Enviado: 22 Fev 2010 14:48
por DinhoNetGomes
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
Re: Dicas 1a. Aplicação em xBase
Enviado: 22 Fev 2010 15:23
por lugab
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
Sobre o Alaska xBase
Enviado: 22 Fev 2010 16:24
por DinhoNetGomes
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
Re: Dicas 1a. Aplicação em xBase
Enviado: 23 Fev 2010 14:47
por sygecom
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 ?
Dicas 1a. Aplicação em xBase
Enviado: 22 Mai 2020 20:41
por mhackervix
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 ?
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).
Att.
Marcelo
Dicas 1a. Aplicação em xBase
Enviado: 24 Mai 2020 10:41
por JoséQuintas
Por um momento pensei que era Harbour com GTWVG, porque a sintaxe é a mesma.
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
Dicas 1a. Aplicação em xBase
Enviado: 24 Mai 2020 20:21
por Itamar M. Lins Jr.
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!
Create views with HTML and CSS using the CXP View-Engine
Eles chamam de WebUI! Que é um browse para visualizar as telas no padrão mobile (HTML+CSS) e deve ter provavelmente muitos bons recursos.
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.