Clipper On Line • Ver Tópico - Dicas 1a. Aplicação em xBase

Dicas 1a. Aplicação em xBase

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Dicas 1a. Aplicação em xBase

Mensagempor DinhoNetGomes » 22 Fev 2010 13:36

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.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 1: o primeiro PRG

Mensagempor DinhoNetGomes » 22 Fev 2010 13:39

Toda aplicação xbase iniciar com um prg contendo duas procedures, como segue:
(Neste exemplo o arquivo prg se chama "MyApp1.prg" )

#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, num total de 1 vezes
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 2: Compilar o Prg

Mensagempor DinhoNetGomes » 22 Fev 2010 13:44

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)

@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, num total de 1 vezes
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 3: Gerar o Executável

Mensagempor DinhoNetGomes » 22 Fev 2010 13:51

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")

obj41\MyApp1.obj
..\lib\lib3d\topDown.lib


E o exemplo de um BAT ("mkApp.bat") que faz a compilação e a linkedição

@echo off
@call clp MyApp1
@Alink @MyApp1.LNK /Force:Unresolved /PM:PM
Editado pela última vez por DinhoNetGomes em 22 Fev 2010 14:42, num total de 1 vezes
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 4: Variáveis ambientais

Mensagempor DinhoNetGomes » 22 Fev 2010 13:56

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)

@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
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 5: Use a biblioteca TopDown

Mensagempor DinhoNetGomes » 22 Fev 2010 14:00

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.
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Dica 6: Aplicações Complexas

Mensagempor DinhoNetGomes » 22 Fev 2010 14:48

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
Clipper 5.2/Dbfcdx
Alaska xBase 1.9
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Dicas 1a. Aplicação em xBase

Mensagempor lugab » 22 Fev 2010 15:23

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
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Sobre o Alaska xBase

Mensagempor DinhoNetGomes » 22 Fev 2010 16:24

Caro amigo, tem um outro tópico que estamos conversando sobre este assunto, este tópico é apenas para dicas e aprendizado.
http://www.pctoledo.com.br/forum/viewtopic.php?f=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
DinhoNetGomes
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 99
Data de registro: 14 Nov 2005 08:36
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Dicas 1a. Aplicação em xBase

Mensagempor sygecom » 23 Fev 2010 14:47

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 ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7005
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Dicas 1a. Aplicação em xBase

Mensagempor mhackervix » 22 Mai 2020 20:41

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
Mhackervix, Msc.
Avatar de usuário

mhackervix
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 105
Data de registro: 11 Fev 2008 01:06
Cidade/Estado: ES
Curtiu: 1 vez
Mens.Curtidas: 2 vezes

Dicas 1a. Aplicação em xBase

Mensagempor JoséQuintas » 24 Mai 2020 10:41

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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18008
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dicas 1a. Aplicação em xBase

Mensagempor Itamar M. Lins Jr. » 24 Mai 2020 20:21

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!
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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro