FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour muy interesantes, nuevas características xBrowse
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
muy interesantes, nuevas características xBrowse
Posted: Mon Sep 09, 2013 12:10 PM
Hola,

Este post de Mr. Rao es muy interesante y ahorra mucho código:
viewtopic.php?f=3&t=27180

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "xbrowse.ch"
#include "adodef.ch"

REQUEST DBFCDX

static aHead
static cFolder := "c:\fwh\samples\\"

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

function Main()

   local cust_table

   cust_table := OpenCust()
   BrowseTable( cust_table )
   CloseTable ( cust_table )

return nil

//----------------------------------------------------------------------------//
// TESTING XBROWSE BUILTIN ADD/EDIT/DELETE
//----------------------------------------------------------------------------//

static function BrowseTable( uData )

   local oDlg, oBrw, oFont, oRec

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE GetSysMetrics(0) * 0.9,400 PIXEL FONT oFont ;
      TITLE "XBROWSE/ADD/EDIT/DELETE : " + FWVERSION

   @ 30,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg DATASOURCE uData ;
      AUTOCOLS AUTOSORT FOOTERS CELL LINES NOBORDER

   WITH OBJECT oBrw
      :bEdit         := { |oRec| CustEditDlg( oRec ) }
      if ValType( uData ) == 'A'
         :cHeaders   := aHead
      endif
      :nEditTypes    := EDIT_GET
      :Married:SetCheck()
      :CreateFromCode()
   END

   @ 10, 10 BUTTON "Edit"   SIZE 40,12 PIXEL OF oDlg ACTION oBrw:Edit()
   @ 10, 60 BUTTON "Append" SIZE 40,12 PIXEL OF oDlg ACTION oBrw:Edit( .t. )
   @ 10,110 BUTTON "Delete" SIZE 40,12 PIXEL OF oDlg ACTION oBrw:Delete()

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil

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

static function OpenCust()

   local nChoice, cust_table

   nChoice := Alert( "Choose DataSource", { "DBF", "ARRAY", "TDATABASE", "ADO", "Quit" }, "DATASOURCE" )
   if nChoice  <= 3
      USE ( cFolder + "CUSTOMER" ) NEW ALIAS CUST SHARED VIA "DBFCDX"
      if nChoice == 1
         cust_table    := Alias()
      elseif nChoice == 2
         cust_table    := FW_DbfToArray()
         aHead          := ArrTranspose( DbStruct() )[ 1 ]
         DBCLOSEAREA()
      else
         DATABASE cust_table
      endif
   elseif nChoice == 4
      cust_table := FW_OpenRecordSet( cFolder + "xbrtest.mdb", "CUSTOMER" )
   else
      QUIT
   endif

return cust_table

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

static function CloseTable( cust_table )

   if ValType( cust_table ) == 'C'
      ( cust_table )->( DbCloseArea() )
   elseif ValType( cust_table ) == 'O'
      cust_table:Close()
      if cust_table:ClassName() == "TOLEAUTO"
         cust_table:ActiveConnection:Close()
      endif
   endif

return nil

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

init procedure PrgInit

   SET DATE ITALIAN
   SET CENTURY ON
   SET DELETED ON
   SET EXCLUSIVE OFF
   XbrNumFormat( 'A', .t. )
   SetKinetic( .f. )
   SetGetColorFocus()

return

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

static function CustEditDlg( oRec )

   local oDlg, oFont, oGrp

   DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
   DEFINE DIALOG oDlg SIZE 618,382 PIXEL FONT oFont TITLE "CUSTOMER"

   @ 0, 4 GROUP oGrp TO 168, 305 OF oDlg PIXEL

   @ 12, 10 SAY "First:" OF oDlg SIZE 15, 8 PIXEL
   @ 10, 44 GET oRec:First    OF oDlg SIZE 105, 12 PIXEL UPDATE
   if oRec:FieldPos( "ID" ) > 0
      @ 12, 200 SAY If( oRec:RecNo == 0, "NEW RECORD", "ID " + cValToChar( oRec:ID ) ) SIZE 80,8 PIXEL UPDATE
   else
      @ 12, 200 SAY If( oRec:RecNo == 0, "NEW RECORD", "RecNo " + cValToChar( oRec:RecNo ) ) SIZE 80,8 PIXEL UPDATE
   endif
   @ 26, 10 SAY "Last:" OF oDlg SIZE 15, 8 PIXEL
   @ 24, 44 GET oRec:Last     OF oDlg SIZE 105, 12 PIXEL UPDATE
   @ 40, 10 SAY "Street:" OF oDlg SIZE 21, 8 PIXEL
   @ 38, 44 GET oRec:Street   OF oDlg SIZE 155, 12 PIXEL UPDATE
   @ 54, 10 SAY "City:" OF oDlg SIZE 13, 8 PIXEL
   @ 52, 44 GET oRec:City     OF oDlg SIZE 155, 12 PIXEL UPDATE
   @ 68, 10 SAY "State:" OF oDlg SIZE 19, 8 PIXEL
   @ 66, 44 GET oRec:State    OF oDlg SIZE 15, 12 PIXEL UPDATE
   @ 82, 10 SAY "Zip:" OF oDlg SIZE 12, 8 PIXEL
   @ 80, 44 GET oRec:Zip      OF oDlg SIZE 55, 12 PIXEL UPDATE
   @ 96, 10 SAY "Hiredate:" OF oDlg SIZE 29, 8 PIXEL
   @ 94, 44 GET oRec:Hiredate OF oDlg SIZE 44, 12 PIXEL UPDATE
   @ 108, 44 CHECKBOX oRec:Married  PROMPT "&Married:" OF oDlg SIZE 43, 12 PIXEL UPDATE
   @ 124, 10 SAY "Age:" OF oDlg SIZE 15, 8 PIXEL
   @ 122, 44 GET oRec:Age      OF oDlg SIZE 12, 12 PIXEL UPDATE PICTURE  "99"
   @ 138, 10 SAY "Salary:" OF oDlg SIZE 21, 8 PIXEL
   @ 136, 44 GET oRec:Salary   OF oDlg SIZE 40, 12 PIXEL UPDATE PICTURE  "999999.99"
   @ 152, 10 SAY "Notes:" OF oDlg SIZE 21, 8 PIXEL
   @ 150, 44 GET oRec:Notes    OF oDlg SIZE 255, 12 PIXEL UPDATE
   @ 172, 175 BUTTON "&Undo" OF oDlg SIZE 42, 14 PIXEL WHEN oRec:Modified() ACTION ( oRec:UnDo(), oDlg:Update() )
   @ 172, 219 BUTTON "&Save" OF oDlg SIZE 42, 14 PIXEL WHEN oRec:Modified() ACTION ( oRec:Save(), oDlg:Update() )
   @ 172, 263 BUTTON "&Close" OF oDlg SIZE 42, 14 PIXEL CANCEL ACTION ;
      ( If( oRec:Modified() .and. MsgYesNo( "Save Changes ?" ), oRec:Save(), nil ), oDlg:End() )

   AEval( oDlg:aControls, { |o| If( o:ClassName == "TGET", o:bValid := { || oDlg:AEvalWhen(), .t. }, nil ) } )

   ACTIVATE DIALOG oDlg CENTERED
   RELEASE FONT oFont

return nil
Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: muy interesantes, nuevas características xBrowse
Posted: Mon Sep 09, 2013 03:10 PM

Aleluya Antonio, por fin 1 pto a favor de FWH de parte de Lucas... :D ....saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion