Clipper On Line • Ver Tópico - SPTOOLS: Biblioteca que da mais poder para seu Clipper...
Página 1 de 1

SPTOOLS: Biblioteca que da mais poder para seu Clipper...

MensagemEnviado: 19 Fev 2010 21:47
por rochinha
Amiguinhos,

Esta biblioteca já foi apresentada aqui mesmo. Pro mim.

Mas como sempre estão aparecendo novos usuários desta velha ferramenta que é o Clipper então vale a pena ver de novo!

Esta biblioteca foi lançada em 1994 um ano antes da Fivewin lá fora. E tenho toda certeza que foi a partir dela que surgiram a FiveDOS e FiveWIN.

O código fonte de sua aplicação ficará mais simples com o uso de novos comandos bem mais estruturados.

Lógico que em tempos de maquinas 64 bits apresentar algo assim é como encontrar um site cheio de jogos estilo DOOM. Só dá saudade.

Mas para quem esta iniciando e se ve rodeado de tanta biblioteca boa ela vem bem a calhar em tornar os aplicativos DOS com funcionamento mais parecido com os Windows.

Janelas que podem ser movidas, sombras reais, efeitos 3d, botões clicáveis, checkboxes, menus e uso intenso do mouse.

Ela é compatibilizada para o uso com EXOspace e bLinker.

Sem mais delongas o link esta aqui

Exemplo de código:
// ----------------------------------------------------------------------------
// (c) 1,994 Juan Miguel Sosso Prieto - Todos los derechos reservados
// Autor...: Juan Miguel Sosso
// Proyecto: Sosso's Professional Tools
// M¢dulo..: Demostraci¢n
// Fecha...: Thu  28-04-94
// Hora....: 15:56:21

#include "inkey.ch"
#include "sptools.ch"

// ****************************************************************************

proc Main()

   INIT SYSTEM COLOR "W+/N*" ;
               CLOCK ;
               CALCULATOR KEY K_F2 ;
               CALENDAR KEY K_F3 ;
               SAVE DOS SCREEN ;
               SCREEN BLANK

   FillVideo( "PEYRONA SOFT   " )

   DEFINE DATABASE "stock" ALIAS Stock
      FIELD cCODIGO    TYPE C LEN  5
      FIELD cDESC      TYPE C LEN 40
      FIELD nPRECIO    TYPE N LEN  6
      FIELD nIVA       TYPE N LEN  2
      FIELD nCANTIDAD  TYPE N LEN  3
      FIELD nMINIMO    TYPE N LEN  3
      FIELD lAPLI      TYPE L

      INDEX Stock->cCODIGO TAG Codigo
   END DATABASE

   OPEN Stock

   if cGetPass( "Give me the password:", 10, "Password is SPT" ) == "SPT"
      VgaOff()
      CLS
      @ 11, 13 SAY "Welcome to Sosso's Professional Tools for CA-Clipper" ;
               COLOR "BG+/N*"
      @ 12, 23 SAY "Free memory for data: " + If( Memory( 0 ) < 9999, ;
                   Transform( Memory( 0 ), "9,999 Kb" ), ;
                   Transform( Memory( 0 ) / 1024, "999.9 Mb" ) ) ;
               COLOR "GR+/N*"
      if lIsWindows()
         @ 13, 26 SAY "Running under MS-Windows" ;
                  COLOR "BG+/N*"
      endif

      VgaOn()
      ACTIVATE MENU oMainMenu()
   else
      nMsgBox( "Access to system denied" )
   endif

   CLOSE SYSTEM

return

// ----------------------------------------------------------------------------

static function oMainMenu()

   local oMenu

   DEFINE MENU oMenu
      MENUITEM " &Stock " MESSAGE "Stock"
      MENU
         MENUITEM " &Stock...   Alt-T " ACTION MnuStock() ;
                                        SHORTCUT K_ALT_T ;
                                        MESSAGE "Stock maintenance"
         MENUITEM " &Error "            ACTION DevOut( Str( "not a number" ) ) ;
                                        MESSAGE "Produce an error, see ERROR.LOG file"
         SEPARATOR
         MENUITEM " E&xit       Alt-X " ACTION oMenu:lEnd := .t. ;
                                        SHORTCUT K_ALT_X ;
                                        MESSAGE "Exit the demostration program"
      ENDMENU

      MENUITEM " &Miscelaneous " MESSAGE "Miscelaneous functions"
      MENU
         MENUITEM " &Random filename "  ACTION DemoRfn() ;
                                        MESSAGE "Create a unique filename for temporal files"
      ENDMENU

      MENUITEM " &Utilities " MESSAGE "Miscelaneous utilities"
      MENU
         MENUITEM " Calculator   F&2 " ACTION Calculator() ;
                                       MESSAGE "Calculator"
         MENUITEM " Calendar     F&3 " ACTION Calendar() ;
                                       MESSAGE "Calendar with appoinments"
         SEPARATOR
         MENUITEM " &Reindex "         ACTION _DbfReindex() ;
                                       MESSAGE "Reindex databases"
         MENUITEM " &Configuration "   MESSAGE "System configuration"
         MENU
            MENUITEM " &Main config "   ACTION MainConfig( oMenu ) ;
                                        MESSAGE "Select main configuration options"
            MENUITEM " Screen &colors " ACTION ClrConfig( oMenu ) ;
                                        MESSAGE "Select screen colors"
            MENUITEM " &Printer "       ACTION PrnConfig() ;
                                        MESSAGE "Select printer options"
         ENDMENU
      ENDMENU

      MENUITEM " &Credits " MESSAGE "Library credits"
      MENU
         MENUITEM " &About...   F1 " ACTION MnuAbout() ;
                                     SHORTCUT K_F1 ;
                                     MESSAGE "Credits about Sosso's Professional Tools"
      ENDMENU
   ENDMENU

return oMenu

// ****************************************************************************

static proc MnuStock()

   local oBrwStock
   local oMnuStock

   DEFINE MENU oMnuStock AT MaxRow()
      MENUITEM " &Edit "   ACTION If( lEditArt( .f. ), oBrwStock:RefreshAll(), nil )
      MENUITEM " &Add "    ACTION If( lAddArt(), oBrwStock:RefreshAll(), nil )
      MENUITEM " &List "   ACTION ListArt()
      MENUITEM " &Delete " ACTION DelArt( oBrwStock )
      MENUITEM " E&xit "   ACTION .t.  // End Browse
   ENDMENU

   oMnuStock:lOpened = .f.

   BROWSE oBrwStock SIZE MaxRow() - 3, 72 ALIAS Stock
      COLUMN "REF."        DATA Stock->cCODIGO ;
                           FOOT "TOTAL:"
      COLUMN "DESCRIPTION" DATA Stock->cDESC ;
                           FOOT Transform( LastRec(), "9,999 recs." )
      COLUMN "PRICE"       DATA Stock->nPRECIO
      COLUMN "IVA"         DATA Stock->nIVA
      COLUMN "TOTAL"       DATA Transform( Stock->nPRECIO + Stock->nPRECIO * ;
                                           Stock->nIVA / 100, "999,999" ) ;
                           COLOR "GR+/B"

      ON DBLCLICK DO If( lEditArt( .f. ), oBrwStock:RefreshAll(), nil )
   ENDBROWSE

   ACTIVATE BROWSE oBrwStock ;
      TITLE "STOCK BROWSE" ;
      MENUBAR oMnuStock

return

// ----------------------------------------------------------------------------

static function lEditArt( lNew )

   local GetList := {}
   local aFields := {}
   local oWndArt
   local lSaved  := .t.

   DEFINE WINDOW oWndArt SIZE 10, 57 TITLE If( lNew, "ADD", "EDIT" ) + " ARTICLE"
   ACTIVATE WINDOW oWndArt

   Stock->( SaveFields( aFields ) )

   @ 2,  2 SAY "REFERENCE..:"   GET Stock->cCODIGO ;
                                MESSAGE "Reference of the article"
   @ 3,  2 SAY "DESCRIPTION:"   GET Stock->cDESC ;
                                MESSAGE "Full description"
   @ 4,  2 SAY "PRICE......:"   GET Stock->nPRECIO ;
                                MESSAGE "Price without taxes"
   @ 5,  2 SAY "I.V.A......:"   GET Stock->nIVA ;
                                MESSAGE "I.V.A. (European tax)"
   @ 5, 18 SAY "%"
   @ 5, 40 CHECK " &Aplicable " GET Stock->lAPLI ;
                                MESSAGE "Is the tax aplicable?"

   @ 7, 15 BUTTON "    &OK    " ACTION BTN_OK ;
                                MESSAGE "Save the changes"
   @ 7, 30 BUTTON "  &Cancel  " ACTION BTN_CANCEL ;
                                MESSAGE "Ignore the changes"

   READ

   if LastKey() == K_ESC
      Stock->( RestFields( aFields ) )
      lSaved = .f.
   endif

   DEACTIVATE WINDOW oWndArt

return lSaved

// ----------------------------------------------------------------------------

static function lAddArt()

   local nLast  := Stock->( RecNo() )
   local lAdded := .t.

   Stock->( DbAppend() )

   if ! lEditArt( .t. )
      Stock->( DbDelete() )
      Stock->( DbGoto( nLast ) )
      lAdded = .f.
   endif

return lAdded

// ----------------------------------------------------------------------------

static proc ListArt()

   local nOldRec := Stock->( RecNo() )
   local oRptStock

   DEFINE REPORT oRptStock
      HEADER cCode2Prn( Config->cBIGCODE ) + "Stock report made with SPTools " + SPT_VER + cCode2Prn( Config->cDEACBIG )
      HEADER cCode2Prn( Config->cCONDCODE ) + "(c) 1994-5 PEYRONA SOFT, programmed by Juan Miguel Sosso, BBS/FAX: +34-5-286-2626, CIS: 100525,1615" + cCode2Prn( Config->cDEACCOND )
      HEADER ""

      COLUMN "REF."        PRINT Stock->cCODIGO
      COLUMN "DESCRIPTION" PRINT Stock->cDESC
      COLUMN "PRICE"       PRINT Stock->nPRECIO
      COLUMN "IVA"         PRINT Transform( Stock->nIVA, "99%" )
      COLUMN "TOTAL"       PRINT Transform( Stock->nPRECIO + Stock->nPRECIO * ;
                                            Stock->nIVA / 100, "999,999" )
      COLUMN "Ap."         PRINT If( Stock->lAPLI, "Yes", "No " )

      FOOT   ""
      FOOT   "- " + cStr( oRptStock:nPage ) + " -" CENTER
   END REPORT

   Stock->( DbGoTop() )

   ACTIVATE REPORT oRptStock WHILE ! Stock->( EoF() ) ;
                             ACTION Stock->( DbSkip() )

   Stock->( DbGoto( nOldRec ) )

return

// ----------------------------------------------------------------------------

static proc DelArt( oBrw )

   if nMsgBox( "Are you sure to delete the record?", ;
               { "  &Delete  ", "  &Cancel  " } ) == 1
      Stock->( DbDelete() )   // Borro el registro
      Stock->( DbSkip() )     // Paso al siguiente
      oBrw:RefreshAll()       // Orden de refrescar el TBrowse
   endif

return

// ****************************************************************************

static proc DemoRfn()

   local cFileName := cRFN() + ".TMP"

   if lInputBox( "Filename:", @ cFileName, "@!" )
      MemoWrit( cFilename, "SPTOOLS " + SPT_VER )
      nMsgBox( "File created!" )
   endif

return

// ****************************************************************************

static proc MnuAbout()

   local oWnd
   local GetList := {}

   nMsgBox( "Sosso's Professional Tools " + SPT_VER + " for CA-Clipper 5.x;" + ;
            cCopyRight() + " 1994-5 Juan Miguel Sosso;c/ Chorr¢n 8;" + ;
            "29600 Marbella (MA);+34-5-277-3607 (10-14h);;" + ;
            "PEYRONA SOFT BBS  2:341/18.97@fidonet.org;" + ;
            "+34-5-286-2626 (24h) up to 28,800 bps",, ;
            , "About ..." )

return

// ****************************************************************************

SPTOOLS: Biblioteca que da mais poder para seu Clipper...

MensagemEnviado: 05 Set 2019 15:43
por rochinha
Amiguinhos,

Try Alguém que já tá lá.

SPTOOLS: Biblioteca que da mais poder para seu Clipper...

MensagemEnviado: 05 Set 2019 19:31
por Nascimento
hazael escreveu :
Deu certo mas somente agora percebi que vem somente a lib.
Pensei que viessem os fontes para poder usar no Harbour.


falta umas cosinhas , aproveitando o amigo rochinha envio ela anexada
SPT10B.ZIP
(70.55 KiB) Baixado 165 vezes


com um pouco de trabalho até poderia portar muita coisa dela pra harbour,
mais não sei se compensaria o trabalho ja que no harbour da pra construir menus iguais ou melhor "na minha opnião"

SPTOOLS: Biblioteca que da mais poder para seu Clipper...

MensagemEnviado: 07 Set 2019 19:00
por Nascimento
como eu lhe disse até aqui no forum mesmo vc encontra menus magnificos, compartilhados pelos nossos amigos
esse é um deles que gostei muito, e o visual bem bacana

http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=15281&p=89983#p89983